上一期的学习中,我们系统性地介绍了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 文件窗口中输入源程序,保存时文件名与实体名 保持一致,代码如下:

得到的最终界面:

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

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开始每秒变化一次

PYNQ系列学习(三)|pynq与zynq对比(二)相关推荐

  1. android double转string_Java 数组转 List 的三种方式及对比

    来源:Java数组转List的三种方式及对比_五道口-CSDN博客 作者:大脑补丁 前言: 本文介绍Java中数组转为List三种情况的优劣对比,以及应用场景的对比,以及程序员常犯的类型转换错误原因解 ...

  2. java 创建线程_【80期】说出Java创建线程的三种方式及对比

    点击上方"Java面试题精选",关注公众号 面试刷图,查缺补漏 >>号外:往期面试题,10篇为一个单位归置到本公众号菜单栏->面试题,有需要的欢迎翻阅. 一.Ja ...

  3. 结构光、双目、ToF——三种3D技术对比

    本文虽然命名为对比文档,但是对比意义不是特别强烈的内容仍不在少数--如三种3D技术的误差等部分--换言之,本文旨在通过对比的形式对三种3D技术的特点和特性进行总结.资料主要来自于网络,部分相关参考文献 ...

  4. pl/sql中三种游标循环效率对比

    pl/sql中三种游标循环效率对比 - Oracle数据库栏目 - 红黑联盟 http://www.2cto.com/database/201307/224636.html 转载于:https://b ...

  5. 三种Hash算法对比以及秒传原理.

    三种Hash算法对比以及秒传原理 CRC (32/64)   MD5  Sha1 分5个点来说 1.校验值长度 2.校验值类别 3.安全级别 4.应用场景 1).校验值长度 CRC(32/64) 分别 ...

  6. 5种样式实现div容器中三图摆放实例对比说明

    代码地址如下: http://www.demodashi.com/demo/11593.html 效果演示: demo点查看效果 需求说明: 如下图所示为设计图,希望在图片上传无规则无规律的情况下实现 ...

  7. mybatis批量更新数据三种方法效率对比

    探讨批量更新数据三种写法的效率问题. 实现方式有三种, 1> 用for循环通过循环传过来的参数集合,循环出N条sql,需要在db链接url后面带一个参数  &allowMultiQuer ...

  8. 【Linux】Linux学习(三)常用基本命令(二)

    Linux学习(三)常用基本命令(二) crontab 系统定时任务 crontab 服务管理 crontab 定时任务设置 RPM软件包管理 RPM概述 RPM查询命令 RPM卸载命令 RPM安装命 ...

  9. 数值计算方法之1——三种迭代公式对比

    数值计算方法之1--三种迭代公式对比 说明 要求 Matlab实现 运行结果 三种迭代公式对比 说明 Matlab的版本为Matlab R2019b:这篇笔记的全部内容是基于上课时老师布置的小小小作业 ...

最新文章

  1. cctype 头文件定义函数实例
  2. Spring Boot 集成 MyBatis 与 c3p0
  3. Common sql statement
  4. 面向对象重写(override)与重载(overload)区别
  5. iis下php 500错误
  6. Spring AOP示例教程 - Aspect,Advice,Pointcut,JoinPoint,Annotations,XML Configuration
  7. 企业库(V4.1)入门学习手记
  8. python实现排队论模型_Logistic模型拟合COVID-19疫情以及Python实现
  9. python random库下载_python random库
  10. 从我的简历再谈测试分类
  11. 碾压专业机构,27岁华裔小伙推出美国最准新冠预测模型
  12. shell脚本中一些日期的定义
  13. 计算机组成与设计 笔记(一)
  14. linux makefile教程,Makefile简单入门教程
  15. 保姆级Ruby on rails安装教程
  16. python numpy安装步骤-NumPy基础与安装
  17. Java笔记17:JAVA常用函数
  18. 腾讯掀起史上最大一轮管理干部裁撤:从月入2万+到领4千工资的中年们
  19. Lab3: 自行车码表
  20. 产品销售份额数据统计流程图模板分享

热门文章

  1. 荣达嵌入式打印机打印效果
  2. 贝尔曼福特_福特自行车之旅
  3. Redis 设计与实现 读书笔记(菜鸟版)
  4. Qt QSS QSlider样式
  5. UE4 加载外部图片作为贴图
  6. CF498D Traffic Jams in the Land
  7. unity中content size fitter组件不起作用
  8. 美团Java面试题,苹果手机java编程软件
  9. LOJ3124 CTS2019 氪金手游 概率、容斥、树形DP
  10. Flutter Scaffold的详细解说