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

2016-1-20 20:46 1260 9 9 分类: FPGA/CPLD 文集: Zynq构建SoC系统深度学习笔记

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

【接前文】
【问题】:目前还没有研究有个叫做EMIO的东西是什么,UART0的默认管脚配置的就是EMIO。有空再研究研究,它到底是几比特位宽。

图片1.jpg



【内存空间】
    还有个问题就是看看DDR是否能够给剪裁掉。点击左侧“Page Navigator”列表中的“DDR Configuration”项目后,显示如下信息。

图片2.jpg

    可以通过取消勾选“Enable DDR”项关闭DDR内存。但是目前不知道关闭DDR后,SDK编写的软件程序将会跑在什么内存空间中,本实验暂时不取消DDR,等有机会在验证对于简单的测试程序是否可以将DDR裁剪掉。
    在Summary Viewer中看到的DDR的信息都是在该界面中可以配置的,配置完毕之后将会保存在xml文件中,如果没有xml文件导入,软件将会根据选择的开发板,加载一个默认配置。

【时钟】
    再来看看时钟信息,点击“Clock Configuration”显示如下信息。

图片3.jpg

    将来如果使用自行设计的电路板,驱动晶振就可以在Input Frequency中进行配置。其他的配置同样类似于普通ARM中的PLL配置一样,只是有了软件工具,不用自行计算各种分频寄存器、倍频寄存器的配置数 值,只需要写入目标频率,软件帮助计算了。So Easy,傻瓜式啊。
    等得闲的时候在找找是哪几个寄存器吧,具体思路还是查看Summary Viewer的寄存器说明,是个力气活。
    在Adcanced Clocking标签中就是纯ARM开发思维,通过配置各种寄存器来设计系统的时钟方案。

图片4.jpg

    暂时还没有去找相应的技术文档,要想把时钟配置方案整透彻了,这里应该配一个类似于普通ARM芯片DataSheet中PLL一章的时钟树结构图,一个图就整明白所有配置了。
    好在默认的配置就可以让Zynq跑起来,有空深究。

【中断】
    再来看看中断控制信息,点击“Interrupts”项,可以看到,如果将来开发的用户程序需要向CPU发送中断,估计要配置相应的选项。

图片5.jpg
    以后会有一个专题专门讲中断通信方式,wait.....


【其他】
    还是回到“PS-PL Configuration”页面,里面有DMA Cotroller,将来使用VDMA的时候,是否需要配置这里呢?
    还有GP Master AXI Interface,如果取消了M AXI GP0 interface的配置,后面挂载的AXI GPIO模块是不是就没法正常挂载了呢?这个应该是的,但是改成M AXI GP1 interface使能是不是应该也好使呢?

图片6.jpg

    完成配置后,点击页面右下方的“OK”按钮,退出对于Zynq系统(即一个最小的普通ARM芯片)的定制工作。
    完成后软件界面显示如下图所示:

图片7.jpg

    【说明】由于写文档要不断验证自己的猜测,经常修改Zynq的配置,后记论述使用的Zynq配置如下,使用软件预设的zedboard配置,功能外设尽量 裁剪,只保留UART1和DDR,其余全部Cut掉,UART1的波特率修改为9600bps,UART1的MIO管教配置采用软件默认提供的。
    配置完毕之后,必须点击一下上图中的“Run Block Automation”,显示如下界面信息,从描述中可以看出,该操作主要是进行zynq系统管脚与FPGA芯片管脚之间的绑定关系。即软件自动根据开始 选择的开发板型号进行FPGA芯片的外设管脚与Zynq子系统定义个功能管脚进行连接。
    需要说明的是其中Apply Board Preset默认是勾选的,如果选择该项,软件会自动复位Zynq子系统,即等同于在Zynq内部配置时,执行如下指令。

图片8.jpg

    之后弹出如下页面:

图片9.jpg

    不勾选“Apply Board Preset”项,执行完毕的结果:

图片10.jpg

    双击Zynq子系统图标,进入配置页面:

图片11.jpg

    可以看出Zynq子系统的配置没有发生变化,还是跟前面设定的配置一致。
    如果勾选“Apply Board Preset”项,执行完毕的结果如下所示:

图片12.jpg

    多了我们已经删除掉的网口ENT0,USB口USB0和定时器/触发器TTC0的信息,双击Zynq图标返回Zynq的配置页面,显示如下:

图片13.jpg

    一下回到解放前,之前的配置全都没了,甚至修改的串口波特率都没有了。

图片14.jpg

    因此,经验之谈是,配置好Zynq后,运行“Run Block Automation”时一定要取消勾选“Apply Board Preset”项,否者后果很严重。
    【经验】:对Zynq执行完一次“Run Block Automation”,该操作的入口就不在现实了,即使修改了Zynq的配置后,甚至是修改Zynq子系统的功能管脚,都不能再次唤出“Run Block Automation”的操作入口,处理方法有两个:
    方法一:删除跟Zynq链接的所有外设pad,操作如下图所示:

图片15.jpg

    全部PAD都删除后,才能再次唤出“Run Block Automation”的操作入口。

图片16.jpg

    方法二:直接使用TCL指令,查看任何一个交互式操作的TCL指令,可以在Tcl Console窗口内查询,复制保存后,在需要的时候。

图片17.jpg

 

    在前面配置是发现UART0的默认管脚是EMIO,而且UART1的管脚也可以绑定到EMIO上,尝试一下将UART1在Zynq子系统中的功能管脚绑定在EMIO上,看看什么情况。

图片18.jpg

    在上图中通过界面配置的方法选择复用管脚的绑定。
    在Peripheral I/O Pins页面中通过图像画的方式直观显示UART1绑定的管脚。

图片19.jpg


    修改完Zynq的配置,点击OK保存退出后,显示结果如下:

图片20.jpg
 


【未完待续】又够20张图了,Zynq配置还有个小尾巴,下篇继续。

文章评论0条评论)

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