糖尿病康复,内容丰富有趣,生活中的好帮手!
糖尿病康复 > 正点原子FPGA学习笔记4.2——UART串口通信 基于达芬奇开发板 A7

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

时间:2023-08-13 05:51:31

相关推荐

正点原子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电路图

重点就是编写三个模块!

如果觉得《正点原子FPGA学习笔记4.2——UART串口通信 基于达芬奇开发板 A7》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。