VHDL

ROM memory (Read Only Memory) VHDL

전자자연인 2021. 6. 9. 21:42
반응형

1. ROM (READ ONLY MEMORY)

ROM : 상수 형태로 저장된 data address를 변화시키면서 설계자의 사용 요구에 따라 읽을 수 있는 메모리이다. 전원이 끊어져도 정보가 없어지지 않는다. 이를 불휘발성 기억장치라 한다. data의 내용은 변하지 않는 규칙들을 사전에 메모리에 저장해놓고 필요시 data address를 제공하면 그 address에 있는 data가 출력된다.

read only memory 이기 때문에, clock or wirte-enable 핀또한 필요없고, 별도의 제어신호가 필요하지 않다.

ex ) addr0 -> Data0

 

 

 

2.소스코드 및 설명

 

 

13: rom_word  8비트(7부터0내림차순)의 로직벡터형 subtype 정의

14: rom_table (0부터7까지 배열index) rom_word

 

16: constant는 상수선언 의미로 값을 유지한다. 0번의 index부터 차례로 7번의 index까지의 배열값을 차례대로 적어주었다.

 

22: read_addr란 값이 계속바뀌는 변수형으로 process문안에 사용한다. read_addr의 변수형은 integer 0부터7까지 정수를 가진다.

 

24: read_addr (정수0부터~7) integer형이고, conv함수를 이용하여 addr 3비트의 std_logic_vector형을 integer형으로 바꾸어 read_addr값에 전달한다.

 

25:data 8비트의 출력변수에 read_addr의 값에 따른 index rom의 배열값을 전달해주어 출력한다.

 

3.시뮬레이션 결과 및 설명

 

 

 

1. 입력3비트 addr logic_vector형은 000값이고, 이값이 integer형으로 conv함수로 인하여 치환하여 read_addr 변수에게 값을 전달한다. read_addr은 정수형이므로 0값이 되고,

rom(0) , rom 0index에 해당하는 값이 data로 전달되어 00000001이 출력된다.

 

2. 입력 3비트 addr의 값은 010이고 이값은 integer형으로 2이다, conv함수로 인하여 정수 2로 바꾸어서 read_addr 변수에게 값을 전달한다. rom 0번부터7번까지의 상수배열이고,

rom(2), rom 2 index에 해당하는 0000010값을 data에 전달해주어 출력된다.

 

3.입력 3비트 addr의 값은 100이고 integer형으로 4로 변환하여 정수4 read_addr 변수에게 값을 전달한다. rom(read_addr) = rom(4)가 되므로 4index에 해당하는 배열의 값을 data로 전달해주어 최종 출력해준다.

rom(4) = 00010000

 

4.addr의 입력값은 111, integer형으로 7 conv함수를 이용하여 read_addr(0부터7까지 범위의 값을 가지는 변수형)으로 전달해준다 read_addr값은 7이되고 rom(7) rom 7 index에 해당하는 배열의값 10000000 data로 전달되어 출력된다.

 

반응형