欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
發一個任意數分頻的程序
[打印本頁]
作者:
Mystery0724
時間:
2019-3-28 09:35
標題:
發一個任意數分頻的程序
本帖最后由 Mystery0724 于 2019-3-28 09:39 編輯
module divide(
clk,
rst_n,
clkout);
input clk,rst_n;
output clkout;
parameter WIDTH = 3;
parameter N = 5;
reg [WIDTH-1:0] cnt_p,cnt_n; //cnt_p為上升沿觸發時的計數器,cnt_n為下降沿觸發時的計數器
reg clk_p,clk_n; //clk_p為上升沿觸發時分頻時鐘,clk_n為下降沿觸發時分頻時鐘
//上升沿觸發時計數器的控制
always @ (posedge clk or negedge rst_n )
begin
if(!rst_n)
cnt_p<=0;
else if (cnt_p==(N-1))
cnt_p<=0;
else cnt_p<=cnt_p+1;
end
always @ (posedge clk or negedge rst_n)
begin
if(!rst_n)
clk_p<=0;
else if (cnt_p<(N>>1)) //N>>1表示右移一位,相當于除以2去掉余數
clk_p<=0;
else
clk_p<=1; //得到的分頻時鐘正周期比負周期多一個clk時鐘
end
//下降沿觸發時計數器的控制
always @ (negedge clk or negedge rst_n)
begin
if(!rst_n)
cnt_n<=0;
else if (cnt_n==(N-1))
cnt_n<=0;
else cnt_n<=cnt_n+1;
end
//下降沿觸發的分頻時鐘輸出,和clk_p相差半個時鐘
always @ (negedge clk)
begin
if(!rst_n)
clk_n<=0;
else if (cnt_n<(N>>1))
clk_n<=0;
else
clk_n<=1; //得到的分頻時鐘正周期比負周期多一個clk時鐘
end
assign clkout = (N==1)?clk:(N[0])?(clk_p&clk_n):clk_p; //條件判斷表達式
//當N=1時,直接輸出clk
//當N為偶數也就是N的最低位為0,N(0)=0,輸出clk_p
//當N為奇數也就是N最低位為1,N(0)=1,輸出clk_p&clk_n。正周期多所以是相與
endmodule
復制代碼
作者:
shuijingfeng
時間:
2019-7-25 15:06
記號一下
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1