13 |
BSVによるメモリダンプモジュールの設計 (4) |
以下のスクリプトでVerilogシミュレーションを実行します。
$ bsc -verilog -u Tb.bsv
cp top-original.v top.v
emacs -nw top.v
// emacsでautomodeにより、top.vを生成
iverilog -y /usr/local/lib/Bluespec/Verilog/ top.v mkTb.v mkUart.v -o mkTb.exe
./mkTb.exe
gtkwave -A verilog.vcd
図はちょうど1行を送信したところで、横方向のxが256(xは255までだがチェックサム出力の際に256となる)から0に戻り、縦方向のyが0から1になった時点の波形です。データを0x33, 0x66, 0x0a, 0x30, 0x64と送信しています。
ストップビットを1ビットに削ったところ、1,582,090サイクルとなりました。1アスキーバイトあたり12サイクルなので、8bitの他、スタートが1bit、ストップが3bit相当となっています。送信時間は
- 115,200bpsでは6.9秒
- 230,400bpsでは3.4秒
- 460,800bpsでは1.7秒
- 921,600bpsでは0.9秒
となります。バイナリだとこれの半分の時間となるはずですが、デバッグの都合上アスキーコードの転送とします。