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ファイルの説明。


inserted by FC2 system