程序,就是简单 的接收从电脑串口发来的数据,然后把收到的数据,发到电脑。在电脑上可用串口监控软件来发送。发送完成后,观察是否有数据接收过来。
发送模块,和接收模块,和前面的一样这里就不把代码贴出来了。仅仅是修改顶层文件就可以。
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
下面是顶层文件
`timescale 1ns/1ps
module top(clk, Rest_n,uart_rx, uart_tx) ;
input clk;
input Rest_n;
input uart_rx;
output uart_tx;
//wire tx_done;
wire [7:0] data_recv;
wire rx_done;
rs232_rx_cnt u3(
.clk(clk),
.rst_n(Rest_n),
.sel_bps(3'd2),
.uart_rx(uart_rx),
.rx_done(rx_done),
.data_recv(data_recv)
);
rs232_tx_cnt u2(
.Clk(clk),
.rst_n(Rest_n),
.en_go(rx_done),
.tx_done(),
.sel_bps(3'd2),//
.Data(data_recv),
.uart_tx(uart_tx)
);
endmodule
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
编译,下载bit文件到fpga之后。
上面是,串口发是数据,01020304等等, 在接收窗口部分,收到了发送的数据。说明程序功能正常。
附上引脚约束文件。这里是vivado的。如果是ISE软件,语法不一样。
#set UnusedPin
#set_property BITSTREAM.CONFIG.UNUSEDPIN Pullnone [current_design]
set_property PACKAGE_PIN Y18 [get_ports clk]
set_property IOSTANDARD LVCMOS33 [get_ports clk]
set_property PACKAGE_PIN F15 [get_ports Rest_n]
set_property IOSTANDARD LVCMOS33 [get_ports Rest_n]
#uart_tx
set_property PACKAGE_PIN M15 [get_ports uart_tx]
set_property IOSTANDARD LVCMOS33 [get_ports uart_tx]
set_property PACKAGE_PIN J20 [get_ports uart_rx]
set_property IOSTANDARD LVCMOS33 [get_ports uart_rx]
|