2013-04-08 4 views
0
module memory_module (input clk,input[0:6] address,input [0:7]data_input, 
    input read_write,output [0:7] data_output,input enable,output ready); 
    reg ready; 
    reg [0:7] data_output; 
    reg [0:7] memory [127:0]; 

    initial 
    begin 
     ready=0; 
    end 
    always @(posedge clk) 
    begin 
     if(enable) 
     begin 
      ready=0; 
      if(read_write) 
      begin 
        data_output[0:3]= memory[address][0:3]; 
        data_output[4:7]= memory[address][4:7]; 
      end 
      else 
      begin 
             memory[address][4:7]=data_input[4:7]; 
             memory[address][0:3]=data_input[0:3]; 
      end 
      ready=1; 
     end 
     else 
      ready=0; 
    end 
endmodule 

Вот мой простой Verilog код для дизайна модуля памяти (я хочу, чтобы мой код более эффективным)как я могу уменьшить размер мультиплексора

Кроме того, когда я пишу data_output [0: 7] = память [ адрес] [0: 7]; он создает 8x1 мультиплексор

пути написания

data_output[0:3]= memory[address][0:3]; 
data_output[4:7]= memory[address][4:7]; 

я уменьшив их размер или нет мультиплексора ???

;

ответ

1

Нет, разломы, как будто они будут одинаковыми по размеру.

Вы думаете, что здесь вы стоите на значении адреса, поэтому я не понимаю, почему вы думаете, что у вас есть мультиплексор 8x1. У вас есть 128 возможных адресов, поэтому, если вы мультиплексируете их на выходе, у вас должен быть 8-битный 128-к-1 мультиплексор.

Если вы разделите его, тогда у вас будет два 4-х битных 128-к-1 мультиплексора, что в точности аналогично синтезу.

+0

Могу ли я уменьшить размер мух. – TLE

+0

Нет, если вы хотите построить 128-элементный драм с мультиплексорами. Почему вы хотите уменьшить размер? – Tim

+0

Так что я могу сделать 2-мерный массив моей памяти, такой как 32X8 – TLE

Смежные вопросы