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 lit des valeurs erronées
J'ai lu testvect.tv mais tb_a et MSB sont portés disparus et de LSB tb_b est défini comme 0
0000_0001->0000_0002
0000_0002->0000_0004
FFFF_FFFF->FFFF_FFFE
FFFF_FFFE->FFFF_FFFC
8000_0001->0000_0002
Comment puis-je résoudre ce problème? Si j'utilise readmemb, cela fonctionne bien.
Si j'affecte des valeurs, cela fonctionne bien.
Pourquoi cela est-il arrivé?
Je n'ai pas besoin d'exécuter votre code, mais à quoi ça ressemble, il y a un décalage de 1 bit après readmemh. –
Copie possible de [La valeur est décalée lorsque j'utilise readmemh dans verilog] (https://stackoverflow.com/questions/46264646/value-is-shifted-when-i-use-readmemh-in-verilog) – Greg
Voilà ma question . –