ZYNQ是一款SOC芯片,其最突出的功能就是其内部包含了一个双核的Cortex_A9内核。从本节开始,进行ZYNQ的SOC学习。
下面这张图展示了我们需要构建的最小系统。并且本节的嵌入式实验会基于这个最小系统进行添加外设。
本实验中将只会使用到PS部分资源,包括ARM Cortex—A9、DDR3内存、一个UART串口。这就是我们的最小系统。首先我们程序会加载到DDR内存中,然后CPU一条一条执行,程序的执行情况可以通过串口打印进行观察。
本实验采用MIZ7035开发板做实验。MIZ7035开发板PS端的DDR容量位1GB,PL端DDR为1GB,本实验只采用PS端的DDR.下图为MIZ7035的核心板。
step1: 在打开的VIVADO软件界面,单击Create New Project
step2:单击 Next,在弹出的窗口中输入工程名和保存路径,然后单击Next
step3:按下图进行设置
step4:选择芯片型号
step5:单击Finish完成工程的创建
step6:单击Create Block Design,输入名称system
step7:单击“+” 号,添加IP
step8:搜索“ZYNQ”,然后双击
step9:添加进来zynq cpu IP,然后单击 Run Block Automation,直接单击 ok
step10:在Block 文件中,我们进行连线,将鼠标放在引脚处,鼠标变成铅笔状后进行拖拽,连线如下图所示。连线的作用就是把PS的时钟介入PL,当然我们这里暂时还用不到PL部分的资源。
step11:双击 ZYNQ CPU IP ,对其进行设置,使其对应Miz7035的硬件设置。在此部分,我们需要做的就是修改时钟频率,内存类型和接口输出。需要注意的是如果时钟频率、内存类型与我们的硬件不一致时,SDK中的程序会崩溃,运行不下来。这在后续的调试中是一个小技巧。正确的配置是成功的必要条件。
PS时钟配置:
内存配置:(Miz7035开发板的内存型号配置为MTKM16 RE-125)
step12:设置外扩接口,之后点击OK
step13:右击 system.bd ,单击Generate Output Products
此步操作会产生执行、仿真和综合文件,可以看出最后的硬件设计步骤还是回到了我们前面的FPGA开发上来了。
step15: 右击system.bd 选择Create HDL Wrapper 者不得作用是产生顶层HDL文件,选择让vivado自动管理
step16:之后看下源码的层次结构,可以看到system_wrapper.v就是顶层文件,调用了CPU
step17: 生成比特流
step18: 查看system_wrapper.v 源码
step1: File-> Export-> Export Hardware,包含比特流
step2: File->launch SDK,启动SDJK
step1: 打开SDK后如下图
1、硬件部分,这部分就是从VIVADO定制好的SOC硬件
2、这部分是硬件的地址空间分配
step2:z在SDK开发环境下,File-> New -> Application Project
step3:工程名为 Hello World。然后单击Next
step4:系统里面有很多的自带程序,本次就用自带的Helloworld程序做测试,单击Finsih
step5:完成后界面如下
这三部i分分别是工程的源文件、板卡支持包和硬件平台。
step6:连接开发板,上电。右击 Helloworld ->Debug as
step7: 双击下面这个位置新建
step8:然后进行如下设置
step9:用系统自带的串口调试助手,进行相关设置
step11: 单击运行输出结果。