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,
);
//Inputs
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 [7:0] pulse_result; // output pulse counter
//output irq;
output [7:0]pre_pulse_neg_1;
output [7:0]pre_pulse_pos_1;
//output [7:0]a;
//Signal Declarations
//reg [6:0] counter_ten;
//reg [24:0] counter; //Internal Counter
reg [7:0] pulse_result_r; //output pulse counter register
reg [7:0] pre_pulse_pos; //pulse counter temporary register
reg [7:0] pre_pulse_neg;
//计算两输入脉冲pulse_pos_input与pulse_neg_input的和值
always @( posedge divide_clk or negedge reset_n)
begin
if (~reset_n)
pulse_result_r <= 8'h0;
else if(divide_clk)
begin
//b<= pre_pulse_pos ;
pulse_result_r <= pre_pulse_pos + pre_pulse_neg;
end
else
pulse_result_r <=pulse_result_r ;
end
// pulse measure process
//计算每次在divide_clk=0时的pulse_pos_input 的输入脉冲数
always @(negedge pulse_pos_input or posedge divide_clk or negedge reset_n)
begin
if((~reset_n) | divide_clk )
begin //复位 清零
#8 pre_pulse_pos <= 8'h0; //clear the pre_pulse
end
else
begin
pre_pulse_pos <= pre_pulse_pos + 8'h1;
end
end
//计算每次在divide_clk=0时的pulse_neg_input 的输入脉冲数
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 为什么无输出 请教高手?
注:后两个模块调试过 没有问题,
|