没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
零基础学零基础学FPGA(十三)对于初学者一篇很不错的文章(十三)对于初学者一篇很不错的文章
继续前面的文章,今天看到一篇对FPGA初学者很不错的文章,希望大家既然开始学习了就一直不放弃的坚持下
去!
长期以来很多新入群的菜鸟们总 是在重复的问一些非常简单但是又让新手困惑不解的问题。作为管理员经常要给这些菜鸟们
普及基础知识,但是非常不幸的是很多菜鸟怀着一种浮躁的心态来学习FPGA,总是急于求成。
再加上国内大量有关FPGA的垃圾教材的误导,所以很多菜鸟始终无法入门。为什么大量的人会觉得FPGA难学?作为著名
FPGA 提供商Altera授权的金牌培训师,本管理员决心开贴来详细讲一下菜鸟觉得FPGA难学的几大原因。
1、不熟悉 FPGA的内部结构,不了解可编程逻辑器件的基本原理。
FPGA为什么是可以编程的?恐怕很多菜鸟不知道,他们也不想知道。因为他们觉得这是无关紧要的。 他们潜意识的认为可编
程嘛,肯定就是像写软件一样啦。软件编程的思想根深蒂固,看到Verilog或者VHDL就像看到C语言或者其它软件编程语言一
样。 一条条的读,一条条的分析。如果这些菜鸟们始终拒绝去了解为什么FPGA是可以编程的,不去了解FPGA的内部结构,
要想学会FPGA 恐怕是天方夜谭。虽然现在EDA软件已经非常先进,像写软件那样照猫画虎也能综合出点东西,但也许只有
天知道EDA软件最后综合出来的到底是什么。也许点 个灯,跑个马还行。
这样就是为什么很多菜鸟学了N久以后依然是一个菜鸟的原因。那么FPGA为什么是可以“编程”的呢?首先来了解一下什么
叫“程”。启示 “程”只不过是一堆具有一定含义的01编码而已。编程,其实就是编写这些01编码。只不过我们现在有了很多开发
工具,通常都不是直接编写这些01编码,而 是以高级语言的形式来编写,最后由开发工具转换为这种01编码而已。对于软件
编程而言,处理器会有一个专门的译码电路逐条把这些01编码翻译为各种控制信 号,然后控制其内部的电路完成一个个的运
算或者是其它操作。
所以软件是一条一条的读,因为软件的操作是一步一步完成的。而FPGA的可编程,本质也是依靠 这些01编码实现其功能的
改变,但不同的是FPGA之所以可以完成不同的功能,不是依靠像软件那样将01编码翻译出来再去控制一个运算电路,FPGA
里面 没有这些东西。FPGA内部主要三块:可编程的逻辑单元、可编程的连线和可编程的IO模块。可编程的逻辑单元是什
么?其基本结构某种存储器(SRAM、 FLASH等)制成的4输入或6输入1输出地“真值表”加上一个D触发器构成。任何一个4输
入1输出组合逻辑电路,都有一张对应的“真值表”,同样的如果 用这么一个存储器制成的4输入1输出地“真值表”,只需要修改
其“真值表”内部值就可以等效出任意4输入1输出的组合逻辑。
这些“真值表”内部值是什么? 就是那些01编码而已。如果要实现时序逻辑电路怎么办?这不又D触发器嘛,任何的时序逻辑都
可以转换为组合逻辑+D触发器来完成。但这毕竟只实现了4输入 1输出的逻辑电路而已,通常逻辑电路的规模那是相当的大
哦。那怎么办呢?这个时候就需要用到可编程连线了。在这些连线上有很多用存储器控制的链接点,通过 改写对应存储器的
值就可以确定哪些线是连上的而哪些线是断开的。这就可以把很多可编程逻辑单元组合起来形成大型的逻辑电路。最后就是可
编程的IO,这其实 是FPGA作为芯片级使用必须要注意的。任何芯片都必然有输入引脚和输出引脚。有可编程的IO可以任意
的定义某个非专用引脚(FPGA中有专门的非用户可 使用的测试、下载用引脚)为输入还是输出,还可以对IO的电平标准进
行设置。总归一句话,FPGA之所以可编程是因为可以通过特殊的01代码制作成一张张 “真值表”,并将这些“真值表”组合起来
以实现大规模的逻辑功能。
不了解FPGA内部结构,就不能明白最终代码如何变到FPGA里面去的。也就无法深入的 了解如何能够充分运用FPGA。现在
的FPGA,不单单是有前面讲的那三块,还有很多专用的硬件功能单元,如何利用好这些单元实现复杂的逻辑电路设计,是 从
菜鸟迈向高手的路上必须要克服的障碍。而这一切,还是必须先从了解FPGA内部逻辑及其工作原理做起。
2、错误理解 HDL语言,怎么看都看不出硬件结构。
HDL语言的英语全称是:Hardware Description Language,注意这个单词Description,而不是Design。老外为什么要用
Description这个词而不是Design呢?因为 HDL确实不是用用来设计硬件的,而仅仅是用来描述硬件的。描述这个词精确地反
映了HDL语言的本质,HDL语言不过是已知硬件电路的文本表现形式而已, 只是将以后的电路用文本的形式描述出来而已。
而在编写语言之前,硬件电路应该已经被设计出来了。语言只不过是将这种设计转化为文字表达形式而已。
但是很多 人就不理解了,既然硬件都已经被设计出来了,直接拿去制作部就完了,为什么还要转化为文字表达形式再通过
EDA工具这些麻烦的流程呢?其实这就是很多菜鸟 没有了解设计的抽象层次的问题,任何设计包括什么服装、机械、广告设
计都有一个抽象层次的问题。就拿广告设计来说吧,最初的设计也许就是一个概念,设计出 这个概念也是就是一个点子而
已,离最终拍成广告还差得很远。硬件设计也是有不同的抽象层次,每一个层次都需要设计。
最高的抽象层次为算法级、然后依次是体 系结构级、寄存器传输级、门级、物理版图级。使用HDL的好处在于我们已经设计
好了一个寄存器传输级的电路,那么用HDL描述以后转化为文本的形式,剩下 的向更低层次的转换就可以让EDA工具去做
了,这就大大的降低了工作量。这就是可综合的概念,也就是说在对这一抽象层次上硬件单元进行描述可以被EDA工 具理解
并转化为底层的门级电路或其他结构的电路。
在FPGA设计中,就是在将这以抽象层级的意见描述成HDL语言,就可以通过FPGA开发软件转化为问题 1中所述的FPGA内
部逻辑功能实现形式。
HDL也可以描述更高的抽象层级如算法级或者是体系结构级,但目前受限于EDA软件的发展,EDA软件还无法理 解这么高的
抽象层次,所以 HDL描述这样抽象层级是无法被转化为较低的抽象层级的,这也就是所谓的不可综合。所以在阅读或编写
HDL语言,尤其是可综合的HDL,不应该看到的是语 言本身,而是要看到语言背后所对应的硬件电路结构。
资源评论
weixin_38557935
- 粉丝: 0
- 资源: 955
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功