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

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

3天内不再提示

xilinx ZYNQ7000系列基本开发流程之PS端

FPGA技术江湖 来源:叁芯智能FPGA课程 2023-08-11 09:36 次阅读

这篇文章记录ZYNQ7020的PS端的基本开发流程,关于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设计,也就是图形化设计

7ecfe3f8-37da-11ee-9e74-dac502259ad0.png

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

7ef52faa-37da-11ee-9e74-dac502259ad0.png

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

7f11eb90-37da-11ee-9e74-dac502259ad0.png

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

7f351750-37da-11ee-9e74-dac502259ad0.png

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

7f543072-37da-11ee-9e74-dac502259ad0.png

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

7f703966-37da-11ee-9e74-dac502259ad0.png

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


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

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

7f91fba0-37da-11ee-9e74-dac502259ad0.png

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

核。

2.2、我们这篇文章是PS开发流程,关于PS-PL Configuration 配置在这里保持默认,在后面的实验中我再补充
7fc97aa8-37da-11ee-9e74-dac502259ad0.png

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

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

7ffacaae-37da-11ee-9e74-dac502259ad0.png

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

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

802edfce-37da-11ee-9e74-dac502259ad0.png

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

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

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

8051220a-37da-11ee-9e74-dac502259ad0.png

807d2f94-37da-11ee-9e74-dac502259ad0.png

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

80c1d608-37da-11ee-9e74-dac502259ad0.png

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

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

80f26e6c-37da-11ee-9e74-dac502259ad0.png

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

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

电压是1.8v

811ab368-37da-11ee-9e74-dac502259ad0.png

815c80d6-37da-11ee-9e74-dac502259ad0.png

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

817835ba-37da-11ee-9e74-dac502259ad0.png

8193e346-37da-11ee-9e74-dac502259ad0.png

2.8、配置USB0到MIO28-MIO39

81aefff0-37da-11ee-9e74-dac502259ad0.png

81d6a19a-37da-11ee-9e74-dac502259ad0.png

2.9、ZYNQ还可以SD卡启动

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

81ff9154-37da-11ee-9e74-dac502259ad0.png

822e4418-37da-11ee-9e74-dac502259ad0.png

1、配置SD0

82536ed2-37da-11ee-9e74-dac502259ad0.png

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

827d7772-37da-11ee-9e74-dac502259ad0.png

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

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

82a035f0-37da-11ee-9e74-dac502259ad0.png

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

3.1、MIO配置

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

82c655c8-37da-11ee-9e74-dac502259ad0.png

3.2、时钟配置

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

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

还有 PS 端外设的时钟等也可以进行配置,这里保持默认。
82f274f0-37da-11ee-9e74-dac502259ad0.png

3.3、DDR3配置

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

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

其他部分保持默认,点击OK
8318b0ca-37da-11ee-9e74-dac502259ad0.png

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

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

833925f8-37da-11ee-9e74-dac502259ad0.png

2、按照默认点击“OK”

835164ec-37da-11ee-9e74-dac502259ad0.png

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

8388dfd0-37da-11ee-9e74-dac502259ad0.png

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

83ade514-37da-11ee-9e74-dac502259ad0.png

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

83d595dc-37da-11ee-9e74-dac502259ad0.png

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

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

83fae814-37da-11ee-9e74-dac502259ad0.png

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

841d7c3a-37da-11ee-9e74-dac502259ad0.png

8、点击“Generate”

8440b2c2-37da-11ee-9e74-dac502259ad0.png

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

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

847f6bb6-37da-11ee-9e74-dac502259ad0.png

10、在菜单栏“File -> Export -> Export Hardware...”导出硬件信息,这里就包含了 PS 端的配置信息。
84d90770-37da-11ee-9e74-dac502259ad0.png

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

85066134-37da-11ee-9e74-dac502259ad0.png

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

13、此时会多出 xx.sdk 文件夹,并且有个 hdf 文件,这个文件就是这个文件就包含了 Vivado 硬件设计的信息,供软件开发人员使用。
852c2d60-37da-11ee-9e74-dac502259ad0.png

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

