日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

16 分频 32 分频是啥意思_Verilog 数字分频器的设计及验证

發布時間:2025/3/20 编程问答 53 豆豆
生活随笔 收集整理的這篇文章主要介紹了 16 分频 32 分频是啥意思_Verilog 数字分频器的设计及验证 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、分頻器的概念及應用

分頻器是指使輸出信號頻率為輸入信號頻率整數分之一的電子電路。在許多電子設備中如電子鐘、頻率合成器等,需要各種不同頻率的信號協同工作,常用的方法是以穩定度高的晶體振蕩器為主振源,通過變換得到所需要的各種頻率成分,分頻器是一種主要變換手段。

早期的分頻器多為正弦分頻器,隨著數字集成電路的發展,數字分頻器逐漸取代了正弦分頻器。

2、數字分頻器類型

數字分頻器類型主要包括了2的整數次冪的分頻器、偶數分頻、占空比為1:15的分頻電路和奇數分頻電路等。

3、分頻器的rtl和testbench

在硬件電路設計中時鐘信號是最重要的信號之一,經常需要對較高頻率的時鐘進行分頻操作,得到較低頻率的時鐘信號,這里以50Mhz為主振源,分別進行2的整數次冪的分頻器、偶數分頻、占空比為1:15的分頻電路和奇數分頻電路。

3.1 2的整數次冪的分頻器

2的整數次冪的分頻器是指對時鐘信號clk進行2分頻、4分頻、8分頻和16分頻等,這是最簡單的分頻電路,只需要一個計數器就可以,這里采用4位計數器。

3.1.1 rtl代碼

//div2_4_8_16

module div2_4_8_16(

input?????????? rst_n,

input?????????? clk,

output????????? div2,

output????????? div4,

output????????? div8,

output????????? div16

);

reg [3:0] cnt;

?always@(posedge clk or negedge rst_n)

begin

?????? if(!rst_n)

????????????? cnt<=4'd0;

?????? else

????????????? cnt<=cnt+1'b1;

end

?assign div2??? =cnt[0];

assign div4??? =cnt[1];

assign div8??? =cnt[2];

assign div16?? =cnt[3];

?endmodule

3.1.2 testbench

//tb_div

`timescale 1ns/1ns

module tb_div();

reg clk;

reg rst_n;

wire div2;

wire div4;

wire div8;

wire div16;

?//parameter define

parameter PERIOD=20;

?//clock define

always #(PERIOD/2) clk=~clk;

?//初始化

initial

begin

?????? clk=1'b1;

?????? rst_n=1'b0;

?????? #(20*PERIOD)

?????? rst_n=1'b1;

?????? #(1000*PERIOD)

?????? $finish;

end

?//例化

div2_4_8_16 u0(

.clk(clk),

.rst_n(rst_n),

.div2(div2),

.div4(div4),

.div8(div8),

.div16(div16)

);

endmodule

3.1.3 波形分析

圖3.1 2的整數次冪的分頻器波形圖

3.2 偶數分頻電路

這里以50Mhz為主振源,采用6分頻。

3.2.1 rtl代碼

//div6

module div6(

input?????????? rst_n,

input?????????? clk,

output??reg??? div6

);

?reg [1:0] cnt;

?always@(posedge clk or negedge rst_n)

begin

?????? if(!rst_n)

????????????? cnt<=2'd0;

?????? elseif(cnt==2'd2)

????????????? cnt<=2'd0;

???????else

???????????????cnt<=cnt+1'b1;

end

?always@(posedge clk or negedge rst_n)

begin

?????? if(!rst_n)

????????????? div6<=1'b0;

?????? elseif(cnt==2'd2)

????????????? div6<=~div6;

?????? else

????????????? div6<=div6;

end

endmodule

3.2.2 testbench

//tb_div

`timescale 1ns/1ns

module tb_div6();

reg clk;

reg rst_n;

wire div6;

?//parameter define

parameter PERIOD=20;

?//clock define

always #(PERIOD/2) clk=~clk;

?//初始化

initial

begin

?????? clk=1'b1;

?????? rst_n=1'b0;

?????? #(20*PERIOD)

