2013年10月27日日曜日

Communication Box 6

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 件のコメント:

コメントを投稿

自作CPUで遊ぶ 22

今使用しているモータードライバはDM556Dというものだが、このドライバはMicro Stepが 800 [pulse/rev] 〜 40000 [pulse/rev]の範囲で設定できる。 Mi...