FPGA占空比为50%的奇数分频

实现对输入信号CLK的7分频,同时得到了占空比为50%的方波信号,程序中采用了两个计数器,一个由输入时钟CLK上升沿触发,另一个由输入时钟下降沿触发,两个分频器的输出信号正好有半个时钟周期的相位差,最后将两个计数器的输出相或,即得到了占空比为50%的方波波形
test.v


module test(clk,reset,out);
input reset,clk;
output out;
wire out;
reg cout1,cout2;
reg[2:0] m,n;
assign out=cout1|cout2;
always@(posedge clk or negedge reset)
begin
if(!reset)begin m<=0;cout1<=0;end
else begin
if(m==6)begin m<=0;end
else m<=m+1;
if(m==2)cout1=~cout1;
if(m==5)cout1=~cout1;
end
end

always@(negedge clk or negedge reset)
begin
if(!reset)begin n<=0;cout2<=0;end
else begin
if(n==6)begin n<=0;end
else n<=n+1;
if(n==2)cout2=~cout2;
if(n==5)cout2=~cout2;
end
end

endmodule


test_tb.v


timescale 10ns/1ns
include “test.v”
module test_tb;

reg clk,reset;
wire out;

test test1(clk,reset,out);
always#10 clk=~clk;
initial begin
#10 clk=0;

#30 reset=0;
#10 reset=1;

end
endmodule


这里写图片描述

提示:reset信号时间尽量晚一些,至少要一个clk的到来时间

你可能感兴趣的:(FPGA)