目录

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

实验二十一:双口RAM实验——基于双口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. 电脑一台。

三、 实验原理

21.1(a) 读时序图 21.1(a) 读时序图 21.1(b) 写时序图 21.1(b) 写时序图

四、 RAM IP核调用

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

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

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

4、在该对话框中选择真双口RAM(两个输入两个输出),存储深度以字节为单位,如图21.5所示。 图21.5

5、在该对话框中设置存储深度,如图21.6所示。 图21.6

6、在此对话框选择时钟信号输入方式、增加读使能信号,如图21.7所示。 图21.7

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

8、该对话框直接Next即可,如图21.9所示。 图21.9

9、选择读出的数据是新数据还是老数据,一般设置新数据(New Data),如图21.10所示。 图21.10

10、该对话框设置RAM无初始值,直接Next,如图21.11所示 图21.11

11、直接Next,如图21.12所示。 图21.12

12、选择生成的IP核关联文件类型,如图21.13所示。 图21.13

13、IP核设置完成后出现下面对话框,点击Yes,否则将无法正常调用RAM,如图21.14所示。 图21.14

五、 代码讲解

//------------------------------------------------//
//spi_ram
//负责存储SPI通信的数据(具体的存储位置可通过spi命令寄存器设置)
//双口RAM的缺点是与单口RAM相比,相同容量的RAM占用逻辑资源比较多。
//优点在于具有2个输入2个输出端口,两个端口都可用于输入输出,可实现同时读写,便于控制。
//数据从A端口写入,从B端口读出
wire [7:0]b_dataout;
wire [7:0]a_dataout;
 
spi_ram u0(
	.address_a(a_addr),
	.address_b(address_b),
	.data_a(a_datain),
	.data_b(b_datain),
	.clock_a(!a_clk),
	.clock_b(b_clk),
 
	.rden_a(a_rden),
	.rden_b(b_rd_en),
	.wren_a(a_wren),
	.wren_b(1'd0),//b_wr_en
	.q_a(a_dataout),
	.q_b(b_dataout)
);

六、 实验步骤及实验结果

图21.15

图21.16

七、 拓展实验

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