fpga原理和结构 pdf_我眼中的FPGA & CPU

890a23d5bdfe41fbc99db36198564a8e.png
在MLIR故事线里面插播一条FPGA的文章,这源于FPGA课堂作业的一道题。What is FPGA? Explain the main differences between FPGA and CPU in terms of operation principle? 那我就来说说,我眼中的FPGA,以及它和CPU之间的关系。

在本科阶段,我接触过三次FPGA,分别是数字逻辑课设、计算机组成原理课设和硬件综合课设。正巧这三次使用FPGA的经历,可以回答课堂作业中的问题。

数字逻辑课设 -- 什么是FPGA

数字逻辑课设中分为一系列的子任务,实现译码器、分频器、七段数码管扫描电路等等。最后是一个综合性的实验,就是把子任务中实现的各种器件组合起来,使整个电路能够完成一个实际功能,我当时选择实现一个蓝牙密码箱,肝了好久,加上老师手把手帮忙,最后实现的那一刻真的激动了好久,这是当时成功时的照片:

40763e0551b94857493d1b5cfc6fc442.png

当时我把FPGA纯粹当作一个黑盒子看待,就是用verilog写代码,然后就看波形有没有错误,然后分配引脚,再把程序上传到试验箱上。一步一步都是按照实验手册进行,最后做完实验反过头来想,什么是FPGA呢,一查概念,FPGA是Filed Programmable Gate Array的缩写,即现场可编程门阵列,emmm,当时的我是理解不了,然后就开开心心地享受假期了。

那么现在来看,数字逻辑课设就是使用了FPGA最基本的特点:硬件可编程。最终实现的数字逻辑课设功能,实际上就是一个电路,有输入信号,通过一系列的逻辑运算,最后产生输出。那么编写的verilog代码就是在用相对高级的语言,描述时序与组合逻辑电路的功能。但是此时FPGA理解不了verilog的代码呀,所以就需要进一步地编译,从而让FPGA知道应该怎么实现verilog描述的电路。首先就得进行综合(Synthesize),这一步就是把verilog代码翻译成由各种与、或、非门以及RAM和触发器组成的逻辑链接。此时生成的逻辑链接文件距离实际的芯片配置还有一定距离,这就需要布局布线步骤,将生成好的逻辑链接适配到FPGA内部的硬件结构上。这样一来,FPGA就可以实现我们设计的电路功能。

FPGA与CPU

在我看来,FPGA和CPU的运行方式的不同来源于逻辑电路结构是否可变。CPU是具有冯诺伊曼结构的固定的电路,这种结构擅长做指令调度,因此它可以运行软件,即软件可编程。而FPGA逻辑电路结构是可变的,是可以随时定义的,这就是硬件可编程的真意,它可以通过硬件描述语言,实现任何电路,当然也可以变成一个CPU。

计算机组成原理课设 -- CPU软核

计算机组成原理课设中最终要求实现一个MIPS架构单发射的5级流水的处理器。也就是说,在课设中,使用verilog实现了MIPS架构的处理器软核,然后再加上驱动试验箱的IP核,完成了整体的电路结构。最终处理器执行给定的MIPS汇编程序,在试验箱的数码管上实现循环计数的功能。

fb2b2df725eff35cb9adce44cc95576c.png

这种方式就是在硬件可编程的FPGA上实现了CPU软核,这样就使它拥有了冯诺伊曼结构,从而拥有了软件可编程的能力。它叫做软核就是因为,它需要经过仿真、综合以及布局布线过程之后才可以使用,这样做的优点在于可以根据自己所需要的功能来进行配置,比如说,我们可以在这个5级流水的CPU软核上面,再添加保留站和Reorder Buffer的结构,把它变成一个支持乱序执行的处理器,这就体现了软核的灵活的优点。

硬件综合课设 -- CPU硬核

硬件综合课设是给一块Xilinx的PYNQ板子,以及所需的传感器,实现一个特定功能。我们小组选择了DHT11的温湿度传感器、web camera以及显示器,实现了户外车牌识别设备。

970d948a71d284f8b3b3720d611661b1.png

d079a97714aa3a59b3a303d4eb92b6fc.png

在这个课设中使用的PYNQ板子,分为PS(Processing System)和PL(Programmable Logic)两个部分,PS端实际上就是一个ARM架构的CPU硬核的存在,运行Linux和Python实现软件可编程,PL端是FPGA,实现硬件可编程,可以驱动传感器向PS端传递实时数据。这种硬核实际上是将ARM处理器植入FPGA芯片,形成新的SOC芯片,这种芯片可以配置各种操作系统,而同时也具备FPGA芯片的优势,可以自己定制逻辑,比如我们课设中的对于DHT11温湿度传感器的驱动,而且作为硬核,CPU的部分,不会挤占FPGA的逻辑资源。

