ZYNQ&FPGA 串口通信实验

本文详细介绍了使用ZYNQ FPGA进行串口通信的实验,任务是接收上位机发送的数据并回传。通信协议设定为8位数据位、1位停止位,无校验位,波特率115200bps。实验中,串口接收模块通过uart_rxd获取数据,转化为8位并行信号,并通过uart_done标记数据有效性。在检测到uart_rxd下降沿时,start_flag发出高电平指示开始接收,rx_flag标识整个接收过程。波特率计数器clk_cnt用于确定数据传输时间,rx_cnt则用于在适当时间点更新并行数据。串口发送模块需要在uart_en上升沿触发。
摘要由CSDN通过智能技术生成

实验任务

 上位机通过串口将数据发送给开发板,开发板通过串口把数据送回上位机。

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值