基于vivado(语言Verilog)的FPGA学习(3)——FPGA理论知识
基于vivado(语言Verilog)的FPGA学习(3)——FPGA理论知识
文章目录
- 基于vivado(语言Verilog)的FPGA学习(3)——FPGA理论知识
- 1. FPGA介绍
- 1.1.FPGA内部结构
- (1). 可编程逻辑块CLB
- (2).可编程输入/输出单元(IOB)
- (3).时钟管理模块(CMT)
- (4).嵌入式块RAM(BRAM)
- (5).丰富的布线资源
- (6).底层内嵌功能单元
- (7).内嵌专用硬核
- 1.2.常用的可编程逻辑器件
- 1.3.FPGA资源报告
- 1.4.FPGA时序优化方式
- 1.5.FPGA功耗报告
- 1.6.FPGA开发流程
- 2. ZYNQ
- 2.1.ZYNQ介绍
- 2.2.内部结构
- 2.3.ZYNQ开发流程
- 2.4.基于高层次综合的SOC FPGA设计流程
- 3.MPSOC
1. FPGA介绍
1.1.FPGA内部结构
FPGA主要是采用SRAM工艺的查找表(LUT,Look-up Table)结构,LUT 本质上就是一个 RAM
内部结构有:
(1). 可编程逻辑块CLB
如果输入芯片型号,进行仿真综合时,可以看到FPGA内部资源,其中占地面积最多的就是CLB,CLB内部时有2个或4个slice构成。每个slice中又含有几个查找表LUT、多路选择器MUX、超前进位链CARRY4、存储单元FF(触发器,通常被配置成D触发器,被用于时序逻辑中)
SLICE根据LUT功能被分为:
SLICEM(memory):可读可写,可以实现移位寄存器和DRAM等存储功能
SLICEL:内部LUT只读,只能实现基本查找表逻辑
(2).可编程输入/输出单元(IOB)
为了适配多种电气标准,I/O单元根据接口电压VCCO被划分成若干组
(3).时钟管理模块(CMT)
DCM(数字管理时钟)的核心是DLL(Delay Locked Loop),可以产生不同相位的时钟、分频、倍频和相位动态调整。
PLL使用了电压控制延迟,用VCO来实现和DLL中类试的延迟功能。又称模拟锁相环。功能上都可以实现倍频、分频、占空比调整,但是PLL调节范围更大,比如说:XILINX使用DLL,只能够2、4倍频;ALTERA的PLL可以实现的倍频范围就更大毕竟一个是模拟的、一个是数字的。
两者之间的对比:对于PLL(Phase Locked Loop,相位锁定环),用的晶振存在不稳定性,而且会累加相位错误,而DLL在这点上做的好一些,抗噪声的能力强些;但PLL在时钟的综合方面做得更好些。总的来说PLL的应用多,DLL则在jitter power precision等方面优于PLL。
(4).嵌入式块RAM(BRAM)
DRAM和 BRAM 区别
1、BRAM的输出需要时钟,DRAM 在给出地址后即可输出数据。
2、BRAM有较大的存储空间,FPGA定制的RAM资源;而DRAM是逻辑单元拼出来的,浪费LUT 资源
3、DRAM 使用更灵活方便些
4、较大的存储应用,建议用BRAM;零星的小应用,可以用DRAM。
(5).丰富的布线资源
布线资源连通 FPGA 内部的所有单元,而连线的长度和工艺决定着信号在连线上的驱动能力和传输速度。FPGA芯片内部有着丰富的布线资源,根据工艺、长度、宽度和分布位置的不同而划分为4类不同的类别。
1、全局布线资源,用于芯片内部全局时钟和全局复位/置位的布线;
2、长线资源,用以完成芯片 Bank 间的高速信号和第二全局时钟信号的布线;
3、短线资源,用于完成基本逻辑单元之间的逻辑互连和布线;
4、分布式的布线资源,用于专有时钟、复位等控制信号线。
但应用中设计者不需要选择用哪个布线资源,布局布线器可以根据输入逻辑网表的拓扑结构和约束条件进行自动连接。
(6).底层内嵌功能单元
内嵌功能模块主要指DLL(Delay Locked Loop)、PLL(Phase Locked Loop)、DSP(嵌入式乘法单元)和CPU等软核(Soft Core)。现在越来越丰富的内嵌功能单元,使得单片 FPGA 成为了系统级的设计工具,使其具备了软硬件联合设计的能力,逐步向SOC平台过渡。
(7).内嵌专用硬核
相对于底层嵌入的软核而言,指的是FPGA当中处理能力强大的硬核,等效于ASIC电路。
1.2.常用的可编程逻辑器件
可编程逻辑器件有:FPGA、PAL、GAL、EPLD、CPLD、FPLA、GDS
1.3.FPGA资源报告
1、 LUT:查找表(Look-Up-Table),是FPGA实现组合逻辑的硬件单元。资源利用率中的 LUT 是指设计中消耗的所有LUT,包括用做逻辑函数发生器的LUT和用做存储单元的LUTRAM。
2、 LUTRAM:分布式存储器(Look-Up-Table RAM),指设计消耗的 LUT 被用作了存储单元或移位寄存器
3、FF:触发器(Flip-Flop)边沿敏感的存储硬件单元,可以存储1bit 数据。
4、BRAM:(Block RAM)各种块存储功能的硬件单元。如Xilinx公司的结构中每个BRAM有 36Kbit 的容量。
5、DSP:乘法器。不管是调用IP核,还是直接写代码“*”,综合之后都是占用 DSP48E1 的资源。功能包括乘法、乘法累加(MACC)、乘法加法、三输入加法、桶形移位、宽总线多路复用、幅度比较器、按位逻辑功能、模式检测和宽计数器。
1.4.FPGA时序优化方式
1、插入寄存器,缩短组合逻辑延时;
2、并行化设计,缩短关键路径的延时;
3、逻辑展平,包括逻辑复制、消除代码中的优先级;
4、寄存器均衡设计,缩短关键逻辑的延时;
5、路径重组。
1.5.FPGA功耗报告
在 Vivado 下,有两种功耗估计模式。
一种是向量模式,需要提供SAIF(Switching Activity Interchange Format)或VCD文件,SAIF 文件通过仿真生成,因此需要在Simulation Settings中进行设置。Xilinx建议在向量模式下选择 SAIF 文件,因其估计速度要比 VCD 快。
一种是非向量模式,只需要提供简单的参数即可,但估计结果不够准确。
采用向量模式结果的confidence level为high,非向量模式为low。
1.6.FPGA开发流程
这一点在前两部分都提过:
1、电路功能设计,但在此之前,需要结合FPGA芯片资源进行资源分配与权衡
2、设计输入:一般以硬件描述语言和原理图输入位置,对于结合了ARM的FPGA开发板,也可以结合PL和PS一同设计。
3、功能仿真:此时没有延时
4、综合:用FPGA的基本逻辑单元去完成仿真
5、综合仿真:会考虑门延时
6、实现与布局布线:将逻辑网表配置到具体FPGA上
7、时序仿真与验证:最为精密的延时计算,模拟具体FPGA上的延时情况
8、板级仿真与验证:板级仿真与验证主要应用于高速电路设计中,对信号完整性和电子干扰等特性进行分析,使用第三方工具完成。
9、芯片编程与调试:生成比特流文件,然后下载至FPGA芯片中。
2. ZYNQ
2.1.ZYNQ介绍
ZYNQ中包含两大功能块:PS部分和 PL 部分。
1、PS部分指Processing System,一个基于双 ARM Cortex A9内核的处理系统,其中集成了内存存储器和外部存储器接口,以及如GPIO、UART 接口等大量的外设。
2、PL部分指Programmable Logic,基于Xilinx 7系列架构的可编程逻辑单元,通过PL部分可以为 ARM 定制很多外设,这也是ZYNQ 的一大优点。
2.2.内部结构
1、应用处理单元
2、PS与PL连接方式:AXI通用接口、加速一致性端口、高性能端口
3、EMIO接口:EMIO是扩展的MIO,是PS和PL之间的一个接口,当PS的引脚不够用的时候,可以通过 EMIO 来扩展,从而使用PL的引脚(SMC静态存储器控制器(Memory Interfaces)、Quad-SPI、USB 不可以连接)
也就是说当ARM的MIO接口(复用性输入输出端)不够用时,可以调用PL部分(FPGA)的IO接口,该接口称为EMIO接口。
2.3.ZYNQ开发流程
这里就体现出PS(ARM)和PL(FPGA)部分结合的特点,PS部分用软件开发工具SDK,PL部分用硬件开发工具VIVADO。
2.4.基于高层次综合的SOC FPGA设计流程
题目的意思就是利用FPGA的虚拟化,将功能实现转换成C语言,再利用FPGA将C语言自动转换成软硬件语言,分配给PL和PS:
3.MPSOC
升级版ZYQN:Zynq UltraScale+ MPSoC系列
基于vivado(语言Verilog)的FPGA学习(3)——FPGA理论知识相关推荐
- IMU惯性测量单元学习与初始对准理论知识学习
我也刚刚开始学,不合理的地方希望大佬指正 ,么么哒 IMU惯性测量单元学习与初始对准理论知识学习 第一节 1.什么是IMU? 来自百度百科. 惯性测量单元(英文:Inertial measuremen ...
- FPGA学习.0——FPGA是什么
FPGA(Field Programmable Gate Array,简称FPGA),译文:现场可编程门阵列,一种主要以数字电路为主的集成芯片,于1985年由Xilinx创始人之一Ross Freem ...
- 软件测试学习笔记——性能理论知识
软件测试知识--性能理论知识 什么是性能测试? 狭义的性能测试主要用于描述常规的性能测试,是通过模拟生产运行时的业务压力或用户使用场景来测试系统性能是否满足生产性能的要求. 广义的性能测试是压力测试. ...
- 《自制编程语言--基于C语言 郑钢》学习笔记
<自制编程语言>学习笔记 本仓库内容 <自制编程语言>源码 src/sparrow.tgz <自制编程语言>读书笔记 docs/* <自制编程语言>样章 ...
- [FPGA 学习记录] FPGA 开发环境的搭建
FPGA 开发环境的搭建 文章目录 一.Quartus II 主体软件安装[^1][^2] 1.1 选择软件安装位置 1.2 找到安装包存放位置 1.3 运行安装程序 1.4 开始安装 1.5 安装位 ...
- 深入学习Spring(理论知识部分)
文章目录 前言 BeanDefinition 什么是BeanDefinition BeanDefinition中重要的属性 BeanFactory 什么是BeanFactory BeanDefinit ...
- 黑盒法测试c语言,黑盒测试的测试用例设计方法(经典理论知识,推荐)
一.黑盒测试的测试用例设计方法 1. 等价类划分方法 2. 边界值分析方法 3. 错误推测方法 4. 因果图方法 5. 判定表驱动分析方法 6. 正交实验设计方法 7. 功能图分析方法 二.等价类划分 ...
- IMU惯性测量单元学习与初始对准理论知识学习---2
我也刚刚开始学,不合理的地方希望大佬指正 ,么么哒 第一节链接https://blog.csdn.net/xmiien/article/details/107488049 第二节 1.什么是加速度计 ...
- 学习日记——FPGA实验平台板级电路详解
一.板级电路整体架构 我接下来一段时间学习的就是"勇敢的芯"FPGA 实验平台,它是特权同学和至芯科技携手打造的一款基于Altera Cyclone IV FPGA 器件的入门级 ...
- 基于Java语言实现模拟银行存取款业务系统
资源下载地址:https://download.csdn.net/download/sheziqiong/85820969 1.项目简介 本项目的主要功能是模拟银行的存取款业务,当用户登录时需判断银行 ...
最新文章
- wpf custom control
- ActFrameWork集成Beetlsql的Mapper功能
- promise is promose
- 文件内容、关键字匹配,split 和 indexOf 均可实现
- leetcode 434. 字符串中的单词数(Java版)
- 方立勋_30天掌握JavaWeb_JSP
- Java小青蛙跳台街,算法-青蛙跳台阶详解
- android怎么ota升级,Android OTA升级过程
- PyCharm编辑器的安装
- 组装我的计算机社会实践活动,暑期电脑销售社会实践心得体会
- HTML页面的参数化实现(仿ASP)
- 计算机图形学几何变换
- Linux中网卡的命名规则
- 密码学基础(三):非对称加密(RSA算法原理)
- 桌面创建html文件夹路径,HTML5+ - DirectoryEntry(文件夹及文件操作)
- docker批量导入导出镜像
- AI足球预测软件|足球大数据预测分析
- 2020年,不可错过的技术圈十大“翻车”事件
- 努力是你最幸福的时候
- 谷歌小恐龙-有网也能玩儿
热门文章
- “我们的开源项目”活动发起人——庄表伟专访
- c++ 输入、输出和文件
- Gerber 文件钻孔(过孔)偏移的问题解决办法
- C专家编程-读书笔记(书本顺序)
- arduino 蓝牙 android 小车,arduino智能蓝牙小车
- 计算机病毒与木马新闻,恶意木马再变种 计算机病毒中心发警示
- 紫光同创pango软件烧录FPGA操作
- 瀚高数据库php连接,瀚高数据库----基本函数
- decklink linux 驱动下载,DeckLink
- 工业温度控制器的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告