2013-04-08 2 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];

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

내가 먹스 크기를 줄이거 나하고 있지 않다 서면에 의한 8X1 먹스

를 생성 ???

;

답변

1

아니요, 이렇게 부러 뜨리면 크기가 동일 해집니다.

당신은 여기에 주소의 가치를 섞어 놓고 있습니다. 그래서 나는 당신이 왜 8x1 먹스를 가지고 있다고 생각하는지 이해하지 못합니다. 128 개의 가능한 주소가 있으므로 출력에 mux를 적용하려면 8 비트 128 대 1 멀티플렉서가 있어야합니다.

위로 나누면 4 비트 128 대 1 멀티플렉서가 두 개 생성됩니다. 합성은 정확히 동일합니다.

+0

내 멀티플렉서 크기를 줄일 수 있습니까? – TLE

+0

멀티플렉서가있는 128 요소 드램을 제작하려는 경우가 아닙니다. 왜 크기를 줄이려고합니까? – Tim

+0

그래서 32X8과 같은 2 차원 배열을 만들 수 있습니다. – TLE