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

时钟与触发器的关系  

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
时钟与触发器的关系  

& ]! J, S: i* b/ N* {9 T" H8 d
) P* w+ D, R* {- u3 q       对于FPGA设计者来说,用好“HDL语言的可综合子集”可以完成FPGA设计50%的工作——设计编码。+ o$ S9 T( ~" A5 ^
3 P3 @. k5 E6 @# J6 S6 y
       练好仿真、综合、时序分析这3项基本功,对于学习“HDL语言的可综合子集”有如下帮助:- [  D' x3 G& p
) Q& \* ^1 r$ t1 c
       1. 通过仿真,可以观察HDL语言在FPGA中的逻辑行为。
3 i* T- R! o( s9 j! M& p! ^7 L( w) c
       2. 通过综合,可以观察HDL语言在FPGA中的物理实现形式。& ~1 T3 K9 {" v# {. R: q7 @# `) P4 ^
6 D3 v' M. U6 i+ T- B) l/ K
       3. 通过时序分析,可以分析HDL语言在FPGA中的物理实现特性。1 F1 h5 X- {0 L
$ ^9 h, I- r! ^. G$ I
       对于FPGA设计者来说,用好“HDL语言的验证子集”,可以完成FPGA设计另外50%的工作——调试验证。* S; F/ c- p  |) Y* ?7 e1 N
8 _" p- z6 g1 U  r" y; @
       1. 搭建验证环境,通过仿真的手段可以检验FPGA设计的正确性。# V1 \0 a% r/ N5 [
8 B3 W5 z6 W2 m4 Y8 V; O
       2. 全面的仿真验证可以减少FPGA硬件调试的工作量。
, t- y2 b+ ~5 I2 K/ ?) [0 f9 F
5 H( f5 N$ }4 L' a" T       3. 把硬件调试与仿真验证方法结合起来,用调试解决仿真未验证的问题,用仿真保证已经解决的问题不在调试中再现,可以建立一个回归验证流程,有助于FPGA设计项目的维护。
9 {% S# C7 c3 v( }- S/ w0 {; `
2 o: _7 N' U5 B8 A7 b4 L8 ?       FPGA 设计者的这5项基本功不是孤立的,必须结合使用,才能完成一个完整的FPGA设计流程。反过来说,通过完成一个完整的设计流程,才能最有效地练习这5项基本功。对这5项基本功有了初步认识,就可以逐个深入学习一些,然后把学到的知识再次用于完整的设计流程。如此反复,就可以逐步提高设计水平。采用这样的循序渐进、螺旋式上升的方法,只要通过培训入了门,就可以自学自练,自我提高。8 s4 Y$ F  p+ H1 p% ~" N
/ I1 ]2 `- B3 X! z; l  Q/ d. r
       市面上出售的有关FPGA设计的书籍为了保证结构的完整性,对 FPGA设计的每一个方面分开介绍,每一方面虽然深入,但是由于缺少其他相关方面的支持,读者很难付诸实践,只有通读完全书才能对FPGA设计获得一个整体的认识。这样的书籍,作为工程培训指导书不行,可以作为某一个方面进阶的参考书。
! ?; C8 f* A9 Q4 h! {; |2 g# i/ Y9 L- t
       对于新入职的员工来说,他们往往对FPGA的整体设计流程有了初步认识,5项基本功的某几个方面可能很扎实。但是由于某个或某几个方面能力的欠缺,限制了他们独自完成整个设计流程的能力。入职培训的目的就是帮助他们掌握整体设计流程,培养自我获取信息的能力,通过几个设计流程来回的训练,形成自我促进、自我发展的良性循环。在这一过程中,随着对工作涉及的知识的广度和深度的认识逐步清晰,新员工的自信心也会逐步增强,对个人的发展方向也会逐步明确,才能积极主动地参与到工程项目中来。
  S  F! \7 R; A: q: H
* f" {  m6 n. ?# H9 w6 v) J       最后总结几点:! M0 x  D; e" o* p2 k
( w: Q/ _3 O7 p7 e1 Z1 n
       1)看代码,建模型" ~/ h5 x/ a3 B
2 P+ X8 V! g! t' J2 C  K/ F9 \
       只有在脑海中建立了一个个逻辑模型,理解FPGA内部逻辑结构实现的基础,才能明白为什么写Verilog和写C整体思路是不一样的,才能理解顺序执行语言和并行执行语言的设计方法上的差异。在看到一段简单程序的时候应该想到是什么样的功能电路。0 G- v  x) v! S, J2 A
5 X! ]  O/ A, o: D# |
       2)用数学思维来简化设计逻辑& h) P# m) `( L2 u
3 g. h$ ^7 c; i5 }6 k3 Z: W6 w8 B
       学习FPGA不仅逻辑思维很重要,好的数学思维也能让你的设计化繁为简,所以啊,那些看见高数就头疼的童鞋需要重视一下这门课哦。举个简单的例子,比如有两个32bit的数据X[31:0]与Y[31:0]相乘。当然,无论Altera还是Xilinx都有现成的乘法器IP核可以调用,这也是最简单的方法,但是两个32bit的乘法器将耗费大量的资源。那么有没有节省资源,又不太复杂的方式来实现呢?我们可以稍做修改:
# g+ ?" {$ `3 o) @6 D& ?; Y" _
2 D9 N" s9 ]9 m( q8 P+ 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的加法运算。转换后的占用资源将会减少很多,有兴趣的童鞋,不妨综合一下看看,看看两者差多少。! ?) J$ f3 v8 G, Y7 W- a! j! {* v5 e

# v" M5 D7 B0 v' b7 F0 k7 a, `! W% E+ n       3)时钟与触发器的关系8 M7 V1 P' ?- Y1 u

9 D1 f- y- G, v' Y9 R, c       “时钟是时序电路的控制者” 这句话太经典了,可以说是FPGA设计的圣言。FPGA的设计主要是以时序电路为主,因为组合逻辑电路再怎么复杂也变不出太多花样,理解起来也不没太多困难。但是时序电路就不同了,它的所有动作都是在时钟一拍一拍的节奏下转变触发,可以说时钟就是整个电路的控制者,控制不好,电路功能就会混乱。' m& G; z( Y: c$ L& P/ ^& Z2 d, {
! n# L2 Z6 ]2 E2 _6 ?
       打个比方,时钟就相当于人体的心脏,它每一次的跳动就是触发一个 CLK,向身体的各个器官供血,维持着机体的正常运作,每一个器官体统正常工作少不了组织细胞的构成,那么触发器就可以比作基本单元组织细胞。时序逻辑电路的时钟是控制时序逻辑电路状态转换的“发动机”,没有它时序逻辑电路就不能正常工作,因为时序逻辑电路主要是利用触发器存储电路的状态,而触发器状态变换需要时钟的上升或下降沿!由此可见时钟在时序电路中的核心作用!4 M, U$ z$ Y# g1 [8 Z

7 s/ T+ I4 Z6 z% e, T5 ]       最后简单说一下体会吧,归结起来就多实践、多思考、多问。实践出真知,看 100遍别人的方案不如自己去实践一下。实践的动力一方面来自兴趣,一方面来自压力,我个人 觉得后者更重要。有需求会容易形成压力,也就是说最好能在实际的项目开发中锻炼,而不是为了学习而学习。在实践的过程中要多思考,多想想问题出现的原因,问题解决后要多问几个为什么,这也是经验积累的过程,如果有写项目日志的习惯更好,把问题及原因、解决的办法都写进去。最后还要多问,遇到问题思索后还得不到解决就要问了,毕竟个人的力量是有限的,问同学同事、问搜索引擎、问网友都可以,一篇文章、朋友们的点拨都可能帮助自己快速解决问题。
/ ]0 ~1 J& W& w3 }! J

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-10-6 23:20 , Processed in 0.109375 second(s), 23 queries , Gzip On.

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

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

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