CY8CKIT-049に1MBitSRAMをつける(ハード制御)
Ver.1.000b 2020.10.12

更新履歴
2020. 10.12 Ver.1.000 新規作成

  1. PSoC4200のハード設計
    1. タイミング検証
    2. 外付けカウンタの回路図


【初めに】

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のダウンロード