verilog奇數分頻,三分頻例項

2021-10-21 14:25:05 字數 3171 閱讀 4720

目的:輸入乙個時鐘訊號,輸出占空比為50%的三分頻。

首先得到乙個占空比為1/3的分頻時鐘,然後將輸入訊號取反,得到乙個移相180度的占空比為1/3的分頻時鐘,將兩個時鐘相或得到目的時鐘。

verilog**

module

divider_3

(input

clk,//

clock

input

rst_n,/

/asynchronous

reset

active

lowoutput

wire

clk_d3);

reg[3:

0]count

,count1

;reg

clk_div3

,clk_div3_shift

;wire

clk_n

;assign

clk_n=~

clk;

always@(

posedge

clkor

negedge

rst_n

)beginif(

~rst_n

)begin

count

<=0

;end

elseif(

count==

4'd2)

begin

count

<=0

;end

else

begin

count

<

=count+1

;end

endalways@(

posedge

clk_n

ornegedge

rst_n

)beginif(

~rst_n

)begin

count1

<=0

;end

elseif(

count1==

4'd2)

begin

count1

<=0

;end

else

begin

count1

<

=count1+1

;end

endalways@(

posedge

clkor

negedge

rst_n

)beginif(

~rst_n

)begin

clk_div3

<=0

;end

elseif(

count==

4'd0||count==4'd1)

begin

clk_div3

<=~

clk_div3

;end

else

begin

clk_div3

<

=clk_div3

;end

endalways@(

posedge

clk_n

ornegedge

rst_n

)beginif(

~rst_n

)begin

clk_div3_shift

<=0

;end

elseif(

count1==

4'd0||count1==4'd1)

begin

clk_div3_shift

<=~

clk_div3

;end

else

begin

clk_div3_shift

<

=clk_div3_shift

;end

endassign

clk_d3

=clk_div3||

clk_div3_shift

;endmodule

testbench:

`

timescale1ns

/1ps/

////

////

////

////

////

////

////

////

////

////

////

////

////

////

////

////

////

////

////

////

///module

name:

vtf_led_test//

////

////

////

////

////

////

////

////

////

////

////

////

////

////

////

////

////

////

////

////

module

vtf_divider3_test;/

/inputs

regclk

;reg

rst_n;/

/outputs

wire

clk_div3;/

/create

clock

always#5

clk=

!clk

;initial

begin

rst_n=0

;clk=0

;#20rst_n=1

;#100$finish

;end

divider_3

uut(

.clk

(clk),

.rst_n

(rst_n),

.clk_d3

(clk_div3))

;endmodule

波形圖:

FPGA三分頻,五分頻,奇數分頻

我們在做fpga設計時,有時會用到時鐘頻率奇數分頻的頻率,例如筆者fpga的晶振為50m,當我們需要10m的時鐘時,一種方式可以使用dcm或pll獲取,系統會內部分頻到10m,但其實verilog內部也完全能實現,所以我們還是來了解一下。有這樣乙個歡樂的時鐘了,我們要得到以下的分頻效果 奇數分頻的難...

FPGA三分頻,五分頻,奇數分頻

我們在做fpga設計時,有時會用到時鐘頻率奇數分頻的頻率,例如筆者fpga的晶振為50m,當我們需要10m的時鐘時,一種方式可以使用dcm或pll獲取,系統會內部分頻到10m,但其實verilog內部也完全能實現,所以我們還是來了解一下。有這樣乙個歡樂的時鐘了,我們要得到以下的分頻效果 奇數分頻的難...

verilog奇數分頻器的問題講解(7分頻為例)

先不多嗶嗶,直接上 veriloghdl 的後面講原理 module fenpin3 clk,clk7,rst input clk,rst 設定rst的目的是當rst 1的時候給cnt0和cnt1賦初值 output clk7 reg 2 0 cnt0,cnt1 定義兩個加法器分別生成兩個7分頻的訊...