目录

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

实验十五:单口RAM实验——基于单口RAM的ARM与FPGA通信

一、 实验目的与意义

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

二、 实验设备及平台

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

三、 实验原理

图15-1(a)读时序图 图15-1(b) 写时序图

图15-2

四、 RAM IP核调用

1、打开Tool →Megawizard Plug-In Manager,如图15-3所示。 图15-3 2、在下面界面中保持默认,直接Next即可,如图15-4所示。 图15-4 3、在该界面中选择单口RAM IP核、芯片类型、硬件描述语言类型及IP核相关文件存储位置,如图15-5所示。 图15-5 4、在该对话框中设置数据位宽及RAM的存储深度,选择单时钟控制还是双时钟控制,本例程选择单时钟控制,如图15-6所示。 图15-6 5、在该对话框中设置输出端口是否用寄存器缓存,本例程选择不缓存;增加读使能控制信号,这样方便对时钟的读写进行分时控制,如图15-7所示。 图15-7 6、在此对话框保持默认设置,直接Nrxt即可,如图15-8示。 图15-8 7、直接Next即可,如图15-9所示。 图15-9 8、该界面选择是否生成网表,默认为不选择,一般直接Next即可,如图15-10所示。 图15-10 9、选择要生成的IP核相关文件,没特殊需求直接默认即可,如图15-11 图15-11

五、 代码讲解

IP核调用只是生成相关的模块文件,在应用中要实现存储、读写功能,还需要对IP核进行实例化操作,其例化代码如下:
//------------------------------------------------//
//单口RAM的缺点在于只有一套数据线和地址线、一个时钟信号,需要分时复用。
//有点在于相同容量的RAM占用的逻辑资源小于双口RAM。
ram u1(
	.clock(clk),
	.wren(!wr),
	.rden(!rd),
	.address(ab),
	.data(db),
	.q(data_out)
);

六、 实验步骤

图15-12

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

七、 实验现象

命令格式:

例如:

图15-13 图15-14