代码之家  ›  专栏  ›  技术社区  ›  Abhishek Tyagi

verilog中的BCD到7段解码器

  •  0
  • Abhishek Tyagi  · 技术社区  · 9 年前

    我正在编写模拟bcd到七段解码器的代码。当我这样做时,我在波形窗口(在Modelsim中)中看到红色和蓝色线条,这意味着输入未被驱动,输出处于未定义状态。但是当我通过强制值运行代码时,它会显示正确的结果。从这一点上,我能够找出问题出在我的测试台上。如果有人能看看我的代码并指出我做错了什么,我会非常感激。 代码

    //BCD to seven segment display
    module seven_segment;
    reg [3:0] BCD;
    wire [6:0] display;
    parameter stop_time = 200;
    
    
    bcd_seven n(display,BCD);       //Instantiation of the bcd to seven segment      display code
    
    initial #stop_time $finish;
    
    initial
    begin
    BCD = 0;
    #10 BCD = 1;
    #10 BCD = 2;
    #10 BCD = 3;
    #10 BCD = 4;
    #10 BCD = 5;
    #10 BCD = 6;
    #10 BCD = 7;
    #10 BCD = 8;
    #10 BCD = 9;
    end
    initial begin
    $monitor("display = %d BCD = %b",display,BCD);
    end
    endmodule 
    
    //Decsription of the BCD to seven segment display
    module bcd_seven(D,BCD);
    output  D; 
    reg [6:0] D;
    input [3:0] BCD;
    
    parameter BLANK = 7'b0000000;
    parameter ZERO = 7'b1111110;
    parameter ONE = 7'b0110000;
    parameter TWO = 7'b1101101;
    parameter THREE = 7'b1111001;
    parameter FOUR = 7'b0110011;
    parameter FIVE = 7'b1011011;
    parameter SIX = 7'b1011111;
    parameter SEVEN = 7'b1110000;
    parameter EIGHT = 7'b1111111;
    parameter NINE = 7'b1111011;
    
    //I have doubt especially in this section
    always @(BCD)
    case(BCD)
    0: D = ZERO;
    1: D = ONE;
    2: D = TWO;
    3: D = THREE;
    4: D = FOUR;
    5: D = FIVE;
    6: D = SIX;
    7: D = SEVEN;
    8: D = EIGHT;
    default: D = BLANK;
    endcase
    endmodule
    
    1 回复  |  直到 9 年前
        1
  •  0
  •   Barry Moss    9 年前

    我确实注意到你的代码中有一个错误。您缺少BCD=9的case语句。但这并不能解释你所看到的其他问题。