FPGA实践教程(五)PS用MIG调用DDR

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

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

目的:PS(片上ARM)通过MIG调用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

ARM用MIG调用DDR3的c程序解析

流程中其他步骤:

实践教程(一)用HLS生成IPcore

实践教程(二)连接片上ARM

实践教程(三)系统搭建与烧录

实践教程(四)片上ARM运行程序

实践教程(五)PS用MIG调用DDR

目录

一、创建工程

二、创建与定制MIG IP

三、定制processing system

四、搭建系统

五、SDK

六、用FPGA运行


一、创建工程

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(SDRAM:Synchronous Dynamic Random Access Memory,同步动态随机存储器,同步是指内存工作需要同步时钟,内部的命令的发送与数据的传输都以它为基准;动态是指存储阵列需要不断的刷新来保证数据不丢失;随机是指数据不是线性依次存储,而是自由指定地址进行数据读写。)

2.4 默认设置800MHz时钟,然后修改Memory Part为MT41K256M16XX-125,这个在列表中靠下的位置,看清楚不要选错,Data Width选择32位,其他设置默认

2.5 AXI的Data Width选择64位和PS的HP接口对应,或者32位和GP接口对应。这里的data width表示AXI读与写的通道数

址线读写仲裁选择ROUND_ROBIN( Round Robin:轮询调度, 是一种以轮询的方式依次将一个域名解析到多个IP地址的调度不同服务器的计算方法。),其他默认

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

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的核心板匹配,MIO configuration中,IO peripherals中SD卡,WP信号没用,去掉

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

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

3.7 DDR配置,Memory Part选择MT41K256M16RE-125,DQS to Clock Delay全部写0,Board 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和这里的名称要保持一致。文件完成之后在加入add constraints

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,目录改到之前vivado的目录下面,创建新的applicaiton project  (这里非常需要注意,workspace、BSP、application project是很不同的)

FPGA基础知识(九)SDK相关知识

这里注意点击new,添加之前的wrapper进入,wrapper在vivado生成的文件夹的xxx.sdk之中。

5.3 选择memory test(若是加入自己写的testBench就创建空的,然后把c程序拖进去)拖到project文件夹里面

六、用FPGA运行

6.1 编译工程

6.2 连接FPGA,注意要用JTAG线来连,并且也要连USB。

6.3 烧写比特流进入FPGA(FPGA每断电一次,就要重新烧写一次)或者在右键HW创建。

6.4 运行及结果

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

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

ARM用MIG调用DDR3的c程序解析

流程中其他步骤:

实践教程(一)用HLS生成IPcore

实践教程(二)连接片上ARM

实践教程(三)系统搭建与烧录

实践教程(四)片上ARM运行程序

实践教程(五)PS用MIG调用DDR

   FPGA基础知识

FPGA基础知识(一)UG998相关硬件知识

FPGA基础知识(二)HLS相关知识

FPGA基础知识(三)UG902 接口综合

FPGA基础知识(四)UG902 RTL simulation and export

FPGA基础知识(五)系统集成知识

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

FPGA基础知识(七)片上单片机

FPGA基础知识(八)vivado设计流程中的知识

FPGA基础知识(九)SDK相关知识

FPGA基础知识(十)DMA与AXI4总线

尝试用IPcore调用DDR3及相关知识

   vivado HLS硬件化指令

vivado HLS硬件化指令(一)HLS针对循环的硬件优化

vivado HLS硬件化指令(二)HLS针对数组的硬件优化

vivado HLS硬件化指令(三)HLS增大运算吞吐量的硬件优化

vivado HLS硬件化指令(四)卷积相关的指令优化

卷积操作的HLS优化

   FPGA实践教程

FPGA实践教程(一)用HLS将c程序生成IPcore

FPGA实践教程(二)连接片上ARM

FPGA实践教程(三)系统搭建与烧录

FPGA实践教程(四)片上ARM运行程序

FPGA实践教程(五)PS用MIG调用DDR

FPGA实践教程(六)AXI-Lite实现PS与PL通信

FPGA实践教程(八)PS与PL共享DDR

FPGA vivado系统集成操作

DMA在linux下PS端c语言相关内容

数据流输入输出IPcore时c语言相关内容

调通DMA系统集成中遇到的问题

ARM用MIG调用DDR3的c程序解析

MIZ7035上的AXI接口的MIG测试

MIZ7035交叉编译单片机程序运行

 

 

  • 9
    点赞
  • 80
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 20
    评论
ZYNQ的7010 FPGA MIGDDR3是指在ZYNQ 7010芯片上使用FPGA Memory Interface Generator (MIG) IP核来驱动DDR3内存。根据引用\[1\]中提到的资料,你可以按照以下步骤来实现: 1. 首先,你需要了解ZYNQ 7010芯片的引脚分配和时钟要求。可以参考Xilinx官方文档PG150来获取相关信息。 2. 接下来,你需要了解DDR3内存的基本概念和工作原理。可以参考引用\[2\]中提到的文章来学习DDR3的相关知识。 3. 在Vivado中使用Memory Interface Generator (MIG) IP核来配置DDR3接口。根据引用\[3\]中提到的环境和参考手册ug586的指导,你可以使用Vivado 2018.2版本来进行配置。 4. 配置完成后,你可以使用MIG生成的IP核来驱动DDR3内存。可以根据你的需求进行读写测试,以验证PCB效果。 总结起来,你需要了解ZYNQ 7010芯片的引脚分配和时钟要求,学习DDR3内存的基本概念和工作原理,使用Vivado中的MIG IP核来配置DDR3接口,并进行测试和验证。希望这些信息对你有帮助! #### 引用[.reference_title] - *1* [ZYNQ 7020 FPGA DDR3](https://blog.csdn.net/qq_39455093/article/details/118725810)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [【ZYNQ】IP核_DDR4_SDRAM(MIG)的详细介绍](https://blog.csdn.net/m0_59681237/article/details/127985979)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [FPGA_MIG驱动DDR3](https://blog.csdn.net/qq_40147893/article/details/109746721)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

祥瑞Coding

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值