目前共有4篇帖子。 內容轉換:不轉換▼
 
點擊 回復
352 3
【方法】跳过单个时钟脉冲的方法
一派護法 十九級
1樓 發表于:2017-1-25 21:39

【问题】
如图所示,某器件CNT2在计数器CNT=……、7、8、10……时都要执行相应的操作,当CNT=7时,执行操作7,当CNT=8时,执行操作8,CNT=9时不执行任何操作,CNT=10时执行操作9。
CLK上升沿到来后,经过延迟时间t,计数器CNT的值加1。

一派護法 十九級
2樓 發表于:2017-1-25 21:42

【解决方法】
引入屏蔽信号R,当CNT=8时R=1,其余时间为0。用一个二输入的或门将R和CLK连接起来,形成CLK2(=CLK+R)信号作为器件2的时钟,从而推迟使计数器从7跳变到8的脉冲(脉冲8)下降沿的出现时间。
因为在脉冲9上只有当CLK从0完全跳变到1后,定时器CNT才会从8跳变到9(由边沿触发的特点可知,CNT不可能在CLK=0或者非0非1(如2.5V)期间跳变),所以不会出现或门的竞争-冒险现象导致器件2出现误动作。
对于CNT=8,其二进制数为1000,因此R=Q3·Q2'·Q1'·Q0'。(加一个四输入的与门和三个非门)
若CNT=9,那么其二进制数为1001,此时R=Q3·Q2'·Q1'·Q0。
若CNT=11(二进制1011),则R=Q3·Q2'·Q1·Q0。


如果只能使用与非门(74HC00)的话,就先把CLK取反(通过74HC04反相器),屏蔽信号R改为使用与非门R'=(Q3·Q2'·Q1'·Q0')',最后把这两个信号接到另一个与非门上,其输出端就是CLK2。
若R是单个变量,比如R=Q0,则R'=Q0',此时只需要使用一个非门。

一派護法 十九級
3樓 發表于:2017-1-25 21:43
若要求CNT=9和10时器件2都不执行操作,那么R信号就是CNT=8或9,8的二进制是1000,9的二进制是1001,合起来就是100X,因此R=Q3Q2'Q1'。
一派護法 十九級
4樓 發表于:2017-1-25 21:45
这就是用硬件实现if(CNT==9)、if(CNT==9||CNT==10)的方法。

回復帖子

內容:
用戶名: 您目前是匿名發表
驗證碼:
(快捷鍵:Ctrl+Enter)
 

本帖信息

點擊數:352 回複數:3
評論數: ?
作者:巨大八爪鱼
最後回復:巨大八爪鱼
最後回復時間:2017-1-25 21:45
 
©2010-2024 Arslanbar Ver2.0
除非另有聲明,本站採用共享創意姓名標示-相同方式分享 3.0 Unported許可協議進行許可。