|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
[这个贴子最后由wjx197733在 2005/12/08 05:59pm 第 1 次编辑]
会Verilog的高手指点一下俺编的150:250分频器吧。仿真结果显示这个程序根本不能对输入时钟进行150:250分频!!
module divider(camclk,rst, clk_out);
input camclk,rst;
output clk_out;
reg clk_out;
reg high,low;
reg [7:0] rst_number_high;
reg [7:0] rst_number_low;
parameter count_rst_high=250, count_rst_low=150;
//开始对时钟信号进行150:250分频,产生clk_out.
always@(posedge camclk)
begin
if(rst)
begin
clk_out<=1'b0;
rst_number_high<=8'b0000_0000;
rst_number_low<=8'b0000_0000;
high <=1'b1;
low <=1'b0;//定义high和low的目的:让clk_out的高低电平不同时计数
end
else begin
if(low==0&&high==1) begin//开始高电平计数
if(rst_number_high==count_rst_high-8'b0000_0001)
begin
clk_out<=~clk_out;
rst_number_high<=8'b0000_0000;
low<=1;
high<=0;
end
else
rst_number_high<=rst_number_high+8'b0000_0001;
end
if(low==1&&high==0)begin//开始低电平计数
if(rst_number_low==count_rst_low-8'b0000_0001)
begin
clk_out<=~clk_out;
rst_number_low<=8'b0000_0000;
low<=0;
high<=1;
end
else
rst_number_low<=rst_number_low+8'b0000_0001;
end
end
end
endmodule
|
|