实验任务
上位机通过串口将数据发送给开发板,开发板通过串口把数据送回上位机。
TX→RX为串行通信,在FPGA内部接收到发送为并行数据。
协议层:
数据位为8位,停止位为1位,无校验位
波特率为115200bps
目的:将上图中数据转换为并行数据并给出标志信号。
串口接收过程示意图:
uart_rxd接收完成会得到uart_done的8位并行信号;
接收完成后uart_done会持续一个波特率周期的高电平,表示下方的并行信号为有效数据;
start_flag为串口接收过程的起始信号,检测到uart_rxd下降沿的时候会给出一个系统时钟周期的高电平。
rx_flag标志整个接收过程。
每一个数据传输需要的时间:1/115200(波特率)
clk_cnt对系统时钟周期计数,计数到一个波特率周期时,就清零,再次开始计数。一个波特率周期计数一次,表示传输一个数据。
rx_cnt在clk_cnt计数满一个波特率周期后+1,标识出对应的各个位。串并转换或称中,根据该值,把对应的各个位放到并行数据对应的位上面去。
串口接收代码:
//串口接收模块
`timescale 1ns / 1ps
module uart_recv(
input sys_clk,
input sys_rst_n,
input uar