對于要求相位以及占空比嚴格的小數(shù)分頻,建議采用模擬電路實現(xiàn)。 而使用數(shù)字電路實現(xiàn)只能保證盡量均勻,在長時間內(nèi)進行分頻 。
在討論小數(shù)分頻之前,先問一個問題:設計中是否真的需要50%占空比的時鐘?
在回答這個問題之前,可以先回顧之前我們寫過的RTL設計,可以看一下之前的RTL設計代碼中always塊是不是大部分都是@(posedge clk)。
對于絕大多數(shù)的觸發(fā)器,其實只需要用到時鐘的上升沿觸發(fā),很少用到下降沿。在這種情況下,只要上升沿和時鐘頻率有關系,什么時候來下降沿不重要! 所以50%的占空比不是必須的 。
因此在小數(shù)分頻器中我們關注的是如何得到一個盡量均勻的分頻信號,而不是得到一個絕對50%占空比的分頻信號。
下面以4.5倍的分頻(非50%占空比)作為例子介紹,即每9個參考時鐘包含2個對稱脈沖。下面是4.5分頻的設計步驟。
①:使用復位值為000000001的9位移位寄存器,可以在每個時鐘上升沿使移位寄存器循環(huán)左移一位。
②:要產(chǎn)生第一個脈沖,必須使在半周期時移動第一位并將第一位與第二位進行或操作。
③:要產(chǎn)生第二個脈沖,第5位和第6位必須在半周期時移動并與原始第6位進行或操作。
注意:所有這些移位都是用來保證輸出波形不含毛刺的必要條件。
上面產(chǎn)生的時鐘占空比為40%,并且輸出的時鐘完全不含毛刺。
always@(posedge clk or negedge rst_n)
if(!rst_n)
cnt[9:1] <= 9'b000000001;
else
cnt[9:1] <= cnt[9:1] < < 1;
always@(negedge clk or negedge rst_n)
if(!rst_n)begin
count1 <= 1'b0;
count5 <= 1'b0;
count6 <= 1'b0;
end
else begin
count1 <= cnt[1];
count5 <= cnt[5];
count6 <= cnt[6];
end
assign clkout = (cnt[6] | count5 | count6) |
(cnt[0] | cnt[1] |count1);
-
模擬電路
+關注
關注
125文章
1590瀏覽量
103737 -
分頻器
+關注
關注
43文章
491瀏覽量
50903 -
移位寄存器
+關注
關注
3文章
287瀏覽量
22663 -
RTL
+關注
關注
1文章
388瀏覽量
60757 -
觸發(fā)器
+關注
關注
14文章
2033瀏覽量
61937
發(fā)布評論請先 登錄
怎么把小數(shù)分頻控制字與整數(shù)分頻控制字結(jié)合起來去控制可編程分頻器?
FPGA實現(xiàn)小數(shù)分頻器

△∑小數(shù)頻率合成器中的小數(shù)分頻器設計
分頻器的作用是什么 半整數(shù)分頻器原理圖分析

如何使用FPGA進行任意小數(shù)分頻器的設計

奇數(shù)分頻器的介紹和實現(xiàn)

偶數(shù)分頻器的設計

偶數(shù)分頻、奇數(shù)分頻、半整數(shù)分頻和小數(shù)分頻詳解

FPGA學習-分頻器設計

評論