回顾本科阶段与FPGA的接触,我真的非常感激这些课设对我整个计算机知识体系理解的帮助,最后向教我数字逻辑的陈老师、计算机组成原理的朱老师、硬件课设的王老师表示感谢,在我当时卡壳的时候,老师们几乎都是手把手地帮我度过难关,非常幸运能够遇到这些好老师!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Altera FPGA\CPLD设计(基础篇)——Altera FPGA\CPLD推荐教材。。。 第1章 FPGA/CPLD简介 1.1 可编程逻辑设计技术简介 1.1.1 可编程逻辑器件发展简史 1.1.2 可编程逻辑器件分类 1.2 FPGA/CPLD的基本结构 1.2.1 FPGA的基本结构 1.2.2 CPLD的基本结构 1.2.3 FPGA和CPLD的比较 1.3 FPGA/CPLD的设计流程 1.4 FPGA/CPLD的常用开发工具 1.5 下一代可编程逻辑设计技术展望 1.5.1 下一代可编程逻辑器件硬件上的四大发展趋势 1.5.2 下一代EDA软件设计方法发展趋势 1.6 小结 1.7 问题与思考 第2章 Altera FPGA/CPLD的结构 2.1 Altera高密度FPGA 2.1.1 主流高端FPGA——Stratix 2.1.2 内嵌高速串行收发器的FPGA Stratix GX 2.1.3 新一代90nm高端FPGA StratiX II 2.2 Altera低成本FPGA. 2.2.1 主流低成本FPGA Cyclone 2.2.2 新一代低成本FPGA Cyclone II 2.3 Altera的CPLD器件 2.3.1 主流的CPLD MAX 3000A 2.3.2 CPLD的革 MAX II 2.4 小结 2.5 问题与思考 第3章 Altera Quartus II开发流程 3.1 Quartus II软件综述 3.1.1 Quartus II软件的特点及支持的器件 3.1.2 Quartus II软件的工具及功能简介 3.1.3 Quartus II软件的用户界面 3.2 设计输入 3.2.1 设计输入方式 3.2.2 设计规划 3.2.3 设计输入文件实例 3.2.4 设计约束 3.3 综合 3.3.1 使用Quartus II软件集成综合 3.3.2 控制综合 3.3.3 综合实例 3.3.4 第三方综合工具 3.4 布局布线 3.4.1 设置布局布线参数 3.4.2 布局布线实例 3.4.3 增量布局布线 3.4.4 反标保留分配 3.5 仿真 3.5.1 指定仿真器设置 3.5.2 建立矢量源文件 3.5.3 仿真实例 3.5.4 第三方仿真工具 3.6 编程与配置 3.6.1 建立编程文件 3.6.2 器件编程和配置 3.7 小结 3.8 问题与思考 第4章 Altera的IP工具 4.1 IP的概念、Altera的IP 4.1.1 IP的概念 4.1.2 Altera可提供的IP 4.1.3 Altera IP在设计中的作用 4.2 使用Altera的基本宏功能 4.2.1 定制基本宏功能 4.2.2 实现基本宏功能 4.2.3 设计实例 4.3 使用Altera的IP核 4.3.1 定制IP核 4.3.2 实现IP核 4.3.3 设计实例 4.4 小结 4.5 问题与思考 第5章 Quartus II的常用辅助设计工具 5.1 I/O分配验证 5.1.1 I/O分配验证功能简介 5.1.2 I/O分配验证流程 5.1.3 用于I/O分配验证的输入 5.1.4 运行I/O分配验证 5.2 功率分析 5.2.1 Excel.based功率计算器 5.2.2 Simulation-based功率估算 5.3 RTL阅读器 5.3.1 RTL阅读器简介 5.3.2 RTL阅读器用户界面 5.3.3 原理图的分页和模块层次的切换 5.3.4 过滤原理图 5.3.5 将原理图中的节点定位到源设计文件 5.3.6 在原理图中查找节点或网线 5.3.7 使用RTL阅读器分析设计中的问题 5.4 SignalProbe及SignalTap II逻辑分析器 5.4.1 SignalProbe 5.4.2 SignalTap II逻辑分析器 5.5 时序收敛平面布局规划器(Timing Closure Floorplan) 5.5.1 使用Timing Closure Floorplan分析设计 5.5.2 使用Timing Closure Floorplan优化设计 5.6 Chip Editor底层编辑器 5.6.1 Chip Editor功能简介 5.6.2 使用Chip Editor的设计流程 5.6.3 Chip Editor视图 5.6.4 资源特性编辑器 5.6.5 Chip Editor的一般应用 5.7 工程更改管理(ECO) 5.7.1 ECO简介 5.7.2 ECO的应用范围 5.7.3 ECO的操作流程 5.7.4 使用Change Manager查看和管理更改 5.7.5 ECO验证 5.8 小结 5.9 问题与思考 第6章 编程与配置 6.1 配置Altera FPGA 6.1.1 配置方式 6.1.2 主动串行(AS) 6.1.3 被动串行(PS) 6.1.4 快速被动并行(FPP) 6.1.5 被动并行异步(PPA) 6.1.6 JTAG配置方式 6.1.7 ByteBlaster II下载电缆 6.1.8 配置芯片 6.2 配置文件和软件支持 6.2.1 软件支持 6.2.2 配置文件 6.3 单板设计及调试注意事项 6.3.1 配置的可靠性 6.3.2 单板设计要点 6.3.3 调试建议 6.4 小结 6.5 问题与思考 第7章 MAX+PLUS II过渡到Quartus II 7.1 MAX+PLUS II与Quartus II的功能比较 7.2 转换MAX+PLUS II设计 7.2.1 改变GUI风格 7.2.2 转换MAX+PLUS II工程 7.2.3 查看新工程 7.2.4 导入MAX+PLUS II配置文件 7.3 编辑工程 7.3.1 修改设计芯片 7.3.2 设置编译选项 7.4 编译 7.4.1 运行编译器 7.4.2 查看工程结构 7.4.3 编译报告 7.5 时序分析 7.5.1 时序设置 7.5.2 运行时序分析器 7.5.3 时序分析指定路径 7.5.4 时序约束布局器 第9章 刀路的模拟、校验和后置处理 9.1 模拟刀路 9.2 校验刀路 9.3 后置处理 9.4 加工文档 9.5 总结 附录A A.1 Cimatron快捷键 A.2 Cimatron主菜单参数设置 A.3 FILE-SETUP设置 A.4 NC常见旗标含义 A.5 Cimatron数据转换 A.6 数控加工工艺卡

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值