赞
踩
学习zynq已经有一段时间了,之前不论是用gpio使用MIO0这样的引脚还是在PL端将引出的端口约束到AB9这样的位置,用的时候也挺正常,但仔细一想又感觉云里雾里,还有bank0、bank1、bank500、bank501这样的分组,一直没有弄明白他们之间具体的关系,今天就来梳理一下。
首先是bank之间的关系。我们都知道ZYNQ有118个GPIO,其中MIO54个,EMIO64个,再细分一下就是32个MIO(Bank0)+22个MIO(Bank1)+32个EMIO(Bank2)+32个EMIO(Bank3)。
所以PS端MIO有bank0、bank1两个分组,PL端EMIO有bank2、bank3两个分组,而这些分组的依据是电压的不同。
bank0、bank1、bank2、bank3这些分组是概念上的。就是说硬件上没有这样的分组。虽然zedboard原理图上有一个bank0,但是和我们说的这些是没有关系的,我们也用不上这个bank0,忽视它。
bank500、bank501、bank502、bank13、bank33、bank34、bank35这些是硬件上的分组。我们可以在原理图上找到这些分组,bank500、bank501、bank502是PS端的分组,bank13、bank33、bank34、bank35是PL端的分组。此外7010好像没有bank33。
通过原理图我们可以看出bank500和bank501基本可以与bank0和bank1画等号,不过还是要注意一个是概念上的分组,一个是硬件上的分组。
再来看MIO0~53、EMIO0~63和AB9这样的编号与bank之间的关系。
通过前面的学习我们可以知道MIO0~53分别分布在bank0与bank1上,有具体的硬件引脚对应,比如我们可以看到zedboard的MIO7引脚对应的是一个LED,那么我们就可以通过控制读写MIO7来点亮这个LED。
而EMIO0~63没有具体的硬件对应位置,需要通过约束文件与具体的引脚如AB9这样的位置绑定。比如我们希望通过EMIO0来控制zedboard上的LED0(T22),那么就需要先将EMIO0约束到T22位置,然后就可以通过读写EMIO0来控制LED0。
最后,通过下面的bank分布图,我们可以看出具体的对应关系。
以上均是个人理解,如有错误欢迎指正。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。