1.原理如上圖所示,將輸出clk_out的二分頻反饋給輸入,與輸入clk_in異或,得到clk_half;模n計數器作用時以clk_half為時鐘計數,當計數器cnt=n時,clk_out輸出1,否則輸出0;
**如下:
module div_half
#(parameter n=4)
(clk,rst,clk_out,cnt);
input clk,rst;
output clk_out;
output [3:0]cnt;
reg clk_out;
reg clk_div;
reg [3:0]cnt;
wire clk_half;
assign clk_half=clk_div^clk;
always @(posedge clk_half or negedge rst)
begin
if(!rst)
begin
cnt<=0;
clk_out<=0;
endelse if(cnt==n)
begin
cnt<=0;
clk_out<=1;
endelse
begin
cnt<=cnt+1;
clk_out<=0;
endend
always@(posedge clk_out or negedge rst)
begin
if(!rst)
clk_div<=0;
else
clk_div<=~clk_div;
endendmodule
測試檔案如下:
module div_test;
reg clk;
reg rst;
wire clk_out;
wire[3:0]cnt;
initial
begin
clk=0;
rst=1;
#20 rst=0;
#20 rst=1;
endalways #10 clk=~clk;
div_half m(.clk(clk),
.rst(rst),
.clk_out(clk_out),
.cnt(cnt)
);endmodule
**結果如下:
N 0 5分頻器的verilog實現
先說一種設計思路 通過兩個分頻時鐘的與操作實現。兩個分頻時鐘的占空比均為 n 1 2 n 1 對於5.5分頻電路來講,其占空比為6 11,不過這兩個分頻時鐘乙個是基於時鐘上公升沿觸發乙個是基於時鐘下降沿觸發,並且時鐘的初始化值相反,這樣將這兩個時鐘相與就可以得到5.5分頻的電路了.module ha...
FPGA入門練習 Verilog寫乙個下降沿檢測
記錄學習fpga的點點滴滴 首先是 module check down input clk,input gate,測試訊號 input rst n,output sign reg d0 reg d1 always posedge clk or negedge rst n begin if rst n...
寫乙個函式,輸入n,求斐波那契數列的第n項。
劍指offer 求斐波那契數列第n項。之前我寫過一些遞迴與非遞迴的練習,其中包括了斐波那契數列,感興趣的可以看一下其他例題。1.大家對遞迴演算法求斐波那契數列是很熟悉的。分析遞迴的求解過程就會發現,遞迴有很嚴重的效率問題。對於規模較大的問題,遞迴占用的空間大,花費的時間長。define crt se...