请教高手!!!
module pulse_counter_task_logic(divide_clk,
reset_n,
pulse_pos_input,
pulse_neg_input,
pulse_result,
pre_pulse_pos_1,
pre_pulse_neg_1,
);
input divide_clk; //Input Clock to be divided
input reset_n; //Reset
input pulse_pos_input; //input pulse positive
input pulse_neg_input; //input pulse negative
output pulse_result; // output pulse counter
output pre_pulse_neg_1;
output pre_pulse_pos_1;
reg pulse_result_r; //output pulse counter register
reg pre_pulse_pos; //pulse counter temporary register
reg pre_pulse_neg;
//clock divide Process
always @(posedge divide_clk or negedge reset_n)
begin
if (~reset_n)
pulse_result_r <= 8'h0;
else if (divide_clk)
pulse_result_r <= pre_pulse_pos + pre_pulse_neg;
else
pulse_result_r <= pulse_result_r;
end
// pulse measure process
always @(negedge pulse_pos_input or posedge divide_clk or negedge reset_n)
begin
if((~reset_n) | divide_clk )
begin
pre_pulse_pos <= 8'h0; //clear the pre_pulse
end
else
begin
pre_pulse_pos <= pre_pulse_pos + 8'h1;
end
end
always @(negedge pulse_neg_input or posedge divide_clk or negedge reset_n)
begin
if((~reset_n) | divide_clk )
begin
pre_pulse_neg <= 8'h0; //clear the pre_pulse
end
else
begin
pre_pulse_neg <= pre_pulse_neg - 8'h1;
end
end
assign pulse_result = pulse_result_r;
//assign irq = divide_clk;
assign pre_pulse_pos_1 = pre_pulse_pos;
assign pre_pulse_neg_1 = pre_pulse_neg;
endmodule
用quartusII自带的仿真器仿真出来的pulse_result 为什么无输出请教高手?
是程序问题 还是仿真设置问题
收藏 分享 else if (divide_clk),这个条件不对,如果你要采时钟的高电平,那你还得想其他方法采集,在本时钟的上升怎么可能猜到本时钟的高电平,当然没结果了 异步复位信号的处理也有问题; 回复 2# 至芯兴洪
感谢你的回复。后两个模块调试过,没什么问题。第一个always模块中,若有posedge divide_clk ,divide_clk就为1啊? 回复 4# fight
还有就是,后面的always块中,也用posedge divide_clk敏感信号,检测divide_clk为高电平,确实起到了清零的作用啊 if (~reset_n)
“~”用的不对, 应该用“!” 回复 6# weifhfpgapc
两者都可以吧 小伙子我怎么没有看到你的激励文件部分,你这个市一个工程文件,还要给出具体的激励部分才行,就是几假设输入条件是什么样子的。否则module不知道要给你出什么样的东西。 回复 8# zhouhuaguo
回复 9# fight
最终的工程框图,不知道您说的激励文件是指???
页:
[1]
2