玩转FPGA山寨版

看了《玩转FPGA》,写的不错,写写山寨版和大家交流!

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

单数分频器Verilog

// 三分频电路:

module clk_div3(clk,reset,divclk);
input  clk;
input  reset;
output reg divclk;

reg[1:0] cnt1;
always@(posedge clk or negedge reset)
begin
    if(!reset) cnt1 <=0;
    else if(cnt1 < 2'b10) cnt1<= cnt1 + 1'b1;
    else cnt1 <=0;
end

reg[2:0] cnt2;
always@(negedge clk or negedge reset)
begin
    if(!reset) cnt2 <=0;
    else if(cnt2 < 2'b10) cnt2<= cnt2 + 1'b1;
    else cnt2 <=0;
end

always@(*)
begin
     if(cnt2<2'b10 && cnt1<2'b10)  divclk <=1'b1;
     else divclk <=1'b0;
end

endmodule

//***********************************************************************

//五分频电路:

module clk_div5(clk,reset,divclk);
input  clk;
input  reset;
output reg divclk;

reg[2:0] cnt1;
always@(posedge clk or negedge reset)
begin
    if(!reset) cnt1 <=0;
    else if(cnt1 < 3'd4) cnt1<= cnt1 + 1'b1;
    else cnt1 <=0;
end

reg[2:0] cnt2;
always@(negedge clk or negedge reset)
begin
    if(!reset) cnt2 <=0;
    else if(cnt2 < 3'd4) cnt2<= cnt2 + 1'b1;
    else cnt2 <=0;
end

always@(*)
begin
     if(cnt2<3'd3 && cnt1<3'd3)  divclk <=1'b1;
     else divclk <=1'b0;
end

endmodule

//********************************************************************

//七分频

module clk_div7(clk,reset,divclk);
input  clk;
input  reset;
output reg divclk;

reg[2:0] cnt1;
always@(posedge clk or negedge reset)
begin
    if(!reset) cnt1 <=0;
    else if(cnt1 < 3'd6) cnt1<= cnt1 + 1'b1;
    else cnt1 <=0;
end

reg[2:0] cnt2;
always@(negedge clk or negedge reset)
begin
    if(!reset) cnt2 <=0;
    else if(cnt2 < 3'd6) cnt2<= cnt2 + 1'b1;
    else cnt2 <=0;
end

always@(*)
begin
     if(cnt2<3'd4 && cnt1<3'd4)  divclk <=1'b1;
     else divclk <=1'b0;
end

endmodule

//****************************************************************

posted on 2010-08-30 14:20  Neddy11  阅读(662)  评论(0)    收藏  举报