FPGA实践教程(五)调用DDR Xilinx zynq系列FPGA实现神经网络中相关资源评估 FPGA基础知识(六)UG586 Mermoy Interface Solutions

本文档系列是我在实践将神经网络实现到Xilinx 的zynq的FPGA上遇到的问题和解决方法。

背景:FPGA的片上BRAM空间较少,难以实现大量的存储。DDR的内存空间较多,若作为global memory将能实现很多问题。

目的:用FPGA调用DDR

参阅的文档:DS176:Zynq-7000 AP SoC and 7 Series FPGAs Memory Interface Solutions Data Sheet

UG586: zynq-7000 AP Soc and 7 Series Devices Memory Interface Solutions

Xilinx zynq系列FPGA实现神经网络中相关资源评估

FPGA基础知识(六)UG586 Mermoy Interface Solutions

一、创建工程

1.1 打开vivado, 创建工程,RTL project,板子选择xc7z035ffg676-2


1.2 创建block design

二、创建与定制MIG IP

2.1 添加MIG,双击MIG IP


2.2 默认一个控制器,AXI4接口


2.3 next,选DDR3 SDRAM


2.4 默认设置800MHz时钟,然后修改Memory Part为MT41K256M16XX-125,Data Width选择32位,其他设置默认


2.5 AXI的Data Width选择64位和PS的HP接口对应,或者32位和GP接口对应,地址线读写仲裁选择ROUND_ROBIN,其他默认


2.6 因为刚才选了800MHz和4:1,所以这里的输入时钟选择200MHz,其他默认


2.7 系统时钟来自于FPGA内部,这里选择No buffer,其他默认


2.8 内部终端电阻选择50欧姆


2.9 开发板是固定的,所以选择fixed pin out


2.10 选择read XDC/UCF,这个是管脚分配的文件,选择开发板默认的DDR管脚分布。




2.11 点击validate之后一直点next,最后accept,generate

三、定制processing system

3.1 加入ZYNQ7 processing system


3.2 双击IP进行配置,先应用开发板的配置(Zedboard),配置起来更快。


3.3 配置MIO,bank0配置为3.3V,bank1配制为1.8V


3.4 检查各个外设是否与MIZ7035的核心板匹配,SD卡,WP信号没用,去掉


3.5 eMMC需要添加SD1接口,CD和WP信号无用,不用添加


3.6 外设复位,ENET上电复位;USB复位在PL上,而这里只能选PS的MIO引脚,所以忽略;没有I2C,取消掉


3.7 DDR配置, Memory Part选择MT41K256M16RE-125DQS to Clock Delay全部写0Board Delay全部写0.25


3.8 Block Design,点击run block automation,建立PS的接口


3.9 创建clocking wizard


外部GCLK的100MHz时钟,因为直接接入了时钟引脚,选择Global Buffer


因为PL DDR3的参考时钟配置的是200MHz,这里让MMCM输出200MHz,并将Reset设置为低有效



四、搭建系统

4.1 对clock的接口进行连接


4.2 点击Run Connection Automation进行连接,

时钟选择/mig_7series_0/ui_clk(200MHz)


4.3 重新进行连线


4.4 分配地址


4.5 新建IO 约束文件,新建IO约束文件MIZ7035_IO.xdc,内容如下

create_clock -name clk100m_i -period 10.00 [get_ports clk100m_i]

set_property VCCAUX_IO DONTCARE [get_ports clk100m_i]
set_property IOSTANDARD SSTL15 [get_ports clk100m_i]
set_property PACKAGE_PIN C8 [get_ports clk100m_i]
set_property PACKAGE_PIN H7 [get_ports rst_key]
set_property IOSTANDARD SSTL15 [get_ports rst_key]
set_property PACKAGE_PIN K10 [get_ports init_calib_complete]
set_property IOSTANDARD SSTL15 [get_ports init_calib_complete]

这个文件用于对相应的管脚和板子进行约束,具体化相应的管脚。我们一定要在block design和这里,名称要保持一致。

4.6 add constrians,create HDL wrapper,Generate output products.,generate

bitstream,生成相应的bit文件。

五、SDK

5.1 file-export-export hardware,需要包括相应的比特流


5.2 打开SDK,我的电脑用vivado直接打开SDK总是死机,所以我们直接打开SDK,目录改到之前的目录下面,创建新的applicaiton project


5.3 选择memory test


六、用FPGA运行

6.1 编译工程


6.2 连接FPGA

6.3 烧写比特流进入FPGA



6.4 运行及结果







猜你喜欢

转载自blog.csdn.net/weixin_36474809/article/details/80997945
今日推荐