7e9f21a0-37da-11ee-9e74-dac502259ad0.png

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

1、点击Vivado菜单“File -> Launch SDK”,启动SDK
856738e2-37da-11ee-9e74-dac502259ad0.png

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

85992f6e-37da-11ee-9e74-dac502259ad0.png

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

Vivado硬件设计的信息,可以给软件开发使用,也可以看到 PS 端外设的寄存器列表。
85b4213e-37da-11ee-9e74-dac502259ad0.png

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

85e2603a-37da-11ee-9e74-dac502259ad0.png

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

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

86075e26-37da-11ee-9e74-dac502259ad0.png

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

86377138-37da-11ee-9e74-dac502259ad0.png

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

8652878e-37da-11ee-9e74-dac502259ad0.png

7、双击“system.mss”,还可以看到有些PS外设还提供了例程,这是用来了解学习这些外设的

第一手资料。驱动文档说明可以在 Documentation 中找到。通过 Import Examples 引入官方

例子,加快学习。

86b57ccc-37da-11ee-9e74-dac502259ad0.png

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

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

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

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

86e2aa3a-37da-11ee-9e74-dac502259ad0.png

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

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

8716fe02-37da-11ee-9e74-dac502259ad0.png

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

8744b5ae-37da-11ee-9e74-dac502259ad0.png

12、选择“ps_uart_hello”,右键“Run as”,选择第一个“Launch on Hardware(SystemDebuger)”,使用系统调试,直接运行程序。
877eb790-37da-11ee-9e74-dac502259ad0.png

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

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

87b14b4c-37da-11ee-9e74-dac502259ad0.png

15、选择“Reset entire system”复位整个系统,如果系统中还有PL设计,还必须选择“ProgramFPGA”,再次点击“Run”
87dfdb4c-37da-11ee-9e74-dac502259ad0.png

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

88107cde-37da-11ee-9e74-dac502259ad0.png

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

88253d90-37da-11ee-9e74-dac502259ad0.png

7e9f21a0-37da-11ee-9e74-dac502259ad0.png

三、Debug调试

1、除了“Run As”,还可以“Debug As”,这样可以设置断点,单步运行
886d52ec-37da-11ee-9e74-dac502259ad0.png

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

889bb4d4-37da-11ee-9e74-dac502259ad0.png

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

88c36f1a-37da-11ee-9e74-dac502259ad0.png

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

88fe166a-37da-11ee-9e74-dac502259ad0.png

7e9f21a0-37da-11ee-9e74-dac502259ad0.png

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

审核编辑:汤梓红

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

    关注

    1602

    文章

    21320

    浏览量

    593201
  • Xilinx
    +关注

    关注

    70

    文章

    2121

    浏览量

    119373
  • C语言
    +关注

    关注

    180

    文章

    7530

    浏览量

    128722
  • uart
    +关注

    关注

    22

    文章

    1159

    浏览量

    99961
  • 串口打印
    +关注

    关注

    0

    文章

    10

    浏览量

    3047

原文标题:笔记连载精选 |【xilinx ZYNQ7000系列之《PS端 》串口打印】

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

