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