FPGA学习笔记(十六)

uart串口的回环实验,串口的发送和接收前几期都已经详细介绍过了,这次只需建立一个顶层文件调用他们,输入参数:时钟clk,复位rst。输出参数:串口转usb芯片cp2021,所需要的两个引脚,发送cp_txd,以及接收cp_rxd。设置三个参数给发送和接受模块,方便一起调整,波特率BAUDRATE,频率FREQ,校验模式mod。还要定义两个寄存器,方便接受和发送信息的传输,接收数据有效位valid和8位的数据寄存。

运行流程,当接受到数据时,接受模块传出数据有效位,和有效的数据。数据有效位传给发送使能,和接收读取标志位。接收到的数据传给发送模块,发送模块在把数据发送出去,整个流程就这样。

module uart(
input clk,
input rst,
output cp_txd,
output cp_rxd
);


parameter FREQ = 50_000_000;
parameter BAUDRATE = 115200;
wire [1:0] mod = 2'd1;

wire valid;
wire [7:0] data_s;

uart_tx#(
    .FREQ       (FREQ    ),
    .BAUDRATE   (BAUDRATE)
)
uart_tx_inst
(
    .clk     (clk),
    .rst     (rst),
    .tx_en   (valid),
    .mod     (mod),
    .tx_data (data_s),

    .cp_txd  (cp_txd),
    .rdy     ()
);



uart_rx#(
    .FREQ       (FREQ    ),
    .BAUDRATE   (BAUDRATE)
)
uart_rx_inst
(
    .clk     (clk),
    .rst     (rst),
    .cp_rxd  (cp_rxd),
    .mod     (mod),       
    .ready   (valid),

    .rx_data (data_s),
    .valid   (valid)
);


endmodule

我们还可以添加逻辑分析仪,用两个通道ch0与ch1连接到cp_rxd和cp_txd,此外还要连一个gnd,我们可以通过40pin的外接扩展,把cp_rxd与cp_txd连上去,在原理图中绑定对应的引脚,这样就可以观测到它们的数据变化了。

 

 打开串口调试助手,打开逻辑分析仪,选择通道,发送数据,下图是分别发送01和02,hex格式的数据,我们可以看到发送和接受的数据是一样的,代表实验成功,当接收到一个完整的数据时,发送出去,可以分析接受到的数据,没有数据传输时是保持高电平,在接到数据时,第一位起始位,是低电平持续时间为8.75us,然后是接收到的第一位,高电平是1,后面7个0,传输时低电平先传,所以接受到的数据是0000_0001,接收到的数据刚好是我们发送的数据,接着分析发送的第二个波形,其接受到第一个的低电平时间为17.25us,代表有俩个低电平,然后一个到电平,收到的数据可以计为0100_0000,低位先传可得到接受到的数据为2,实验成功。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值