とその前に、以前はSpartan-3E Starter Kitのメス型の方のシリアルポートにアサインしていましたが、それをオス型の方に変更しました。
[ucfファイル]
# Period constraint for 50MHz operation
#
NET "clk" PERIOD = 20.0ns HIGH 50%;
#
# soldered 50MHz Clock.
#
NET "clk" LOC = "C9" | IOSTANDARD = LVTTL;
#
#
# Simple LEDs
# Require only 3.5mA.
#
NET "led<0>" LOC = "F12" | IOSTANDARD = LVTTL | SLEW = SLOW | DRIVE = 4;
NET "led<1>" LOC = "E12" | IOSTANDARD = LVTTL | SLEW = SLOW | DRIVE = 4;
#
# Press buttons
# Must have pull DOWN resistors to provide Low when not pressed.
#
NET "btn_south" LOC = "K17" | IOSTANDARD = LVTTL | PULLDOWN;
#
# UART connections
#
#NET "tx_female" LOC = "M14" | IOSTANDARD = LVTTL | SLEW = SLOW | DRIVE = 4;
#NET "rx_female" LOC = "R7" | IOSTANDARD = LVTTL;
NET "RS232_DTE_RXD" LOC = "U8" | IOSTANDARD = LVTTL ;
NET "RS232_DTE_TXD" LOC = "M13" | IOSTANDARD = LVTTL | DRIVE = 8 | SLEW = SLOW ;
# End of File
#
[ラッパー]
`define LEDOUT_BITS 2
module wrap_s3e_kit (/*AUTOARG*/
// Outputs
led, RS232_DTE_TXD,
// Inputs
clk, btn_south, RS232_DTE_RXD
);
input clk;
input btn_south;
output [`LEDOUT_BITS-1:0] led;
output RS232_DTE_TXD;
input RS232_DTE_RXD;
system_top system_top_i (
.clk_i(clk),
.rst_i_n(~btn_south),
.led_out(led),
.tx_out(RS232_DTE_TXD),
.rx_in(RS232_DTE_RXD)
);
endmodule
結果は以下のとおり。
↓ハイパーターミナルを起動して、LatticeMico32をリセット。
リセット直後にLatticeMico32から送信されるメッセージが表示されます。
↓その後、適当にキーボードから文字を打つと、
そのまま返ってきた文字が表示されます。
ハイパーターミナル側のボーレートは115200bpsに設定しています。
以上で無事、シリアル通信の動作も確認ができましたので
今後はこれを使って遊んでみようかなと思います。