这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
icore3_fpga_14 [2020/01/21 10:10] zgf [二、实验设备及平台] |
icore3_fpga_14 [2022/03/18 15:42] sean |
||
---|---|---|---|
行 2: | 行 2: | ||
|技术支持电话|**0379-69926675-801** ||| | |技术支持电话|**0379-69926675-801** ||| | ||
|技术支持邮件|Gingko@vip.163.com ||| | |技术支持邮件|Gingko@vip.163.com ||| | ||
- | |技术论坛|http://www.eeschool.org ||| | ||
^ 版本 ^ 日期 ^ 作者 ^ 修改内容 ^ | ^ 版本 ^ 日期 ^ 作者 ^ 修改内容 ^ | ||
| V1.0 | 2020-1-21 | gingko | 初次建立 | | | V1.0 | 2020-1-21 | gingko | 初次建立 | | ||
- | ===== 实验三十四:基于ARM+FPGA的FSMC非复用模式通信 ===== | + | ===== 实验十四:基于ARM+FPGA的FSMC非复用模式通信 ===== |
==== 一、实验目的与意义 ==== | ==== 一、实验目的与意义 ==== | ||
行 15: | 行 14: | ||
==== 二、实验设备及平台 ==== | ==== 二、实验设备及平台 ==== | ||
- iCore3 双核心板( FPGA型号为EP4CE10F17,ARM型号为STM32F407IGT6)[[https://item.taobao.com/item.htm?id=524229438677|点击购买]]。 | - iCore3 双核心板( FPGA型号为EP4CE10F17,ARM型号为STM32F407IGT6)[[https://item.taobao.com/item.htm?id=524229438677|点击购买]]。 | ||
- | - Blaster(或相同功能的)仿真器和USB线缆。 | + | - Blaster(或相同功能的)仿真器和USB线缆[[https://item.taobao.com/item.htm?id=554869837940|点击购买]]。 |
- Micro USB线缆。 | - Micro USB线缆。 | ||
- QuartusII开发软件(本实验中使用的是13.1版本)。 | - QuartusII开发软件(本实验中使用的是13.1版本)。 | ||
行 43: | 行 42: | ||
</code> | </code> | ||
* 下面这段代码中,先是对wr信号做了100MHz时钟延两拍处理,然后取反,结合(!rd)信号控制clk。wr信号延两拍取反是为了向RAM写数据时,clk的上升沿在数据的稳定期。取反是因为两个信号都是低电平有效,而RAM是高电平有效。或操作是将两个信号合成一个clk信号。因为wr和rd信号并不冲突,因此,读RAM和写RAM都可以通过这个clk来驱动。 | * 下面这段代码中,先是对wr信号做了100MHz时钟延两拍处理,然后取反,结合(!rd)信号控制clk。wr信号延两拍取反是为了向RAM写数据时,clk的上升沿在数据的稳定期。取反是因为两个信号都是低电平有效,而RAM是高电平有效。或操作是将两个信号合成一个clk信号。因为wr和rd信号并不冲突,因此,读RAM和写RAM都可以通过这个clk来驱动。 | ||
- | <coed verilog> | + | <code verilog> |
always @(posedge PLL_100M or negedge RST_n) | always @(posedge PLL_100M or negedge RST_n) | ||
begin | begin | ||
行 52: | 行 51: | ||
end | end | ||
else | else | ||
- | {wr_clk2,wr_clk1} <= {wr_clk1,wr}; //提取写时钟,延2拍以便取反后的时钟上升沿在数据的稳定期。 | + | {wr_clk2,wr_clk1} <= {wr_clk1,wr}; //提取写时钟,延2拍使取反后的时钟上升沿在数据的稳定期。 |
end | end | ||
- | wire clk = (!wr_clk2 | !rd);//将写时钟信号和读时钟信号结合作为RAM的驱动时钟。两个信号都是低有效,因此取反。 | + | wire clk = (!wr_clk2 | !rd);//将写和读时钟信号结合作为RAM的驱动时钟。两个信号都是低有效,因此取反。 |
</code> | </code> | ||
* 由于非复用FSMC,因此可以将地址信号直接连接到RAM的地址信号端口,数据信号直接连接到RAM的数据端口。RAM信号是高电平有效,读写使能信号取反后连接到RAM的读写使能端口。代码较为简单,结合时序理解代码对信号做的处理。 | * 由于非复用FSMC,因此可以将地址信号直接连接到RAM的地址信号端口,数据信号直接连接到RAM的数据端口。RAM信号是高电平有效,读写使能信号取反后连接到RAM的读写使能端口。代码较为简单,结合时序理解代码对信号做的处理。 |