佔空比爲50%的奇數分頻器設計思路
1. 首先進行上升沿觸發的N模計數,計數器從零開始,到 (N-1)/2 處時鐘翻轉,然後經過 (N+1)/2再次翻轉
得到一個佔空比非50%的輸出時鐘out1.
2. 同時進行下降沿觸發的N模計數,計數方法同上升沿相同,然後得到一個佔空比非50%的輸出時鐘out2
3.把以上兩步得到的輸出時鐘out1和out2相“與”得到的輸出out即佔空比爲50%的N分頻(N爲奇數)。
下面是佔空比爲50%的N分頻代碼,修改參數N的值就可以實現任意奇數分頻:
module div_odd(clk,out
);
input clk;
output out;
reg [m:0] a=0,b=0; //m爲滿足 2^(m+1)>N 的任意整數
reg out1,out2;
always@(posedge clk)
begin
if(a<(N-1)/2)
begin
a<=a+1;
out1<=0;
end
else if(a==N-1)
a<=0;
else
begin
a<=a+1;
out1<=1;
end
end
always@(negedge clk)
begin
if(b<(N-1)/2)
begin
b<=b+1;
out2<=0;
end
else if(b==N-1)
b<=0;
else
begin
b<=b+1;
out2<=1;
end
end
assign out=out1&&out2;
endmodule