用户工具

站点工具


icore4tx_fpga_22

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

后一修订版
前一修订版
上一修订版 两侧同时换到之后的修订记录
icore4tx_fpga_22 [2020/07/01 11:07]
zgf 创建
icore4tx_fpga_22 [2020/07/01 11:23]
zgf
行 1: 行 1:
 +|  **银杏科技有限公司旗下技术文档发布平台** ​ ||||
 +|技术支持电话|**0379-69926675-801**|||
 +|技术支持邮件|Gingko@vip.163.com|||
 +|技术论坛|http://​www.eeschool.org|||
 +^  版本 ​ ^  日期 ​ ^  作者 ​ ^  修改内容 ​ ^
 +|  V1.0  |  2020-07-01 ​ |  gingko ​ |  初次建立 ​ | 
 +
 +\\
 +
 ===== 实验二十二:FIFO实验——基于FIFO的ARM与FPGA数据存取 ===== ===== 实验二十二:FIFO实验——基于FIFO的ARM与FPGA数据存取 =====
  
行 8: 行 17:
 ==== 二、 实验设备及平台 ==== ==== 二、 实验设备及平台 ====
  
-  - iCore4TX 双核心板。+  - iCore4TX 双核心板[[https://​item.taobao.com/​item.htm?​spm=a1z10.1-c-s.w4004-22598974120.3.29da532fLkazHH&​id=614919247574|点击购买]]
   - USB-CABLE(或相同功能)仿真器。   - USB-CABLE(或相同功能)仿真器。
   - JLINK(或相同功能)仿真器。   - JLINK(或相同功能)仿真器。
行 16: 行 25:
   - 电脑一台。   - 电脑一台。
 ==== 三、 实验原理 ==== ==== 三、 实验原理 ====
- 
   * FIFO(First Input First Output)是一种先进先出存储器。与之前的RAM相比较而言,FIFO存储器没有地址线,操作起来更加的简单,但其缺点就在于,只能顺序读写数据,不能随意指定读写数据的地址单元。根据读写时钟的相同与否,FIFO可分为异步FIFO和同步FIFO两种,本实验讲的是异步FIFO。   * FIFO(First Input First Output)是一种先进先出存储器。与之前的RAM相比较而言,FIFO存储器没有地址线,操作起来更加的简单,但其缺点就在于,只能顺序读写数据,不能随意指定读写数据的地址单元。根据读写时钟的相同与否,FIFO可分为异步FIFO和同步FIFO两种,本实验讲的是异步FIFO。
   * FIFO的读写时钟在每个时钟上升沿到来时对数据进行操作;读写请求信号为高电平有效,低电平失能。   * FIFO的读写时钟在每个时钟上升沿到来时对数据进行操作;读写请求信号为高电平有效,低电平失能。
行 24: 行 32:
    
 22-1(a)读操作时序 22-1(a)读操作时序
- +{{ :​icore4tx:​icore4tx_fpga_22_1_a.png?​direct |读操作时序}} ​
 22-1(b)写操作时序 22-1(b)写操作时序
- 本实验基于ARM+FPGA构架,通过SPI实现ARM与FPGA之间通信,ARM通过SPI总线向FPGA发送相关指令;FPGA内部例化的FIFO作为ARM的外部存储器,根据指令进行对应的读写操作,从而实现ARM对FPGA内部FIFO的数据读写功能。实验流程较为简单,重点是掌握FIFO IP核的调用及时序的描述。 +{{ :​icore4tx:​icore4tx_fpga_22_1_b.png?​direct |写操作时序}}  
-四、 FIFO IP核调用+  * 本实验基于ARM+FPGA构架,通过SPI实现ARM与FPGA之间通信,ARM通过SPI总线向FPGA发送相关指令;FPGA内部例化的FIFO作为ARM的外部存储器,根据指令进行对应的读写操作,从而实现ARM对FPGA内部FIFO的数据读写功能。实验流程较为简单,重点是掌握FIFO IP核的调用及时序的描述。 
 +==== 四、 FIFO IP核调用 ​==== 
 1、新建一个工程名为fifo的工程,然后选中工程右击,下拉菜单中选择New Source…,如图22-2所示。 1、新建一个工程名为fifo的工程,然后选中工程右击,下拉菜单中选择New Source…,如图22-2所示。
-  +{{ :​icore4tx:​icore4tx_fpga_22_2.png?​direct |图22-2}}
-图22-2+
 2、弹出窗口选择新建IP核文件,既IP(CORE Generator & Architecture Wizard)选项。右侧的File name栏给IP核文件命名为fifo,点击Next。 2、弹出窗口选择新建IP核文件,既IP(CORE Generator & Architecture Wizard)选项。右侧的File name栏给IP核文件命名为fifo,点击Next。
-  +{{ :​icore4tx:​icore4tx_fpga_22_3.png?​direct |图22-3}}
-图22-3+
 3、弹出IP核选择界面,点击Memories & Storage Elements 前面的“+”,再点击FIFOs前面的“+”,然后点击FIFO Generator选定,点击Next。 3、弹出IP核选择界面,点击Memories & Storage Elements 前面的“+”,再点击FIFOs前面的“+”,然后点击FIFO Generator选定,点击Next。
-  +{{ :​icore4tx:​icore4tx_fpga_22_4.png?​direct |图22-4}}
-图22-4+
 4、点击Finish。 4、点击Finish。
-  +{{ :​icore4tx:​icore4tx_fpga_22_5.png?​direct |图22-5}}
-图22-5+
 5、弹出FIFO IP核相关参数设置界面,如下图所示,这里的Interface Type 选择Native,然后点击Next。 5、弹出FIFO IP核相关参数设置界面,如下图所示,这里的Interface Type 选择Native,然后点击Next。
-  +{{ :​icore4tx:​icore4tx_fpga_22_6.png?​direct |图22-6}}
-图22-6+
 6、选择时钟和存储器类型。本实验对FIFO的读和写是独立操作的,因此时钟选择异步模式;block RAM 是FPGA内部定制的RAM资源,Distributed RAM则是由LUT构成的RAM资源。所以本实验FIFO Implementation栏下选择Independent Clocks(RD_CLK,​WR_CLK) Block RAM,然后点击Next。 6、选择时钟和存储器类型。本实验对FIFO的读和写是独立操作的,因此时钟选择异步模式;block RAM 是FPGA内部定制的RAM资源,Distributed RAM则是由LUT构成的RAM资源。所以本实验FIFO Implementation栏下选择Independent Clocks(RD_CLK,​WR_CLK) Block RAM,然后点击Next。
-  +{{ :​icore4tx:​icore4tx_fpga_22_7.png?​direct |图22-7}}
-图22-7+
 7、如下界面中设置Read Mode为Standard FIFO,;设置FIFO的读和写的位宽为8,写深度参数为1024,读深度根据这几个参数自动计算出来为1024;这里需要注意的是Write Depth参数设置为1024,Actual Write Depth为1023。 7、如下界面中设置Read Mode为Standard FIFO,;设置FIFO的读和写的位宽为8,写深度参数为1024,读深度根据这几个参数自动计算出来为1024;这里需要注意的是Write Depth参数设置为1024,Actual Write Depth为1023。
-  +{{ :​icore4tx:​icore4tx_fpga_22_8.png?​direct |图22-8}}
-图22-8+
 8、此界面默认选项即可,点击Next。 8、此界面默认选项即可,点击Next。
-  +{{ :​icore4tx:​icore4tx_fpga_22_9.png?​direct |图22-9}}
-图22-9+
 9、这里Initialization栏下取消复位引脚,然后点击Next。 9、这里Initialization栏下取消复位引脚,然后点击Next。
-  +{{ :​icore4tx:​icore4tx_fpga_22_10.png?​direct |图22-10}}
-图22-10+
 10、此界面默认,点击Next。 10、此界面默认,点击Next。
-  +{{ :​icore4tx:​icore4tx_fpga_22_11.png?​direct |图22-11}}
-图22-11+
 11、点击Generate,生成FIFO IP核文件。 11、点击Generate,生成FIFO IP核文件。
-  +{{ :​icore4tx:​icore4tx_fpga_22_12.png?​direct |图22-12}}
-图22-12+
 12、在工程目录栏选中FIFO IP核文件,然后点击Processes:​ u0-spi_fifo窗口CORE Generator前面的“+”。双击View HDL Instantiation Template,​可以看到所有需要例化的FIFO端口信号。 12、在工程目录栏选中FIFO IP核文件,然后点击Processes:​ u0-spi_fifo窗口CORE Generator前面的“+”。双击View HDL Instantiation Template,​可以看到所有需要例化的FIFO端口信号。
-  +{{ :​icore4tx:​icore4tx_fpga_22_13.png?​direct |图22-13}}
-图22-13+
 ==== 五、 代码讲解 ==== ==== 五、 代码讲解 ====
   * IP核调用只是生成相关的模块文件,在应用中要实现存储、读写功能,还需要对IP核进行实例化操作,FIFO IP核例化代码如下:   * IP核调用只是生成相关的模块文件,在应用中要实现存储、读写功能,还需要对IP核进行实例化操作,FIFO IP核例化代码如下:
行 146: 行 144:
  
 ==== 六、 实验步骤及实验结果 ==== ==== 六、 实验步骤及实验结果 ====
-图22-14+{{ :​icore4tx:​icore4tx_fpga_22_14.png?​direct |图22-14}}
   - 将硬件正确连接,如图22-14所示。   - 将硬件正确连接,如图22-14所示。
   - 打开putty串口调试工具,打开设备管理器查看对应的端口信息,在putty中打开对应的端口,波特率设置为115200,用于打印串口信息及控制FIFO读写;   - 打开putty串口调试工具,打开设备管理器查看对应的端口信息,在putty中打开对应的端口,波特率设置为115200,用于打印串口信息及控制FIFO读写;
行 152: 行 150:
   - 将编写好的ARM代码编译,并下载到开发板中,putty工具中会打印相应的SPI通信相关信息(若想多次测试,查看结果,在putty中输入“test”即可);   - 将编写好的ARM代码编译,并下载到开发板中,putty工具中会打印相应的SPI通信相关信息(若想多次测试,查看结果,在putty中输入“test”即可);
   - 观察实验现象及putty终端打印信息——FPGA_LED闪烁,putty终端打印如图22-15所示。   - 观察实验现象及putty终端打印信息——FPGA_LED闪烁,putty终端打印如图22-15所示。
-图22-15+{{ :​icore4tx:​icore4tx_fpga_22_15.png?​direct |图22-15}}
 ==== 七、 拓展实验 ==== ==== 七、 拓展实验 ====
  
icore4tx_fpga_22.txt · 最后更改: 2022/04/01 11:39 由 sean