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

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

3天内不再提示

PYNQ案例(一):ZYNQ的PL与PS开发

电子设计 来源:Pynq 作者:Pynq 2020-12-25 14:11 次阅读

上一期的学习中,我们系统性地介绍了PYNQ与ZYNQ地区别与联系。PYNQ = Python + ZYNQ,即将ZYNQ部分功能的Python化,直接调用Python库和FPGA硬件库进行功能的开发。

Pynq降低了开发人员的门槛,但知其然也知其所以然,开发效率将会更高。因此,在进入PYNQ的python开发之前,我们先来学习ZYNQ的PL与PS开发,为接下来的学习提供良好的基础。

本部分的学习,我们依旧借助PYNQ_z2来完成。

1. ZYNQ功能块
ZYNQ中包含两大功能块:PS部分和PL部分。

PS部分指Processing System,一个基于双ARM Cortex A9内核的处理系统,其中集成了内存存储器和外部存储器接口,以及如GPIO、UART接口等大量的外设。

PL部分指Programmable Logic,基于Xilinx 7系列架构的可编程逻辑单元,通过PL部分可以为ARM定制很多外设,这也是ZYNQ的一大优点。

2. ZYNQ整体架构
ZYNQ中虽然包含PS端和PL端,但是整个设计是以ARM处理器中心的,PS端的ARM内核可以独立于PL端运行;虽然PL端也可以独立于PS端运行,但是PL的配置是由PS端完成的,所以不能采用传统的固化FLASH的方式固化PL端程序。

PS端和PL端通信是通过AXI接口协议连接,这个协议是AMBA的一部分,是一种高性能、高带宽、低延迟的片内总线。

3. vivado与PL开发
下面我们通过一个LED灯的小项目进行本部分学习:

实验:轮流点亮LED灯

1. 打开vivado hls,点击Create New Project Project”,创建一个新工程。

2. 设置工程名led和路径,在工程类中中选择RTL Project,目标语言“Target language“选择选择“Verilog Verilog”,多语言混合编程。

选择板子的时候搜索xc7z020clg400-1,这是PYNQ的板子号,选择完成(PYNQ-Z2板采用ZYNQ XC7Z020-1CLG400C SoC)。

3. 新建一个 VerilogHDL 文件,可以通过右击 Design sourse 选择 AddSourse,选择第二个选项

选择 CreateFile…在弹出下面窗口填写新建源文件名称

创建完成点击 Finish

4. 在用户区 VerilogHDL 文件窗口中输入源程序,保存时文件名与实体名 保持一致,代码如下:

o4YBAF9uHx6AFyosAADJJJLoq1M006.png

得到的最终界面:

pIYBAF9uHySAfD19AAVNWkGbCyo885.png

5. 新建约束文件,输入下面指令

pIYBAF9uHyaAGPlqAAEW2Ef8TWQ369.png

6.单击”Run Synthesis“开始综合->弹出的对话框单击”OK“->综合完成后单击”cancle“->点击“Constrain wizard"

点击finish

7. 时序约束向导分析出设计中的时钟,这里把“sys_clk”频率设置为50Mhz,然后点击Skip to Finish结束时序约束向导。

在弹出的框选择OK,接着选finish

这个时候led.xdc文件已经更新,点击“Reload”重新加载文件

8. 点击“Generate Bitstream”,直接生成bit 文件。

在弹出的对话框中可以选择任务数量,这里和CPU核心数有关,一般数字越大,编译越快,单击”OK”

9. 这个时候开始编译,可以看到右上角有个状态信息,在编译过程中可能会被杀毒软件、电脑管家拦截运行,导致无法编译或很长时间没有编译成功。

编译中没有任何错误,编译完成,弹出一个对话框让我们选择后续操作,这里选项“open hardware manager” ,然后单击“OK”

10. 下载到板子

1)连接好开发板的 JTAG接口,给开发板上电

2)可以看到JTAG扫描到arm和 FPGA 内核

3)选择FPGA内核,右键选择“Program Device...” ,在弹出窗口中点击“Program”

4)等待下载,下载完成以后,我们可以看到4 颗LED开始每秒变化一次

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

    关注

    1624

    文章

    21597

    浏览量

    601003
  • led
    led
    +关注

    关注

    240

    文章

    23025

    浏览量

    656153
  • python
    +关注

    关注

    54

    文章

    4763

    浏览量

    84338
