Xilinx/IPs

How to create COE file & generate ROM

mouessee 2022. 7. 9. 15:40
728x90
반응형

 

 

 

 Introduction

 

Vivado Tool에서 ROM IP를 생성하려면 ROM의 초기값을 설정하기 위한 COE 파일이 필요합니다. 여기서는 COE 파일을 어떻게 만들고 ROM IP를 생성할 때 어떻게 사용하는지 알아보겠습니다.

 

( COE 파일은 RAM IP를 생성할 때에도 초기값으로 사용할 수 있습니다.)

 

Test를 위한 PC 사용환경은 다음과 같습니다.

 

 

 

728x90

 

 

 

 Create a COE file

 

COE file의 형식 확인 및 파일을 만들어 보겠습니다.

 

 

1.

다음과 같은 주소와 데이터 값을 가지는 ROM을 구성하려고 합니다.

( Address Depth : 8 개, Data Width : 8 Bits 입니다. )

 

Address Data (Hex)
0x00 12
0x01 34
0x02 56
0x03 78
0x04 9A
0x05 BC
0x06 DE
0x07 FF

 

 

2.

위와 같은 ROM으로 구성하기 위하여 다음과 같이 "aaa.coe" file을 작성합니다.

";" 이 후 라인의 글은 주석으로 봅니다.

memory_initialization_radix = 16은 Hex를 의미합니다.

memory_initialization_radix = 2는 Binary를 의미합니다.

 

 

COE file

 

3.

COE file 작성에 대한 보다 자세한 내용은 아래 링크의 내용을 참고하세요.

 

Xilinx web-site : COE File Syntax

 

 

4.

이렇게 작성한 COE file은 Vivado에서 ROM IP를 생성할 때 필요합니다.

 

aaa.coe
0.00MB

 

 

 

 Using a COE file

 

Vivado에서 ROM IP를 생성할 때 어떻게 COE file을 사용하는지 알아보겠습니다.

 

 

1.

다음과 같이 IP Catalog에서 Block Memory Generator를 실행합니다.

 

IP Catalog

 

 

2.

Customize IP 윈도우에서 Component Name에 "Test_ROM"이라고 기입합니다.

( Component Name은 원하는 다른 이름으로 사용하여도 됩니다. )

그리고 Memory Type을 Single Port ROM을 선택합니다.

 

Block Memory Generator

 

3.

Port A Options 텝에서 ( "aaa.coe" 파일이 Address Depth : 8 개, Data Width : 8 Bits 이므로 )

Port A Width, Port A Depth에 각각 8을 기입합니다.

 

Block Memory Generator

 

 

4.

"Other Options" 텝에서 "Load Init File"을 Check 합니다.

그리고 "Browase" 버튼을 클릭하여 앞서 작성한 COE file을 선택합니다.

OK 버튼을 클릭합니다.

 

Block Memory Generator

 

5.

이렇게 "aaa.coe"의 내용을 가지는 "Test_ROM" 이라는 Name의 ROM IP를 생성하였습니다.

 

 

 

 Simulation

 

Vivado에서 ROM IP를 Vivado의 Run Simulation에서 "aaa.coe" 파일의 내용과 같이 Address에 따라 Data가 출력되는지 확인하여 보겠습니다.

 

 

1.

아래와 같이 Vivado의 Run Simulation에서 "aaa.coe" 파일의 내용과 같이 Address에 따라 Data가 출력됨을 확인할 수 있습니다.

 

Vivado Simulation

 

 

2.

아래는 Simulation을 진행한 Vivado 2022.1 Project 파일 입니다.

 

Test_ROM_ex.zip
11.11MB

 

 

 


 

지금까지 COE 파일을 어떻게 만들고 ROM IP를 생성할 때 어떻게 사용하는지에 대하여 알아보았습니다.
여러분의 FPGA 설계에 조금이라도 도움이 되었으면 합니다.
오늘도 좋은 하루 되세요.

(공감, 구독, 댓글은 저에게 힘이 됩니다!)

 

 

 


Create Date: July 09, 2022

Posted By: Mouessee

 

 

 

Xilinx 본사는 한국 내에 Corporate and Sales Distributor로 MAKUS를 두고 있습니다.
Xilinx 국내 Corporate and Sales Distributor인 MAKUS는 XIlinx FPGA Device를 기술영업을 통해 판매하며 기술지원이 가능합니다.
MAKUS www.makus.co.kr

 

 

 


관련 BLOG

------------------------------

------------------------------

 

 

 

 

728x90
반응형