0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

ZYNQ7020的PS端的基本开发流程

FPGA技术江湖 来源:叁芯智能FPGA课程 作者:Lucien_大辉哥 2022-07-24 18:12 次阅读

这篇文章记录ZYNQ7020的PS端的基本开发流程,关于PL端的开发流程,参考之前文章,这里放个超链接。

学员笔记连载 | Day5 Xilinx ZYNQ7000系列 PS、PL、PS-PL基本开发流程之PL端篇

本篇文章,以配置一个PS端的UART外设,并打印一句话《hello ZYNQ7020,Author:liushuhe 2020.11.26》来演示

ZYNQ7020的基本开发流程,本篇文章需要一点点的C语言知识,不会也不影响实验的,跟着步骤做就行了。

一、任务分工

ZYNQ芯片分为PL和PS,PS端的IO分配相对是固定的,不能任意分配,虽然PS端的ARM是硬核,但是在ZYNQ当中也要将ARM硬核添加到工程当中才能使用,FPGA工程师负责把Vivado工程搭建好,提供好硬件给软件开发人员,软件开发人员便能在这个基础上开发应用程序 ,软件开发人员,不用关心FPGA的部分。

二、FPGA工程师搭建硬件平台

我们这里演示搭建一个带UART和arm A9处理器的硬件平台

1.1、建立vivado工程

创建一个“ps_uart”的工程,具体过程,参考我文章开头超链接文章;

1.2、点击“Create Block Design”,创建一个Block设计,也就是图形化设计

2cd95f7a-0aef-11ed-ba43-dac502259ad0.png

1.3、“Design name”可以不修改,我改成ps_uart便于识别

2cecbf48-0aef-11ed-ba43-dac502259ad0.png

1.4、点击“Add IP”快捷图标

2d1194b2-0aef-11ed-ba43-dac502259ad0.png

1.5、搜索“zynq”,在搜索结果列表中双击“ZYNQ7 Processing System

2d2ff254-0aef-11ed-ba43-dac502259ad0.png

1.6、双击Block图中的“processing_system7_0”(直接双击蓝色区域),配置相关参数

2d49974a-0aef-11ed-ba43-dac502259ad0.png

1.7、首先出现的界面是ZYNQ硬核的架构图,可以很清楚看到它的结构,可以参考 官方文档,在官网搜索ug585 即可

2d7df10c-0aef-11ed-ba43-dac502259ad0.png

1.8、图中绿色部分是可配置模块,可以点击进入相应的编辑界面


1.9、也可以在左侧的窗口进入编辑 ,下面分别介绍左侧选项代表的功能;

2.0、Zynq 块设计参数配置,单击绿色块右下角,可以进行参数配置

2dae66c0-0aef-11ed-ba43-dac502259ad0.png

2.1、PS-PL Configuration 配置界面,主要是进行PS与PL之间接口的配置,主要是AXI接口,这些接口可以扩展PL端的AXI接口外设

核。

2.2、我们这篇文章是PS开发流程,关于PS-PL Configuration 配置在这里保持默认,在后面的实验中我再补充

2ddbd31c-0aef-11ed-ba43-dac502259ad0.png

2.3、外设配置,ZYNQ的PS端外设很多是复用的 ,同一引脚可以配置为不同的功能

zynq内部只有2个串口,UART0、UART1、我们看UART0可以接在(10、11)/(14、15)/(18、19)/(22、23)/(26、27)

2e00a0ac-0aef-11ed-ba43-dac502259ad0.png

2.4、配置串口,我们的ps_uart需要一个串口来打印消息,查看ZYNQ7020开发板的原理图

从原理图看出,ZYNQ的PS端的串口,连接的是MIO12、MIO13端口,并且电源是3.3v

2e1a48d6-0aef-11ed-ba43-dac502259ad0.png

2.5、从I/O分配看,MIO12、MIO13是串口1,在MIO12、MIO13引脚对应串口上单击,会看见该模块变为绿色,即代表分配成功

