【FPGA入门教程】(一)初识FPGA
FPGA(Field-Programmable Gate Array,现场可编程门阵列),正如其名,FPGA内部有大量的可编程逻辑功能块,使用verilog HDL(硬件描述语言)实现设计。
玩过单片机的小伙伴刚接触FPGA可能会有点困惑,其实FPGA与单片机最大的区别就在于:FPGA设计的是电路,单片机设计的是程序。单片机只有一个CPU在工作时钟的驱动下顺序的执行程序(取指、译码、执行),所以工作速度较慢,而FPGA设计出来的是整个电路逻辑系统,根本不需要单片机这么复杂,所以FPGA的工作速度自然很快,在两者各有各的优势下,单片机主要用于进行相关控制,FPGA多用于信号处理相关。
典型的FPGA原理和结构如下图(注:以Cyclone IV E FPGA芯片为例),主要包括三类基本资源:
- 可编程逻辑功能块(Altera-LE(Logic Element) / Xlinx-Slice)
是实现用户功能的基本单元,多个逻辑功能块通常规则地排成一个阵列结构,分布于整个芯片;
- 可编程内部互连资源
包括各种长度的连线线段和一些可编程连接开关,它们将各个可编程逻辑块或输入/输出块连接起来,构成特定功能的电路。用户可以通过编程决定每个单元的功能以及它们的互连关系,从而实现所需的逻辑功能。
- 可编程输入/输出(I/O)块
完成芯片内部逻辑与外部管脚之间的接口,围绕在逻辑单元阵列四周;
FPGA从简单的逻辑粘合,发展到现在的可编程片上系统,FPGA厂家也在基本的FPGA架构上加入了一些扩展资源,比如时钟管理单元(PLL、DLL)、嵌入式存储器单元和硬件乘法器单元,DSP单元一些高端器件还加入了高速收发器、甚至嵌入式硬核处理器,让FPGA的应用领域更广阔,Cyclone IV E器件加入的扩展资源有:
- PLL锁相环
模拟电路,将输入的周期信号进行分频和倍频,或改变相位,输出一个或多个稳定的时钟信号;
- M9K存储器
嵌入式块RAM,容量大小9Kbit,这些存储器可以被配置成单端口、简单双端口、真双端口RAM、FIFO缓冲器、ROM
- 18*18硬件乘法器
快速进行运算
FPGA中除了三类基本资源和一些扩展资源外,由图中可以看到,FPGA中资源分布也是很精致的:
1、逻辑阵列和M9K存储器交替分布,这样做的优点是缩短数据的传输路径,以获得更优的时序性能;
2、IOEs和PLL单元分布在器件的四周,数据流一般从左侧IO流入,经过处理、运算、存储,通过右侧IO流出,控制信号通过上下IO输入输出;有时候系统需要高质量时钟(比如软核所需工作时钟)通常由PLL单元产生,而这些分布在四周的PLL可以最短时钟源产生工作时钟,另外,PLL属于模拟电路,放在周围更利于生产;
两种主流FPGA的资源情况如下:
Altera Cyclone IV E系列FPGA常见硬件资源详情列表:
Xilinx 7 系列FPGA 硬件资源详情:
最后,放上两张开发板图片,一块是小梅哥基于Cyclone IV EP4CE10的AC620,一块是Digilent基于Xilinx Artix7的Basys3,两块都很精致有木有~
【FPGA入门教程】(一)初识FPGA相关推荐
- 零基础CSS入门教程(1)–初识CSS
点此查看 所有教程.项目.源码导航 本文目录 1. 前言 2. HTML与CSS区别 3. CSS有哪些功能 4. 如何学习CSS 1. 前言 学习CSS是离不开HTML的,HTML是CSS的基础,如 ...
- fpga倍频程序_初识FPGA
FPGA(Field-Programmable Gate Array,现场可编程门阵列),FPGA内部有大量的可编程逻辑功能块,使用verilog HDL(硬件描述语言)实现设计. FPGA与单片机最 ...
- 《FPGA入门教程》看书随笔——RTL设计
1.使用verilog进行RTL设计一般可归纳为3种基本的描述方式: (1)数据流描述:采用assign连续赋值语句 (2)行为描述:使用always语句或initial语句块的过程赋值语句 (3)结 ...
- 《FPGA入门教程》看书随笔——数字电路设计入门
1.数字电路设计的核心是逻辑设计.数字电路的逻辑值只有'1'和'0',表征的是模拟 电压或电流的离散值,一般'1'代表高电平,'0'代表低电平. 2.当前的数字电路的电平标准常见的有:TTL.CMOS ...
- 【FPGA入门教程】(七)FSM(Finite State Machine,有限状态机)设计
FPGA设计中,最重要的设计思想就是状态机的设计思想!状态机的本质就是对具有逻辑顺序和时序规律的事件的一种描述方法,它有三个要素:状态.输入.输出:状态也叫做状态变量(比如可以用电机的不同转速作为状态 ...
- 【FPGA入门教程】(六)时序逻辑电路设计
用always@(posedge clk)描述 时序逻辑电路的基础--计数器(在每个时钟的上升沿递增1) 例1.四位计数器(同步使能.异步复位) // Module Name: coun ...
- 【FPGA入门教程】(二)FPGA学习路线及开发流程
一.FPGA学习路线 工具使用 -> 语法学习 -> 逻辑设计 -> IP使用 ->接口设计 -> 时序分析 -> 片上系统 1.工具使用 Altera:Quart ...
- Quartus II 安装教程—FPGA入门教程
Quartus II 工具安装一般分为两个部分,首先是开发工具本身的安装,其次就是器件库的安装,我们可以根据我们的需要选择相应的器件库来安装,这里我们使用Cyclone IV的FPGA,即安装Cycl ...
- 零基础HTML入门教程(11)--初识VSCode
点此查看 所有教程.项目.源码导航 本文目录 1. 编辑器 2. 编辑器是干啥的 3. VSCode编辑器的特长 4. VSCode下载与安装 5. VSCode安装 6. 小结 1. 编辑器 在之前 ...
最新文章
- 软件设计之 数据库设计
- 如何使用Python的进度条?
- 4、Power Query-智能汇总工作簿下的指定或所有工作表数据
- iOSPush自动隐藏tabbar
- 新的DMN编辑器预览
- html中通过定位 实现下拉,JS+CSS相对定位实现的下拉菜单
- select函数fdwrite用法_NumPy 分段函数
- python3 mysql库_Python3.7 MySQL 数据库连接
- python数据结构与算法篇:排序
- 王守臣 | 文字不灭:“这边有个要饭的”
- linux重启tomcat进程,Linux系统重启tomcat服务的方法详解
- php中case的使用,php:switchcase语句的使用案例
- 10246 - Asterix and Obelix
- 中央财经大学研究生入学考试 901C语言程序设计
- CorelDRAW入门教程
- Linux命令之md5sum的作用以及使用方法(md5是什么?)
- html页面banner空白,css banner不拉伸
- 新概念英语第一册学习笔记
- 达梦数据库连接报错 error code=-70028 Create SOCKET connection failure. 创建SOCKET连接失败
- 动态规划——最长非降子序列