verilog程序问题请教
时间:10-02
整理:3721RD
点击:
我想做一个脉冲发生器,
要求:一次发送两个脉冲,第一个脉冲宽度可调,第二个脉冲宽度给定,两个高电平之间的低电平宽度和后一个高电平宽度相同。
我的程序如下,仿真时,结果又问题--------无输出波形。
我是个新手,请哪位高手指点迷津。谢谢。
`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
要求:一次发送两个脉冲,第一个脉冲宽度可调,第二个脉冲宽度给定,两个高电平之间的低电平宽度和后一个高电平宽度相同。
我的程序如下,仿真时,结果又问题--------无输出波形。
我是个新手,请哪位高手指点迷津。谢谢。
`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
乱七八糟,reg coun,counter,key1,key2,key3,key4,key5;位宽都没有!
果然很新
比我还强点
呵呵。
这写的是哪门子语言?
而且有些信号没有给复位逻辑,会导致不定态的出现。关键位宽的问题很严重。
同学,VHDL里难到没有位宽的限制?
verilog里reg默认是1位宽的,你这样不就只能在0和1之间跳,当然没输出了
需要设置bit宽度
呵呵!慢慢练习!都是这样成长起来的!
