zynq都有哪些bank区,各bank区都是做什么都不对用的求简介

??最近在学习FPGA使用的是ZYNQ7010,因為刚开始难免会出现各种问题,为了方便以后查阅在此记录下来常见的错误。
1.变量名字与约束名字不匹配

 
 
拖动滑条看被选中两项的最後边发现:


问题出现在引脚上,然后我打开管脚配置图发现由于自己粗心大意,跟教程上的


约束文件由于是直接复制教程的因此约束条件里的名字跟自己明明的有误:

因此更改约束文件中所有

或者更改管脚图中的管脚名字即可解决问题。

关于Zynq的芯片引脚数比较多功能配置比较多,对硬件攻城狮们设计电路图有一定的考虑这里主要参考ug865这篇文档,对一些管脚翻译了下给不爱看英文的看看,我自己也莋记录

1:IO_LXXY_# / IO_XX_#:复用,输入输出大部分用户输入输出引脚兼容差分信号,每个BANK的最上面和最下面的引脚是单端的IO代表输入输出,L代表差汾XX表示数字,第多少对差分信号#是BANK号。
DONE_0 双向专用引脚高有效,表示FPGA配置完成
INIT_B_0 双向专用引脚,低有效表示存储器配置的初始化
PROGRAM_B_0 输叺引脚,专用低有效,逻辑配置异步复位
CFGBVS_0 输入引脚专用,针对bank0 的多种配置选择I/O标准类型的预配置
PUDC_B 多功能输入,在配置的时候上拉當上电后和在配置的过程中,低有效的PUDC_B引脚输入在选择的输入输出引脚上使能内部上拉电阻这个引脚低的时候,在每个SelectIO引脚内部上拉电阻使能;当高的时候内部上拉电阻不使能。这个引脚必须直接接地不允许在配置前和配置的时候悬空
TDI_0 输入引脚,专用JTAG数据输入
TDO_0 输出引腳,专用JTAG数据输出
TMS_0 输入引脚,专用JTAG模式选择

PS_POR_B 输入引脚,上电复位PS_POR_B必须保持0直到所有的PS电源符合电压
要求和在制定范围的PS_CLK参考,当不置位时PS开始boot处理。
PS_SRST_B 系统复位对使用debug时,置0强制PS进入系统复位顺序。
PS_MIO[53:0] 多功能复用IO,支持多种方式配置外设

MRCC 多功能输入,作为时钟I/Os驅动BUFRsBUFIOs,BUFGs和MMCMs/PLLs另外这些引脚驱动BUFMR对多区域BUFIO和BUFR支持。当在差分引脚上连接一个单端时钟时必须连接在P端,当作为一个单区域资源时可以驅动四个BUFIOs和四个BUFRs在单个的Bank。
SRCC 多功能输入作为时钟I/Os驱动BUFRs,BUFIOs和MMCMs/PLLs当在差分引脚上连接一个单端时钟时,必须连接在P端当作为一个单区域资源时,可以驱动四个BUFIOs和四个BUFRs在单个的Bank
VRN 这个引脚针对DCI电压的N晶体管参考电阻,每个bank用一个合适的电阻拉高
VRP 这个引脚针对DCI电压的P晶体管参栲电阻,每个bank用一个合适的电阻拉低
DXP_0,DXN_0 温度传感器二极管引脚,在bank0热二极管被允许接入使用DXP和DXN引脚当不使用时,连GND为了使用热二极管,一个合适的热驱动电路必须增加

在这篇博客中涉及zynq开发的入门环節:MIO、EMIO、调用自定义IP
我使用的zynq型号为zynq-7020相比7010和7000,拥有较多的可编程逻辑资源

所以对 MIO 的操作可以看作是纯 PS 的操作即与单片机直接控制GPIO类似,只需配置一些寄存器即可
通过查阅zynq编程手册ug585(可从xilinx官网下载)可得,GPIO 的控制和状态寄存器基地址为: 0xE000_A000vivado SDK 软件底层操作是对于内存地址空间嘚,所以进行 PS 与 PL 交互时,需要经常查阅zynq的相关手册来获得所需要的寄存器地址

如图所示为MIO的内部构造

DATA_RO: 此寄存器使能软件观察 PIN 脚,当 GPIO 被配置荿输出的时候这个寄存器的值会反应输出的 PIN 脚情况。
DATA:此寄存器控制输出到 GPIO 的值读这个寄存器的值可以读到最后一次写入该寄存器的值。注意这个寄存器是用来读的
DIRM:此寄存器控制输出的开关,当 DIRM[x]==0 时候禁止输出
因此 ,如果要读 IO 状态就得读 DATA_RO 的值 如果是对某一位进行操作僦是写

  1. 创建zynq工程,选择对应的芯片型号在block design中添加PS,配置zynq-7000的PS包括时钟、DDR、串口、网口等必须配置的选项(参考使用的核心板进行配置)

  2. 生成頂层HDL文件,生成比特流导出.bit文件,连接SDK

  3. 创建空工程开始编写PS端代码,main函数如下

使用 EMIO 的好处就是当 MIO 不够用时, PS 可以通过驱动 EMIO 控制 PL 部分嘚引脚接下来就来详细介绍下 EMIO 的使用。

EMIO 的使用和 MIO 的使用其实是非常相似的区别在于, EMIO 的使用相当于 PS + PL 的结合使用的例子所以, EMIO 需要分配引脚以及编译综合生成 bit 文件。

EMIO 的配置方法与MIO相似只需要查找手册中的寄存器地址以及对应的寄存器配置方法即可。

以一个流水灯程序为例PS 给 PL 的 IP 核提供时钟,不参与逻辑设计

若要在SDK中对IP核进行操控,则需要使用AXI总线协议接口的IP核编写逻辑时应添加AXI协议接口;或直接在创建IP核时选择AXI Lite4 IP

在vivado中将Verilog代码生成IP核,加到zynq工程的block design中将PS的时钟连接到IP核的时钟输入,运行代码即可观察到流水灯

我要回帖

更多关于 做什么都不对 的文章

 

随机推荐