大家在參加IC相關工作筆試或者面試的時候,經常會碰到類似的題目:
怎樣用D觸發器、與或非門組成二分頻電路?
用D觸發器實現3倍分頻的Verilog描述?
任意切換1-8分頻,且無論奇分頻還是偶分頻,占空比均為50%,寫出verilog代碼;
時鐘分頻電路(分頻器)在IC設計中經常會用到,其目的是產生不同頻率的時鐘,滿足系統的需要。 比如一個系統,常規操作都是在1GHz時鐘下完成,突然要執行一個操作涉及到模擬電路,所需時間是us量級的,顯然用1GHz(周期是1ns)的時鐘進行操作是不合適的。
時鐘分頻器電路可以分為數字分頻器、模擬分頻器和射頻分頻器等。 數字分頻器通過一個計數器來進行分頻,權值為分頻系數。 模擬分頻器就是一個頻率分配器,用帶阻帶通實現。 射頻分頻器也是濾波器原理,用帶內外衰減,阻抗匹配實現。
這篇文章IC君就跟大家聊一聊數字分頻器。 對于精度不高的場合,數字分頻器分出的時鐘就可以滿足要求。 常用到數字分頻器有2,4,6,8,…… 偶數分頻,也會有3,5,7,9…… 奇數分頻,甚至還會有8.7,11.2,6.432,…… 分數分頻。
偶數分頻是最容易掌握的,奇數分頻就有些技巧,如果你不知道奇數分頻技巧,就可能會被一些公司的面試或者考試題目給難住,錯失一些機會。 而像8.7,11.2,6.432,…… 這種分數分頻器就更需要技巧。 掌握這些通用的技巧就能很快的實現各種分頻器,滿足系統的需求。 下面IC君就跟大家分別聊一下偶數分頻、奇數分頻、分數(小數)分頻器。
1偶數分頻
偶數分頻器的實現簡單,用計數器在上升沿或者下降沿計數,當計數器的值等于分頻系數的一半或等于分頻系數時,信號翻轉。 偶數分頻器分頻原理如下圖所示:
上圖的的分頻系數是4,就是4分頻。 電路原理是用一個上升沿計數的計數器,每次計數到2時輸出信號clkout翻轉一次,每次計數到4時clkout再翻轉一次,一直周期重復下去。 其他的偶數分頻器原理也是一樣。 從波形中可以看出cnt
從00->01->10->11->00......一直循環記數,如果你夠仔細,就可以看出cnt的最高位其實也是一個4分頻的時鐘。
如果偶數分頻系數是2的冪,就可以用2分頻器級聯得到; 例如4分頻就是兩個2分頻級聯,下圖就是用兩個2分頻器級聯得到4分頻器。
2奇數分頻
奇數分頻器跟偶數分頻器一樣,當計數器的值等于分頻系數(加1或者減1)的一半或等于分頻系數時,時鐘信號翻轉。 奇數分頻器分頻原理如下圖:
上圖的分頻系數是3,用一個計數器在上升沿計數,每次計數到1翻轉一次,每次計數到3再翻轉一次,然后周期重復得到信號clkp1,它的周期就是clk的3倍,但是它的占空比不是50%(占空比就是clk為高的時間占整個時鐘周期的百分比)。 奇數分頻想通過計數器直接分頻出占空比是50%的時鐘是不可能的,必須要通過中間的臨時波形,做一些邏輯“與”“或”的動作才能得到占空比50%的分頻時鐘。
用一個下降沿的D觸發器鎖存clkp1得到信號clkn1,把信號clkp1和信號clkn1做邏輯“與”就得到了占空比50%的3分頻時鐘信號clkout。
另外一種產生3分頻時鐘的方法:假設計數器在計數到1的下降沿分頻后的時鐘信號clkn2翻轉一次,計數到2的下降沿clkn2再翻轉一次,
再利用下圖電路調整占空比到50%:
用一個正常的D觸發器鎖存clkn2得到信號clkp2, clkn2“或”上clkp2就可以得到占空比50%的3分頻時鐘信號clkout。
其他的奇數分頻器調整占空比的原理也是相同的。
3分數分頻
分數分頻也叫小數分頻器,比如8.7分頻。 因為沒辦法用計數器表示0.7這種數字,所以就用一個等效的概念來進行8.7分頻,原時鐘87個周期的總時間等于分頻后的時鐘10個周期的總時間;
先做3次8分頻得到時鐘周期數是24,再做7次9(8加1)分頻得到時鐘周期數63,總共就87個時鐘周期; 在這87個時鐘周期里面分頻時鐘跳變20次總共10個周期。 分數分頻器的原理可以用下圖來概括。
用整數部分zn(=8)作為一個分頻系數,zn加1(=9)作為另外一個分頻系數組成一個小數分頻器。
根據上面的原理可以列出下面的二元一次方程組
zn*N+(zn+1)*M=87 ......(1)
N+M=10 ...(2)
可以解出N和M的值分別是3和7。
如果分頻系數6.432,那么有下面的二元一次方程組,zn是6
zn*N+(zn+1)*M=6432 ......(1)
N+M=1000 ......(2)
解出N和M的值分別是568和432,這個值就很大了,計數器的位寬也變大了,也就是說小數部分位數越多,需要的計數器的位寬越大,消耗的硬件資源越多。 不過568,432,1000這幾個數有公約數,可以除以最大公約數,把計數數值減小。
如下圖所示:一個小數分頻器就有兩部分組成:ZN和ZN+1為分頻系數的多路分頻器,還有一個ACC計數器。
分頻器在輸入信號enout=0的時候是ZN分頻;
分頻器在輸入信號enout=1的時候是ZN+1分頻;
ACC計數器的作用對ZN分頻和ZN+1分頻的次數計數,對于一位小數計數總次數為10(兩位小數為100...),輸出信號enout決定下次是ZN分頻還是ZN+1分頻。
由于篇幅關系,小數分頻器的具體電路設計就留到下一篇文章講。
-
分頻器
+關注
關注
43文章
447瀏覽量
50004 -
Verilog
+關注
關注
28文章
1351瀏覽量
110193 -
時鐘
+關注
關注
11文章
1742瀏覽量
131637 -
觸發器
+關注
關注
14文章
2000瀏覽量
61258 -
分頻電路
+關注
關注
7文章
45瀏覽量
35972
發布評論請先 登錄
相關推薦
評論