原创 【博客大赛】Zynq构建SoC系统深度学习笔记-01-利用IP集成器构建嵌入式SoC系统(04)

2016-1-20 21:02 1356 8 8 分类: FPGA/CPLD 文集: Zynq构建SoC系统深度学习笔记

【声明】纯属原创,未经允许,禁止转载。


【接前文】

    前文研究了如何配置Zynq子系统。

    最后在Zynq子系统中激活了一个UART1硬核,通常该外设的管脚是绑定在MIO上的,在Zynq的封装图中通过FIXED_IO总线表示。但是上一节硬是将UART1的外设管脚绑定再Zynq的EMIO管脚上。最后显示的Zynq子系统的封装如下图所示:

图片1.jpg

    可以看到出现了一个新的UART_1的接口,点击+号,可以显示该接口有两条总线UART1_TX和UART1_RX。重新执行“Run Block Automation”后,没有发生变化,即软件没有自动为UART_1建立片外PAD链接。再次查看“Run Block Automation”的说明,发现软件能够自动连接的只有MIO(FIXED_IO),触发和DDR接口,这些应该都与开发板的选型相关。

图片2.jpg

    对于其他软件不支持的自动连接的功能管脚,可能需要跟后面用户自定义模块的外设管脚配置相同,有待后面进行验证。

    软件支持的自动连接的FIXED_IO,包括如下如所示的管脚,包括54个MIO,PS_CLK ( 33.3333MHz)等。

图片3.jpg

    这些管脚的绑定,是不是最后应该出现在约束文件中?有待验证。

   【说明】为了最初的程序能够正常运行,将Zynq内部功能模块UART1的链接管教恢复成默认的MIO[48:49]。波特率还是修改后的9600bps。


3.3 添加已有的GPIO外设1--自动进行外设与Zynq系统的链接

    【终于又见到编号了,感觉行文好久都没编号了,可见这篇文档有多流水。】

    仅仅构建Zynq子系统后,相当于创建了一个最最简单的ARM芯片,外设功能模块比较少,比不上普通的ARM芯片。体现基于FPGA芯片的SoC系统优越性的重要一点是,用户可以自定义自己的功能外设,从而得到用户定制的ARM芯片系统。

    因此有必要学习如何挂载一个由Logic Cell(PL)编写的外设功能模块。这里先挂在一个由Xilinx公司开发封装好的GPIO功能模块,只是该模块与Zynq子系统的接口是AXI总线形式,其中Zynq子系统是主机,外设模块是从机。

    前文说过,SoC的Block Design设计相当于绘制原理图,本实验中两个芯片已经确定,一个是Zynq,一个是Xilinx公司开发封装好的GPIO功能模块。元件有了,绘制原 理图的工作只剩下连接了。通常都是手动连接的,但是Vivado很强大,它能对某些符合总线协议的接口进行自动匹配连接,本节我们学习一下是如何操作的。


    利用总线形式的接口,就是说明能够方便的挂载多个外设,必然涉及到总线控制器。通常的总线结构示意图为:

图片4.jpg
 
    点击添加IP按钮,在弹出的现有IP目录中,通过搜索关键字GPIO,查找AXI GPIO功能模块。
图片5.jpg
图片6.jpg

    选中后,在Block Properties中可以修改模块实例的名称。本实验命名为gpio_sw。

图片7.jpg

    双击AXI GPIO模块的图标,可以打开配置页面。

图片8.jpg

    详细的可以点击Documentation查看该模块的DataSheet。

    可以看出,该模块应该是Xilinx公司原有模块升级来的,跟VII pro时代的GPIO模块结构类似,都是1个模块存在两个通道,本实验只用一个通道,而且这个通道全部是输入通道,用来获取拨码开关的输入数据。

    由于ZedBoard板上有8个拨码开关,因此本模块需要8个并行的输入数据。

图片9.jpg

    由于Vivoda软件包含了ZedBoard的电路板信息,因此存在自动进行管脚约束的可能。在Board页面,选择通道1:GPIO的Board Interface的下拉列表,可以看到Vivado软件根据ZedBoard的配置信息,找到3个GPIO接口,分别是8个拨码开关sws 8bits,8个LED灯leds 8bits和5个按键开关btns 5bits。这里选择sws 8bits。

图片10.jpg

    点击OK,退出AXI GPIO模块的配置。返回结果如下:

图片11.jpg

    可以看出,一个AXI接口的外设模块基本的port定义包括:

图片12.jpg

    点击“Run Connection Automation”实现模块的自动连接。

图片13.jpg

    在弹出页面中,勾选需要软件自动进行连接的端口。

图片14.jpg

    这里与CPU之间的连接由于比较复杂,希望软件帮忙实现,而与外设之间的连接,可以自行完成,但是由于使用的ZedBoard开发板信息,Vivado软件支持,因此,想看看是否能够自动绑定。点击“OK”启动软件进行连接处理。

    处理结果如下所示:

图片15.jpg

    看起来有点乱,可以人为拖动,优化布局。

图片16.jpg

    从这个布局就看出了层级结构,具体说明已在图中进行了标注。

 

【未完待续】总与能在一篇博客中完成一个完整的小节。不容易。下面将讲如何手动连接。。。。

文章评论0条评论)

登录后参与讨论
我要评论
0
8
关闭 站长推荐上一条 /2 下一条