关于BANK0、BANK1的电压,由于创龙没有给核心板的原理图,但是给了一个WORD的描述文档,大家也要熟悉这个方式

国内很多厂家都是这样,属于技术保密

2e394c72-0aef-11ed-ba43-dac502259ad0.png

2e5acdfc-0aef-11ed-ba43-dac502259ad0.png

按照上述表格分配UART1电压和引脚

2e85afea-0aef-11ed-ba43-dac502259ad0.png

2.6、配置QSPI,QSPI可以作为ZYNQ的启动存储设备,ZYNQ可以通过读取QSPI中存储的启动文件加载ARM和FPGA

从核心板word表格和创龙给的例程,得知我们选择Quad SPI Flash为Single SS 4bit IO

2eaddf2e-0aef-11ed-ba43-dac502259ad0.png

2.7、配置以太网,在PS端设计有以太网接口

1、根据原理图选择Ethernet 0到MIO16-MIO27

电压是1.8v

2ee32f76-0aef-11ed-ba43-dac502259ad0.png

2f0db84a-0aef-11ed-ba43-dac502259ad0.png

2、配置PHY寄存器配置接口,选择MDIO并配置到MIO52-MIO53

2f23309e-0aef-11ed-ba43-dac502259ad0.png

2f41f574-0aef-11ed-ba43-dac502259ad0.png

2.8、配置USB0到MIO28-MIO39

2f5511e0-0aef-11ed-ba43-dac502259ad0.png

2f74c396-0aef-11ed-ba43-dac502259ad0.png

2.9、ZYNQ还可以SD卡启动

查看底板原理图,选择 SD 0,配置到 MIO40-MIO45,选择Card Detection MIO0,用于检测 SD 卡的插入。

2fa6a8fc-0aef-11ed-ba43-dac502259ad0.png

2fc4b5f4-0aef-11ed-ba43-dac502259ad0.png

1、配置SD0

2feacbfe-0aef-11ed-ba43-dac502259ad0.png

2、选择Card Detection MIO0,用于检测SD卡的插入

300e6e56-0aef-11ed-ba43-dac502259ad0.png

3.0、控制剩余未分配的MIO,用作GPIO ,打开GPIO MIO,PS便可以配置

1、双击GPIO MIO当出现打钩的提示时,软件会自动把我们未使用到的IO分配为GPIO

30266d94-0aef-11ed-ba43-dac502259ad0.png

2、到这里引脚分配全部完成,如果以后做实验需要配置其他外设,可以参考这个文章,作相应的修改即可

3.1、MIO配置

修改 Enet0的电平标准为 HSTL 1.8V, Speed 为 fast,这些参数非常重要,如果不修改,网络可能不通。其他部分保持默认。

304a9d2c-0aef-11ed-ba43-dac502259ad0.png

3.2、时钟配置

在“Clock Configuration”选项卡中我们可以配置PS时钟输入时钟频率,这里默认是33.333333,和板子上一致,不用修改,

CPU 频率改为 767Mhz,同时 PS 还可以给 PL 端提供 4 路时钟,频率可以配置,这里不需要,所以保持默认即可。

还有 PS 端外设的时钟等也可以进行配置,这里保持默认。

30755f8a-0aef-11ed-ba43-dac502259ad0.png

3.3、DDR3配置

在“DDR Configuration”选项卡中可以配置PS端ddr的参数

根据创龙的例程,内存芯片我们选择《MT41K256M16 RE-125》,Effective DRAM Bus Width 选择《32bit》

其他部分保持默认,点击OK

309b5f6e-0aef-11ed-ba43-dac502259ad0.png

3.4、到这里ZYNQ核的配置完成,我们配置参数及导出硬件信息

1、点击“Run Block Automation”,vivado软件会自动完成一些导出端口的工作

30b675d8-0aef-11ed-ba43-dac502259ad0.png

2、按照默认点击“OK”

30e679b8-0aef-11ed-ba43-dac502259ad0.png

3、连接FCLK_CLK0到M_AXI_GP0_ACLK,按Ctrl+S保存设计

