找回密码
 注册
关于网站域名变更的通知
查看: 330|回复: 1
打印 上一主题 下一主题

时钟与触发器的关系  

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2018-11-30 08:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
时钟与触发器的关系  
1 z- g& T: w+ t" W, n! u4 Y# L3 _

9 p1 M, {! y- o4 i& m       对于FPGA设计者来说,用好“HDL语言的可综合子集”可以完成FPGA设计50%的工作——设计编码。
9 c# I& h. R5 G! w9 r) Q; f- I  P  d% K9 c& {
       练好仿真、综合、时序分析这3项基本功,对于学习“HDL语言的可综合子集”有如下帮助:! y. L9 g$ e3 n/ E- K1 ^+ f
+ M  K' r5 T: g$ O1 g! @
       1. 通过仿真,可以观察HDL语言在FPGA中的逻辑行为。0 u0 Q. Y! \( d* m

) Z5 V( K! ?+ ?6 Q( B       2. 通过综合,可以观察HDL语言在FPGA中的物理实现形式。
* c1 B  R& c. o6 e# f3 V. u" \9 L' v- L6 f
       3. 通过时序分析,可以分析HDL语言在FPGA中的物理实现特性。/ {/ T/ H/ f& T/ U& R6 o

& w4 g; O) l5 s' L       对于FPGA设计者来说,用好“HDL语言的验证子集”,可以完成FPGA设计另外50%的工作——调试验证。3 o8 u0 _( s/ i  w0 g
6 ]' L# c* Y' p' P6 i& \* T& n' q
       1. 搭建验证环境,通过仿真的手段可以检验FPGA设计的正确性。. d. O5 u; ^$ ^- u
: W7 o, o& n2 z
       2. 全面的仿真验证可以减少FPGA硬件调试的工作量。
: U" A1 ]  q5 J# B3 `- z) c+ O  A' Q9 e" }
       3. 把硬件调试与仿真验证方法结合起来,用调试解决仿真未验证的问题,用仿真保证已经解决的问题不在调试中再现,可以建立一个回归验证流程,有助于FPGA设计项目的维护。) [4 A+ A, l& c

* M1 }7 ~; J. p2 r6 ?3 Z& f       FPGA 设计者的这5项基本功不是孤立的,必须结合使用,才能完成一个完整的FPGA设计流程。反过来说,通过完成一个完整的设计流程,才能最有效地练习这5项基本功。对这5项基本功有了初步认识,就可以逐个深入学习一些,然后把学到的知识再次用于完整的设计流程。如此反复,就可以逐步提高设计水平。采用这样的循序渐进、螺旋式上升的方法,只要通过培训入了门,就可以自学自练,自我提高。- W  M5 w; X2 v; z2 Z7 Q

2 @3 U" N4 U. ~# Q$ T9 t6 C       市面上出售的有关FPGA设计的书籍为了保证结构的完整性,对 FPGA设计的每一个方面分开介绍,每一方面虽然深入,但是由于缺少其他相关方面的支持,读者很难付诸实践,只有通读完全书才能对FPGA设计获得一个整体的认识。这样的书籍,作为工程培训指导书不行,可以作为某一个方面进阶的参考书。
1 X  s, i6 E1 ~7 U' f: k; M
. w6 H+ o" ~" Q8 V       对于新入职的员工来说,他们往往对FPGA的整体设计流程有了初步认识,5项基本功的某几个方面可能很扎实。但是由于某个或某几个方面能力的欠缺,限制了他们独自完成整个设计流程的能力。入职培训的目的就是帮助他们掌握整体设计流程,培养自我获取信息的能力,通过几个设计流程来回的训练,形成自我促进、自我发展的良性循环。在这一过程中,随着对工作涉及的知识的广度和深度的认识逐步清晰,新员工的自信心也会逐步增强,对个人的发展方向也会逐步明确,才能积极主动地参与到工程项目中来。
6 t5 B, v6 l6 E: j6 F* k& V6 Y. h4 r: b8 Q3 m6 F! F
       最后总结几点:
, f$ q+ a' D  c, D( V# _3 A! [0 X% x& U7 W6 X# ?5 o
       1)看代码,建模型! s0 d  Y" f# V

