-
1 # 南風微涼南巷花念伊
-
2 # 高大美女的
分頻器是比較簡單和基礎的,偶數的簡單一些,奇數的複雜一些(這裡都佔空比都是50%)
偶數分頻(2N)
偶數分頻最為簡單,很容易用模為N的計數器實現50%佔空比的時鐘訊號,即每次計數滿N(計到N-1)時輸出時鐘訊號翻轉。
奇數分頻(2N+1)如5分頻,N=2
使用模為2N+1的計數器,讓輸出時鐘在X-1(X在0到2N-1之間)和2N時各翻轉一次,則可得到奇數分頻器,但是佔空比並不是50%(應為 X/(2N+1))。
得到佔空比為50%的奇數分頻器的基本思想是:將得到的上升沿觸發計數的奇數分頻輸出訊號CLK1,和得到的下降沿觸發計數的相同(時鐘翻轉值相同)奇數分頻輸出訊號CLK2,
最後將CLK1和CLK2相或之後輸出,就可以得到佔空比為50%的奇數分頻器
module div5(
clk_in,
rst_n,
clk_out
);
input clk_in;
input rst_n;
output clk_out;
reg [2:0]cnt1,cnt2;
reg clk_1,clk_2;
always@(posedge clk_in) //上升沿分頻,佔空比2:3
begin
if(!rst_n)
begin
cnt1
clk_1
end
else if(cnt1==3"b100)
cnt1
else
cnt1
if(cnt1==3"b000)
clk_1
if(cnt1==3"b010)
clk_1
end
always@(negedge clk_in) //下升沿分頻,佔空比2:3
begin
if(!rst_n)
begin
cnt2
clk_2
end
else if(cnt2==3"b100)
cnt2
else
cnt2
if(cnt2==3"b000)
clk_2
if(cnt2==3"b010)
clk_2
end
assign clk_out=clk_1 | clk_2; //錯位相或
endmodule
重要的是體會一些思想,並且一定要做模擬。看一些模擬出來的波形。祝順利。
回覆列表
count_5m>=4說明count_5m計數為01234這5個就是5個週期一個輪迴clk_5m<=~clk_5m;說明每5個週期電平變化一次clk_5m的一個週期為高低電平各一次,就是10個週期原來的時鐘就是生成時鐘的10倍