这里会显示出您选择的修订版和当前版本之间的差别。
后一修订版 | 前一修订版 | ||
icore4tfpga21 [2020/03/09 18:42] zgf 创建 |
icore4tfpga21 [2024/04/10 11:27] (当前版本) zhaowenzhe [六、 实验步骤及实验结果] |
||
---|---|---|---|
行 1: | 行 1: | ||
+ | | **银杏科技有限公司旗下技术文档发布平台** |||| | ||
+ | |技术支持电话|**0379-69926675-801**||| | ||
+ | |技术支持邮件|Gingko@vip.163.com||| | ||
+ | ^ 版本 ^ 日期 ^ 作者 ^ 修改内容 ^ | ||
+ | | V1.0 | 2020-03-09 | gingko | 初次建立 | | ||
+ | |||
===== 实验二十一:双口RAM实验——基于双口RAM的ARM与FPGA通信 ===== | ===== 实验二十一:双口RAM实验——基于双口RAM的ARM与FPGA通信 ===== | ||
行 8: | 行 14: | ||
==== 二、 实验设备及平台 ==== | ==== 二、 实验设备及平台 ==== | ||
- | - iCore4T 双核心板。[[https://item.taobao.com/item.htm?spm=a1z10.1-c.w137644-251734891.3.5923532fDrMDOe&id=610595120319|点击购买]] | + | - iCore4T 双核心板。 |
- | - Blaster(或相同功能)仿真器。[[https://item.taobao.com/item.htm?id=554869837940|点击购买]] | + | - iTool A(或相同功能)仿真器。 |
- | - JLINK(或相同功能)仿真器。 | + | - USB Type C 线缆。 |
- | - Micro USB线缆。 | + | |
- Keil MDK 开发平台。 | - Keil MDK 开发平台。 | ||
- Quartus开发平台。 | - Quartus开发平台。 | ||
行 18: | 行 23: | ||
* RAM全称是Random Access Memory(随机存取存储器),是与处理器进行数据交互的存储器。既可向指定地址单元写入信息也可从指定地址单元中读取信息,掉电后数据丢失,属于易失性存储器。 | * RAM全称是Random Access Memory(随机存取存储器),是与处理器进行数据交互的存储器。既可向指定地址单元写入信息也可从指定地址单元中读取信息,掉电后数据丢失,属于易失性存储器。 | ||
- | * 双口RAM分为伪双口RAM和真双口RAM两种,伪双口RAM一个端口只读,另一个端口只写;而真双口RAM两个端口都能读写。在SPI通信实验中,使用的就是伪双口RAM,因此,在本实验中只讲真双口RAM。从整体上讲,真双口RAM和伪双口RAM都能同时进行读写操作;虽然有两个端口,两套数据线和地址线,但是存储数据的空间单元是共享的,因此存储后的数据也是共享的。其基本工作时序和普通RAM一致,都是以时钟上升沿作为触发事件,在上升沿到来前保证地址和数据稳定即可将数据准确的写入对应的地址单元中,读取时,也是如此。其读写时序如图21.1所示。 | + | * 双口RAM分为伪双口RAM和真双口RAM两种,伪双口RAM一个端口只读,另一个端口只写;而真双口RAM两个端口都能读写。从整体上讲,真双口RAM和伪双口RAM都能同时进行读写操作;双口RAM虽然有两个端口,两套数据线和地址线,但是存储数据的空间单元是共享的,因此存储后的数据也是共享的。本实验中通过例化IP核在FPGA内部构建真双口RAM存储器,其基本工作时序和普通RAM一致,都是以时钟上升沿作为触发事件,在上升沿到来前保证地址和数据稳定即可将数据准确的写入对应的地址单元中,读取时,也是如此。其读写时序如图21.1所示。 |
21.1(a) 读时序图 | 21.1(a) 读时序图 | ||
{{ :icore4t:icore4t_fpga_21_1_a_.png?direct |21.1(a) 读时序图}} | {{ :icore4t:icore4t_fpga_21_1_a_.png?direct |21.1(a) 读时序图}} | ||
21.1(b) 写时序图 | 21.1(b) 写时序图 | ||
{{ :icore4t:icore4t_fpga_21_1_b_.png?direct |21.1(b) 写时序图}} | {{ :icore4t:icore4t_fpga_21_1_b_.png?direct |21.1(b) 写时序图}} | ||
- | * 本实验基于ARM+FPGA构架,通过SPI实现ARM与FPGA之间通信,以双口RAM作为FPGA内部的数据存储器,实现ARM对数据的读写功能。ARM通过SPI将数据发送到FPGA,FPGA通过A端口将数据写入存储器中,然后通过B端口读出来返回给ARM,实现数据的交互,实验流程较为简单,重点是要掌握其时序的描述及使用方法。 | + | * 本实验基于ARM+FPGA构架,通过SPI实现ARM与FPGA之间通信,以双口RAM作为FPGA内部的数据存储器,实现ARM对数据的读写功能。ARM通过SPI将数据发送到FPGA,FPGA通过A端口将数据写入存储器中,然后通过B端口读出来返回给ARM,实现数据的交互。实验流程较为简单,重点是要掌握双口RAM的读写操作时序以及双口RAM IP核的调用。 |
==== 四、 RAM IP核调用 ==== | ==== 四、 RAM IP核调用 ==== | ||
行 74: | 行 79: | ||
//优点在于具有2个输入2个输出端口,两个端口都可用于输入输出,可实现同时读写,便于控制。 | //优点在于具有2个输入2个输出端口,两个端口都可用于输入输出,可实现同时读写,便于控制。 | ||
//数据从A端口写入,从B端口读出 | //数据从A端口写入,从B端口读出 | ||
+ | wire [7:0]b_dataout; | ||
+ | wire [7:0]a_dataout; | ||
+ | |||
spi_ram u0( | spi_ram u0( | ||
- | .address_a(address_a), | + | .address_a(a_addr), |
- | .address_b(address_b), | + | .address_b(address_b), |
- | .data_a(receive_byte), | + | .data_a(a_datain), |
- | .data_b(8'd0), | + | .data_b(b_datain), |
- | .inclock(wr_clk), | + | .clock_a(!a_clk), |
- | .outclock(rd_clk), | + | .clock_b(b_clk), |
- | .rden_a(1'd0), | + | |
- | .rden_b(rd_en), | + | .rden_a(a_rden), |
- | .wren_a(wr_en), | + | .rden_b(b_rd_en), |
- | .wren_b(1'd0), | + | .wren_a(a_wren), |
- | .q_a(a_dataout), | + | .wren_b(1'd0),//b_wr_en |
- | .q_b(data_out) | + | .q_a(a_dataout), |
+ | .q_b(b_dataout) | ||
); | ); | ||
</code> | </code> | ||
- | ==== 六、 实验步骤及实验结果 ==== | ||
- | 1、将硬件正确连接,如图21.15所示。 | ||
- | {{ :icore4t:icore4t_fpga_21_15.png?direct |图21.15}} | ||
- | 2、打开putty串口调试工具,打开设备管理器查看对应的端口信息,在putty中打开对应的端口,用于打印串口信息及控制RAM读写; | + | ==== 六、 实验步骤及实验结果 ==== |
- | 3、将编写好的FPGA代码进行编译,并下载到开发板中; | + | |
- | 4、将编写好的ARM代码编译,并下载到开发板中,putty工具中会打印相应的SPI通信相关信息(若想多次测试,查看结果在putty中输入“test”即可); | + | * 1、将硬件正确连接,如图21.15所示。 |
- | 5、观察实验现象及putty终端打印信息——FPGA_LED闪烁,putty终端打印如图21.16所示. | + | {{ :icore4t:icore4t_ide_1_37.jpg?600 |图21.15}} |
- | {{ :icore4t:icore4t_fpga_21_16.png?direct |图21.16}} | + | |
+ | * 2、打开putty串口调试工具,打开设备管理器查看对应的端口信息,在putty中打开对应的端口,用于打印串口信息及控制RAM读写; | ||
+ | * 3、将编写好的FPGA代码进行编译,并下载到开发板中; | ||
+ | * 4、将编写好的ARM代码编译,并下载到开发板中,putty工具中会打印相应的SPI通信相关信息(若想多次测试,查看结果在putty中输入“test”即可); | ||
+ | * 5、观察实验现象及putty终端打印信息——FPGA_LED闪烁,putty终端打印如图21.16所示. | ||
+ | {{ :icore4t:icore4t_fpga_21_16.jpg?direct |图21.16}} | ||
==== 七、 拓展实验 ==== | ==== 七、 拓展实验 ==== |