FPGA(Field-Program mable Gate Array),即现场可编程门阵列,它是在 PAL、GAL、CPLD 等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。所以,要想玩转 FPGA,就必须理解 FPGA 内部的工作原理,学习如何利用这些单元实现复杂的逻辑设计。

(一)FPGA 的工作原理

FPGA 一般来说比 ASIC(专用集成芯片)的速度要慢,无法完成复杂的设计,但是功耗较低。但是 他们也有很多的优点比如可以快速成品,可以被修改来改正程序中的错误和更便宜的造价。厂商也可能会提供便宜的但是编辑能力差的 FPGA. 因为这些芯片有比 较差的可编辑能力,所以这些设计的开发是在普通的 FPGA 上完成的,然后将设计转移到一个类似于 ASIC 的芯片上。

FPGA 采用了逻辑单元阵列 LCA(Logic Cell Array)这样一个概念,内部包括可配置逻辑模块 CLB(Configurable Logic Block)、输出输入模块 IOB(Input Output Block)和内部连线(Interconnect)三个部分。 现场可编程门阵列(FPGA)是可编程器件,与传统逻辑电路和 门阵列(如 PAL,GAL 及 CPLD 器件)相比,FPGA 具有不同的结构。FPGA 利用小型查找表(16×1RAM)来实现组合逻辑,每个查找表连接到一 个 D 触发器的输入端,触发器再来驱动其他逻辑电路或驱动 I/O,由此构成了既可实现组合逻辑功能又可实现时序逻辑功能的基本逻辑单元模块,这些模块间利用 金属连线互相连接或连接到 I/O 模块。FPGA 的逻辑是通过向内部静态存储单元加载编程数据来实现的,存储在存储器单元中的值决定了逻辑单元的逻辑功能以及各模块之间或模块与 I/O 间的联接方式,并最终决定了 FPGA 所能实现的功能,FPGA 允许无限次的编程。

(二) FPGA 设计的基础问题

FPGA 的基础就是数字电路和 VHDL 语 言,想学好 FPGA 的人,建议床头都有一本数字电路的书,不管是哪个版本的,这个是基础,多了解也有助于形成硬件设计的思想。在语言方面,建议初学者学习 Verilog 语言,VHDL 语言语法规范严格,调试起来很慢,Verilog 语言容易上手,而且,一般大型企业都是用 Verilog 语言,VHDL 语言 规范,易读性强,所以一般军工都用 VHDL.

1、工具问题

熟悉几个常用的就可以的,开发环境 QuartusII ,或 ISE 就可以了,这两个基本是相通的,会了哪一个,另外的那个也就很 Easy 了。功能仿真建议使用 Modelsim ,如果你是做芯片的,就可以学学别的仿真工具,做 FPGA 的,Modelsim 就足够了。综合工具一般用 Synplify,初学先不用太关心这个,用 Quartus 综合就 OK 了。

2、思想问题

对于初学者,特别是从软件转过来的,设计的程序既费资源又速度慢,而且很有可能综合不了,这就要求我们熟悉一些固定模块的写法,可综合的模块很多书上都有,语言介绍上都有,不要想当然的用软件的思想去写硬件。

3、习惯问题

FPGA 学习要多练习,多仿真,signaltapII 是很好的工具,可以看到每个信号的真实值, 建议初学者一定要自己多动手,光看书是没用的。关于英文文档问题,如果要学会 Quartus II 的所有功能,只要看它的 handbook 就可以了,很详细,对于 IT 行业的人,大部分知识来源都是英文文档,一定要耐心看,会从中收获很多的。

4、算法问题

做 FPGA 的工程师,最后一般都是专攻算法了,这些基础知识都是顺手捏来的,如果你没有做好搞理论 的准备,学 FPGA 始终只能停留在初级阶段上。对于初学者,数字信号处理是基础,应该好好理解,往更深的方向,不用什么都学,根据你以后从事的方向,比如 说通信、图像处理,雷达、声纳、导航定位等。

(三) FPGA 的配置模式

FPGA 有多种配置模式:并行主模式为一片 FPGA 加一片 EPROM 的方式;主从模式可以支持一片 PROM 编程多片 FPGA;串行模式可以采用串行 PROM 编程 FPGA;外设模式可以将 FPGA 作为微处理器的外设,由微处理器对其编程。

如何实现快速的时序收敛、降低功耗和成本、优化时钟管理并降低 FPGA 与 PCB 并行设计的复杂性等问题,一直是采用 FPGA 的系统设计工程师需要考虑的关键问题。如今,随着 FPGA 向更高密度、更大容量、更低功耗和集成更多 IP 的方向发展,系统设计工 程师在从这些优异性能获益的同时,不得不面对由于 FPGA 前所未有的性能和能力水平而带来的新的设计挑战。

(四) FPGA 设计的三大法则

第一 面积与速度的互换

这里的面积指的是 FPGA 的芯片资源,包括逻辑资源和 I/O 资源等;这里的速度指的是 FPGA 工作 的最高频率(和 DSP 或者 ARM 不同,FPGA 设计的工 作频率是不固定的,而是和设计本身的延迟紧密相连)。 在实际设计中,使用最小的面积设计出最高的速度是每一个开发者追求的目标,但是“鱼和熊掌不可兼得”,取舍之间展示了一个开发者的智慧。

