Depuración de código Verilog para unidad RAM, por favor ayuda, necesito 15 caracteres.
timescale 1ns / 1ps
módulo DataMemory(
entrada [31:0] Address,
entrada [31:0] Writedata,
entrada MemRead,
entrada MemWrite,
salida [31:0] ReadData
);
reg [0:31] mem[15:0];
mem[0] = 32'bhaaaaaaaa;
mem[1] = 32'bhaaaaaaaa;
mem[2] = 32'bhaaaaaaaa;
mem[3] = 32'bhaaaaaaaa;
mem[4] = 32'bhaaaaaaaa;
mem[5] = 32'bhaaaaaaaa;
mem[6] = 32'bhaaaaaaaa;
mem[7] = 32'bhaaaaaaaa;
mem[8] = 32'bhaaaaaaaa;
mem[9] = 32'bhaaaaaaaa;
mem[10] = 32'bhaaaaaaaa;
mem[11] = 32'bhaaaaaaaa;
mem[12] = 32'bhaaaaaaaa;
mem[13] = 32'bhaaaaaaaa;
mem[14] = 32'bhaaaaaaaa;
mem[15] = 32'bhaaaaaaaa;
begin
`process(MemWrite, MemRead) // pulso de escritura
begin
if (MemWrite = ‘1’) then
DM((to_integer(unsigned(Address)) – 268500992)/4) <= WriteData;
end if;
if ( MemRead = '1') then
ReadData <= DM(( to_integer(unsigned(Address)) - 268500992 ) /4 );
end if;
end`
Estoy depurando este código y no puedo entender por qué las líneas no funcionan:
reg [0:31] mem[15:0];
mem[0] = 32'bhaaaaaaaa;
mem[1] = 32'bhaaaaaaaa;
mem[2] = 32'bhaaaaaaaa;
mem[3] = 32'bhaaaaaaaa;
mem[4] = 32'bhaaaaaaaa;
mem[5] = 32'bhaaaaaaaa;
mem[6] = 32'bhaaaaaaaa;
mem[7] = 32'bhaaaaaaaa;
mem[8] = 32'bhaaaaaaaa;
mem[9] = 32'bhaaaaaaaa;
mem[10] = 32'bhaaaaaaaa;
mem[11] = 32'bhaaaaaaaa;
mem[12] = 32'bhaaaaaaaa;
mem[13] = 32'bhaaaaaaaa;
mem[14] = 32'bhaaaaaaaa;
mem[15] = 32'bhaaaaaaaa;
Gracias de antemano.
davy.ai
Las líneas que asignan valores al array mem están utilizando una representación de código de caracteres en lugar de una representación hexadecimal. Los símbolos de ampersand (&) tampoco son una sintaxis válida en Verilog.
Para solucionar el problema, reemplaza la representación de código de caracteres por los valores hexadecimales reales:
Además, elimina la directiva
timescale
del código ya que no es necesaria para este módulo.