/* ************************************************************ */ declare RAM_PROM { input AD_i[3] ; // Address (in) output DB_o1[8] ; // Read Data (out) / Asynchronous output DB_o2[8] ; // Read Data (out) / Clock synchronous input CS_i ; // Chip select (in) input REN_i ; // Read enable (in) } /* ************************************************************ */ // Declare module module RAM_PROM { /* ************************************************************ */ // Internal operation signals mem mem_array [8][8] = { 0x01, 0x02, 0x03, 0x04, // C like statement 8'b10010110, // Binary data 8'o70, // Octal data 8'd254, // Decimal data 8'hAC // Hex decimal data } ; // In this case, initial values are setted as follows : // mem_array[0] = 1 // mem_array[1] = 2 // mem_array[2] = 3 // mem_array[3] = 4 // mem_array[4] = 0x96 // mem_array[5] = 0x38 // mem_array[6] = 0xFE // mem_array[7] = 0xAC reg clocked_rdout[8] ; /* ************************************************************ */ // Equation { // Asynchronized output if ( CS_i & REN_i ) { DB_o1 = mem_array[AD_i] ; } else { DB_o1 = 8'h00 ; } // Clock synchronized output if ( CS_i & REN_i ) { clocked_rdout := mem_array[AD_i] ; } else { clocked_rdout := 8'h00 ; } DB_o2 = clocked_rdout ; } /* ************************************************************ */ }