马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
我运行的时候总是出现parameter那段有问题 这个基本功不是很扎实 帮我看看问题在哪 先谢谢了 module
int_div(clock,clk_out); //I/O口声明 input
clock;
//输入时钟 output
clk_out;
//输出时钟 //内部寄存器 reg
clk_p_r;
//上升沿输出时钟 reg clk_n_r;
//下降沿输出时钟 reg[F_DIV_WIDTH - 1:0] count_p;
//上升沿脉冲计数器 reg[F_DIV_WIDTH - 1:0] count_n;
//下降沿脉冲计数器 //参数--分频系数 parameter F_DIV = 12;
//分频系数<<<<-----修改这里改分频系数 parameter F_DIV_WIDTH = 16;
//分频计数器宽度 wire full_div_p;
//上升沿计数满标志 wire half_div_p;
//上升沿计数半满标志 wire full_div_n;
//下降沿计数满标志 wire half_div_n;
//下降沿计数半满标志 //判断计数标志位置位与否 assign full_div_p = (count_p < F_DIV - 1); assign half_div_p = (count_p < (F_DIV>>1) - 1); assign full_div_n = (count_n < F_DIV - 1); assign half_div_n = (count_n < (F_DIV>>1) - 1); //时钟输出 assign
clk_out = (F_DIV == 1) ?
clock : (F_DIV[0] ? (clk_p_r & clk_n_r) : clk_p_r);
//上升沿脉冲计数 always @(posedge clock) begin
if(full_div_p)
begin
count_p <= count_p + 1;
if(half_div_p)
clk_p_r <= 1'b0;
else
clk_p_r <= 1'b1;
end
else
begin
count_p <= 0;
clk_p_r <= 1'b0;
end
end //下降沿脉冲计数 always @(negedge clock) begin
if(full_div_n)
begin
count_n <= count_n + 1;
if(half_div_n)
clk_n_r <= 1'b0;
else
clk_n_r <= 1'b1;
end
else
begin
count_n <= 0;
clk_n_r <= 1'b0;
end
end endmodule |