收藏 人收藏

    评论

    相关推荐

    正点原子ZYNQ7015开发板!ZYNQ 7000系列、双核ARM、PCIe2.0、SFPX2,性能强悍,资料丰富!

    ! 正点原子Z15 ZYNQ开发板,搭载Xilinx Zynq7000系列芯片,核心板主控芯片的型号是XC7Z015CLG485-2。开发板由核心板+底板组成,外设资源丰富,板载1路
    发表于 09-14 10:12

    [XILINX] 正点原子ZYNQ7035/7045/7100开发板发布、ZYNQ 7000系列、双核ARM、PCIe2.0、SFPX2!

    7000系列芯片,核心板支持Xilinx Zynq-7035、Zynq-7045和Zynq-7100三种型号。开发板由核心板+底板组成,外设资源丰富,板载2路千兆以太网接口(
    发表于 09-02 17:18

    复旦微PS+PL异构多核开发案例分享,基于FMQL20SM国产处理器平台

    本文主要介绍复旦微FMQL20S400M的PS + PL异构多核开发案例,开发环境如下: Windows开发环境:Windows 7 64b
    发表于 08-22 14:04

    使用PYNQ训练和实现BNN

    使用 PYNQ 可以轻松在 FPGA 上实现加速 AI/ML,而无需编写行 HDL!让我们看看如何做到这点。
    的头像 发表于 08-05 17:15 362次阅读
    使用<b class='flag-5'>PYNQ</b>训练和实现BNN

    FM20S用户手册-PS + PL异构多核案例开发手册

    PS端) + FPGA可编程逻辑资源(PL端)异构多核SoC处理器设计的全国产工业评估板,PS端主频高达1GHz。核心板CPU、ROM、RAM、电源、晶振、连接器等所有器件均采用国产工业级方案
    发表于 07-25 16:14

    有关PL端利用AXI总线控制PS端DDR进行读写(从机wready信号直不拉高)

    直拉高的。这与写数据通道好像有点区别。 我不清楚PS 端的DDR到底发生了什么,但是和MIG核就是有点不样,通过仿真MIG核可以发现,PL端的DDR是会先
    发表于 05-31 12:04

    简谈Xilinx Zynq-7000嵌入式系统设计与实现

    FPGA灵活性和可扩展性,也提供了专用集成电路的相关性能、功耗和易用性。 ZYNQ 7000的结构便于将定制逻辑和软件分别映射到PLPS中,这样就可实现独无二和差异化的系统功能。
    发表于 05-08 16:23

    Xilinx ZYNQ 动手实操演练

    。 实操演示 下面做个从uart打印hello world的实验,只用PS,不用PL部分,程序从SD卡启动,跑在PS的内部RAM。 zyn
    发表于 05-03 19:28

    AMD Versal AI Edge自适应计算加速平台之体验ARM,裸机输出(7)

    我们从原理图中可以看到 ZYNQ 芯片分为PLPSPS端的IO分配相对是固定的,不能任意分配,而且不需要在Vivado软件里分配管脚,虽然本实验仅仅使用了
    的头像 发表于 04-19 10:45 1192次阅读
    AMD Versal AI Edge自适应计算加速平台之体验ARM,裸机输出(7)

    简谈Xilinx Zynq-7000嵌入式系统设计与实现

    PLPS中,这样就可实现独无二和差异化的系统功能。与传统的FPGA方法不同的是,ZYNQ 7000 SoC总是最先启动PS内的处理器,
    发表于 04-10 16:00

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

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

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

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

    Zynq7045的PS端的SPI外设配置AD9154读取芯片ID返回值直为FF的原因?

    Zynq7045的PS端的SPI外设配置AD9154读取芯片ID(0x005地址)返回值直为FF,但是用相同的代码去读取AD9434就没有问题,能正常读取ID值,实在是搞不清楚问题会出在哪里
    发表于 12-01 11:59

    基于zynq7020器件来搭建Linux系统

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

    ZYNQ的ARM和FPGA数据交互——AXI交互最重要的细节

    。 ③EMIO :由于MIO管脚有限,PS端可以通过EMIO访问PL端引脚。 ④GP :通用AXI接口,用来实现般主从互联、数据交互,不用于高性能。 ⑤HP :是高性能/带宽的标准接口,主要用于
    发表于 11-03 10:51