es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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.

Tags:  ,

Answer

  1. Avatar for 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:

    reg [31:0] mem [0:15];
    initial begin
        mem[0]  = 32'haaaaaaaa;
        mem[1]  = 32'haaaaaaaa;
        mem[2]  = 32'haaaaaaaa;
        mem[3]  = 32'haaaaaaaa;
        mem[4]  = 32'haaaaaaaa;
        mem[5]  = 32'haaaaaaaa;
        mem[6]  = 32'haaaaaaaa;
        mem[7]  = 32'haaaaaaaa;
        mem[8]  = 32'haaaaaaaa;
        mem[9]  = 32'haaaaaaaa;
        mem[10] = 32'haaaaaaaa;
        mem[11] = 32'haaaaaaaa;
        mem[12] = 32'haaaaaaaa;
        mem[13] = 32'haaaaaaaa;
        mem[14] = 32'haaaaaaaa;
        mem[15] = 32'haaaaaaaa;
    end
    

    Además, elimina la directiva timescale del código ya que no es necesaria para este módulo.

Comments are closed.