偶數(shù)分頻原理
偶數(shù)分頻最為簡單,很容易用模為N的計數(shù)器實現(xiàn)50%占空比的時鐘信號,即每次計數(shù)滿N(計到N-1)時輸出時鐘信號翻轉(zhuǎn)。
以4分頻為例,波形圖如下:
奇數(shù)分頻原理
方法一
使用模為2N+1的計數(shù)器,讓輸出時鐘在X-1(X在0到2N-1之間)和2N時各翻轉(zhuǎn)一次,則可得到奇數(shù)分頻器,但是占空比并不是50%(應(yīng)為 X/(2N+1))。
得到占空比為50%的奇數(shù)分頻器的基本思想是:將得到的上升沿觸發(fā)計數(shù)的奇數(shù)分頻輸出信號CLK1,和得到的下降沿觸發(fā)計數(shù)的相同(時鐘翻轉(zhuǎn)值相同)奇數(shù)分頻輸出信號CLK2,CLK1和CLK2占空比不是50%而是低電平2周期,高電平1周期。
最后將CLK1和CLK2相或之后輸出,就可以得到占空比為50%的奇數(shù)分頻器。時序圖如下,紅線就是我們要的50%占空比三分頻結(jié)果:
方法二
和方法一唯一的區(qū)別是,CLK1和CLK2相反,高電平變低電平,低電平變高電平,最終輸出的分頻時鐘是CLK1&CLK2。所以注意區(qū)別。波形圖如下:
整數(shù)數(shù)分頻原理
總結(jié)1和2,設(shè)整數(shù)位N,當(dāng)N為偶數(shù)時,cnt>1)。這是一個編程的技巧。
代碼的一些具體技巧我將它放在了代碼注釋里面,希望大家好好看看。
設(shè)計思路
很多人在問我,拿到一個設(shè)計的時候如何去找思路。相信這也是很初學(xué)者的疑惑。一般推薦按照以下步驟來設(shè)計,一步步解決。
1.分解功能模塊——分解到每個模塊你都是能夠想得到辦法解決的為止,前期不要練習(xí)復(fù)雜的模塊,推薦練習(xí)的有今天的各種分頻,以后還可以嘗試分?jǐn)?shù)分頻,UART,localbus,SPI,IIC這些是我推薦給大家練習(xí)的,由易到難。
2.每個分解的最小功能模塊畫出時序圖,就像今天文章里分頻的時序圖一樣,主要是幫你了解到每個時鐘周期是怎么工作的,原理上是怎么實現(xiàn)的,時序圖一出來,整個思路都清晰了。
3.組合功能模塊,保證模塊之間的時序是滿足要求的,自底向上往上堆,每堆一個模塊仿真一下,堆到頂層通過頂層仿真就算初步完成了功能的要求
設(shè)計整數(shù)分頻
上面說了方法這里我們來試驗下
1.分解模塊功能,也就是畫出總體框圖
2.畫時序圖,每個分頻模塊的時序圖前面已經(jīng)畫過了,奇偶選擇沒有時序圖,就是一個選擇開關(guān),奇數(shù)分頻系數(shù)選擇奇數(shù)分頻模塊輸出,偶數(shù)分頻系數(shù)選擇偶數(shù)分頻輸出。
3.拼湊——奇偶分頻各寫一個alwyas,最后加上奇偶選擇,如果不熟悉可以分成兩個單獨的.v文件寫,最后封裝到頂層。
設(shè)計在以上步驟以及完成了,現(xiàn)在我們來看看仿真結(jié)果:
7分頻
6分頻
-
FPGA設(shè)計
+關(guān)注
關(guān)注
9文章
428瀏覽量
26567 -
分頻器
+關(guān)注
關(guān)注
43文章
447瀏覽量
50017 -
計數(shù)器
+關(guān)注
關(guān)注
32文章
2259瀏覽量
94848 -
UART接口
+關(guān)注
關(guān)注
0文章
124瀏覽量
15322 -
Verilog語言
+關(guān)注
關(guān)注
0文章
113瀏覽量
8285
發(fā)布評論請先 登錄
相關(guān)推薦
評論