?????? rst_n=1'b1;

?????? #(1000*PERIOD)

?????? $finish;

end

?//例化

div6 u1(

.clk(clk),

.rst_n(rst_n),

.div6(div6)

);

endmodule

3.2.3 波形分析

圖3.2 6分頻波形圖

3.3 占空比為1:15的分頻電路

這里以50Mhz為主振源,占空比為1:15。

3.3.1 rtl代碼

//div6

module div6(

input?????????? rst_n,

input?????????? clk,

output reg????? div115

);

?reg [3:0] cnt;

?always@(posedge clk or negedge rst_n)

begin

?????? if(!rst_n)

????????????? cnt<=4'd0;

?????? elseif(cnt==4'd15)

????????????? cnt<=4'd0;

???????else

???? ???????????cnt<=cnt+1'b1;

end

always@(posedge clk or negedge rst_n)

begin

?????? if(!rst_n)

????????????? div115<=1'b0;

?????? elseif(cnt==4'd14)

????????????? div115<=1'b1;

?????? elseif(cnt==4'd15)

????????????? div115<=1'b0;

?????? else

????????????? div115<=div115;

end

endmodule

3.3.2 testbench

//tb_div

`timescale 1ns/1ns

module tb_div1_15();

reg clk;

reg rst_n;

wire div115;

?//parameter define

parameter PERIOD=20;

?//clock define

always #(PERIOD/2) clk=~clk;

//初始化

initial

begin

?????? clk=1'b1;

?????? rst_n=1'b0;

?????? #(20*PERIOD)

?????? rst_n=1'b1;

?????? #(1000*PERIOD)

?????? $finish;

end

?//例化

div6 u1(

.clk(clk),

.rst_n(rst_n),

.div115(div115)

);

?Endmodule

3.3.3 波形分析

圖3.3?占空比為1:15的分頻器電路波形圖

3.4 奇數分頻電路

這里以50Mhz為主振源,采用5分頻。
3.4.1 rtl代碼

//div6

module div5(

input?????????? rst_n,

input?????????? clk,

output????????? div5

);

reg [2:0] cnt1;

reg [2:0] cnt2;

reg div1;

reg div2;

always@(posedge clk or negedge rst_n)

begin

?????? if(!rst_n)

????????????? cnt1<=3'd0;

?????? elseif(cnt1==3'd4)

????????????? cnt1<=3'd0;

???????else

??????????????? cnt1<=cnt1+1'b1;

end

?always@(posedge clk or negedge rst_n)

begin

?????? if(!rst_n)

????????????? div1<=1'b0;

?????? elseif(cnt1==3'd0 || cnt1==3'd1)

????????????? div1<=1'b1;

???????else

??????????????? div1<=1'b0;

end

always@(negedge clk or negedge rst_n)

begin

?????? if(!rst_n)

????????????? cnt2<=3'd0;

?????? elseif(cnt2==3'd4)

????????????? cnt2<=3'd0;

???????else

??????????????? cnt2<=cnt2+1'b1;

end

always@(negedge clk or negedge rst_n)

begin

?????? if(!rst_n)

????????????? div2<=1'b0;

?????? elseif(cnt2==3'd0 || cnt2==3'd1)

????????????? div2<=1'b1;

?????? else

????????????? div2<=1'b0;

end

assign div5=div1 | div2;

endmodule

3.4.2 testbench

//tb_div

`timescale 1ns/1ns

module tb_div5();

reg clk;

reg rst_n;

wire div5;

//parameter define

parameter PERIOD=20;

?//clock define

always #(PERIOD/2) clk=~clk;

?//初始化

initial

begin

?????? clk=1'b1;

?????? rst_n=1'b0;

?????? #(20*PERIOD)

?????? rst_n=1'b1;

?????? #(1000*PERIOD)

?????? $finish;

end

?//例化

div5 u1(

.clk(clk),

.rst_n(rst_n),

.div5(div5)

);

endmodule

3.4.3 波形分析

圖3.4 5分頻波形圖

總結

以上是生活随笔為你收集整理的16 分频 32 分频是啥意思_Verilog 数字分频器的设计及验证的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。