uart部のコーディングが終わりシミュレーションしてみた。コアモジュール(uart_core)はこれまでずっと使い続けており動作実績はある。そこで、シミュレーションではcomモジュールで新しく追加したハードウェアフロー制御関係を見てみた。シミュレーションはテストベンチ内部でTXD - RXD、 RTS - CTS間を接続してループバック状態にして行った。
以下はハードウェアフロー制御無しの場合で、受信側FIFOの段数以上のデータを送信し、受信FIFOからの読み出しは行っていない。RTSが制御されないので、FIFOがフルになって以降も通信は継続しFIFOオーバフロー(rx_ovf_**)になっている。
以下はハードウェアフロー制御有りの場合。
この場合、FIFO内のデータ数が30以上になると(因みに、FIFOの段数は32段である。)、RTSがネゲートされ、これが送信側のCTSとして入力されるので送信が停止している。その後、FIFOのデータを読み出すと自動的にRTSがアサートされ通信が再開されている。
ブレークの送受信も見てみた。こちらも問題なさそうである。
問題なさそうなので、GPIB以外のモジュールを組み上げて合成し、リソースの状況を見てみることにした。全体構成は以下のようであるが、現状、GPIBのみが未実装である。MachXO2はハードマクロでI2CとSPIを内蔵しているが、今回はそれらを使用せず全て自作IPで構成している。
以下が合成結果だ。
SLICEの使用率は60%程度なので、大丈夫そうだ。タイミングもMetしている。
ということで、次はGPIB IPの作成に挑戦だ。
0 件のコメント:
コメントを投稿