8.2のテーマはバイトアドレッシングです。今まではROMと同じくRAMも常にワード(2バイト)単位でアクセスしていましたが、RAMについてはワードでもアクセスするがバイト単位でもアクセスできるように拡張します。
8.2の演習問題も一応は終わりました。一応と言っているのは、本ではWebからテストベンチとテストプログラムをとってきて実行結果が本と一致するかでVerilogコードを検証せよとあるのですが、らしきものが見つからなかったため、自分で作ったテストベンチとテストプログラムで確認したからです。
ただ、RAMにワードアクセスする既存のロード、ストア命令がおかしくなっていないかは未確認です。
今回からRAMアクセスが偶数アドレスに対してか奇数アドレスに対してかで処理が変わるので結構難しかったです。POCOのVerilog記述での対応はもちろんするのですが、テストベンチ側も色々変わってきます。
本節を勉強して良かったこととして、Big Endian/Little Endianの用語の命名理由が納得できました。
今までは、上位(Big)のデータが先に来る(Endじゃない側)のをBig Endianと呼ぶのは不自然な気がしていたのですが、データのEnd(LSB)がアドレスの大きい方(Big)にあるからBig Endianと呼ぶとの説明でもやもやが解消できてよかったです。
8.2の演習問題も一応は終わりました。一応と言っているのは、本ではWebからテストベンチとテストプログラムをとってきて実行結果が本と一致するかでVerilogコードを検証せよとあるのですが、らしきものが見つからなかったため、自分で作ったテストベンチとテストプログラムで確認したからです。
ただ、RAMにワードアクセスする既存のロード、ストア命令がおかしくなっていないかは未確認です。
今回からRAMアクセスが偶数アドレスに対してか奇数アドレスに対してかで処理が変わるので結構難しかったです。POCOのVerilog記述での対応はもちろんするのですが、テストベンチ側も色々変わってきます。
本節を勉強して良かったこととして、Big Endian/Little Endianの用語の命名理由が納得できました。
今までは、上位(Big)のデータが先に来る(Endじゃない側)のをBig Endianと呼ぶのは不自然な気がしていたのですが、データのEnd(LSB)がアドレスの大きい方(Big)にあるからBig Endianと呼ぶとの説明でもやもやが解消できてよかったです。