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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

分频电路的verilog实现

發(fā)布時間:2023/12/20 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 分频电路的verilog实现 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

偶數(shù)2分頻

由偶數(shù)二分頻波形可知,每次在時鐘的上升沿,輸出寄存器的狀態(tài)進(jìn)行翻轉(zhuǎn),就能得到二分頻后的時鐘。


代碼如下:

module div2_clk ( input clk, input rst,output clk_div);reg clk_div_r; assign clk_div = clk_div_r;always@(posedge clk) beginif(rst)beginclk_div_r <= 1'b0;endelsebeginclk_div_r <= ~clk_div_r ;end endendmodule

二分頻電路如下:

偶數(shù)N分頻

方法:用模為N/2的計數(shù)器實現(xiàn)占空比為50%的偶數(shù)N分頻時鐘信號,計數(shù)器為N/2 - 1時,輸出時鐘寄存器狀態(tài)翻轉(zhuǎn)。

代碼如下(div_coe代表分頻數(shù)):

module even_div #(parameter div_coe = 2) ( input clk, input rst,output clk_div);localparam div_even = div_coe>>1; reg clk_div_r; reg [div_even-1:0] cnt; assign clk_div = clk_div_r;always@(posedge clk) beginif(rst)beginclk_div_r <= 1'b0;cnt <= 0;endelse if(cnt == div_even - 1)begin clk_div_r <= ~clk_div_r;cnt <= 0;endelsebegincnt <= cnt + 1;end endendmodule

測試代碼如下:

module tset_clk_div#(parameter div_coe = 6)( );reg clk; reg rst; wire clk_div;initial beginclk = 0;rst = 0;#50rst = 1;#25rst = 0; end always #5 clk = ~clk;even_div#div_coeU0 ( .clk(clk), .rst(rst),.clk_div(clk_div)); endmodule

6分頻仿真波形為:

N分頻電路如下:

奇數(shù)N分頻,要求分頻后時鐘占空比為50%

以3分頻為例,在時鐘clk的作用下,先產(chǎn)生占空比為1/3的時鐘clk_div_r;然后時鐘clk取反,得到時鐘clk_n,在clk_n的作用下,產(chǎn)生占空比為1/3的時鐘clk_div_r1;clk_div_r與clk_div_r1只差半個時鐘周期,二者相或運算得到占空比為50%的三分頻時鐘。

總結(jié)產(chǎn)生時鐘占空比為50%的奇數(shù)N分頻時鐘方法:
1、在時鐘clk的作用下,計數(shù)器cnt在(N-1)/2以及N-1狀態(tài)時,時鐘寄存器clk_div_r進(jìn)行狀態(tài)翻轉(zhuǎn),得到占空比為[(N-1)/2]/N的分頻時鐘;
2、在取反后的時鐘clk_n的作用下,計數(shù)器cnt1在(N-1)/2以及N-1狀態(tài)時,時鐘寄存器clk_div_r1進(jìn)行狀態(tài)翻轉(zhuǎn),得到占空比為[(N-1)/2]/N的分頻時鐘;
3、clk_div_r與clk_div_r1相或,得到占空比為50%的奇數(shù)N分頻時鐘

代碼如下(div_coe代表分頻數(shù)):

module odd_div #(parameter div_coe = 3) ( input clk, input rst,output clk_div);localparam div_odd = (div_coe - 1)>>1; reg clk_div_r; reg [div_coe-1:0] cnt; reg clk_div_r1; reg [div_coe-1:0] cnt1; wire clk_n; assign clk_n = ~clk; assign clk_div = clk_div_r || clk_div_r1;always@(posedge clk) beginif(rst)begincnt <= 0;endelse if(cnt == div_coe - 1)begincnt <= 0;endelsebegincnt <= cnt + 1;end endalways@(posedge clk_n) beginif(rst)begincnt1 <= 0;endelse if(cnt1 == div_coe - 1)begincnt1 <= 0;endelsebegincnt1 <= cnt1 + 1;end endalways@(posedge clk) beginif(rst)beginclk_div_r <= 1'b0;endelse if(cnt == div_odd)beginclk_div_r <= ~clk_div_r;endelse if(cnt == div_coe - 1)beginclk_div_r <= ~clk_div_r;end endalways@(posedge clk_n) beginif(rst)beginclk_div_r1 <= 1'b0;endelse if(cnt1 == div_odd)beginclk_div_r1 <= ~clk_div_r1;endelse if(cnt1 == div_coe - 1)beginclk_div_r1 <= ~clk_div_r1;end endendmodule

需要注意的是:上述奇偶分頻實現(xiàn)的時鐘一般只用于應(yīng)付面試。

總結(jié)

以上是生活随笔為你收集整理的分频电路的verilog实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。