1. 速度换面积

速度优势可以换取面积的节约。面积越小,就意味着可以用更低的成本来实现产品的功 能。速度换面积的原则在一些较复杂的算法设计中常常会用到。在这些算法设计中,流水线设计常常是必须用到的技术。在流水线的设计中,这些被重复使用但是使 用次数不同的模块将会占用大量的 FPGA 资源。对 FPGA 的设计技术进行改造,将被重复使用的算法模块提炼出最小的复用单元,并利用这个最小的高速代替原 设计中被重复使用但次数不同的模块。当然,在改造的过程中必然会增加一些其他的资源来实现这个代替的过程。但是只要速度具有优势,那么增加的这部分逻辑依 然能够实现降低面积提高速度的目的。

可以看到,速度换面积的关键是高速基本单元的复用。

2. 面积换速度

在这种方法中面积的复制可以换取速度的提高。支持的速度越高,就意味着可以实现更高的产品性能。一些注重产品性能的应用领域可以采用并行处理技术,实现面积换速度。

第二 硬件可实现原则

FPGA 设计通常会使用 HDL 语言,比如 Verilog HDL 或者 VHDL. 当采用 HDL 语言来描述一个硬件电路功能的时候,一定要确保代码描述的电路是硬件可实现的。

Verilog HDL 语言的语法与 C 语言很相似,但是它们之间有着本质的区别。C 语言是基于过程的高级语言,编译后可以在 CPU 上运行。而 Verilog HDL 语言描述的本身就是硬件结构,编译后是硬件电路。因此,有些语句在 C 语言的环境中应用是没有问题的,但是在 HDL 语言环境下就会导致结果不正确或者 不理想。

在 C 语言中运行没有任何问题,但是在 Verilog HDL 的环境下编译就会导致综合后的资源严重浪费。

第三 同步设计原则

同步电路和异步电路是 FPGA 设计的两种基本电路结构形式。

异步电路的最大缺点是会产生毛刺。同步设计的核心电路是由各种触发器构成的。这类电路的任何输出都是在某个时钟的边沿驱动触发器产生的。所以,同步设计可以很好地避免毛刺的产生。

(五) FPGA 设计的主要应用

1、电路设计

连接逻辑,控制逻辑是 FPGA 早期发挥作用比较大的领域也是 FPGA 应用的基石。事实上在电路设计 中应用 FPGA 的难度还是比较大的这要求开发者要具备相应的硬件知识(电路知识)和软件应用能力(开发工具)这方面的人才总是紧缺的,往往都从事新技术, 新产品的开发成功的产品将变成市场主流基础产品供产品设计者应用在不远的将来,通用和专用 IP 的设计将成为一个热门行业!搞电路设计的前提是必须要具备一 定的硬件知识。在这个层面,干重于学,当然,快速入门是很重要的,越好的位子越不等人电路开发是黄金饭碗。

2、产品设计

把相对成熟的技术应用到某些特定领域如通讯,视频,信息处理等等开发出满足行业需要并能被行业客户 接受的产品这方面主要是 FPGA 技术和专业技术的结合问题,另外还有就是与专业客户的界面问题产品设计还包括专业工具类产品及民用产品,前者重点在性能, 后者对价格敏感产品设计以实现产品功能为主要目的,FPGA 技术是一个实现手段在这个领域,FPGA 因为具备接口,控制,功能 IP,内嵌 CPU 等特点有条 件实现一个构造简单,固化程度高,功能全面的系统产品设计将是 FPGA 技术应用最广大的市场,具有极大的爆发性的需求空间产品设计对技术人员的要求比较 高,路途也比较漫长不过现在整个行业正处在组建“首发团队”的状态,只要加入,前途光明产品设计是一种职业发展方向定位,不是简单的爱好就能做到的!产品 设计领域会造就大量的企业和企业家,是一个发展热点和机遇。

3、系统级

系统级的应用是 FPGA 与传统的计算机技术结合,实现一种 FPGA 版的计算机系统,实现一个基本环境,在这个平台上跑 LINUX 等系统,这个系统也就支持各种标准外设和功能接口(如图象接口)了这对于快速构成 FPGA 大型系统来讲是很有帮助的。这种“山寨”味很浓的系统早期优势不一定很明显,类似 ARM 系统的境况但若能慢慢发挥出 FPGA 的优势,逐渐实现一些特色系统也是一种发展方向。若在系统级应用中,开发人员不具备系统的扩充开发能力,只是搞搞编程是没什么意义的,当然设备驱动程序的开发是另一种情况,搞系统级应用看似起点高,但不具备深层开发能力,很可能会变成爱好者,就如很多人会做网页但不能称做会编程。类似以上是几点个人观点,希望能帮助想学 FPGA 但很茫然无措的人理一理思路。这是一个不错的行业,有很好的个人成功机会。但也肯定是一个竞争很激烈的行业,关键看的就是速度和深度当然还有市场适应能力。

