前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >FPGA大赛【七】具体模块设计--ddr+串口联合测试

FPGA大赛【七】具体模块设计--ddr+串口联合测试

作者头像
数字积木
发布2021-04-15 11:10:09
5600
发布2021-04-15 11:10:09
举报
文章被收录于专栏:数字积木

【注】该项目是我们团队参加2019届全国大学生FPGA大赛的作品,系统主要实现视频任意角度旋转。该项目最终晋级决赛,并获得紫光同创企业特别奖。该系列文章介绍我们团队的作品。关注公众号“数字积木”对话框回复 FPGA2019 ,即可获得该项目的工程源代码,详细的文档说明,MATLAB仿真代码。

4.5 ddr+串口联合测试

4.5.1总体设计

DDR端的数据通过AXI总线进行数据传输。在前面章节介绍了DDR数据读写模块的设计(aq_axi_master),本章节中便对这个axi的读写模块进行测试。在测试中,先向ddr的某个地址中写入数据,然后再将该地址的数据读取出来,通过串口将此数据发送到电脑端,以此验证ddr数据的读写是否正确。

4.5.2串口收发模块设计

该串口收发模块有串口发送模块,串口接收模块,波特率生成模块,发送数据fifo模块,接收数据的fifo模块组成。

默认配置下,要求输入的参考时钟为50MHz,输入输出的波特率默认配置为115200.该设置体现在波特率生成模块中。

波特率可以通过定制化参数来修改。

SYS_CLK_FRP为串口模块的输入时钟频率。

BAUDRATE为要设置的数据传输波特率。

整体的设计框架如下:

端口定义如下:

端口名

方向

描述

Clk

Input

主时钟,默认频率为50MHz

Rst_n

Input

复位信号,低有效

uart_rx

Input

串口接收端口

uart_tx

Output

串口发送端口

tx_data[7:0]

Input

tx端要发送的1字节数据

rx_data[7:0]

output

rx端口接收到的1字节数据

tx_en

Input

发送数据的写入使能信号

rx_done

output

串口接收到数据的有效标志位

该模块的使用方法:

发送数据:

将要发送的数据放置到Tx_data_in[7:0]总线上,同时将Tx_wen置为高,下一个时钟时,该数据会写进tx_fifo中。如要发送多字节数据,则重复上述步骤,每个时钟向TX_FIFO中发送一个字节的数据,tx_fiof的默认深度为256,可以储存256个字节的数据,则一次最多可以发送256字节数据。

接收数据:

接收到一个字节的有效数据时,接收数据标志位rx_done为高,同时在rx_data端口输出接收到的数据.

4.5.3ddr端的数据读写设计

ddr端的读写设计如上图所示。首先进入空闲态,延时等待1秒,计时达到1秒后,进入写数据状态。起始状态下写地址和写数据设置为0,向该地址写入数据后,写地址和写数据均加1,然后读取此次写入地址的数据,待读完成后,进入空闲态,再次延时等待1秒,计时达到1秒后,在进行下一次的数据读写验证。

4.5.4串口发送数据设计

从ddr中读出的数据是64bit,但串口一次只能发送8bit的数据,则要将这64bit的数据分为8次发送出去。设计了一个数据发送模块,将64bit的数据转换为8个8bit的数据,依次通过串口发送。

具体的实现方法是,设置一个计数器,待收到ddr读出的有效数据后,将该数据分8次传输到串口发送模块。同时将串口发送数据的有效标志位置高,直到8bit的数据全部发送完成。

核心代码如下图所示:

4.5.5测试结果

将经过综合,布局布线后,生成的比特流文件下载到开发板中,打开串口终端,连接到FPGA的串口。可以看到数据以1秒8字节的速度在不断的接收。

而且接收到的数据以8字节为一组,以依次加一的规律出现。证明ddr的数据读写过程无误。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-04-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数字积木 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 【注】该项目是我们团队参加2019届全国大学生FPGA大赛的作品,系统主要实现视频任意角度旋转。该项目最终晋级决赛,并获得紫光同创企业特别奖。该系列文章介绍我们团队的作品。关注公众号“数字积木”对话框回复 FPGA2019 ,即可获得该项目的工程源代码,详细的文档说明,MATLAB仿真代码。
    • 4.5.1总体设计
      • 4.5.2串口收发模块设计
        • 4.5.3ddr端的数据读写设计
          • 4.5.4串口发送数据设计
            • 4.5.5测试结果
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档