設置 | 登錄 | 註冊

目前共有4篇帖子。

【方法】跳過單個時鐘脈衝的方法

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)的方法。

內容轉換:

回覆帖子
內容:
用戶名: 您目前是匿名發表。
驗證碼:
看不清?換一張
©2010-2025 Purasbar Ver3.0 [手機版] [桌面版]
除非另有聲明,本站採用知識共享署名-相同方式共享 3.0 Unported許可協議進行許可。