集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
楼主: lcytms

FPGA初级课程第二十讲 UART

[复制链接]
 楼主| 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 [3:0] rx_num, tx_num;
        wire [7:0] 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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
 楼主| 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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
 楼主| lcytms 发表于 2016-11-24 18:12:41 | 显示全部楼层
进行分析综合检查。
进行仿真设置。
查看仿真结果。
接收端口接收到数据A4(10100100)后,通过发送端口发出。
仿真功能正确。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
 楼主| 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[0]         

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
 楼主| lcytms 发表于 2016-11-24 18:15:39 | 显示全部楼层
.sof文件下载到FPGA
全编译FPGA工程,生成.sof文件,连接至芯ZX-1开发板,接好UART串口通信电缆,并上电。
PC端打开串口工具软件,打开串口并设置好波特率。
打开Programmer通过Jtag口,将.sof文件下载到FPGA进行在线仿真。
.sof文件下载界面如下图所示。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
 楼主| lcytms 发表于 2016-11-24 18:16:40 | 显示全部楼层
开发板运行效果
至芯科技ZX_1开发板外部连接上位PC机,PC机通过串口工具发送数据,并检查从开发板返回的数据是否与发送数据一致。
经检查,PC机发送数据与开发板收到后返回的数据一致,符合设计要求。
实现效果图如下。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
 楼主| 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
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2024-12-24 00:20 , Processed in 0.061928 second(s), 17 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表