用户工具

站点工具


基于fifo的arm_fpga数据存取实验
银杏科技有限公司旗下技术文档发布平台
技术支持电话0379-69926675-801
技术支持邮件Gingko@vip.163.com
版本 日期 作者 修改内容
V1.0 2020-07-03 gingko 初次建立

实验十七:FIFO实验——基于FIFO的ARM与FPGA数据存取

一、 实验目的与意义

  1. 掌握双口RAM IP核的调用及例化方法。
  2. 掌握RAM读写时序。
  3. 掌握QuartusII的使用方法。

二、 实验设备及平台

  1. iCore4 双核心板点击购买
  2. Blaster(或相同功能)仿真器点击购买
  3. JLINK(或相同功能)仿真器。
  4. Micro USB线缆。
  5. Keil MDK 开发平台。
  6. Quartus开发平台。
  7. 电脑一台。

三、 实验原理

  • FIFO(First Input First Output)是一种先进先出的存储器。与之前的RAM相比较而言,FIFO存储器没有地址线,操作起来更加的简单,但其缺点就在于,只能顺序读写数据,不能随意指定读写数据的地址单元。根据读写时钟的相同与否,FIFO可分为异步FIFO和同步FIFO两种,本实验讲的是异步FIFO。
  • FIFO的读写时钟在每个时钟上升沿到来时对数据进行操作;读写请求信号为高电平有效,低电平失能。
  • FIFO读写操作的工作原理:在FIFO内部有读写指针,其中,读指针指向下一个将要读取数据的地址,复位时指针指向0地址;写指针指向下一个将要写入数据的地址,复位指针指向0地址。
  • FIFO的空/满检测是FIFO应用中的一个重要参数,不过在应用过程中,这两项参数不是必须使用的,可以通过控制读写时钟及读写请求信号来避免溢出,即通过人为的控制数据长度避免读写溢出(本实验即使如此)。
  • 根据上面的介绍可知,FIFO的读写操作时序如图17-1所示。

17-1(a)读操作时序 17-1(b)写操作时序

  • 本实验通过串口发送命令控制FIFO的读写操作。首先,Commix向ARM发送命令,ARM通过FSMC总线向FIFO中写入数据,当ARM读到满标志时,停止写入,自动从FIFO中读取已写入的数据,通过串口显示出来,对比写入与读取数据的顺序与大小。实验原理如下图所示。

图17-2

四、 FIFO IP核调用

1、然后点击Tool →Megawizard Plug-In Manager,如图17-3所示。 图17-3 2、在下面界面中保持默认,直接Next即可,如图17-4所示。 图17-4 3、在该界面中选择FIFO IP核、芯片类型、硬件描述语言类型及IP核相关文件存储位置,如图17-5所示。 图17-5 4、在该对话框中设置FIFO的位宽、存储深度,并选择同步还是异步FIFO(一般选择异步),如图17-6所示。 图17-6 5、该对话框保持默认直接Next即可,如图17-7所示。 图17-7 6、在此对话框选择空满标志信号及信号的输出方式(一般满标志选择写方向),如图17-8所示。 图17-8 7、选择读请求的模式,如图17-9所示。 图17-9 8、该对话框选择是否禁用“上溢”和“下溢”检测,一般选择禁用,如图17-10所示。 图17-10 9、保持默认值,直接Next即可,如图17-11所示。 图17-11 10、该对话框选择要生成的FIFO相关文件,一般保持默认即可,如图17-12所示 图17-12 11、IP核设置完成后出现下面对话框,点击Yes,否则将无法正常调用FIFO,如图17-13所示。 图17-13

五、 代码讲解

  • IP核调用只是生成相关的模块文件,在应用中要实现存储、读写功能,还需要对IP核进行实例化操作,FIFO IP核例化代码如下:
//------------------------------------------------//
//FIFO:先进先出,主要用于缓存数据。
my_fifo u2(
	.data(data_in),
	.wrreq(1'd1),
	.wrclk(wr2),
	.rdreq(1'd1),
	.rdclk(!rd),
	.wrfull(fifo_full_flag),
	.q(data_out)
);

六、 实验步骤

图17-14

  1. 将硬件正确连接,如图17-14所示。
  2. 打开Commix,找到对应的COM端口打开。
  3. 打开QuartusII开发环境,并打开实验工程。
  4. 将FPGA程序下载至iCore4上。
  5. 打开Keil MDK开发环境,并打开实验工程。
  6. 将ARM程序下载至iCore4上。
  7. 输入串口命令,观察实验现象。

七、 实验现象

  • 在Commix界面对比FIFO写入数据与读取数据的大小和顺序,发现数据的大小和顺序保持一致。
    • 写命令:write_fifo\cl\lf

图17-15

基于fifo的arm_fpga数据存取实验.txt · 最后更改: 2022/03/22 10:30 由 sean