7 K+ h6 q# \* b$ p       只有在脑海中建立了一个个逻辑模型,理解FPGA内部逻辑结构实现的基础,才能明白为什么写Verilog和写C整体思路是不一样的,才能理解顺序执行语言和并行执行语言的设计方法上的差异。在看到一段简单程序的时候应该想到是什么样的功能电路。
1 z4 e$ y" q5 M" P& k( I7 J6 G
5 @9 @# z; Y: d# z       2)用数学思维来简化设计逻辑
1 [& S- ?; F, [3 A' Y! {( _$ T* ~- W) b
       学习FPGA不仅逻辑思维很重要,好的数学思维也能让你的设计化繁为简,所以啊,那些看见高数就头疼的童鞋需要重视一下这门课哦。举个简单的例子,比如有两个32bit的数据X[31:0]与Y[31:0]相乘。当然,无论Altera还是Xilinx都有现成的乘法器IP核可以调用,这也是最简单的方法,但是两个32bit的乘法器将耗费大量的资源。那么有没有节省资源,又不太复杂的方式来实现呢?我们可以稍做修改:- L& R1 v' [& g
* w- _1 K* l, r# }( b. n- q
       将X[31:0]拆成两部分X1[15:0]和X2[15:0],令X1[15:0]=X[31:16],X2[15:0]=X[15:0],则X1左移16位后与X2相加可以得到X;同样将Y[31:0]拆成两部分Y1[15:0]和Y2[15:0],令 Y1[15:0]=Y[31:16],Y2[15:0]=Y[15:0],则Y1左移16位后与Y2相加可以得到Y;则X与Y的相乘可以转化为X1和X2 分别与Y1和Y2相乘,这样一个32bit*32bit的乘法运算转换成了四个16bit*16bit的乘法运算和三个32bit的加法运算。转换后的占用资源将会减少很多,有兴趣的童鞋,不妨综合一下看看,看看两者差多少。
5 @" x/ @3 {: X, |$ ^1 u  e
2 ]' P/ V, c4 u0 C! S. q, Z6 O       3)时钟与触发器的关系
" D* G8 V$ D  ^( o+ y9 M8 ~' g  Y
! y$ x1 S, R  c0 s( S$ }9 L       “时钟是时序电路的控制者” 这句话太经典了,可以说是FPGA设计的圣言。FPGA的设计主要是以时序电路为主,因为组合逻辑电路再怎么复杂也变不出太多花样,理解起来也不没太多困难。但是时序电路就不同了,它的所有动作都是在时钟一拍一拍的节奏下转变触发,可以说时钟就是整个电路的控制者,控制不好,电路功能就会混乱。
: F% b+ G" d- V8 C4 b0 E4 [) _2 x4 O
       打个比方,时钟就相当于人体的心脏,它每一次的跳动就是触发一个 CLK,向身体的各个器官供血,维持着机体的正常运作,每一个器官体统正常工作少不了组织细胞的构成,那么触发器就可以比作基本单元组织细胞。时序逻辑电路的时钟是控制时序逻辑电路状态转换的“发动机”,没有它时序逻辑电路就不能正常工作,因为时序逻辑电路主要是利用触发器存储电路的状态,而触发器状态变换需要时钟的上升或下降沿!由此可见时钟在时序电路中的核心作用!
2 h7 w: l  [- j* d$ X- r
0 ]2 }8 S% v2 L* I       最后简单说一下体会吧,归结起来就多实践、多思考、多问。实践出真知,看 100遍别人的方案不如自己去实践一下。实践的动力一方面来自兴趣,一方面来自压力,我个人 觉得后者更重要。有需求会容易形成压力,也就是说最好能在实际的项目开发中锻炼,而不是为了学习而学习。在实践的过程中要多思考,多想想问题出现的原因,问题解决后要多问几个为什么,这也是经验积累的过程,如果有写项目日志的习惯更好,把问题及原因、解决的办法都写进去。最后还要多问,遇到问题思索后还得不到解决就要问了,毕竟个人的力量是有限的,问同学同事、问搜索引擎、问网友都可以,一篇文章、朋友们的点拨都可能帮助自己快速解决问题。
* V6 P3 r( e( ~0 p# _0 B+ g

该用户从未签到

2#
发表于 2018-11-30 15:39 | 只看该作者
写的很好 谢谢楼主
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-7-24 01:25 , Processed in 0.109375 second(s), 23 queries , Gzip On.

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

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

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