找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

巢课
电巢直播8月计划

玩转FPGA_ALTERA王欣

查看数: 1075 | 评论数: 2 | 收藏 1
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2014-6-16 10:59

正文摘要:

FPGA是可以玩的,有了这种心态,你的设计过程就会变得不那么枯燥乏味了。作一个合格的玩家,你要知道的东西还真不少,但是放轻松,其实这一切也没那么难!Altera的工程师王欣写下了一系列关于如何玩FPGA的文章,目的 ...

回复

lvsy 发表于 2014-6-18 14:41
玩转FPGA (作者 王欣); k/ Y! ~! O  \6 d# e- y

) I3 b' E% B) r% d* K关于QuartusII的一些事情% l# N' G  V! S; @0 `
+ `$ s$ V. x* w2 \) B+ D+ K. B9 u
QuartusII其实就是一个转换器。一个把你理解的逻辑语言转换成为器件能理解的语言,然后可以让FPGA按照你的想法去工作。我们写的那些VHDL啦,Verilog啦什么的,其实都是人类自己定义的语言,对机器来说,就是对牛弹琴了,它没可能知道人类这些傻瓜坐在那里想做什么。所以为了交流,我们需要让他们理解我们的意图,而你也不至于因此而去学牛说话,所以,我们需要用QuartusII,因为QuartusII就是帮助你进行这种翻译的工具。( y: R  k. s1 K
/ @. I% S* W4 n0 C
我们分两部分来完成这么一件事情,首先把你的逻辑思路转变成用已经有的元件搭建出来的电路。好比你说我要一个加法,器件没你那么聪敏,他不知道什么叫做加法,加法对他来说是没有意义的。工具会把加法转换成为一组逻辑,用与,或,与非,或非这些乱七八糟的连在一起,变成和加法结果一样的电路。这样器件一看就知道了,哦,对了,我有这些的。当然这个时候你再去看那些东西,可能就蒙了。这个过程就是综合。综合结果是一个网表文件 (netlist),也就是一堆很无聊的电路。而这种电路还只是停留在概念上,并没有映射到实物上面。
5 k- {) N" Z0 |6 Z' h  E2 S6 S# j0 _. q
然后工具会做第二件事情: fitting。QuartusII把你选择的器件找出来,对照它拥有的资源来放刚才转成的电路。FPGA里面的资源都是现成已经做好的,好处是你不需要做,坏处是,你也改不了。第一步首先是放置,就是把那些逻辑一个个放到器件的相应位置上。最后,把所有的放置好的点连接起来。这样,你的思想就在硬件上面完美的体现出来了。然后我们再回过来看看每个点都在做什么,把这些信息存成一个文件,以后你只需要每次告诉器件这个文件,就可以实现你的设计。
7 U& |9 h, m2 Z1 ^2 V3 I8 c0 _3 a* I. m1 ?4 T8 M" f6 ?: \* W
这一切都不需要你来做,工具都可以自动完成,因为对器件世界的理解,工具比你要熟悉的多,所以你可以相信,他一定比你做的好。但是这样是不是太容易了呢?当然不会,否则就不好玩了,你需要指导工具去实现,因为很多事情是工具不晓得的,你需要告诉工具你的要求来实现你的设计。这就是约束。好像女孩子喜欢漂亮,当然不会随便穿戴,要点缀这里,束缚那里,让自己看上去至少很美。打扮没有约束,可能顶多就是难看点。但是翻译过程没有约束,就完全不是一个东西了。所以,约束很重要,后果很严重。你要告诉工具很多信息。比如:时钟信息,工具不可能聪明到知道你从外面送进来的时钟是多少的。比如管脚信息,你要告诉他哪些输入,哪些是输出,而这些输入输出分别应该是什么样子的。这些是最基本的信息,还可以提出一些更苛刻的要求出来。比如说功耗。QuartusII在完成编译以后会对编译的结果进行分析,看是不是能满足你的要求。如果不满足,它可以再试几次。最后告诉你:帅哥,按照你的要求,我们完成了工作了,或者说,小子,你的要求是在太过分了,我做不了。那么可能你得调整一下设计,代码,约束条件,甚至器件。% o8 f1 }- S1 R) Z$ W3 M8 q; N3 j

. @3 \7 `) N  T! t3 t; J4 m$ L到此为止,其实QuartusII的工作已经可以说完成了。但如果只是这样,你一定会很郁闷,因为你并不知道你的设计是不是真的可以工作。或者说,你会想知道你的设计为什么不工作。 所以必须提供仿真和debug工具。QuartusII提供一个相对比较简单的仿真工具,让你可以通过画波形图的方式来做仿真。这种工具非常容易用,但是能力比较有限。他可以很直白的实现激励和观察输出波形的平台,但是他无法实现很好的交互能力。好比你需要因为一个信号而发动下一个动作时?你恐怕很难猜得出来什么时候这个信号就来了吧。所以很多时候,我们会比较喜欢用第三方工具ModelSim. 这个东西不好的地方就是你需要自己写仿真代码。你会发现这是一件蛮痛苦的事情,很多时候仿真代码比电路代码本身还要复杂。但是,真的没有办法,我很同情你,因为只有你才知道你想做什么,没有人能代替你来写仿真。 5 \6 s0 f4 ?# ]
# y# _; ?5 P4 h4 Z! {  F2 V8 T
仿真毕竟只是仿真而已,不是真的,很多时候你会发现电路还是不能工作,虽然仿真看上去完全没问题。千万不要太自信的以为这一定就是工具的bug,从而很兴高采烈的报告说,我找到你们一个bug。绝大多数的情况下,要么是因为你的约束有问题,要么是因为你的仿真和真实情况不符合。所以,QuartusII不得不提供一种途径,让你看到,芯片里面到底发生了一些什么事情,那就是在片debug工具,signaltapII。我知道名字不太好听,但是其实真的还蛮有用的。
0 T1 _- P2 |5 z2 }# b( S
2 u( B) v8 x) K0 jQuartusII就是这样一个工具,很简单,但要玩得好,还是需要一点功夫的。后面我会比较细化的聊聊怎么玩这个东西。我不会很老土的说怎么创建一个工具,然后按这里,按那里。这些要你自己去玩,去摸索,否则,完全没有乐趣了。% g6 Z& t& E+ {

% u: d) r0 f1 O0 Q) o4 B
关闭

推荐内容上一条 /1 下一条

巢课

技术风云榜

关于我们|手机版|EDA365 ( 粤ICP备18020198号 )

GMT+8, 2025-2-19 06:45 , Processed in 0.059773 second(s), 37 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表