收藏 人收藏

    评论

    相关推荐

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

    一、ZYNQ基本结构 ZYNQ7000系列分为 Artix-7 Kintex-7 Virtex-7,各个型号区别参考下面的博文 https://www.jianshu.com
    的头像 发表于 05-12 10:25 1.4w次阅读
    <b class='flag-5'>ZYNQ7000</b><b class='flag-5'>系列</b> <b class='flag-5'>PS</b>、PL、AXI 、启动<b class='flag-5'>流程</b>基本概念

    请问FX3的UART口和Xilinx ZYNQ7000PS的UART进行硬件连接需要TTL电平转换吗?

    想让FX3的UART口和Xilinx ZYNQ7000PS(Processor system)的内置UART相互通信,两个芯片使用的是同一个电源(同在一块板子上或分别在两块相互连接
    发表于 02-28 08:32

    【Z-turn Board试用体验】+板上资源Zynq7000启动流程的学习

    做一遍也不害怕!Zynq7000,是一个可扩展处理平台,简单说就是有个FPGA做外设的A9双核处理器。所以,它的启动流程自然也和FPGA完全不同,而与传统的ARM处理器类似。Zynq7000支持从多种设备
    发表于 05-27 20:50

    分享黑金ZYNQ7000系列视频教程

    视频太大了,无法上传,直接分享百度网盘了介绍一下内容【黑金ZYNQ7000系列原创视频教程】20.Linux下的GPIO操作【黑金ZYNQ7000系列原创视频教程】19.Linux下的
    发表于 11-14 21:04

    ZYNQ7000搭建嵌入式Linux操作系统

    ZYNQ7000搭建嵌入式Linux操作系统-增加PL外设一、VIVADO工程建立二、VIVADO工程设置虚拟机下生成内核和uboot.elfSDK生成设备树和BOOT.bin一、VIVADO工程
    发表于 12-17 06:42

    Xilinx Zynq-7000特性参数

    CPUCPU为Xilinx Zynq-7000SOC,兼容XC7Z035/XC7Z045/XC7Z100,平台升级能力强,以下为Xilinx Zynq-7000特性参数:电源接口和开关
    发表于 12-30 07:55

    Xilinx Zynq-7000SOC的相关资料推荐

    是广州创龙基于Xilinx Zynq-7000 SoC设计的高速数据采集处理开发板,采用核心板+底板的设计方式,尺寸为180mm*130mm晶振核心板的PS
    发表于 01-03 07:50

    Xilinx-ZYNQ7000学习笔记

    Xilinx-ZYNQ7000系列-学习笔记(3):系统复位与启动一、复位ZYNQ-7000 SoC系统中的复位可以由硬件、看门狗定时器、JTAG控制器或软件产生,可用于驱动系统中每个模块的复位信号
    发表于 01-25 06:49

    Xilinx-ZYNQ7000学习笔记

    Xilinx-ZYNQ7000系列-学习笔记(3):系统复位与启动一、复位ZYNQ-7000 SoC系统中的复位可以由硬件、看门狗定时器、JTAG控制器或软件产生,可用于驱动系统中每个模块的复位信号
    发表于 01-25 07:05

    Xilinx® Zynq®7000系列电源解决方案

    描述此 PMP10600.1参考设计提供为 Xilinx® Zynq® 7000 系列 (XC7Z015) FPGA供电时所需的所有电源轨。此设计使用多个 LMZ3
    发表于 09-23 07:43

    Xilinx® Zynq®7000系列电源解决方案

    描述 PMP10601 参考设计提供为 Xilinx® Zynq® 7000 系列 (XC7Z015) FPGA供电时所需的所有电源轨。此设计使用多个 LMZ3
    发表于 09-28 06:24

    Zynq7000系列之芯片引脚功能综述

    的认识,然而要很好地进行硬件设计,还必须了解芯片的引脚特性,以确定其是否符合我们的选型要求,这些要求包括GTX引脚数目、select IO引脚数目、select IO引脚的资源配置情况、PS IO的数目及类型等。 1.Zynq7000
    发表于 02-09 05:52 3573次阅读

    第二章 Zynq7000芯片的简介

    详细介绍zynq7000系列板子的资料,适合初学者借鉴学习。
    发表于 02-28 15:12 11次下载

    Xilinx Zynq™-7000

    Xilinx Zynq™-7000
    的头像 发表于 06-04 13:47 3426次阅读

    ZYNQ7000开发平台的AX7Z035开发板用户手册免费下载

    ZYNQ7035 + 4 个 DDR3 + eMMC + QSPI FLASH 的最小系统构成。 ZYNQ7035 采用 Xilinx 公司的 Zynq7000
    发表于 06-24 08:00 111次下载
    <b class='flag-5'>ZYNQ7000</b><b class='flag-5'>开发</b>平台的AX7Z035<b class='flag-5'>开发</b>板用户手册免费下载