• 本当は、田舎に庵を建てて隠遁生活したいけど、先立つものも無いので自宅で..。

FPGA UARTでPCと繋ぐ

ちょっと滞っていましたが、ようやくBasys3とPCとを繋ぐところまできました。 といっても、まだシミュレーション上ですが..

先に作成した、UART RXUART TXを統合して、PCと繋ぐ部分を作ります。、PC側からコマンド”1″を送ると、Basys3から0~9ののバイトデータを送り返してくるという単純な機能にしました。

ソースです。


module UART_TRX(
input MRST,
input MCLK,
input RXD,
output TXD
);


テストベンチです。


module sim_UART_TRX;
localparam STEP = 10;
reg rst;
reg clk;
reg rxd;
wire txd;

endmodule


制約ファイルです。


##Clock signal
set_property PACKAGE_PIN W5 [get_ports MCLK]
set_property IOSTANDARD LVCMOS33 [get_ports MCLK]
create_clock -period 10.000 -name sys_clk_pin -waveform {0.000 5.000} -add [get_ports MCLK]
##Buttons
set_property PACKAGE_PIN U18 [get_ports MRST]
set_property IOSTANDARD LVCMOS33 [get_ports MRST]
##USB-RS232 Interface
set_property PACKAGE_PIN B18 [get_ports RXD]
set_property IOSTANDARD LVCMOS33 [get_ports RXD]
set_property PACKAGE_PIN A18 [get_ports TXD]
set_property IOSTANDARD LVCMOS33 [get_ports TXD]

シリアルポートは、ハンドシェイクなしです。 ハンドシェイク用の信号は用意されていないのでこうする以外ないのですが、最近は垂れ流しが一般的に使われているようです。 

ボーレートは、5Mbpsでシミュレーションしていますが、実際にこれで動作するかどうかはやってみないと分かりません。 RS-232Cでは、数100kbpsが限度だと思いますが、ロジックのUARTだけだと3Mbpsぐらいで動作させた記憶があります。

論理合成は問題なく終了したので、確認用のソフトを作って実験したいと思います。

 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA