Verilog 无法获得正确的仿真波形结果

Verilog 无法获得正确的仿真波形结果,verilog,Verilog,///////////////////////试验台/////////////////////// module input_ram (clk, en, addr, data); input clk; input en; input [6:0] addr; output reg [7:0] data; always @(posedge clk) begin if (en) begi

///////////////////////试验台///////////////////////

module input_ram (clk, en, addr, data);

    input       clk;
    input       en;
    input [6:0] addr;
    output reg [7:0] data;

     always @(posedge clk) 
     begin
       if (en)
          begin 
      case(addr)
        7'b000: data = 8'b00110001;
        7'b001: data = 8'b00010000;
        7'b010: data = 8'b00100000;
        7'b011: data = 8'b11101101;
        7'b100: data = 8'b11100011;
        7'b101: data = 8'b00110011;
        7'b110: data = 8'b11110111;
        7'b111: data = 8'b00111011;

        7'b1000: data = 8'b00110001;
        7'b1001: data = 8'b00010000;
        7'b1010: data = 8'b00100000;
        7'b1011: data = 8'b11101101;
        7'b1100: data = 8'b11100011;
        7'b1101: data = 8'b00110011;
        7'b1110: data = 8'b11110111;
        7'b1111: data = 8'b00111011;

      7'b10000: data = 8'b00110001;
      7'b10001: data = 8'b00010000;
      7'b10010: data = 8'b00100000;
      7'b10011: data = 8'b11101101;
      7'b10100: data = 8'b11100011;
      7'b10101: data = 8'b00110011;
      7'b10110: data = 8'b11110111;
      7'b10111: data = 8'b00111011;

      7'b11000: data = 8'b00110001;
      7'b11001: data = 8'b00010000;
      7'b11010: data = 8'b00100000;
      7'b11011: data = 8'b11101101;
      7'b11100: data = 8'b11100011;
      7'b11101: data = 8'b00110011;
      7'b11110: data = 8'b11110111;
    7'b11111: data = 8'b00111011;

      7'b100000: data = 8'b00110001;
      7'b100001: data = 8'b00010000;
      7'b100010: data = 8'b00100000;
      7'b100011: data = 8'b11101101;
      7'b100100: data = 8'b11100011;
      7'b100101: data = 8'b00110011;
      7'b100110: data = 8'b11110111;
    7'b100111: data = 8'b00111011;

      7'b101000: data = 8'b00110001;
      7'b101001: data = 8'b00010000;
      7'b101010: data = 8'b00100000;
      7'b101011: data = 8'b11101101;
      7'b101100: data = 8'b11100011;
      7'b101101: data = 8'b00110011;
      7'b101110: data = 8'b11110111;
    7'b101111: data = 8'b00111011;


      7'b110000: data = 8'b00110001;
      7'b110001: data = 8'b00010000;
      7'b110010: data = 8'b00100000;
      7'b110011: data = 8'b11101101;
      7'b110100: data = 8'b11100011;
      7'b110101: data = 8'b00110011;
      7'b110110: data = 8'b11110111;
    7'b110111: data = 8'b00111011;

    7'b111000: data = 8'b00110001;
      7'b111001: data = 8'b00010000;
      7'b111010: data = 8'b00100000;
      7'b111011: data = 8'b11101101;
      7'b111100: data = 8'b11100011;
      7'b111101: data = 8'b00110011;
      7'b111110: data = 8'b11110111;
    7'b111111: data = 8'b00111011;
     7'b1000000: data = 8'b00110001;

        default: data = 8'b0000_XXXX;             
        endcase
        end
    end
    endmodule

我的问题是,当我的addr=0时,我想要我的数据,但在模拟结果中,最初的地址是00000000,数据线上没有数据,突然下一个时钟脉冲,addr=00000000数据上可用的数据=8'b00110001;将在addr=0000001时可用;
平均最终结论如何使我的数据与我的地址行并行我犯了错误,先生请纠正我

您当前在一个周期内对地址进行采样,然后使用顺序逻辑在下一个周期内驱动数据。您需要
数据
才能对您的地址进行组合解码

更改:

module ram_tst;

// Inputs
reg clk;
reg en;
reg [6:0] addr;

// Outputs
wire [7:0] data;

// Instantiate the Unit Under Test (UUT)
input_ram uut (
    .clk(clk), 
    .en(en), 
    .addr(addr), 
    .data(data)
);

initial 
begin
    clk = 0;
    addr =7'b0;
    en=1;

end
always #5 clk=~clk;

always @ (posedge clk )
begin 
addr = addr  + 7'b1;
$monitor ($time,"clk=%b,addr=%b,data=%b",clk,addr,data);

end         

endmodule
致:


但是,没有必要将
clk
输入到
input\u ram

先生,如果我要删除时钟,那么我将在什么基础上增加我的address@ShreyasPatel,toolic建议从
输入ram
中移除时钟,而不是从测试台上移除时钟。
always @(posedge clk) 
always @*