首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

搭建串口收发与存储双口RAM简易应用系统

搭建串口收发与存储双口RAM简易应用系统

实验目的:1.学习系统模块化设计技巧并学会用Visio的基本使用

2.以模块化设计为基础利用已编写的串口收发模块、按键模块以及RAM的IP模块来设计一个简易应用系统

实验平台:芯航线FPGA学习套件核心板

实验原理:

为了实现通过串口发送数据到FPGA中,FPGA接收到数据后将数据存储在双口ram的一段连续空间中,当需要时,按下按键0,则FPGA将RAM中存储的数据通过串口发送出去。先进行功能划分:串口接收模块、按键消抖模块、RAM模块、串口发送模块以及控制模块。前几讲除了控制模块均已经详细介绍,得益于当时的设计这里就不用再次编写这些模块,可以直接在本工程下进行调用。

利用Visio画出系统的结构图,Visio的使用方法可以参看本节配套视频,此处不再详述。

13-1 系统结构图

实验步骤:

以13_A讲建立的工程为基础,先将已编写好的模块设计文件添加进工程中,并新建一个以名为UART_DPRAM.v的设计文件保存在rtl下,并设置为顶层文件。

这样对照图13-1 用Top-Down的设计方式就可以先把顶层文件写出。结构图左边的端口为input类型,右边的为output类型,内部连线均为wire型。可以看出在进行一个系统设计时,良好的模块划分以及设计的重要性。然后例化各个模块,这里将波特率设置为9600bps。


         

现在编写本系统的控制模块CTRL.v,模块的接口可参照系统结构图写出。为了实现FPGA接收到数据后将数据存储在双口ram的一段连续空间中,这样就需要设计一个写地址自加的控制部分,且其控制信号为串口接收模块输出的Rx_Done信号。每来一个Rx_Done也就是每接收成功一字节数,地址数进行加一。



为了实现当按下按键0,FPGA将RAM中存储的数据通过串口发送出去,这样也就是实现一旦按键按下即启动连续读操作,再次按下即可暂停发送。





         

在上一讲中仿真双端口RAM时发现其输出延迟两个系统时钟周期。这样为了保证数据变化稳定之后才进行数据输出,将驱动Send_en的信号接两级寄存器进行延迟两拍。当按键按下后启动一次发送,然后判断上一字节是否发送结束,是则进行下一字节发送否则不进行下一次发送。


         

编译无误后,可以在RTL viewer中查到如图13-2所示的顶层结构图,可与实验之初设计的系统结构图进行对比。

13-2 系统顶层RTL viewer

为了测试仿真编写测试激励文件,这里由于使用了按键消抖模块,因此须将创建的key_modle.v仿真模型加入到工程中。新建UART_DPRAM_tb.v文件除了例化各模块,其激励文件可以直接复制串口发送模块的测试激励文件。再次进行分析和综合直至没有错误以及警告,保存到testbench文件夹下。

这里需将按键的仿真模型加仿真脚本后进行功能仿真可以看到如图13-4所示的波形文件。每当写入地址加一时数据均可以有效的写入,按键按下后每当一次输出结束后读地址也进行加一,实现数据输出。


返回列表