火曜日, 10月 30, 2007

LatticeMico32 シリアル通信の確認

前回、やり残していたシリアル通信の確認。


とその前に、以前は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に設定しています。

以上で無事、シリアル通信の動作も確認ができましたので
今後はこれを使って遊んでみようかなと思います。

0 件のコメント: