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

时钟与触发器的关系  

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
时钟与触发器的关系  
' a. x9 J7 H5 d$ y/ R

" F! r, `6 x1 x/ ^; q5 G. j2 ~       对于FPGA设计者来说,用好“HDL语言的可综合子集”可以完成FPGA设计50%的工作——设计编码。( ~3 K5 ?) V+ T/ \# L: L
/ t) I0 E4 k4 n# `
       练好仿真、综合、时序分析这3项基本功,对于学习“HDL语言的可综合子集”有如下帮助:+ q( y# m$ E8 t3 d7 h
( O. T' S" v' |- |$ b+ r
       1. 通过仿真,可以观察HDL语言在FPGA中的逻辑行为。
) x8 O9 S) k' M+ ^; X0 m' a0 s9 s
3 j: E, N2 p. ~+ s# d       2. 通过综合,可以观察HDL语言在FPGA中的物理实现形式。
/ j% o3 n/ d$ @" ?% {7 _+ ~
( W) Y: D$ a/ L9 i       3. 通过时序分析,可以分析HDL语言在FPGA中的物理实现特性。4 n& ~9 D( x( l1 ]
" o% O* ]5 R: S! E" s$ d8 w8 M2 q" v
       对于FPGA设计者来说,用好“HDL语言的验证子集”,可以完成FPGA设计另外50%的工作——调试验证。
  x1 T: M- A' _* i) X) a
* E4 K( `+ f- F( p) s! |! y( P9 W       1. 搭建验证环境,通过仿真的手段可以检验FPGA设计的正确性。8 S7 G5 ?% `7 j" W0 V& U
" b7 E5 P9 l( N( P7 y
       2. 全面的仿真验证可以减少FPGA硬件调试的工作量。; B8 I- t8 S, N& D

1 O. \, q9 X/ C; z8 J1 |       3. 把硬件调试与仿真验证方法结合起来,用调试解决仿真未验证的问题,用仿真保证已经解决的问题不在调试中再现,可以建立一个回归验证流程,有助于FPGA设计项目的维护。
1 C1 n) e% R, t8 ~2 R
! c3 }' Z& J' h' N3 @/ M       FPGA 设计者的这5项基本功不是孤立的,必须结合使用,才能完成一个完整的FPGA设计流程。反过来说,通过完成一个完整的设计流程,才能最有效地练习这5项基本功。对这5项基本功有了初步认识,就可以逐个深入学习一些,然后把学到的知识再次用于完整的设计流程。如此反复,就可以逐步提高设计水平。采用这样的循序渐进、螺旋式上升的方法,只要通过培训入了门,就可以自学自练,自我提高。
: Z4 M1 p6 o4 Y4 Z! K4 b3 i
" L# c2 N3 S1 [& U; V       市面上出售的有关FPGA设计的书籍为了保证结构的完整性,对 FPGA设计的每一个方面分开介绍,每一方面虽然深入,但是由于缺少其他相关方面的支持,读者很难付诸实践,只有通读完全书才能对FPGA设计获得一个整体的认识。这样的书籍,作为工程培训指导书不行,可以作为某一个方面进阶的参考书。
4 b. q7 I% t. k: k* U
9 t; e& U3 x. o. [5 m! P; w% X       对于新入职的员工来说,他们往往对FPGA的整体设计流程有了初步认识,5项基本功的某几个方面可能很扎实。但是由于某个或某几个方面能力的欠缺,限制了他们独自完成整个设计流程的能力。入职培训的目的就是帮助他们掌握整体设计流程,培养自我获取信息的能力,通过几个设计流程来回的训练,形成自我促进、自我发展的良性循环。在这一过程中,随着对工作涉及的知识的广度和深度的认识逐步清晰,新员工的自信心也会逐步增强,对个人的发展方向也会逐步明确,才能积极主动地参与到工程项目中来。% R: k) F) D8 Z) \/ l0 N

