原创 FPGA研发之道(17)-化繁为简

2014-7-23 20:35 3804 16 20 分类: FPGA/CPLD 文集: FPGA研发之道

      有个笑话说,有个病人感冒了,于是去看医生,医生诊断后说,你得了感冒,但是我只会治疗肺炎,不如你回家再浇点凉水,把病恶化成肺炎,那我能治了。这个笑话展示了庸医误人。但是另一方面,从逻辑上来讲,医生则是一个把未知问题转化成已知问题的高手。

      不说笑话,下面出两个题目,其分别是

问题1:运用数字电路,如何将一个时钟域的上升沿,转换成另一个时钟域的脉冲信号(单周期信号)。

问题2:运用数字电路,如何将一个时钟域的脉冲信号(单周期信号),转换成另一个时钟域的上升沿。

可能乍一看,这两个题目优点难度,特别是第二个问题,答上的就更少了。那再出第三道题目,会不会让这个问题变简单些那。

问题3:运用数字电路,如何将一个时钟域的上升沿,转换成另一个时钟域的上升沿。

     20140722231815986001.gif   题目3,就会让人觉得太简单了,这既是异步信号的同步化,寄存两拍就可以了。这CLKA信号就被同步到CLKB的方法,有一定数字电路知识的都会 。不论CLKACLKB时钟频率的高低。

     下面回到题目1,我们按照那个庸医的做法,把未知问题转换成已知问题,那这个问题就转化成了两个部分,A时钟域的上升沿转换成B时钟域的上升沿,,然后B时钟域的上升沿如何变成其单脉冲信号。所以问题就很简单了,最后的输出 B &! B_r(B信号寄存一拍). 电路如下所示。

20140722231820484002.gif    那回到题目2.这个问题就转换成了A时钟的脉冲信号转换成A信号的上升沿,而A信号的上升沿,再转换成B信号的上升沿。

20140722231827499003.gif  那么,如何将已是时钟信号的脉冲信号,转换成另一个时钟的脉冲信号?呵呵。

  以上只是两个简单的电路,实际设计中,有许多可以进行设计,可以化繁为简或者化未知为已知的方法。

   例如,实际设计中,经常有设计变更的情况,比如,原来输出的信号A,但是需要输出信号B。那可能大多数情况,模块不用重新设计,只需要在原有输出信号(或者数据)A上,再添加相应的输出,或者封装一层接口,就可以快速满足需求。并且原有设计模块也可以复用,并且已验证充分。通过化未知问题为已知问题的方式,简化设计和验证,能够快速的设计需要。一方面,而这正是IP复用的好处,另一方面,原有设计如何达到IP复用的标准,也是值得探索的部分。

     这个故事,其实还有另一版本,那就是锤子和钉子,那就是如果你已经有一把锤子,那就看什么都是钉子。如何将未知问题转化成你的锤子可以解决的钉子,则是就是设计复用的问题了。

 

 

文章评论4条评论)

登录后参与讨论

用户1736158 2015-9-7 14:50

一篇一篇读一遍,收益匪浅

用户1701057 2014-7-27 16:49

博主写的不错,顶一个

13811674212_398810906 2014-7-26 15:51

如果只寄存一拍,会导致亚稳态,这也就是数字电路常用处理异步时钟域的方式,寄存两拍。

用户1773655 2014-7-24 19:06

关于问题3:运用数字电路,如何将一个时钟域的上升沿,转换成另一个时钟域的上升沿。这个问题不是用CLKB打一拍就可以了吗?为什么要打两拍?
相关推荐阅读
阿昏豆 2015-11-21 23:25
把大象关冰箱的步骤 --- NAND FLASH控制器磨损管理算法芯片化硬实现
把大象关冰箱的步骤 --- NAND FLASH控制器磨损管理算法芯片化硬实现   目前,存储领域包括eMMC,SATA SSD ,PCIe SSD等控制器是一个非常热门的领域。通常,由于...
阿昏豆 2015-11-09 22:25
平行宇宙的追逐--异步FIFO控制器的设计
  平行宇宙的追逐--异步FIFO控制器的设计。    在逻辑设计中,通常会用到异步FIFO,异步FIFO控制器是经典的异步信号传输的范例,通过FIFO控制器与异步双端口RAM的组合实现数据的...
阿昏豆 2014-08-23 23:36
FPGA研发之道(25)-管脚
     管脚是FPGA重要的资源之一,FPGA的管脚分别包括,电源管脚,普通I/O,配置管脚,时钟专用输入管脚GCLK等。 (1)电源管脚:    通常来说: FPGA内部的电压包括...
阿昏豆 2014-08-10 22:22
FPGA研发之道(24)-控制(下)
   首先依次回答上篇提出的几个问题:       第一个问题:如何避免状态机产生lacth 示例如下,通过在always(*)语句块中,添加默认赋值,ns_state = cs_state; alw...
阿昏豆 2014-08-07 21:53
FPGA研发之道(23)-控制(上)
本质上说,FPGA的模块设计就是将输入转化成想要得到的输出结果。而除了某些简单模块,即在当拍内完成,即将输入进行逻辑操作后,再输出。(如简单加法器等)。其余大部分的设计需要通过时序逻辑和组合逻辑混合实...
阿昏豆 2014-08-06 23:12
FPGA研发之道(23)-控制(上)
本质上说,FPGA的模块设计就是将输入转化成想要得到的输出结果。而除了某些简单模块,即在当拍内完成,即将输入进行逻辑操作后,再输出。(如简单加法器等)。其余大部分的设计需要通过时序逻辑和组合逻辑混合实...
我要评论
4
16
关闭 站长推荐上一条 /2 下一条