[1chipMSX]

拡張WAVE音源の不都合修正5

※情報の正確さは保証できません。

この修正は、私の修正ミスを caroさんが修正してくれたので紹介します。

SCCのレジスタは、比較的多いので、FFではなくブロックRAMで管理されています。
SCC_RAM.vhd には、そのブロックRAMの記述があります。

一般的な ブロックRAM は、リードアクセスかライトアクセスのどちらか一方しか処理できませんが、
しかし、レジスタは書き込んでいる最中にも読み出したいので、少し高級なリード・ライトともに1つずつ
つかえるタイプの RAM を使っています。これを 1R1W と呼ぶことにします。

私のミスは、ライト1つは良いのですが、リードが2つになっていたことです。
つまり、さらに高級な 2R1W を使ってました。
そんなブロックRAMは、存在しないのでおかしなことになっていました。
QuartusII7.0 では、コンパイラが気を利かせて 1R1Wタイプを2つにして、2つのライトに同じものを入力、
2つのリードはそれぞれ別のものになるようにコンパイルしてくれたようですが、QuartusII7.1以降は、
その変換が行われず、素直に 2R1W の RAM を、LE を消費して実現してしまうようです。
従って、QuartusII7.1以降でコンパイルすると、突如 6000LE 以上の増加が発生して、12060LEしかない 1chipMSX
の FPGA から大幅にはみ出してしまいます。

caroさんは、この問題に気がつき、明示的に2つのブロックRAMを使う様に書き換えてくれました。
この修正により、QuartusII7.2SP1 でも FPGA に収まるサイズにコンパイルされることが確認できます。

修正ソースは、上に戻って最新版ダウンロードからダウンロードしてください。


[▲上へ]