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 @*