31097206-0aef-11ed-ba43-dac502259ad0.png

4、选择Block设计,右键“Create HDL Wrapper...”,创建一个Verilog或VHDL文件,为ps_uart生成HDL顶层文件

312b911a-0aef-11ed-ba43-dac502259ad0.png

5、在弹出对话框,选择让vivado软件自动更新 顶层文件

3156fa6c-0aef-11ed-ba43-dac502259ad0.png

6、展开设计可以看到PS被当成一个普通IP来使用 ,之前生成那个顶层文件,其实就是为了把我们的硬件配置

生成一个IP核,供我们调用

3172af6e-0aef-11ed-ba43-dac502259ad0.png

7、选择block设计,右键“Generate Output Products”,此步骤会生成block的输出文件,包括IP,例化模板, RTL 源文件, XDC 约束,第三方综合源文件等等。供后续操作使用。

31935412-0aef-11ed-ba43-dac502259ad0.png

8、点击“Generate”

31bc213a-0aef-11ed-ba43-dac502259ad0.png

9、PS端的引脚不需要绑定 ,因为在生成的IP文件包含了PS端引脚分配的XDC文件

在IP Sources,Block Designs->ps_uart->Synthesis中,可以看到处理器的XDC文件,绑定了PS端的IO,因此不需要再新建XDC绑定这些引脚

31cfca32-0aef-11ed-ba43-dac502259ad0.png

10、在菜单栏“File -> Export -> Export Hardware...”导出硬件信息,这里就包含了 PS 端的配置信息。

32160114-0aef-11ed-ba43-dac502259ad0.png

11、在弹出的对话框中点击“OK”

32387410-0aef-11ed-ba43-dac502259ad0.png

12、因为我们这个实验仅仅是使用了PS的串口,不需要PL参与,这里就没有使能“Include bitstream” ,关于PS-PL的联合实验,我会另写一篇

13、此时会多出 xx.sdk 文件夹,并且有个 hdf 文件,这个文件就是这个文件就包含了 Vivado 硬件设计的信息,供软件开发人员使用。

32564a3a-0aef-11ed-ba43-dac502259ad0.png

14、到此为止, FPGA 工程师工作告一段落,剩下的工作交给ARM软件开发人员。

2ca8a8bc-0aef-11ed-ba43-dac502259ad0.png

二、ARM软件编写C语言程序,在串口打印一句话《hello ZYNQ7020,Author:liushuhe 2020.11.26》

1、点击Vivado菜单“File -> Launch SDK”,启动SDK

3295d858-0aef-11ed-ba43-dac502259ad0.png

2、在弹出的对话框选择OK

32c0cec8-0aef-11ed-ba43-dac502259ad0.png

3、启动SDK后我们会看到一个文件夹,有一个名为"system.hdf”文件,这个文件就包含了

Vivado硬件设计的信息,可以给软件开发使用,也可以看到 PS 端外设的寄存器列表。

32e0b0da-0aef-11ed-ba43-dac502259ad0.png

4、在SDK的菜单“New -> Application Project”,建立一个APP工程

33243d46-0aef-11ed-ba43-dac502259ad0.png

4、在弹出的对话框中,“Project name”填写“ps_uart_hello”,硬件平台选择我们自己定义的ps_uart_wrapper_hw_platform

语言C、其他默认,点击“Next”

3340bb4c-0aef-11ed-ba43-dac502259ad0.png

5、模板选择《hello world》,点击Finish

335bf5ba-0aef-11ed-ba43-dac502259ad0.png

6、可以看到SDK创建了一个“ps_uart_hello”目录,还有一个“ps_usrt_hello_bsp”的目录,在“ps_usrt_hello_bsp”目录中可以找到很多有用的信息,软件开发人员比较清楚,BSP也就是 Board Support Package板级支持包的意思,里面包含了开发所需要的驱动文件,用于应用程序开发。

3377b3c2-0aef-11ed-ba43-dac502259ad0.png

