第一课--BD的使用
0,前言
小声bb。首先很很感谢尤恺元老师的系列免费课程,FPGA公开直播课每周开课一次免费课程在这里可以看。B站也有。我看了很多zynq的教程,米联客的,黑金的,李工的,还有diligant官方的教程等等,这里不做评级。单纯感谢一下所有大佬提供的开源教程。凯元老师讲的很不错,特此总结一个系列记录下来。最后感谢!!!
1,ZYNQ的架构
学习zynq,起码大概知道人家是什么吧。所谓知己知彼,方能百战不殆。
ZYNQ分为PL(Programmable Logic)和PS(Processing System)两个部分组成。
其中呢,PL就是之前学习过的FPGA部分的资源了。而PS集成了两颗 A9 双核硬核,我不太清楚这里的部分以及两者的交互部分。感觉和这里的PS端STM32很像。数据互联都是使用的AXI总线。这里后面单独说。
下面分析下上图。
上图黄色的就是PL。Cortex A9双核系统有很多固定的外设。例如DDR,例如左半边的类似SPI等的连接,这也牵扯到后面配置ZYNQip的知识。可以看到这里很多都是使用的AMBA进行数据交互。这里可以自行百度。笔者也不是很清楚。后面明白再补更。左边部分的ACP以及HP0-3好像是和数据一致性有关的问题。其次DDR和PS端连接,但是PL也能访问其中的数据。
2,I/O的架构
下图讲的很清楚,一些固定的I/O一个有54个,分别是连接了一些PS的固定外设,在设置ZYNQIP的时候,都有很重要的联系。
什么是软核和硬核以及其联系。怎么连接,怎么设置完全依据原理图,所以怎么看原理图也是很重要的。下面我截取几张原理图以及配置的问题供参考。
这里原理图是48-49.而uart1中有,uart0就没有这个管脚。下面的CD与SD也是类似。其他的可以自己看原理图。
ZYNQ 的 GPIO( 通用输入输出(General Purpose Input/Output)),分为两种,MIO(multiuse I/O)和 EMIO(extendable multiuse I/O)
54 个 MIO(multiuse I/O),它们分配在 GPIO 的 Bank0 和 Bank1 隶属于 PS 部分,这些
IO 与 PS 直接相连。不需要添加引脚约束,MIO 信号对 PL 部分是透明的,不可见。所以对 MIO 的操作可以看作是纯
PS 的操作。MIO分配在bank0和bank1直接与PS部分相连,EMIO分配在bank2和bank3和PL部分相连。除了bank1是22-bit
之外,其他的 bank 都是 32-bit。所以 MIO 有 53 个引脚可供我们使用,而 EMIO 有 64 个引脚可供我们使用。
使用 EMIO 的好处就是,当 MIO 不够用时,PS 可以通过驱动 EMIO 控制 PL 部分的引脚,接下来就来详细介绍下
EMIO 的使用。
EMIO 的使用和 MIO 的使用其实是非常相似的。区别在于,EMIO 的使用相当于 PS + PL 的结合使用的例子。所
以,EMIO 需要分配引脚,以及编译综合生成 bit 文件。在课程中,老师将EMIO作为引脚引入逻辑部分,因此不要绑定引脚。只需要将LED绑引脚就可以了。
至于bank0-1设置的电平也可以在原理图中找到。
3,启动流程
这里的启动流程很多板子需要自己配置,根据板子的硬件说明。这里=老师给了一张图。引导ROM。加载LSBL,加载bit流文件(可选),加载或运行SSBL或逻辑程序。
4,软核以及其他
引用老师的文案同时引荐两篇博文。
zynq核和MB软核以及A家NIOSII核,三者区别和一些共性。
共性:1,把一些通用的驱动或者一些简单的C语言的计算的代码,直接引入到FPGA开发环境中。
区别:1,ZYNQ四 A9 双核硬核2,MB 和NIOS都是软核,性能差别很大,而且占用FPGA逻辑资源,数据互联或数据访问效率比较低。
引荐博文:1,FPGA的软核、硬核以及固核的概念2,为什么非要在FPGA上用硬核或软核?
5,BD工程的搭建
这里工程的搭建可以具体参考我之前的流水灯的例子。过程很详细。Vivado入门创建工程之----流水灯其中里面还涉及到了自定义IP的使用。下面是生成的ZYNQip以及简单的分析。
这里的GPIO有一个输入两个输出,
gpio[0]直接通过FPGA管脚输出控制LED灯;
gpio[1]输入到FPGA的逻辑块作为一个标志信号,使能我们一个计数器,控制计数器产生震荡信号,震荡信号驱动LED;
这里的GPIO全部引入了逻辑,也可以绑引脚,直接连接FPGA的外设。
6,问题总结以及反思
这里使用到了ila进行逻辑分析,学会了如何自己打包生成的ip中自带ip进行分析。
对zynq架构有一个更好的认识。
对zynq配置进行了总结。
跨时钟域的处理。(之前有总结过)
第一课--BD的使用相关推荐
- c语言 字母 八进制表示'/1011',C语言C语言第一课:C语言概述为什么学习C语言怎样学习C语言.DOC...
[摘要]C语言 第一课: C语言概述 为什么学习C语言 怎样学习C语言 参考资料 ----------------------------------------------------------- ...
- 【JavaScript从入门到精通】第一课 初探JavaScript魅力-01
第一课 初探JavaScript魅力-01 JavaScript是什么 如今我们打开一个大型的网站,都会有很多JS效果的功能和应用.对于学过CSS+HTML的同学,即使是像淘宝那样的网站,用一两天时间 ...
- 什么是优秀管理者的第一课?【如何搞垮一个企业】
什么是优秀管理者的第一课?[如何搞垮一个企业] 文 韩宇斌 <道德与企业成败 [如何搞垮一个企业.序]> ...
- 三层代码讲解--第一课
主题:三层代码讲解--第一课 主持人:老吴 时间:2004-05-24 2004-05-24 10:47:00 天之痕_若虹(86278566) 請教大家一個問題好嗎 2004-05-24 10:47 ...
- Web 探索之旅 | 第二部分第一课:客户端语言
-- 作者 谢恩铭 转载请注明出处 Web探索之旅 | 第二部分 第二部分第一课:客户端语言 第二部分第二课:服务器语言 第二部分第三课:框架和内容管理系统 第二部分第四课:数据库 第二部分第五课:响 ...
- LINUX-Shell第一课
LINUX-Shell第一课 1.通过一个小例子进行一下介绍shell #!/bin/sh调用sehll echo 打印内容 read 输入内容 cd 跳转目录 pwd查看当前目录 2.定义两 ...
- java day01第一课java简介
java简介 个人简介 陈杜杰 联系方式:18227288633 从事java后台开发三年多,在创业公司和国企做过开发 熟悉JAVA.HTML.JS.CSS等语言 教学方式: 1.尊重学生,希望学生是 ...
- 妙味课堂——HTML+CSS(第一课)
一句话,还记忆不如烂笔头,何况还这么笨,记下笔记,也是记录这一路学习的过程. 妙味课堂第一课并未一味地先讲HTML,而是穿插着CSS讲解,这一点不同于一些其他视频,这一点挺特别的!所以这一课涉及到HT ...
- 0.0 目录-深度学习第一课《神经网络与深度学习》-Stanford吴恩达教授
文章目录 第五课 第四课 第三课 第二课 第一课 第五课 <序列模型> 笔记列表 Week 1 循环序列模型 Week 1 传送门 -> 1.1 为什么选择序列模型 1.2 数学符号 ...
最新文章
- amd一点也不yes_AMD, 真的YES吗?
- 关于微信的jsapi_ticket的获取方法;
- RHEL6基础四十三之RHEL文件共享②Samba简介
- 外观模式和代理模式的联系和区别_java23种设计模式-结构型模式之外观模式
- 提升对前端的认知,不得不了解Web API的DOM和BOM
- C# 使用Quartz简单实例以及备忘
- 黑马博客——详细步骤(五)项目功能的实现之用户信息修改
- TCP协议与UDP协议的区别
- python定义复数矩阵_python矩阵运算,转置,逆运算,共轭矩阵实例
- 软件multisim的安装教程
- Linux下Weblogic部署安装
- Mybatis 拦截器报错
- mysql高频面试题合集
- 三星S9微信和服务器怎么连接,三星s9 微信在后台为什么收不到消息 | 手游网游页游攻略大全...
- 宝贝数量、流量组成结构、付费和免费流量占比、提高流量价值、店铺为什么没有销量?这些你真应该看看
- Simulink-模块Moudle调用回调函数步骤
- 女神节送什么比较好?适合女生用的蓝牙耳机推荐
- ES6读书笔记(下)
- Android 开发多摄像头 API
- 4.1 I/O流
热门文章
- 造成跨域的原因和解决方法
- js中的异步与同步,解决由异步引起的问题
- 如何在Visual Studio 2012中撤消“范围到此”?
- 找不到元数据文件“ .dll”
- fmt标签实现时间日期格式化,与类型转换Converter
- Spring的junit4测试集成
- Excel 条件格式使用方法
- shell脚本验证ssh连通性_ssh远程管理服务
- html在文本框选中后在表格中选中,excel表格出现文本框的解决方法步骤
- python字符串补空格输出_python实现指定字符串补全空格、前面填充0的方法