Notice
Recent Posts
Recent Comments
Link
관리 메뉴

거북이처럼 천천히

Verilog RTL 설계(7월 16일 - 2, SRAM) 본문

RTL Design/Verilog RTL 설계

Verilog RTL 설계(7월 16일 - 2, SRAM)

유로 청년 2024. 7. 16. 20:44

1. SRAM 

  • 8bit PIPO Register를 1024개 엮어서 8192bit = 8kbit 크기를 갖는 레지스터를 생성해보자.
  • 8bit PIPO Register 자료형을 갖는 배열을 생성하고, 배열의 사이즈를 1024개 갖도록 한다.
  • 1024개의 레지스터 중에서 하나의 레지스터를 선택하기 위해서 10bit 크기를 갖는 Selector가 필요하다.
  • 10bit Selector를 통해 해당 레지스터에 접근하여 Read / Write 작업을 수행 할 수 있다.

 

< Source >

module SRAM_implemented_with_D_Flip_Flop(
    input clk, enable, reset_p,
    input read_enable_p, write_enable_p,
    input [9:0] memory_address,
    inout [7:0] data );
    
    // 자료형이 reg [7:0] ( = 8bit register)이며, 
    // 배열의 사이즈가 1024이다.
    reg [7:0] register [1023:0];
    
    always @(posedge clk) begin
        if(enable) 
            if(write_enable_p) register[memory_address] = input_data;
    end
    
    assign output_data = (read_enable_p)? register[memory_address] : 'bz;
    
endmodule
  • reg [7:0] register [1023:0];
    ▶ 배열의 자료형은 reg [7:0] 이며, 배열의 사이즈는 1024이다.
  • ★★★★★★
    Q) inout 자료형은 무엇인가?
    A) input과 Output을 동시에 수행할  수 있는 wire을 의미하며, 동시에 Read 와 Write 작업을 수행할 수 없기 때문에 사용시 주의가 필요하다.
  • read_enable_p , write_enable_p 값에 따라 레지스터에 데이터를 write 및 read 작업을 제어한다.