7、双击“system.mss”,还可以看到有些PS外设还提供了例程,这是用来了解学习这些外设的第一手资料。驱动文档说明可以在 Documentation 中找到。通过 Import Examples 引入官方例子,加快学习。

33a2436c-0aef-11ed-ba43-dac502259ad0.png

8、连接JTAG线到开发板、UART的USB线到PC

9、打开串口终端调试工具,串口根据电脑的COM口设置,波特率设置为115200

10、将开发板的启动模式设置到JTAG模式

开发板设置拨码为【010101(1~6 JTAG模式)】、【100101(1~6 QSPI模式)】、【101001(1~6 SD卡模式】

33be7e06-0aef-11ed-ba43-dac502259ad0.png

11、给开发板上电,准备运行程序

1、修改helloword.c,将printf打印修改为printf("hello ZYNQ7020,Author:liushuhe 2020.11.26 ");

33e598f6-0aef-11ed-ba43-dac502259ad0.png

2、编译代码,右键单击ps_uart_hello,在弹出的列表选择Build Project,编译完成可以看看没有报错

341379e2-0aef-11ed-ba43-dac502259ad0.png

12、选择“ps_uart_hello”,右键“Run as”,选择第一个“Launch on Hardware(SystemDebuger)”,使用系统调试,直接运行程序。

343781f2-0aef-11ed-ba43-dac502259ad0.png

13、可以看到串口没有任何输出

14、为了保证系统的可靠调试,需要添加一个配置,右键“Run As -> Run Configuration...”

346621f6-0aef-11ed-ba43-dac502259ad0.png

15、选择“Reset entire system”复位整个系统,如果系统中还有PL设计,还必须选择“ProgramFPGA”,再次点击“Run”

3487692e-0aef-11ed-ba43-dac502259ad0.png

16、点击“OK”,确认重新运行

34a43fcc-0aef-11ed-ba43-dac502259ad0.png

17、这次就可以看到熟悉《hello ZYNQ7020,Author:liushuhe 2020.11.26》显示出来了

34c8291e-0aef-11ed-ba43-dac502259ad0.png

三、Debug调试

1、除了“Run As”,还可以“Debug As”,这样可以设置断点,单步运行

34f42212-0aef-11ed-ba43-dac502259ad0.png

2、进入Debug模式 ,程序会自动运行到main函数处

351e80a2-0aef-11ed-ba43-dac502259ad0.png

3、和其他开发工具一样,我们也可以逐步运行、设置断点

353d20b6-0aef-11ed-ba43-dac502259ad0.png

4、窗口右上角,有2个按钮可以方便我们在debug和编辑模式之间进行切换

3598682c-0aef-11ed-ba43-dac502259ad0.png

四、到此,关于ZYNQ7020 的PS端基本开发流程,全部跑通,关于PS-PL的联合实验,待我另写一篇。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 处理器
    +关注

    关注

    68

    文章

    18199

    浏览量

    221914
  • FPGA
    +关注

    关注

    1599

    文章

    21271

    浏览量

    592793
  • Zynq
    +关注

    关注

    9

    文章

    598

    浏览量

    46589

原文标题:学员笔记精选 | ZYNQ7000系列之《PS端 》串口打印

文章出处:【微信号:HXSLH1010101010,微信公众号:FPGA技术江湖】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    ZYNQ7000系列 PS、PL、AXI 、启动流程基本概念

    /p/005899fe6815 二、ZYNQ7020 分为PS端、PL端 PS: 处理系统 (Processing System) , 就是与 FPGA 无关的 ARM 的 SOC 的部分。 PL: 可编程逻辑
    的头像 发表于 05-12 10:25 1.4w次阅读
    <b class='flag-5'>ZYNQ</b>7000系列 <b class='flag-5'>PS</b>、PL、AXI 、启动<b class='flag-5'>流程</b>基本概念

    vivado zynq实现错误

    你好,我在Win10中使用vivado 2016.2 for zynq7020。我的时钟方案是zynq PS FCLK_CLK0-->时钟向导IP输入(Primitive PLL)的输入。合成
    发表于 11-05 11:40

    zynq7020板子+ad采集+dma传输问题?

    求助各位大神,我用的是ad7606采集数据,然后通过dma传输到arm核中,用的板子时zynq7020,但是一直出现一个问题,[BD 41-237] Bus Interface property
    发表于 06-17 16:51

    【创龙TLZ7x-EasyEVM评估板试用连载】医用飞行质谱仪定标部件研发

    。②有第一步的基础,能够很快了解实际应用案例,熟悉开发过程③基于zynq7020实现定标部件,注意到速度级别为-3,能够更快的处理数据,实现对质子的多路定标,实时计算质子的飞行速度。④项目开展,按时
    发表于 04-23 10:30

    zynq 7020 PSzynq PL是如何通话的?

    嗨,我必须找出zynq 7020 PSzynq PL如何通话,特别是我必须找到将在ARM中处理的SDK C代码。你能用一个明确的C代码告诉我,它解释了数据如何从
    发表于 05-08 09:37

    ZYNQ芯片开发流程的简介

    PS和PL互联技术ZYNQ芯片开发流程的简介
    发表于 01-26 07:12

    ZYNQ PSIIC接口怎么使用?

    ZYNQ PSIIC接口使用笔记
    发表于 02-23 06:23

    基于Zynq的嵌入式开发流程

    基于Zynq的嵌入式开发流程Xilinx Zynq SoC 是集成了FPGA和硬核处理器的特殊SoC,它与一般FPGA的最大不同就是自带了一个ARM Cortex-A系列硬核,根据型号
    发表于 08-23 08:15

    分享!基于Zynq-7010/7020的多路千兆网口实现方案

    (Processing System,PS)和可编程逻辑资源(Programmable Logic,PL)),提供了基于Zynq-7010/7020的多路千兆网口实现方案。1 硬件平台TLZ7x-EasyEVM-S
    发表于 10-22 09:43

    实现上位机与zynq7020开发板通信的方法

    最近想实现上位机与zynq7020开发板通信。采用串口通信方式,利用QT编写一个简易串口助手实现与下位机的通信。 下位机给上位机发送收据,上位机能够正常接受。但是上位机给下位机串口发数据,下位机
    发表于 02-17 07:08

    AD9681是否可被zynq-7020的pl驱动?

    您好: 我想咨询AD9681是否可以被zynq-7020的PL驱动(zynq7020的性能是否足够)。我们需要做卫星的探测载荷,由于卫星能源控制严格,我们需要低功耗、多通道(至少8个)、高采样率
    发表于 12-04 08:18

    ZYNQ7020开发板的电路原理图免费下载

    本文档的主要内容详细介绍的是ZYNQ7020开发板的电路原理图免费下载。
    发表于 02-12 16:07 465次下载
    <b class='flag-5'>ZYNQ7020</b><b class='flag-5'>开发</b>板的电路原理图免费下载

    AX7020原理图等资料分享

    ZYNQ7020原理图等资料SCH和PCB封装等免费下载。
    发表于 09-23 15:14 28次下载

    Zynq-7020千兆网口的3种扩展方案

    常用的以太网接口通常是MAC + 物理PHY的形式,外接RJ45插头实现GE_T模式的电口应用。而Zynq-7020PS部分包含两个千兆以太网MAC层硬核,因此还需要以太网物理层传输芯片实现千兆以太网接口。Zynq-7020
    的头像 发表于 12-14 15:56 2102次阅读

    基于zynq7020器件来搭建Linux系统

    Zynq器件将arm和FPGA结合,利用了两者各自的优势,arm可以实现灵活的控制,而FPGA部分可以实现算法加速,这大大扩展了zynq的应用。比如深度学习加速,图像处理等等。PL侧表示FPGA的逻辑部分,PS侧为arm端以及一
    发表于 11-09 11:28 1928次阅读
    基于<b class='flag-5'>zynq7020</b>器件来搭建Linux系统