module tb_alu32();
reg clk, reset;
reg [31:0] tb_a, tb_b, tb_yexpected;
reg [2:0] tb_op;
wire [31:0] tb_result;
reg[31:0] vectornum, errors;
reg[99:0] testvectors[10000:0];
...
always
begin
clk=0;#5;clk=1;#5;
end
$readmemh("C:/altera/13.0/practice/week3/alu32/testvect.tv",testvectors);
always @ (posedge clk)
begin
#1; {tb_a,tb_b,tb_op,tb_yexpected} = testvectors[vectornum];
end endmodule
readmemh liest Werte falsch
Ich las testvect.tv aber tb_a und MSB tb_b fehlen und LSB gesetzt 0 wie
0000_0001->0000_0002
0000_0002->0000_0004
FFFF_FFFF->FFFF_FFFE
FFFF_FFFE->FFFF_FFFC
8000_0001->0000_0002
Wie kann ich dieses Problem lösen? Wenn ich readmemb verwende, funktioniert es gut.
Wenn ich Werte zuweisen, funktioniert es gut.
Warum ist es passiert?
Ich habe Ihren Code nicht ausgeführt, aber wie es aussieht, gibt es eine Linksverschiebung um 1 Bit nach Readmemh. –
Mögliches Duplikat von [Wert wird verschoben, wenn ich readmemh in Verilog verwende] (https://stackoverflow.com/questions/46264646/value-is-shifted-when-i-use-readmemh-in-verilog) – Greg
Das ist meine Frage . –