Core Generator
CORE Generatorで分散RAM(SLICEM)の同期FIFOを生成1
(Char_Gen_Controller.v
とCommand_FIFO.v を作った。今回の同期FIFOと非同期FIFOはCoreGenを使って生成する予定のなので、FIFO
Generatorで生成する。自分のブログを見返してみるとCORE
Generatorのことを書いていなかったので、やり方を書いてみようと思った。たぶん、だれでも使えると思うんだけど、チュートリアル的な物として書
いておこう)
CORE Generatorで分散RAM(SLICEM)の同期FIFOを生成2
(”CORE Generatorで分散RAM(SLICEM)の同期FIFOを生成1”の続き。ウイザードで分散RAM(SLICEM)の同期FIFOを生成)
CORE Generatorで作った分散RAMの同期FIFOのシミュレーション
(”CORE Generatorで分散RAM(SLICEM)の同期FIFOを生成1”、”CORE Generatorで分散RAM(SLICEM)の同期FIFOを生成2”で作った同期FIFOをシミュレーションして、どのような動作をするのかを確かめてみた)
coregen_lockダイアログ
Spartan-3A Starter Kit専用のDDR2-SDRAMコントローラをMIGで生成するとTCLエラーになってしまった。(ISE12.1とISE11.5のVerilogプロジェクト)
そのまま、プロジェクトのプロパティをVHDLにして、新しいMIGコアをCoregenで生成しようとしたら、coregen_lockファイルが見つかったというダイアログが出てきた。
Write側とRead側のデータ幅の異なるFIFOのシミュレーション
”Spartan-3A Starter
KitでCMOSカメラ・ディスプレイ回路3(FIFOの深度)”でFIFOの深度を考察した際に、Write側とRead側のデータ幅の異なるFIFO
を使用することにした。実は前回も使っているのだが、単体でシミュレーションしたことがないため、シミュレーションをやってみることにした。
(ISE12.1)
Write側とRead側のデータ幅の異なるFIFOのシミュレーション2
Writeのデータ幅が32ビットで、Readのデータ幅が16ビットの非同期FIFOの入出力フォーマットを検証してみた。
Write側とRead側のデータ幅の異なるFIFOのシミュレーション3
今度は前とは逆で、Writeのデータ幅が16ビットで、Readのデータ幅が32ビットの非同期FIFOの入出力フォーマットを検証してみた。
Divider Generator を使ってみた
割り算器が必要になったので、ISE12.2のCore GeneratorのDivider Generator を使って割り算コアを生成して、シミュレーションで確かめた。
FIFOをISimで論理シミュレーションしたときの不具合(Fifo Generator 7.2を使用)
SRAM
のコントローラを作成していて、Read/WriteをバーストでアクセスするためにRead用、Write用それぞれのFIFOをFifo
Generator
7.2を使って作成した。そのSRAMコントローラをISE12.4のISimでシミュレーションしているときに、おかしな動作になってしまった。
結局、デルタ遅延が原因だった。
Coregenで作成したFIFOのバグ
ここ2日ほど、Coregenで作成したFIFOのバグで悩んだので、その顛末を書いておく。
結論から先に書くと、Project Navigator のプロジェクトを作り直したら正常になった。
FWFTモードのBlock RAM使用した非同期FIFOのrd_data_countについて
FWFT
モードのFIFOでは、rd_data_countがあてにならない。これはデフォルトでは、FIFOのみのrd_data_countを表示していて、
FWFTにする回路の中にあるデータを換算していなからだと思われる。Use Extra Logic For More Accurate Data
Countsのチェックボックスにチェックを入れると、そこも換算するようになる。
COEファイルのフォーマット
Core Generatorで生成したROMやRAMなどに初期値を入れるときは、COEファイルを生成する。そのCOEファイルの説明。