Xilinx ucf 파일 Pin mapping 방법

원하는 FPGA핀으로 시그널을 정의해서 뽑아 보려면, ucf 파일을 건드려야 한다.

물론 친절하게 GUI로 띄워서 클릭으로 선택할 수도 있지만, 기본적인 것은 알아야~~

 

기본적인 단어 내용은 아래 글을 참고하자.

https://velog.io/@kyoung99u/Xilinx

 

[Xilinx] UCF (User Constraints File)

User Constraints File (UCF) 사용자 constraints를 기술하기 위한 AXCII text 파일이다. 모듈 포트 신호들이 어떻게 물리적인 핀에 연결되어야 하는지 기술한다. 즉, 선언한 I/O 포트를 Push button과 User LED로 연

velog.io

 

예제로 보는 것이 가장 쉽다. 추상적인 내용은 보기도 이해도 어렵다.

 

# ==== Clock Source ==== 

NET "clock" LOC = "C9" | IOSTANDARD = LVCMOS33

NET "clock" PERIOD = 5ns HIGH 40%; 

 

# ==== Slide Switches (SW) ==== 

NET "reset" LOC = "L13" | IOSTANDARD = LVTTL | PULLUP ; # SW1

(from http://www.ce.rit.edu/studentresources/reference_materials/561/Spartan3E_FPGA_User%20Guide.pdf

Spartan3E_FPGA_User Guide.pdf
다운로드

 

어려운 것은 없다. 

단, 시그널 명은 합성하는 top의 시그널 명과 일치 시켜야 한다.

LOC는 핀 이름을 잘 보고 원하는 것을 정확하게 쓰면 되고

 

예제IOSTANDARD = LVTTL or LVCMOS33 이렇게 쓰고 있는데 그냥 통째로 이 구문을 안쓰고 돌리는 것이 대부분일 것이다. 붙이는 칩들이 옛날 칩을 쓰는 것이 아니라면

즉, NET "reset" LOC = "L13" | IOSTANDARD = LVTTL | PULLUP ; # SW1 <- 이렇게 사용하자.

 

마지막 파워온시에 기본 값을 줄 수 있는 

PULLUP or PULLDOWN은 유용할 듯 하다.

 

그리고, ucf 본연의 의무는 핀 할당도 있지만 여러가지 constraint를 주는 것이 목적이다.

결국 타이밍 정보를 여기에 정의해서 사용해야 한다.

복잡하니 이것은 다음에~~

 

맵핑 - 보드게임

Pixabay 님의 사진, 출처: Pexels