微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > verilog程序问题请教

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

乱七八糟,reg coun,counter,key1,key2,key3,key4,key5;位宽都没有!

果然很新

比我还强点

呵呵。

这写的是哪门子语言?

而且有些信号没有给复位逻辑,会导致不定态的出现。关键位宽的问题很严重。

同学,VHDL里难到没有位宽的限制?
verilog里reg默认是1位宽的,你这样不就只能在0和1之间跳,当然没输出了

需要设置bit宽度

呵呵!慢慢练习!都是这样成长起来的!

上一篇:DFT问题求解!~~
下一篇:求dft脚本

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top