|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
我想做一个脉冲发生器,
要求:一次发送两个脉冲,第一个脉冲宽度可调,第二个脉冲宽度给定,两个高电平之间的低电平宽度和后一个高电平宽度相同。
我的程序如下,仿真时,结果又问题--------无输出波形。
我是个新手,请哪位高手指点迷津。谢谢。
`timescale 1ns/10ps
module pul(a, b,c,d,e,EN,CLK,pul_1,clk_1KHz);
input CLK,a,b,c,d,e,EN;
output pul_1,clk_1KHz;
//reg[3:0] h;
//wire clk_1KHz;
//reg[13:0] max=225;
reg coun,counter,key1,key2,key3,key4,key5;
reg h = 0,pul = 0,clk_1,x;
always @(EN)
if(!EN)
begin
key1<=8'd5;
key2 <=8'd10;
key3 <=8'd15;
key4 <=8'd20;
key5 <=8'd25;
//coun <= key1*a+key2*b+key3*d+key4*d+key5*e;
//h <=0;
//pul <= 0;
end
always@(posedge CLK)
begin
counter <= counter + 1;
if(counter==10)
begin
clk_1 = ~clk_1;
counter <= 0;
end
end
always@(posedge a or posedge b or posedge c or posedge d or posedge e)
begin
x <= key1*a+key2*b+key3*d+key4*d+key5*e;
//pul <= 1;
end
always@(posedge clk_1)
begin
if(x!= 0)
coun <= x;
if(coun != 0)
begin
coun <= coun - 1;
if(coun == 0)
h<=h+1;
if(0<h<4 && coun == 0)
begin
pul <= ~pul;
coun<=key1;
end
end
end
assign clk_1KHz = clk_1;
assign pul_1 = pul;
endmodule |
|