PYNQ系列学习(三)|pynq与zynq对比(二)
上一期的学习中,我们系统性地介绍了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对比(二)相关推荐
- android double转string_Java 数组转 List 的三种方式及对比
来源:Java数组转List的三种方式及对比_五道口-CSDN博客 作者:大脑补丁 前言: 本文介绍Java中数组转为List三种情况的优劣对比,以及应用场景的对比,以及程序员常犯的类型转换错误原因解 ...
- java 创建线程_【80期】说出Java创建线程的三种方式及对比
点击上方"Java面试题精选",关注公众号 面试刷图,查缺补漏 >>号外:往期面试题,10篇为一个单位归置到本公众号菜单栏->面试题,有需要的欢迎翻阅. 一.Ja ...
- 结构光、双目、ToF——三种3D技术对比
本文虽然命名为对比文档,但是对比意义不是特别强烈的内容仍不在少数--如三种3D技术的误差等部分--换言之,本文旨在通过对比的形式对三种3D技术的特点和特性进行总结.资料主要来自于网络,部分相关参考文献 ...
- pl/sql中三种游标循环效率对比
pl/sql中三种游标循环效率对比 - Oracle数据库栏目 - 红黑联盟 http://www.2cto.com/database/201307/224636.html 转载于:https://b ...
- 三种Hash算法对比以及秒传原理.
三种Hash算法对比以及秒传原理 CRC (32/64) MD5 Sha1 分5个点来说 1.校验值长度 2.校验值类别 3.安全级别 4.应用场景 1).校验值长度 CRC(32/64) 分别 ...
- 5种样式实现div容器中三图摆放实例对比说明
代码地址如下: http://www.demodashi.com/demo/11593.html 效果演示: demo点查看效果 需求说明: 如下图所示为设计图,希望在图片上传无规则无规律的情况下实现 ...
- mybatis批量更新数据三种方法效率对比
探讨批量更新数据三种写法的效率问题. 实现方式有三种, 1> 用for循环通过循环传过来的参数集合,循环出N条sql,需要在db链接url后面带一个参数 &allowMultiQuer ...
- 【Linux】Linux学习(三)常用基本命令(二)
Linux学习(三)常用基本命令(二) crontab 系统定时任务 crontab 服务管理 crontab 定时任务设置 RPM软件包管理 RPM概述 RPM查询命令 RPM卸载命令 RPM安装命 ...
- 数值计算方法之1——三种迭代公式对比
数值计算方法之1--三种迭代公式对比 说明 要求 Matlab实现 运行结果 三种迭代公式对比 说明 Matlab的版本为Matlab R2019b:这篇笔记的全部内容是基于上课时老师布置的小小小作业 ...
最新文章
- cctype 头文件定义函数实例
- Spring Boot 集成 MyBatis 与 c3p0
- Common sql statement
- 面向对象重写(override)与重载(overload)区别
- iis下php 500错误
- Spring AOP示例教程 - Aspect,Advice,Pointcut,JoinPoint,Annotations,XML Configuration
- 企业库(V4.1)入门学习手记
- python实现排队论模型_Logistic模型拟合COVID-19疫情以及Python实现
- python random库下载_python random库
- 从我的简历再谈测试分类
- 碾压专业机构,27岁华裔小伙推出美国最准新冠预测模型
- shell脚本中一些日期的定义
- 计算机组成与设计 笔记(一)
- linux makefile教程,Makefile简单入门教程
- 保姆级Ruby on rails安装教程
- python numpy安装步骤-NumPy基础与安装
- Java笔记17:JAVA常用函数
- 腾讯掀起史上最大一轮管理干部裁撤:从月入2万+到领4千工资的中年们
- Lab3: 自行车码表
- 产品销售份额数据统计流程图模板分享