用户工具

站点工具


icore4tx_fpga_21

差别

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

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
icore4tx_fpga_21 [2020/07/01 10:47]
zgf [三、 实验原理]
icore4tx_fpga_21 [2022/04/01 11:39] (当前版本)
sean
行 1: 行 1:
 +|  **银杏科技有限公司旗下技术文档发布平台** ​ ||||
 +|技术支持电话|**0379-69926675-801**|||
 +|技术支持邮件|Gingko@vip.163.com|||
 +^  版本 ​ ^  日期 ​ ^  作者 ​ ^  修改内容 ​ ^
 +|  V1.0  |  2020-07-01 ​ |  gingko ​ |  初次建立 ​ | 
 +\\
 +\\
 +
 ==== 实验二十一:双口RAM实验——基于双口RAM的ARM与FPGA通信 ==== ==== 实验二十一:双口RAM实验——基于双口RAM的ARM与FPGA通信 ====
  
行 7: 行 15:
 ==== 二、 实验设备及平台 ==== ==== 二、 实验设备及平台 ====
  
-  - 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(或相同功能)仿真器。
行 77: 行 85:
  
 </​code>​ </​code>​
-例化之后,FPGA要完成对ARM传输指令的解析,这部分代码是通过case语句实现的。根据接收的指令,case语句会跳转到不同的处理状态,完成对应指令状态需要的操作,具体代码参考如下:+  * 例化之后,FPGA要完成对ARM传输指令的解析,这部分代码是通过case语句实现的。根据接收的指令,case语句会跳转到不同的处理状态,完成对应指令状态需要的操作,具体代码参考如下:
 <code verilog> <code verilog>
 case(rx_state) case(rx_state)
行 140: 行 148:
  else  else
  begin   begin
-wr_cnt <= wr_cnt + 1'​d1;​  +                                             wr_cnt <= wr_cnt + 1'​d1;​  
-end +                                         ​end  
 + end 
 + default:​begin 
 + end 
 + endcase  
 + end 
 + rx_rd_ledgth_state:​begin//​获取读数据长度信息,高字节在前,低字节在后 
 + case(rx_cnt) 
 + 8'​d0:​begin 
 + rd_length_r[15:​8] <= receive_byte;​ 
 + rx_cnt <= rx_cnt + 1'​d1;​ 
 + end 
 + 8'​d1:​begin 
 + rd_length_r <= {rd_length_r[15:​8],​receive_byte};​ 
 + end  
 + default:​begin 
 + end 
 + endcase  
 + end 
 + rx_rd_add_state:​begin//​获取读数据地址信息,并产生读地址信息,​高字节在前 
 + case(rx_cnt) 
 + 8'​d0:​begin 
 + rd_address_r[15:​8] <= receive_byte;​ 
 + rx_cnt <= rx_cnt + 1'​d1;​ 
 + end 
 + 8'​d1:​begin 
 + rd_address_r <= {rd_address_r[15:​8],​receive_byte};​ 
 + rx_cnt <= rx_cnt + 1'​d1;​ 
 + rd_en_r <= 1'​d1;​ 
 + end 
 + 8'​d2:​begin 
 + rd_address_r <= rd_address_r + 1'​d1;​ 
 + if(rd_cnt==rd_length_r-1'​d1) 
 + begin 
 + rd_cnt <= 12'​h00;​ 
 + rx_cnt <= rx_cnt + 1'​d1;​ 
 + else 
 + begin 
 + rd_cnt <= rd_cnt + 1'​d1;​ 
 + end 
 + end  
 + default:;​  
 + endcase 
 + end 
 +endcase
  
 </​code>​ </​code>​
icore4tx_fpga_21.1593571679.txt.gz · 最后更改: 2020/07/01 10:47 由 zgf