目录

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

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

一、 实验目的与意义

  1. 掌握FIFO IP核的调用及例化方法。
  2. 掌握FIFO存储器的读写时序。
  3. 掌握QuartusII的使用方法。

二、 实验设备及平台

  1. iCore4T 双核心板。
  2. iTool A(或相同功能)仿真器。
  3. USB Type C 线缆。
  4. Keil MDK 开发平台。
  5. Quartus开发平台。
  6. 电脑一台。

三、 实验原理

22.1(a)读操作时序 22.1(b)写操作时序

四、 FIFO IP核调用

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

五、 代码讲解

IP核调用只是生成相关的模块文件,在应用中要实现存储、读写功能,还需要对IP核进行实例化操作,FIFO IP核例化代码如下:

//------------------------------------------------//
//spi_fifo
//负责存储SPI通信的数据
//FIFO:先进先出,主要用于缓存数据。
spi_fifo u0(
    .data(receive_byte),
    .wrclk(wrclk),
    .wrreq(wrreq),
    .wrfull(),
 
    .rdclk(rdclk),  
    .rdreq(rdreq),
    .rdempty(),
    .q(data_out)
);

六、 实验步骤及实验结果

图22.13

  1. 将硬件正确连接,如图22.13所示。
  2. 打开putty串口调试工具,打开设备管理器查看对应的端口信息,在putty中打开对应的端口,用于打印串口信息及控制FIFO读写;
  3. 将编写好的FPGA代码进行编译,并下载到开发板中;
  4. 将编写好的ARM代码编译,并下载到开发板中,putty工具中会打印相应的SPI通信相关信息(若想多次测试,查看结果在putty中输入“test”即可);
  5. 观察实验现象及putty终端打印信息——FPGA_LED闪烁,putty终端打印如图22.14所示。

图22.14

七、 拓展实验

1.通过Signaltap观察FIFO读写时序是否和参考时序一致。