7주차 FPGA 보드 사용법
실습 FPGA 보드 실습 ① A,B 의 입려에 AND, OR, XOR 게이트를 실험하는 예제 - X,Y,Z 의 출력은 각각 LED 1,2,3을 컨트롤 할 수 있음 - 해당 회로에 대한 시뮬레이션까지 확인 하기
FPGA 보드 실습 실습 ① ISE 실행하여 ISE 프로그램의 File > New Project 메뉴를 선택
실습 FPGA 보드 실습 ① 다음과 같이 프로젝트 설정을 한다 Name : 프로젝트이름 Location : 원하는 위치 Working Directory : 원하는 위치 -> C\일 경우 관리자권한으로 실행 Top-level source type : HDL Device Family : Spartan-6 Device : XC6SLX45 Package : FGG484 Speed : -3 Simulator : ISim(VHDL/Verilog)
FPGA 보드 실습 실습 ① PNULib의 .v파일 Add ② 플로리안에서 생성한 Verilog 파일 불러오기
실습 FPGA 보드 실습 ① ISE 소프트웨어의 Process 창에서 Syntheize-XST 부분에서 마우스 오른쪽 버튼으로 클릭한 후 , Run으로 문법체크 및 논리 합성 과정 진행
실습 FPGA 보드 실습 ① 최종 목적인 FPGA 보드에 프로그램을 위해 디바이스의 핀 위치를 설정 - Process 창에서 User Constraints > I/O Pin Planning 부분을 마우스 오른쪽 버튼으로 클릭하여 Run 메뉴를 선택 - 다음과 같은 메시지가 나타나면 Yes 버튼을 클릭한다. 핀 설정을 위한 UCF 파일을 생성하여 프로젝트에 추가할 것인지를 묻는 부분
FPGA 보드 실습 Pin 할당 에러 * ERROR: no available run directory could be found. You can use Project-> Cleanup to delete existing planAhead_run directories… planAhead_run.log파일 삭제 파일 경로 : [프로젝트 위치]\planAhead_run_[num]\ planAhead_run.log
실습 FPGA 보드 실습 ① Yes를 누르면 PlanAhead 라는 소프트웨어가 실행되며 다음과 같은 화면임 - 아래 표는 실습과정에서 필요한 PIN번호를 나타냄
실습 FPGA 보드 실습 ① 아래와 같이 PIN설정이 끝나면 저장 후 PlanAhead 소프트웨어를 종료 ② Fixed 체크 확인
실습 FPGA 보드 실습 ① ISE에서 시뮬레이션이 가능하지만 플로리안에서 시뮬레이션까지 끝난 코드이므로 바로 장비에 프로그래밍 하여 테스트 - Process 창의 Generate Programming File 부분을 마우스 오른쪽 버튼으로 선택하여 Run 메뉴를 실행 * Synthesize 부터 bitstream 까지 진행
FPGA 보드 실습 실습 ① Error 없이 Generate 가 됬다면, Configure Target Device 부분을 확장시켜 Manage Configuration Project(iMPACT)을 실행
FPGA 보드 실습 실습 ① 아래 iMPACT 가 실행된다면, Boundary Scan을 더블클릭 후File -> Initialize Chain 으로 연결된 디바이스를 찾음
실습 FPGA 보드 실습 ① Generate된 bit 파일을 불러옴 - bit파일이 verilog파일은 합성 및 bitstream 으로 생성된 파일
실습 FPGA 보드 실습 ① 메세지 창이 뜨면 추가 Prom을 사용하지 않으므로 No를 선택 또한 디바이스가 Scan됬다면 OK 선택
실습 FPGA 보드 실습 ① 마지막으로 최종 Program 시키면 디바이스에서 Test 가 가능함 * 디바이스 전원 연결이 되어있지 않거나 JTAG가 연결되어 있지 않음 => 디바이스 Scan 불가
FPGA 보드 실습 Clock 사용 ① FPGA clock Pin번호 : AB16 clock 사용 시 에러 발생
Clock 사용 FPGA 보드 실습 ① clock을 사용하는 모듈->마우스오른쪽 ->Add Source-> 모듈의 .ucf 파일선택 ② .ucf파일을 열어 NET “[clock포트이름]" CLOCK_DEDICATED_ROUTE = FALSE; 추가