|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
1:输入脉冲reply,在window的高电平区间内,是关于两种回报脉冲的输入信号,其中DX信号为脉宽8us(误差2us),FOP信号为脉冲17us(误差上下2us),两种信号可能同时出现,可能都不出现,或者出现其中一种。
2:window信号,是输入的识别窗口信号,周期20ms,高电平6.67ms
3:要求检测到DX信号时,输出dout_dx,检测到FOP信号时,输出dout_fop。
仿真波形,输入的REPLY只有FOP,脉宽在18us左右,但是dout_dx也输出了信号。
询问下: 这个程序代码该如何改,知道错哪,但是就不知道怎么改。
自己的程序代码如下,但是只能识别FOP信号,对于DX信号无法识别。
module fop_drive(clk,rst,reply,window,dout_fop,dout_dx);
input clk;
input rst;
input reply;
input window;
output dout_fop;
output dout_dx;
reg [4:0] cnt_kuan ;
//reg [4:0] cnt ;
reg mid;
// reg temp; //middle signal
// reg temp_rst; //the reset of the middle signal
reg cnt_rst;
reg fop_t;
reg dx_t;
always @(posedge clk or posedge rst)
begin
if (rst)
mid<=0;
else
mid<= reply && window;
end
always @(posedge clk or posedge rst)
begin
if(rst)
cnt_kuan<=0;
else if(mid)
cnt_kuan<=cnt_kuan+1'b1;
else if(cnt_rst)
cnt_kuan<=0;
else
cnt_kuan<=cnt_kuan;
end
always @(negedge mid)
begin
if(mid==0)
cnt_rst<=1;
else
cnt_rst<=0;
end
always @(posedge clk or posedge rst)
begin
if(rst)
begin
fop_t<=0;
end
else if((cnt_kuan>14)&&(cnt_kuan<19))
fop_t<=1;
else
fop_t<=fop_t;
end
always @(posedge clk or posedge rst)
begin
if(rst)
begin
dx_t<=0;
end
else if((cnt_kuan>5)&&(cnt_kuan<10))
dx_t<=1;
else
dx_t<=dx_t;
end
assign dout_fop = ~fop_t;
assign dout_dx = ~dx_t;
endmodule |
|