lcytms
发表于 2016-11-24 18:08:06
修改uart.v顶层模块,将以上四个模块都加入到uart.v顶层模块中进行例化。
编写uart.v模块如下。
module uart (clk, rst_n, rs232_rx, rs232_tx);
input clk, rst_n;
input rs232_rx;
output rs232_tx;
wire rx_en, tx_en;
wire rx_sel_data, tx_sel_data;
wire rx_num, tx_num;
wire rx_d;
bps_rx bps_rx
(
.clk(clk),
.rst_n(rst_n),
.rx_en(rx_en),
.rx_sel_data(rx_sel_data),
.rx_num(rx_num)
);
uart_rx uart_rx
(
.clk(clk),
.rst_n(rst_n),
.rs232_rx(rs232_rx),
.rx_sel_data(rx_sel_data),
.rx_num(rx_num),
.rx_en(rx_en),
.tx_en(tx_en),
.rx_d(rx_d)
);
bps_tx bps_tx
(
.clk(clk),
.rst_n(rst_n),
.tx_en(tx_en),
.tx_sel_data(tx_sel_data),
.tx_num(tx_num)
);
uart_tx uart_tx
(
.clk(clk),
.rst_n(rst_n),
.tx_sel_data(tx_sel_data),
.tx_num(tx_num),
.tx_d(rx_d),
.rs232_tx(rs232_tx)
);
endmodule
lcytms
发表于 2016-11-24 18:11:15
进行分析综合检查。
编写Testbench。
新建uart_tb.v文件。
`timescale 1ns/1ps
module uart_tb;
reg clk, rst_n;
reg rs232_rx;
wire rs232_tx;
uart dut (.clk(clk), .rst_n(rst_n), .rs232_rx(rs232_rx), .rs232_tx(rs232_tx));
initial
begin
clk = 1;
rst_n = 0;
rs232_rx = 1;
#200.1
rst_n = 1;
#200 rs232_rx = 0;
#104166 rs232_rx = 0; //data = 8'hA4 (8'b10100100)
#104166 rs232_rx = 0;
#104166 rs232_rx = 1;
#104166 rs232_rx = 0;
#104166 rs232_rx = 0;
#104166 rs232_rx = 1;
#104166 rs232_rx = 0;
#104166 rs232_rx = 1;
#104166 rs232_rx = 1;
#1500000 $stop;
end
always #10 clk = ~clk;
endmodule
lcytms
发表于 2016-11-24 18:12:41
进行分析综合检查。
进行仿真设置。
查看仿真结果。
接收端口接收到数据A4(10100100)后,通过发送端口发出。
仿真功能正确。
lcytms
发表于 2016-11-24 18:14:30
参照.tcl文件设置好FPGA管脚
参照EP4CE10F17C8Nzx_1.tcl文件内容,对FPGA芯片管脚进行设置。
EP4CE10F17C8Nzx_1.tcl文件相关内容如下所示。FPGA芯片配置结果如图所示。
#set_global_assignment -name FAMILY "Cyclone IV"
#set_global_assignment -name DEVICE ep4ce10f17c8n
set_location_assignment PIN_E1 -to clk
# UART
set_location_assignment PIN_K5 -to rs232_rx
set_location_assignment PIN_K2 -to rs232_tx
# KEY 轻触按键
set_location_assignment PIN_L3 -to key
lcytms
发表于 2016-11-24 18:15:39
.sof文件下载到FPGA
全编译FPGA工程,生成.sof文件,连接至芯ZX-1开发板,接好UART串口通信电缆,并上电。
PC端打开串口工具软件,打开串口并设置好波特率。
打开Programmer通过Jtag口,将.sof文件下载到FPGA进行在线仿真。
.sof文件下载界面如下图所示。
lcytms
发表于 2016-11-24 18:16:40
开发板运行效果
至芯科技ZX_1开发板外部连接上位PC机,PC机通过串口工具发送数据,并检查从开发板返回的数据是否与发送数据一致。
经检查,PC机发送数据与开发板收到后返回的数据一致,符合设计要求。
实现效果图如下。
lcytms
发表于 2016-11-24 18:17:07
好了,今天的课程就讲到这里。
通过今天的课程,我们学习了UART串行通信接口的基本原理,并对UART逻辑电路进行了建模、仿真,结合上位PC机一起搭建了一个完整的演示平台,进行了下板检查。
希望大家掌握UART的基本原理,熟练运用Verilog语言编写相关驱动逻辑,并能结合上位PC机进行串行通信接口的联调。
更复杂的知识和技巧我们将逐步通过后面的课程展现给大家。
课程到此结束,谢谢大家的关注!
张玉华
发表于 2016-11-24 20:52:27
好好,学习下
Sunlife
发表于 2016-12-4 11:51:00
不错,感谢楼主。
zxopen08
发表于 2016-12-12 15:11:44
FPGA初级课程第二十讲 UART