FPGA 基于双端口RAM的串口通信系统
FPGA实验报告
文章目录
- 一、概述
- 1、目的及意义:
- 2、主要功能:
- 二、原理及步骤
- 1、原理框图:
- 2、工作原理
- 3、功能模块简介
- 4、实验步骤
- 三、程序设计及描述
- 四、仿真与综合测试
- 五、总结
一、概述
1、目的及意义:
设计居于双端口RAM的串口的通信系统。实现用COMPORT发送数据,并在FPGA上用七段数码管显示出来。
2、主要功能:
FIFO队列是一种数据缓冲器,用于数据的缓存。他是一种先入先出的存储器,即最先写入的数据,最先读。FIFO的参数有数据深度和数据宽度。数据宽度是指存储数据的宽度。深度是指存储器可以存储多少个数据。
二、原理及步骤
1、原理框图:
2、工作原理
双口RAM分伪双口RAM与双口RAM(Xilinx称为true two-dual RAM),伪双口RAM,一个端口只读,另一个端口只写,且写入和读取的时钟可以不同,位宽比可以不是1:1;而双口RAM两个端口都分别带有读写端口,可以在没有干扰的情况下进行读写,彼此互不干扰。
3、功能模块简介
RAM2:RAM核用于数据的存储和读取。UART通信协议:用于数据传输,将串行数据和并行数据进行转换,完成数据在PC端和FPGA之间进行传输。
4、实验步骤
1、因为项目是在UART通信协议的基础上设计的,所以先仿照前面的实验设计UART通信协议(修改项目名防止报错)。
2、添加IP核,按照实验要求添加双口RAM,勾选inst文件。
3、编写代码:使用函数调用的方式连接RAM核与UART通信协议,使其成为一个完整的项目。编写项目时利用receive_ack信号(完整接收到一个数据),作为触发条件修改地址,在实际操作中将数据一位一位的传入(可以使用空格作为分隔符)。
4、使用SignalTap进行仿真验证,观察数据传输的过程,充分理解双口RAM的工作原理。
三、程序设计及描述
代码:)
module RAM_uart_top
(output txd,output [6:0] hex0,hex1,hex2,hex3, //两个七段数码管对数据进行显示input rxd,input clk,input r_den_b, input w_ren_a,input [7:0]data_tx //实际传输数据
);wire clk_9600;wire receive_ack;wire [7:0] data;wire [7:0] datas;reg [7:0] dataz;reg [7:0 ]qb[3:0];reg [7:0] wdress;//写地址reg [7:0] rdress;//读地址integer i;integer j;//reg [4:0] i;//异步读写//receive_ack变1收到一个数据// 在receive_ack的上升沿进行写always @(posedge receive_ack)beginif (wdress == 8'd132)begin wdress = 8'd128;end if(j < 4)begindataz[j] = dataS;endelsebeginj = 0;dataz[j] = dataS;endj = j+1;wdress = wdress +1;//更新地址end//在receive_ack的下降沿进行读 always @(negedge receive_ack)beginif (rdress == 8'd132)begin rdress = 8'd128;endif(i < 4)beginqb[i] = qb_tmp1;endelsebegini = 0;qb[i] = qb_tmp1;endi = i+1;rdress = rdress +1;end//发送模块uart_tx uart_tx(.clk(clk_9600),.txd (txd),.data_o(data_tx), //实际发送值.send (start) //允许发送怎么填写);//接受模块uart_rx uart_rx(.clk(clk_9600),.rxd (rxd),.receive (receive),.data_i (data),.data_s (datas),// .receive_ack(receive_ack));//时钟模块clk_div clk_div(.clk (clk),.clk_out (clk_9600));RAM2 RAM2_inst(.clock(clk),.address_a(wdress),//.address_b(rdress), .data_a(datas),.data_b(),.rden_a(),.rden_b(r_den_b),.wren_a(w_ren_a),.wren_b(),.q_a(),.q_b(qb_tmp1)
);//数码管显示 num进行显示hex_7seg seg0 (.hex(qb[0]),.sseg(hex0));hex_7seg seg1 (.hex(qb[1]),.sseg(hex1));hex_7seg seg2 (.hex(qb[2]),.sseg(hex2));hex_7seg seg3 (.hex(qb[3]),.sseg(hex3));
endmodule
四、仿真与综合测试
1、 仿真图
2、 实物图
五、总结
1、此次实验要求做真双口,但由于我们注释掉了另一个端口,实际操作只在一个端口上实现,所以也只能算伪双口的RAM通信协议。
2、FIFO也是一个端口只读,另一个端口只写。FIFO与伪双口RAM的区
别在于,FIFO为先入先出,没有地址线,不能对存储单元寻址;而伪双口RAM两个端口都有地址线,可以对存储单元寻址;异步时钟域的缓存只要是双口器件都可以完成,但FIFO不需对地址进行控制,是最方便的。
FPGA 基于双端口RAM的串口通信系统相关推荐
- FPGA基于双端口RAM的乒乓操作
如果需要重读,需要用ram,如果不需要重读的话就用FIFO 双buffer不太好实现错误重传机制!!!! 双buffer作用: 1.跨时钟域 2.完成数据位宽转换 3.完成数据缓冲 双buffer缓冲 ...
- 【FPGA】双端口RAM的设计(同步读写)
之前的博文都是讲单端口RAM的,它们仅有一套控制输入,例如cs,we,oe,还有数据总线以及地址. [FPGA]单端口RAM的设计(同步读.同步写) 附上太多链接,我也累,自己找吧. 双端口RAM,顾 ...
- 【FPGA】双端口RAM的设计(异步读写)
上篇写了双端口RAM设计(同步读写):https://blog.csdn.net/Reborn_Lee/article/details/90647784 关于异步读写和同步读写,在单端口RAM设计中也 ...
- 【正点原子FPGA连载】第十九章IP核之双端口RAM实验 -摘自【正点原子】新起点之FPGA开发指南_V2.1
1)实验平台:正点原子新起点V2开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=609758951113 2)全套实验源码+手册+视频下载地址:ht ...
- (195)FPGA编程:双端口RAM(一)
(195)FPGA编程:双端口RAM(一) 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA编程:双端口RAM(一): 5)结束语. 1.1.2 本节引言 &qu ...
- Quartus 平台 FPGA 片内 RAM 使用
Quartus 平台 FPGA 片内 RAM 使用 本文将以 Quartus 自带的 RAM:2-PORT 为例,介绍 EP4CE6E22C8 On Chip Memory 的使用 一.在 IP Ca ...
- 基于可见光(LIFI)通信系统 的机动车智能辅助装置(课程设计)
基于可见光(LIFI)通信系统 的机动车智能辅助装置(课程设计) 创新性 (1)解决了会车时因为驾驶员的疏忽而没有及时切换远光灯为近光灯,通过LED车灯的可见光通信途径完成智能辅助车灯远近光束切换功能 ...
- FPGA设计中RAM的一些基本概念
1.FPGA中双口RAM的基本概念 在FPGA的设计中,常用的数据缓存IP有FIFO和RAM,其中RAM又分为单口RAM,伪双口RAM和双口RAM. 单口RAM与双口RAM的区别在于,单口RAM只有一 ...
- 基于PC与单片机串口通信的温度监控系统程序设计
基于PC与单片机串口通信的温度监控系统程序设计 1.系统介绍 1)本系统主要讲解基于PC与单片机串口通信的温度监控系统程序设计(如图1),上位机采用常用的PC机,下位机使用的是STC89C52单片机, ...
最新文章
- 彻底解决PHP Session不过期以及SessionId保持不变的问题
- 【OpenCV3】将图像指定区域使用另一图像(或ROI)覆盖
- OData元数据在浏览器里以Feed视图显示的解决办法
- 【TensorFlow】TensorFlow函数精讲之value()
- MAVEN利用Profile构建不同环境的部署包
- IDEA好看的主题安装
- 计算机网络工程课程设计
- 计算机怎么用鼠标,如何正确使用鼠标,这些知识你知道吗?
- dateutil模块
- Python 救救我!如何连接串口实现一个报警灯报警器
- Excel常用电子表格公式大全1-1
- 计算机显示器性能指标的是,简述显示器的主要性能指标
- 【Java】我的世界Java版外挂制作 [2] - 游戏内GUI
- c语言编译器中cu是什么意思,.c文件调用.cu中的函数
- 证券交易系统搭建的架构方案
- WordPress Feed跳转
- springboot整合数据库
- PG+POSTGIS地图空间位置网格聚合算法
- 基于C#通过PLCSIM ADV仿真软件实现与西门子1500PLC的S7通信方法演示
- 软件安全与脆弱性分析-对于freenote小程序的Poc分析