T
tariq786
Guest
Hej venner,
Jeg har modelleret RAM i verilog.Koden er enkel se nedenfor.Jeg kan læse og skrive det uden problemer.Når jeg forsøger at få adgang til det fra prøvebænk ved hjælp af en ny instans, jeg får xxxxxxxxxxxxxxxxx.Kan nogen guide mig i retning af en løsning.
Bemærk, at jeg har adgang til RAM i andet modul i et større projekt, og jeg har til at skabe RAM tilfælde at få adgang til RAM.
Den, der hjælper dig med 50 til 100 point.tidshorisont 1ns / 1ps
modul REGFILE (
output reg [127] Rdata,
input [127] Wdata,
input CLK,
input Read,
input Skriv
);reg [127] RAM;
altid @ (posedge CLK, læse, skrive)
if (Læs)
begynd
Rdata = RAM;
ende
else if (Skriv)
begynd
RAM = Wdata;
endeendmodule/*********************************************** Test Bench ********/
`tidshorisont 1ns / 10PSmodul test;reg CLK;
reg læse, skrive;
reg Read1, Write2;
reg [127] X;
wire [127] Y;
wire [127] Z;indledende
begynd
CLK = 0;
X = 128'b0;
endealtid
begynd
# 5 CLK = ~ clk;
endeindledende
# 15 Skriv = 1;
indledende
# 25 Skriv = 0; / / stop skrivning
indledende
begynde # 25 Læs = 1; Read1 = 1; ende
indledende
begynde # 35 Læs = 0; Read1 = 0; endeREGFILE U0 (. Rdata (Y),
. Wdata (X),
. CLK (CLK),
. Read (Læs),
. Write (Write)
);
REGFILE U1 (. Rdata (Z),
. Wdata (X),
. CLK (CLK),
. Læs (Read1),
. Write (Write1)
);indledende
$ skærm ($ tid, "er X% t, Y% H, Z er% h Læs er% d, Skrivning er% d \ n", X, Y, Z, læse, skrive);
endmodule/**************** Simulation Resultat ******************************* *** /# 0, X er 00000000000000000000000000000000, Y er xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx, Z er xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Read er x, Skrivning er x
#
# 15, X er 00000000000000000000000000000000, Y er xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx, Z er xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Read er x, Skrivning er 1
#
# 25, X er 00000000000000000000000000000000, Y er 00000000000000000000000000000000, Z er xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Read er 1, Skrivning er 0
#
# 35, X er 00000000000000000000000000000000, Y er 00000000000000000000000000000000, Z er xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Read er 0, Skriv er 0Tilføjes efter 1 timer 10 minutter:For at gøre tingene mere klart, hvordan ville jeg læse og skrive RAM i forskellige moduler af mit projekt at sikre, at jeg har en enkelt RAM som jeg læser eller skriver i forskellige moduler af mit projekt?
Jeg har modelleret RAM i verilog.Koden er enkel se nedenfor.Jeg kan læse og skrive det uden problemer.Når jeg forsøger at få adgang til det fra prøvebænk ved hjælp af en ny instans, jeg får xxxxxxxxxxxxxxxxx.Kan nogen guide mig i retning af en løsning.
Bemærk, at jeg har adgang til RAM i andet modul i et større projekt, og jeg har til at skabe RAM tilfælde at få adgang til RAM.
Den, der hjælper dig med 50 til 100 point.tidshorisont 1ns / 1ps
modul REGFILE (
output reg [127] Rdata,
input [127] Wdata,
input CLK,
input Read,
input Skriv
);reg [127] RAM;
altid @ (posedge CLK, læse, skrive)
if (Læs)
begynd
Rdata = RAM;
ende
else if (Skriv)
begynd
RAM = Wdata;
endeendmodule/*********************************************** Test Bench ********/
`tidshorisont 1ns / 10PSmodul test;reg CLK;
reg læse, skrive;
reg Read1, Write2;
reg [127] X;
wire [127] Y;
wire [127] Z;indledende
begynd
CLK = 0;
X = 128'b0;
endealtid
begynd
# 5 CLK = ~ clk;
endeindledende
# 15 Skriv = 1;
indledende
# 25 Skriv = 0; / / stop skrivning
indledende
begynde # 25 Læs = 1; Read1 = 1; ende
indledende
begynde # 35 Læs = 0; Read1 = 0; endeREGFILE U0 (. Rdata (Y),
. Wdata (X),
. CLK (CLK),
. Read (Læs),
. Write (Write)
);
REGFILE U1 (. Rdata (Z),
. Wdata (X),
. CLK (CLK),
. Læs (Read1),
. Write (Write1)
);indledende
$ skærm ($ tid, "er X% t, Y% H, Z er% h Læs er% d, Skrivning er% d \ n", X, Y, Z, læse, skrive);
endmodule/**************** Simulation Resultat ******************************* *** /# 0, X er 00000000000000000000000000000000, Y er xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx, Z er xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Read er x, Skrivning er x
#
# 15, X er 00000000000000000000000000000000, Y er xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx, Z er xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Read er x, Skrivning er 1
#
# 25, X er 00000000000000000000000000000000, Y er 00000000000000000000000000000000, Z er xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Read er 1, Skrivning er 0
#
# 35, X er 00000000000000000000000000000000, Y er 00000000000000000000000000000000, Z er xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Read er 0, Skriv er 0Tilføjes efter 1 timer 10 minutter:For at gøre tingene mere klart, hvordan ville jeg læse og skrive RAM i forskellige moduler af mit projekt at sikre, at jeg har en enkelt RAM som jeg læser eller skriver i forskellige moduler af mit projekt?