CY8CKIT-049に1MBitSRAMをつける(ハード制御)
Ver.1.000b 2020.10.12
更新履歴
2020. 10.12 Ver.1.000 新規作成
- PSoC4200のハード設計
- タイミング検証
- 外付けカウンタの回路図
【初めに】
PSoC4200 CY8CKIT-049には、メモリが4KBしかありません。こんどは、ハード制御で、PSoC4200
CY8CKIT-049に1MBitSRAMをつないでみます。
また、PSoC4200
CY8CKIT-049のIO接続のハードに少し変更を加えます。
PSoC4200のハード設計
図1 回路図
動作説明:タイミング発生
左下のControl RegのAddress_Topのbit6のCYCLE_RunがHになると、Edge
Detector_1から、立ち上げりエッジで、detから、1クロックのパルスが出て、右上のsrffのrにはいり、srffをリセットします。qはL
になります。すると、左上のnotがHになり、Run_Regの3bitのカウンタが、カウントアップします。そして、LUT_1に書かれているタイミン
グで、各信号を出力します。
Run_Regは、LUT_1のout0が、Hでresetされて、値が0になります。LUT_1のout0は、右上のsrffをsetしますので、qは
Hになり、左上のnotにより、Run_RegのenはHからLになり、Run_Regは止まります。すると、END_Flagが、Hになり、メモリサイ
クルが終了したことをソフトに知らせます。
これが、タイミング信号制御の仕組みです。
CSは、メモリサイクル中はLになります。メモリM68AF127BのE1につなぎます。
動作説明:バス制御
メモリデータは、Write_Data_RegとRead_Data_Regによって、バスに出力し、バスから取り込みます。バスには、外の
TC74HC163の20bitカウンタが、つながっているので、8bitづつ、Address_Low、Address_High,
Address_Top(これは4bit)出力しなければなりません。そこで、Control
RegのAddress_Low、Address_High,Address_TopをWrite_Data_Regと切り替えながら、出力しなければな
らないので、マルチプレクサで切り替えます(Multiples_Bus[1:0]で選択する)。
それと同時に、デマルチプレクサで、LD_0、LD_1、LD_2をそれに合わせて、Lを出力します。
LUT_1を以下に示します。
図2 LUT1(LooK Up Table 1)
LUTの説明は、以下のようになっています。
図3 LUT 1 (LooK Up Table 1)の説明
なお、メモリデータは、Read_Data_Regによって、バスから取り込みますが、データラッチとして使っています。
図4Status Regの内部構造(Cypessの資料より)
Status Regの内部構造から、Status
Regを読むと左のDFFはクリアされ、Clockが入ると入力がラッチされ、入力のORにより、DFFの出力がHであるならば、ずーと保持されます。真
ん中のセレクタでStickyとTransparentによって、Stickyモードなら、左のDFFが、Transparentなら、入力が出力されま
す。
これをメモリリードのデータラッチにするには、Stickyモードで、いったんStatus
Regを読んで左のDFFをクリアすれば、メモリリードのデータラッチクロックをいれると、メモリデータがラッチできます。
図5 Read_Data_Regの設定
図6 END_Flagの設定
図7 Write_Data_Regの設定
図8 Address_Lowの設定
図9 Address_Highの設定
図10 Address_Topの設定
図11 EdgeDetect_1の設定
図12 デマルチプレクサの設定
LD_0、LD_1、_LD_2の選択なので切り替え数NumOutputTerminalは4に、TerminalWidthは、1本なので、1です。
図13 マルチプレクサの設定
Wite_Data_reg、Address_Low、Address_High、Address_Topの選択なので切り替え数
NumOutputTerminalは4に、TerminalWidthは、8本なので、8です。ただし、Address_Topは4bitしかないの
で、残り4本は、0をバスで埋め込んでいます。
図14 DATA_BUSの設定
図15 DATA_BUSの設定の続き
図16 DATA_BUSの設定の続き
図17 DATA_BUSの設定の続き
タイミング検証
図18 メモリダイレクトアクセスのリードの繰り返し
LD_0.、LD_1、_LD_2をLにして、CLKをHにするとCLKの立ち上がりでカウンタTC74HC163は、データバスを読み込んで、出力しま
す。A0-A3は、LD_0のタイミングで読み込まれて変化してますね。メモリは、Readなので、OEをLにします。
図19 メモリダイレクトアクセスのライトアンドリードの繰り返し
先ほどとの違いは、WEが、出ているところです。リードしたデータは、無視することも利用することもソフト次第です。
図20 メモリシーケンシャルアクセスのライトアンドリードの繰り返し
外付けカウンタTC74HC163は、CNT_ENAをHにして、CLKを入れるとCLKの立ち上がりでカウントアップします。A0-A3が、変化してま
すね。
図21 メモリシーケンシャルアクセスのリードの繰り返し
外付けカウンタの回路図
図22
ソフト編より、1個増えています。
main.cのダウンロード