正点原子FPGA学习笔记4.2——UART串口通信,基于达芬奇开发板 A7

目录

1.实验任务

2.硬件设计

3.程序设计

1.模块

2.时序图——串口接收为例:

3. 串口发送

4.RTL电路图


1.实验任务——2.硬件设计——3.程序设计

1.实验任务

2.硬件设计

1.正点原子

 发送:主机,串口调试助手——USB_UART,D-D+连接CH340C转UART——UART1——TXD传到FPGA。
接收过程正好相反,然后对比发送接收的数据是否一致,验证功能是否成功。
升级版CH340C不需要额外的晶振,已经集成在了CH340C芯片内部,外部无需晶振。

2.我的USB_UART——ZYNQ7200

 data_sheet:CP2102-GM (SILABS [单芯片USB至UART桥接]) PDF技术资料下载 CP2102-GM 供应信息 IC Datasheet 数据表 (1/18 页)-芯三七

3.程序设计

1.模块

流程:上位机:PC——发送数据(USB_UART)——FPGA接收、处理数据——环回模块(接收之间的调节器)告诉发送模块接受到了一个有效数据——环回模块传输有效数据到发送模块+发送模块会接收到 发送指令 ——开启发送——发送到上位机串口调试助手。

 停止位拉高多少位代码中再细说。当检测到拉高信号后的下降沿,才认为下一数据帧开始传输。

2.时序图——串口接收为例:

 1.时钟:50MHZ,波特率115200,所以每434个时钟周期,发送一个bit。

 2.由start_flag拉高,打开rx_flag开始接收数据,直到接收到停止位(如下图红色箭头),rx_flag就会拉低,等下一个数据帧。

 3.数据线usart_rxd,每当rx_count处于1~8之间的时候,对应的将bit0传递给uart_data的第0位,将bit1传递给uart_data的第1位......最后加入一个停止标志位xxh。

综上:1.首先定义两个计数器,①rx_cnt 比特位计数器(每434个时钟周期技术加1,通过clk_cnt满足要求就+1) ②clk_cnt 波特率计数器(从0-433,通过50MHZ的同步时钟sys_clk控制)。
           2.如何启动——由start_flag启动——而start_flag又是通过抓取uart_rxd,即PC端给出的下降沿来启动。
           3.当start_flag启动后——拉高rx_flag代表模块进入接收数据状态——当rx_cnt等于1,将uart_rxd对应的“bit 0”数据传输给uart_data的第零位,指导数据传输完毕。
           4.当rx_cnt=9时——给出一个uart_down的信号,代表接收数据完毕。

3. 串口发送

对称操作,FPGA端有 uart_txd 、 tx_start_flag、tx_flag等。
不同的是,传输数据从uart_data传送到uart_txd上,传输出去。

4.RTL电路图

 重点就是编写三个模块!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sean--Lu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值