MIPS DataMemory Verilog - PullRequest
       14

MIPS DataMemory Verilog

1 голос
/ 27 мая 2019

Это код памяти данных компьютера MIPS, который я скачал в GitHub (https://github.com/mhyousefi/MIPS-pipeline-processor) В этом коде я не мог понять значение этой строки.

назначить dataOut = (адрес <1024)? 0: {dataMem [base_address], dataMem [base_address + 1], dataMem [base_address + 2], dataMem [base_address + 3]}; </p>

Почему у этого оператора 3 (адрес <1024)? </p>

`include "defines.v"
//WORD_LEN = 32
//MEM_CELL_SIZE = 8
//DATA_MEM_SIZE = 1024
module dataMem (clk, rst, writeEn, readEn, address, dataIn, dataOut);

  input clk, rst, readEn, writeEn;

  input [`WORD_LEN-1:0] address, dataIn;

  output [`WORD_LEN-1:0] dataOut;

  integer i;
  reg [`MEM_CELL_SIZE-1:0] dataMem [0:`DATA_MEM_SIZE-1];

  wire [`WORD_LEN-1:0] base_address;

  always @ (posedge clk) begin
    if (rst)
      for (i = 0; i < `DATA_MEM_SIZE; i = i + 1)
        dataMem[i] <= 0;
    else if (writeEn)
      {dataMem[base_address], dataMem[base_address + 1], dataMem[base_address + 2], dataMem[base_address + 3]} <= dataIn;
  end

  assign base_address = ((address & 32'b11111111111111111111101111111111) >> 2) << 2;
  assign dataOut = (address < 1024) ? 0 : {dataMem[base_address], dataMem[base_address + 1], dataMem[base_address + 2], dataMem[base_address + 3]};
endmodule // dataMem

Согласно этому коду, я думаю, что адрес памяти данных под 1024 получает 0 вывод. и только выше адреса 1024 можно получить данные, хранящиеся в памяти.

Я правильно думаю? тогда почему при 1024 адресе должно получиться 0?

Если я ошибаюсь, зачем (адрес <1024) нужно? </p>

...