; ?- U7 t7 G: G3 p* l       最后总结几点:
. v$ k! _( @; q3 X2 V  R9 K8 T: u8 Y
1 P. t# W, h. Q& j( T+ A! F       1)看代码,建模型! |( }5 P: Z: ]2 X( z: j2 P
( ^6 r9 Z" u# _# ?
       只有在脑海中建立了一个个逻辑模型,理解FPGA内部逻辑结构实现的基础,才能明白为什么写Verilog和写C整体思路是不一样的,才能理解顺序执行语言和并行执行语言的设计方法上的差异。在看到一段简单程序的时候应该想到是什么样的功能电路。
0 w0 k: d; ^# \0 O# m, ?$ l0 }/ Y5 }0 `' ?
       2)用数学思维来简化设计逻辑% d2 W, s3 R# Z" k7 n/ t
3 ]0 E  h. d- I1 t; u2 }2 u5 C* {
       学习FPGA不仅逻辑思维很重要,好的数学思维也能让你的设计化繁为简,所以啊,那些看见高数就头疼的童鞋需要重视一下这门课哦。举个简单的例子,比如有两个32bit的数据X[31:0]与Y[31:0]相乘。当然,无论Altera还是Xilinx都有现成的乘法器IP核可以调用,这也是最简单的方法,但是两个32bit的乘法器将耗费大量的资源。那么有没有节省资源,又不太复杂的方式来实现呢?我们可以稍做修改:
. i; e. ~" L0 B# d. l2 `. T- W# c
       将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的加法运算。转换后的占用资源将会减少很多,有兴趣的童鞋,不妨综合一下看看,看看两者差多少。
# B9 o! ?; D" F- C" \+ C  B* w: t$ [  ]/ Q5 b( c
       3)时钟与触发器的关系
$ g# D; ~2 u* |( \& o' z6 t# I/ p7 y. ]4 v* ^# S  T
       “时钟是时序电路的控制者” 这句话太经典了,可以说是FPGA设计的圣言。FPGA的设计主要是以时序电路为主,因为组合逻辑电路再怎么复杂也变不出太多花样,理解起来也不没太多困难。但是时序电路就不同了,它的所有动作都是在时钟一拍一拍的节奏下转变触发,可以说时钟就是整个电路的控制者,控制不好,电路功能就会混乱。
+ N! S! Z4 Z/ G- \! m( a7 m
( J$ f( C, z' }) |4 e0 `       打个比方,时钟就相当于人体的心脏,它每一次的跳动就是触发一个 CLK,向身体的各个器官供血,维持着机体的正常运作,每一个器官体统正常工作少不了组织细胞的构成,那么触发器就可以比作基本单元组织细胞。时序逻辑电路的时钟是控制时序逻辑电路状态转换的“发动机”,没有它时序逻辑电路就不能正常工作,因为时序逻辑电路主要是利用触发器存储电路的状态,而触发器状态变换需要时钟的上升或下降沿!由此可见时钟在时序电路中的核心作用!8 @7 j4 |1 v3 ^4 o. T

* A4 ?( ?" m) a: Q- U       最后简单说一下体会吧,归结起来就多实践、多思考、多问。实践出真知,看 100遍别人的方案不如自己去实践一下。实践的动力一方面来自兴趣,一方面来自压力,我个人 觉得后者更重要。有需求会容易形成压力,也就是说最好能在实际的项目开发中锻炼,而不是为了学习而学习。在实践的过程中要多思考,多想想问题出现的原因,问题解决后要多问几个为什么,这也是经验积累的过程,如果有写项目日志的习惯更好,把问题及原因、解决的办法都写进去。最后还要多问,遇到问题思索后还得不到解决就要问了,毕竟个人的力量是有限的,问同学同事、问搜索引擎、问网友都可以,一篇文章、朋友们的点拨都可能帮助自己快速解决问题。
. [) T/ n9 }( {3 [+ F$ l

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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