用户工具

站点工具


icore4tfpga_17

差别

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

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
icore4tfpga_17 [2020/03/06 15:02]
zgf [三、 实验原理]
icore4tfpga_17 [2024/04/10 11:18] (当前版本)
zhaowenzhe [五、 实验步骤及实验结果]
行 2: 行 2:
 |技术支持电话|**0379-69926675-801**||| |技术支持电话|**0379-69926675-801**|||
 |技术支持邮件|Gingko@vip.163.com||| |技术支持邮件|Gingko@vip.163.com|||
-|技术论坛|http://​www.eeschool.org||| 
 ^  版本 ​ ^  日期 ​ ^  作者 ​ ^  修改内容 ​ ^ ^  版本 ​ ^  日期 ​ ^  作者 ​ ^  修改内容 ​ ^
 |  V1.0  |  2020-03-06 ​ |  gingko ​ |  初次建立 ​ |  |  V1.0  |  2020-03-06 ​ |  gingko ​ |  初次建立 ​ | 
  
-===== 实验十:SPI通信实验——基于SPI总线的ARM与FPGA通信 =====+===== 实验十:SPI通信实验——基于SPI总线的ARM与FPGA通信 =====
  
 ==== 一、 实验目的与意义 ==== ==== 一、 实验目的与意义 ====
行 14: 行 13:
 ==== 二、 实验设备及平台 ==== ==== 二、 实验设备及平台 ====
  
-  - 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开发平台。
行 39: 行 37:
     * CPHA=0:第一个时钟延开始采样MSBit     * CPHA=0:第一个时钟延开始采样MSBit
     * CPHA=1:第二个时钟延开始采样MSBit     * CPHA=1:第二个时钟延开始采样MSBit
-  * SPI总线四种工作方式 SPI 模块为了和外设进行数据交换,根据外设工作要求,其输出串行同步时钟极性和相位可以进行配置,时钟极性(CPOL)对传输协议没有重大的影响。如果 CPOL=0,串行同步时钟的空闲状态为低电平;如果CPOL=1,串行同步时钟的空闲状态为高电平。时钟相位(CPHA)能够配置用于选择两种不同的传输协议之一进行数据传输。如果CPHA=0,在串行同步时钟的第一个跳变沿(上升或下降)数据被采样;如果CPHA=1,在串行同步时钟的第二个跳变沿(上升或下降)数据被采样。SPI主模块和与之通信的外设备时钟相位和极性应该一致。如图15.1所示 +  * SPI总线四种工作方式 SPI 模块为了和外设进行数据交换,根据外设工作要求,其输出串行同步时钟极性和相位可以进行配置,时钟极性(CPOL)对传输协议没有重大的影响。如果 CPOL=0,串行同步时钟的空闲状态为低电平;如果CPOL=1,串行同步时钟的空闲状态为高电平。时钟相位(CPHA)能够配置用于选择两种不同的传输协议之一进行数据传输。如果CPHA=0,在串行同步时钟的第一个跳变沿(上升或下降)数据被采样;如果CPHA=1,在串行同步时钟的第二个跳变沿(上升或下降)数据被采样。SPI主模块和与之通信的外设备时钟相位和极性应该一致。如图17.1所示 
-{{ :icore4t:icore4t_fpga_15_1.png?direct |}} +{{ :icore4t:icore4t_fpga_17_1.png?direct |}}
-图15.1+
 === 3.SPI通信指令表 === === 3.SPI通信指令表 ===
  
行 73: 行 70:
     read_address = 0;     read_address = 0;
     read_length = 1024;     read_length = 1024;
-  ​* 2、实现ARM与FPGA通信,对FPGA而言,其关键就在于SPI时序的模拟,实现SPI数据的接收与发送,实现数据与传输信号之间的串并转换。FPGA首先接收ARM指令,然后解析指令,存储相应的信息与数据,并根据指令需求将相应的指令数据放到SIMO总线上,等待ARM读取,从而实现两者之间的数据交互。SPI时序的硬件语言描述如下:+</​code>​ 
 +  ​* 2、实现ARM与FPGA通信,对FPGA而言,其关键就在于SPI时序的模拟,实现SPI数据的接收与发送,实现数据与传输信号之间的串并转换。FPGA首先接收ARM指令,然后解析指令,存储相应的信息与数据,并根据指令需求将相应的指令数据放到SOMI总线上,等待ARM读取,从而实现两者之间的数据交互。SPI时序的硬件语言描述如下:
 <code verilog> <code verilog>
 //​------------------------------------------------//​ //​------------------------------------------------//​
行 153: 行 151:
                 send_state <= send_state + 1'd1;                 send_state <= send_state + 1'd1;
             end              end 
-            4'​d2:​begin+            4'​d2:​begin ​  ​
                 spi_miso_r <= data_out[5];​                 spi_miso_r <= data_out[5];​
                 send_state <= send_state + 1'd1;                 send_state <= send_state + 1'd1;
行 184: 行 182:
         endcase         endcase
     end          end     
-<​code ​verilog>+</code>
 ==== 五、 实验步骤及实验结果 ==== ==== 五、 实验步骤及实验结果 ====
- +{{ :​icore4t:​icore4t_ide_1_37.jpg?​600 |}} 
-  - 将硬件正确连接,如图15.2所示。 +  - 将硬件正确连接,如图17.2所示。
-{{ :​icore4t:​icore4t_fpga_15_2.jpg?​direct |图15.2}} +
   - 打开putty串口调试工具,打开设备管理器查看对应的端口信息,在putty中打开对应的端口,用于打印串口信息;   - 打开putty串口调试工具,打开设备管理器查看对应的端口信息,在putty中打开对应的端口,用于打印串口信息;
   - 将编写好的FPGA代码进行编译,并下载到开发板中;   - 将编写好的FPGA代码进行编译,并下载到开发板中;
   - 将编写好的ARM代码编译,并下载到开发板中,putty工具中会打印相应的SPI通信相关信息;   - 将编写好的ARM代码编译,并下载到开发板中,putty工具中会打印相应的SPI通信相关信息;
-  - 观察实验现象及putty终端打印信息——FPGA_LED闪烁,putty终端打印如图15.3所示. +  - 观察实验现象及putty终端打印信息——FPGA_LED闪烁,putty终端打印如图17.3所示. 
-{{ :icore4t:icore4t_fpga_15_3.png?direct |}} +{{ :icore4t:icore4t_fpga_17_3.png?direct |图17.3}} 
 ==== 六、 拓展实验 ==== ==== 六、 拓展实验 ====
  
-1、通过Signaltap观察SPI通信的时序是否和参考时序一致。 +  - 通过Signaltap观察SPI通信的时序是否和参考时序一致。 
-2、实现错误信息读取指令功能。+  ​- ​实现错误信息读取指令功能。
  
icore4tfpga_17.1583478124.txt.gz · 最后更改: 2020/03/06 15:02 由 zgf