c语言转fpga原理,要想玩转FPGA,就必须理解FPGA内部的工作原理-可编程逻辑-与非网...相关推荐

  1. fpga板子怎么和电脑连_FPGA通过以太网与PC机通信完整方案-可编程逻辑-与非网

    一.简介 使用以太网接口实现PC和FPGA的通信,相对于串口而言,具有更高的传输速度.采用以太网接口的目的在于,在一定技术要求下,实现PC机和FPGA的实时数据传输.从而可以借助PC机强大的计算能力, ...

  2. 0基础怎样理解深度学习的工作原理?做个票价预测工具就懂了

    原作:Radu Raice 安妮 编译自 Medium 量子位 出品 | 公众号 QbitAI 这篇文章颇!具!人!气! 软件工程专业的学生Radu Raice近日发表了文章<Want to k ...

  3. 理解锁相环的工作原理

    理解锁相环的工作原理 锁相环的硬件构成 鉴相器(phasedetector, PD) 低通滤波器(low past filter, LPF) 压控振荡器(voltage-controlled osci ...

  4. 原理c++_浅谈C/S和B/S架构的工作原理及优缺点

    C/S架构 一.C/S架构及其背景 C/S架构是一种比较早的软件架构,主要应用于局域网内.在这之前经历了集中计算模式,随着计算机网络的进步与发展,尤其是可视化工具的应用,出现过两层C/S和三层C/S架 ...

  5. python fpga chips_如何成为一名合格的FPGA老手-可编程逻辑-与非网

    学习 FPGA,在不同层次的人明显有不同的答案.先说一句,说不要开发版的都是菜鸟级选手. FPGA 层次可划分为,鸡蛋级别,菜鸟级别,老鸟级别,高手级别四类.鸡蛋级别属于还未入门的,这里就先不说了.下 ...

  6. 自学python单片机编程-用Python语言控制单片机-可编程逻辑-与非网

    早年,虽然 Python 是一款比较容易上手的脚本语言,而且有强大的社区支持,一些非计算机专业领域的人都选它作为入门语言.遗憾的是,它不能实现一些非常底层的操控,所以在硬件领域并不起眼. 然而今时不同 ...

  7. java的工作原理你知道吗_每天用Mybatis,但是Mybatis的工作原理你真的知道吗?

    近来想写一个mybatis的分页插件,但是在写插件之前肯定要了解一下mybatis具体的工作原理吧,于是边参考别人的博客,边看源码就开干了. 核心部件:SqlSession Executor Stat ...

  8. 先理解Mask R-CNN的工作原理,然后构建颜色填充器应用

    上年 11 月,matterport 开源了 Mask R-CNN 实现,它在 GitHub 已 fork1400 次,被用于很多项目,同时也获得了完善.作者将在本文中解释 Mask R-CNN 的工 ...

  9. 深入理解 SAP Fiori Elements 工作原理系列之二:如何给 SAP Fiori Elements 应用添加自定义按钮

    这是 Jerry 2021 年的第 33 篇文章,也是汪子熙公众号总共第 309 篇原创文章. Jerry 的日常工作内容从 2020 年 8 月转到 Angular 前端开发之后,算是领略到了这个流 ...

最新文章

  1. CentOS 安装python3.6
  2. Paxos、ZAB、RAFT协议
  3. 中国人工智能产业发展联盟成立 360任副理事长单位
  4. 东南大学计算机网络_东南大学,2020年东南大学高考录取分数线分析
  5. python中级水平_python 初级/中级/高级/核心
  6. 字符串匹配之KMP算法详解
  7. Eclipse 隐藏已关闭的项目
  8. html所属省份选择框_html中如何实现省市
  9. git回退到历史版本并提交到远程分支
  10. java的左移位()和右移位()和无符号右移()
  11. js获取单选按钮选项
  12. 计算机的作业与程序,网络提交的计算机程序作业出现抄袭现象的对策探索
  13. 怎么把ogg音频格式转换为mp3
  14. 计算机程序设计c++ 9-7:类的抽象描述举例-汽车类及圆类设计
  15. 【系统分析师之路】2016年系统分析师下午案例分析真题
  16. 微信小程序(微信开发者工具及工程创建、小程序配置、逻辑层、模块化)
  17. Java的abstract
  18. 计算机网络 思科模拟器进行交换机端口隔离,跨交换机实现vlan实验
  19. 冯诺依曼计算机结构的中心,冯·诺依曼计算机是以什么为中心的
  20. 联想昭阳K22连不上远程桌面

热门文章

  1. Android 使用Alarm机制创建长时间在后台运行的定时任务
  2. 应届生什么专业方向就业面广?
  3. 各种交换机接口及连接方法介绍【详细图文】
  4. 怎么在电脑上登陆多个微信
  5. C语言实现死循环的方式
  6. 用友畅捷通T+遭受批量勒索攻击处置手册
  7. 广州商学院 软件工程 博客列表
  8. 【自适应波束形成】MVDR(Minimum Variance Distortionless Response )笔记
  9. 42岁大厂高管,给30岁-39岁人提个醒:这6个让你变强的习惯,要尽快养成
  10. 51单片机的一点感想