找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

巢课
电巢直播8月计划

玩转FPGA_ALTERA王欣

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

正文摘要:

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

回复

lvsy 发表于 2014-6-18 14:41
玩转FPGA (作者 王欣)1 ^0 t. F6 K% u  {: a' I& g  k1 m
7 X' @. ~$ I! [- U
关于QuartusII的一些事情
; [) s% h5 d! R% B! b2 W0 q* u' t% ?5 f; U- d8 ^  g- O/ |7 u+ y
QuartusII其实就是一个转换器。一个把你理解的逻辑语言转换成为器件能理解的语言,然后可以让FPGA按照你的想法去工作。我们写的那些VHDL啦,Verilog啦什么的,其实都是人类自己定义的语言,对机器来说,就是对牛弹琴了,它没可能知道人类这些傻瓜坐在那里想做什么。所以为了交流,我们需要让他们理解我们的意图,而你也不至于因此而去学牛说话,所以,我们需要用QuartusII,因为QuartusII就是帮助你进行这种翻译的工具。
$ S1 `+ z; W6 r% v' O! y5 W  ^* q  f$ @& U  k, W
我们分两部分来完成这么一件事情,首先把你的逻辑思路转变成用已经有的元件搭建出来的电路。好比你说我要一个加法,器件没你那么聪敏,他不知道什么叫做加法,加法对他来说是没有意义的。工具会把加法转换成为一组逻辑,用与,或,与非,或非这些乱七八糟的连在一起,变成和加法结果一样的电路。这样器件一看就知道了,哦,对了,我有这些的。当然这个时候你再去看那些东西,可能就蒙了。这个过程就是综合。综合结果是一个网表文件 (netlist),也就是一堆很无聊的电路。而这种电路还只是停留在概念上,并没有映射到实物上面。# U; [3 R# [- Z- a) L+ e

" j2 @: |5 r0 F$ H& f/ `- Y然后工具会做第二件事情: fitting。QuartusII把你选择的器件找出来,对照它拥有的资源来放刚才转成的电路。FPGA里面的资源都是现成已经做好的,好处是你不需要做,坏处是,你也改不了。第一步首先是放置,就是把那些逻辑一个个放到器件的相应位置上。最后,把所有的放置好的点连接起来。这样,你的思想就在硬件上面完美的体现出来了。然后我们再回过来看看每个点都在做什么,把这些信息存成一个文件,以后你只需要每次告诉器件这个文件,就可以实现你的设计。
. M7 [& s" }/ D% a- z' ?) [2 x) c
这一切都不需要你来做,工具都可以自动完成,因为对器件世界的理解,工具比你要熟悉的多,所以你可以相信,他一定比你做的好。但是这样是不是太容易了呢?当然不会,否则就不好玩了,你需要指导工具去实现,因为很多事情是工具不晓得的,你需要告诉工具你的要求来实现你的设计。这就是约束。好像女孩子喜欢漂亮,当然不会随便穿戴,要点缀这里,束缚那里,让自己看上去至少很美。打扮没有约束,可能顶多就是难看点。但是翻译过程没有约束,就完全不是一个东西了。所以,约束很重要,后果很严重。你要告诉工具很多信息。比如:时钟信息,工具不可能聪明到知道你从外面送进来的时钟是多少的。比如管脚信息,你要告诉他哪些输入,哪些是输出,而这些输入输出分别应该是什么样子的。这些是最基本的信息,还可以提出一些更苛刻的要求出来。比如说功耗。QuartusII在完成编译以后会对编译的结果进行分析,看是不是能满足你的要求。如果不满足,它可以再试几次。最后告诉你:帅哥,按照你的要求,我们完成了工作了,或者说,小子,你的要求是在太过分了,我做不了。那么可能你得调整一下设计,代码,约束条件,甚至器件。# B. i7 U( m& y: |& v2 q1 b* y

0 n2 A* A  j' \$ l. A5 h4 r6 y到此为止,其实QuartusII的工作已经可以说完成了。但如果只是这样,你一定会很郁闷,因为你并不知道你的设计是不是真的可以工作。或者说,你会想知道你的设计为什么不工作。 所以必须提供仿真和debug工具。QuartusII提供一个相对比较简单的仿真工具,让你可以通过画波形图的方式来做仿真。这种工具非常容易用,但是能力比较有限。他可以很直白的实现激励和观察输出波形的平台,但是他无法实现很好的交互能力。好比你需要因为一个信号而发动下一个动作时?你恐怕很难猜得出来什么时候这个信号就来了吧。所以很多时候,我们会比较喜欢用第三方工具ModelSim. 这个东西不好的地方就是你需要自己写仿真代码。你会发现这是一件蛮痛苦的事情,很多时候仿真代码比电路代码本身还要复杂。但是,真的没有办法,我很同情你,因为只有你才知道你想做什么,没有人能代替你来写仿真。
9 O3 v, v2 O2 |+ @9 x
9 P" Z; _) E/ K% `$ {9 ^" Q仿真毕竟只是仿真而已,不是真的,很多时候你会发现电路还是不能工作,虽然仿真看上去完全没问题。千万不要太自信的以为这一定就是工具的bug,从而很兴高采烈的报告说,我找到你们一个bug。绝大多数的情况下,要么是因为你的约束有问题,要么是因为你的仿真和真实情况不符合。所以,QuartusII不得不提供一种途径,让你看到,芯片里面到底发生了一些什么事情,那就是在片debug工具,signaltapII。我知道名字不太好听,但是其实真的还蛮有用的。2 K% C, _2 {9 d  V& g) u
% R1 g2 e; z( e' y4 l
QuartusII就是这样一个工具,很简单,但要玩得好,还是需要一点功夫的。后面我会比较细化的聊聊怎么玩这个东西。我不会很老土的说怎么创建一个工具,然后按这里,按那里。这些要你自己去玩,去摸索,否则,完全没有乐趣了。7 W6 ^6 U8 X4 y: a4 D
% y; k9 F8 e3 Y& Y7 e& V
关闭

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

巢课

技术风云榜

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

GMT+8, 2024-11-27 22:14 , Processed in 0.061934 second(s), 37 queries , Gzip On.

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

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

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