본문 바로가기

IT

Xilinx ucf 파일에서 Pin mapping 하기

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

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


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


# ==== 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를 주는 것이 목적이다.

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

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