目录

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

实验二十:基于单口RAM的ARM+FPGA 数据存取实验

一、 实验目的与意义

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

二、 实验设备及平台

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

三、 实验原理

20.1(a) 读时序图

20.1(b) 写时序图

四、 RAM IP核调用

1、新建一个工程名为pll的工程,然后点击Tool →Megawizard Plug-In Manager,如图20.2所示。 图20.2

2、在下面界面中保持默认,直接Next即可,如图20.3所示。 图20.3

3、在该界面中选择单口RAM IP核、芯片类型、硬件描述语言类型及IP核相关文件存储位置,如图20.4所示。 图20.4

4、在该对话框中设置数据位宽及RAM的存储深度,选择单时钟控制还是双时钟控制,本例程选择单时钟控制,如图20.5所示。 图20.5

5、在该对话框中设置输出端口是否用寄存器缓存,本例程选择不缓存;增加读使能控制信号,这样方便对时钟的读写进行分时控制,如图20.6所示。 图20.6

6、在此对话框保持默认设置,直接Next即可,如图20.7所示。 图20.7

7、直接Next即可,如图20.8所示。 图20.8

8、该界面选择是否生成网表,默认为不选择,一般直接Next即可,如图20.9所示。 图20.9

9、选择要生成的IP核相关文件,没特殊需求直接默认即可,如图20.10所示。 图20.10

五、 代码讲解

//------------------------------------------------//
//spi_ram
//负责存储SPI通信的数据(具体的存储位置可通过spi命令寄存器设置)
//单口RAM的缺点在于只有一套数据线和地址线、一个时钟信号,需要分时复用。
//有点在于相同容量的RAM占用的逻辑资源小于双口RAM。
spi_ram u0( 
    .clock(clk),
    .wren(wr_en),
    .address(address),
    .data(receive_byte),
 
    .rden(rd_en),   
    .q(data_out)
);

六、 实验步骤及实验结果

图20.11

图20.12

七、 拓展实验

  1. 通过Signaltap观察RAM读写时序是否和参考时序一致。
  2. 别设置双时钟和输出端口增加寄存器,看看读取数据有什么变化。