반응형

02_Create project under VIVADO.pdf 를 참고하였다.

 

첫 번째로, 설치한 VIVADO 2018.3 을 실행한다.

 

프로젝트 설치를 위해 File > Project > New 를 선택한다.

 

New Vivado Project Wizard 가 나올 텐데, Next 를 누르고 

Project name 을 정해보도록 하자.

Project name : fpga_01_pl_led_stream
Project location : <use your own path>

 

Project location 같은 경우, 너무 깊게 Path 를 설정하면 오류가 날 수도 있다고 했으니 적당하게 C 드라이브에 폴더를 하나 생성하자. 예를 들자면 C:\VivadoProjects 같은게 좋겠다. 다음과 같은 경로로 설정한다.

 

 

다 했으면 Next 를 누른다.

 

 

이번에 Verilog 파일을 이용해 보드를 세팅할 계획이므로 RTL Project 로 만든다.

 

Add Sources, Add Constraints (optional)

: Skip (Next 누르기)

 

 

우리가 쓰는 칩을 고른다.

셀러가 친절하게도, 선택 기준에 대해 알려주고 있다.

Family : Zynq - 7000

Package : clg400

Speed : 7010은 -1, 7020은 -2

 

결론은 

Ver 7010 : xc7z010clg400-1

Ver 7020 : xc7z020clg400-2

 

지금 봤는데 7010이 LUT 나 FF 나 개수가 역시 적긴 하다. 7020이 7010에 비해 약 3배 정도 차이나는 듯 하다.

Next 선택하면 프로젝트 요약을 보여준다.

확인하고 Finish 를 선택해 프로젝트를 생성하자.

 


 

 

현재 프로젝트는 생성되었지만 프로젝트 내의 소스 파일이 없기 때문에 아무것도 실행할 수 없다.

좌측 상단 Project Manager > Add sources 를 선택해 소스 파일을 추가하자.

 

 

새로 디자인 소스를 추가한다. Next 선택

 

 

새로 파일 생성을 해야 하므로 Create File 을 선택

 

 

새 파일의 이름은 led_stream 으로 한다. OK > Finish 선택

 

끝나면 Define Module 창이 나올텐데, 그냥 OK > YES 로 넘기도록 하자.

간단하게 input / output 설정을 할 수 있는 창이라 넘겨도 무방하다.

 

 

그러면 led_stream.v 파일이 디자인 소스에 추가된 것을 확인할 수 있다.

더블클릭을 해서 파일을 연다.

 

 

Verilog 파일 하나가 생성되어 있는 것을 볼 수 있다.

이후 다음과 같은 코드를 붙여넣는다.

 

module led_stream(
    input i_Clk,          // 클럭 입력
    input i_Rst,          // 리셋 입력
    output reg [3:0] o_LED // LED 출력
);

// 카운터와 LED 번호를 저장하는 레지스터 변수 정의
reg [31:0] cnt;
reg [1:0] led_on_number;

// 클럭 주파수와 카운터의 최대 카운트 값을 설정하는 매개변수
parameter CLOCK_FREQ = 50_000_000;
parameter COUNTER_MAX_CNT = CLOCK_FREQ/2 - 1;

// 클럭 신호의 상승 에지와 리셋 신호의 하강 에지에 반응하여 동작하는 블록
always @(posedge i_Clk, negedge i_Rst) begin
    if (!i_Rst) begin
        // 리셋 신호가 활성화되면 카운터와 LED 번호를 초기화
        cnt <= 0;
        led_on_number <= 0;
    end else begin
        // 그렇지 않으면 카운터를 증가시키고 최대 카운트에 도달하면 리셋
        cnt <= cnt + 1;
        if (cnt == COUNTER_MAX_CNT) begin
            cnt <= 0;
            led_on_number <= led_on_number + 1;
        end
    end
end

// LED 번호에 따라 LED 출력을 설정하는 블록
always @ (led_on_number) begin
    case(led_on_number)
        0: o_LED <= 4'b0001; // LED 번호가 0이면 0001
        1: o_LED <= 4'b0010; // LED 번호가 1이면 0010
        2: o_LED <= 4'b0100; // LED 번호가 2이면 0100
        3: o_LED <= 4'b1000; // LED 번호가 3이면 1000
        default: o_LED <= 4'b1111; // 그 외의 경우 모든 LED가 꺼짐
    endcase
end

endmodule

 

모두 작성했다면 저장한다. (Ctrl + S)

 

 

이후 SYNTHESIS 항목의 Run Synthesis 를 선택하면 다음과 같은 창이 나온다.

OK 를 눌러 다음으로 넘어가면 자동으로 디자인 합성을 시도한다.

 

 

합성이 성공하면 다음과 같은 창이 나온다.

I/O 포트를 지정해 줘야 하므로 Cancel 을 눌러 나온다.

이후 RTL ANALYSIS > Open Elaborated Design 을 선택한다. 창 나오면 OK 눌러준다.

 

 

그럼 우리가 짠 Verilog 파일에 대응하는 회로도가 나온다.

오른쪽 위를 보면 현재 Default Layout 이라고 나와 있는데 이걸 눌러 I/O Planning 으로 바꿔준다.

 

 

그럼 핀 설정 창이 나오게 되고, 아래 콘솔이 있던 부분에 I/O Ports 라는 새 창이 나오게 된다.

I/O std 를 전부 LVCMOS33 으로 설정해주고

대응하는 패키지 핀만 넣으면 나머지는 자동으로 채워진다.

 

 

현재 코드와 대응하는 ZYNQ_MINI 보드의 I/O 는 그림과 같다.

다른 핀들에 대해 궁금하다면, 이 보드를 만든 사람이 친절하게도 핀 넘버와 기능에 대해 설명한 자료가 있다.

01_Schematic\ZYNQ_MINI_REVB Schematic.pdf 파일을 한번 구경해 보자.

 

등등 대략적으로 알려주고 있다.

이번에 사용한 핀들을 보면 

K17 : PL_CLK_50M

M19 : FPGA_PL_KEY2

T12 : FPGA_PL_LED1

U12 : FPGA_PL_LED2

V12 : FPGA_PL_LED3

W13 : FPGA_PL_LED4

로 구성된 것을 볼 수 있다.

 

LVCMOS33 은 3.3V 전압 레벨에서 작동한다는 의미라 생각하면 될 것 같다.

 

핀 설정이 끝났다면 저장을 해 준다.

 

 

다음과 같은 화면이 나오는데, File name 만 적당히 수정해 준다. 현재 모듈과 같은 이름이면 될 것 같다.

타이핑 후 OK 버튼을 선택하자.

 

그리고 비트스트림이라는 파일을 생성하기 위해

PROGRAM AND DEBUG > Generate Bitstream 을 클릭한다.

 

 

이런 창이 뜰 텐데 그럼 Yes 를 누르고 다시 합성을 진행한다.(I/O 핀 매핑을 했기 때문에 달라짐)

그리고 비트스트림도 합성이 끝난 뒤에 자동으로 진행된다.

 

 

끝나면 Open Hardware Manager 을 누르고 OK 을 누른다.

 

 

Hardware Manager 창이 열리면, 아직 우리가 보드를 툴과 연결하지 않았기 때문에 하드웨어가 잡히지 않는다.

HW 연결 전, 보드와 PC를 연결하는 과정을 한다.

 

 

[중요] Boot 가 00 상태여야 한다. {ON / KE} 방향이 0이고 {1, 2} 방향이 1이다.

Boot 모드가 총 3개로 나뉜다.

* 만약 QSPI 모드로 바꾸고 싶다면 1을 1 방향으로, 2를 KE 방향으로 스위치 조정을 하고 전원을 인가한다.

Boot ON KE
JTAG 0 0
QSPI 1 0
SDCARD 1 1

 

JTAG 에 USB-C 케이블을 연결하고, PC와 연결한다.

 

이후 Vivado 로 돌아와 Open Target > Auto connect 를 선택한다.

 

 

그러면 이렇게 칩이 잡힌다. FPGA 용 칩과 ARM 코어가 잡힌 모습이다.

그럼 우리가 만든 Verilog 파일(현재 bitstream 으로 만듦) 을 보드에 올려볼 차례이다.

Program Device 를 누른다.

 

 

비트스트림 파일에는 우리가 만든 비트스트림 파일의 경로를 넣어 준다.

기본으로는 자동으로 잡힌다.

그리고 Program 버튼을 선택한다.

동작하는 것을 확인한다.

 

 

분명 처음 했을 때는 에러가 나지 않았는데 지금은 에러가 난다........

더 알아보고 고쳐봐야겠다.

 

[추가]

재부팅 하니 정상작동을 한다.

localhost 에서 Auto connect 로 XADC 를 못 잡아서 프로그램 실행이 되지 않은 것 같다.

그 전까지 로컬 서버 리스타트 등을 해도 효과가 없고, 재부팅 해야 되는 듯 하다

 

 

이런 식으로 PL LED쪽 제어를 해 보았다.

(코드는 위에 제공해준 것과 달라 LED 켜지는 모습이 다름)

반응형
반응형

보드가 도착했지만 아직 이 보드에 대해 잘 알지 못한다.

셀러가 보내준 사용 전 준비 사항을 한 번 살펴보자.

 

1. 모든 예제 프로젝트에 Vivado 2018.3을 사용하라.

2. 예제 프로젝트를 디스크의 루트 디렉토리에서 사용하는게 가장 좋다.

- vivado 가 파일 이름 경로 길이 제한이 있어 디렉토리가 너무 많으면 문제가 생길 수 있다고 한다.

3. 온보드 다운로더가 FPGA 디버깅과 다운로딩, 그리고 ARM A9의 디버깅과 시뮬레이션을 지원한다.[1]

또한 Win10은 드라이버가 필요 없고, 오직 하나의 다운로더만 하나의 컴퓨터에 적용된다.. 고 하는데 무슨 말인지는 잘 모르겠다.

4. FPGA 부분은 ZYNQ에 통합되어 있고, 일반적으로 칩의 소모 전력은 1W 정도라고 한다. 그런데 여름이나 자원을 많이    사용하면 열이 날건데, 그럼에도 일반적인 학습용으로는 여름에 써도 무방할 정도라고 한다.

물론 큰 프로젝트를 한다면 히트 싱크가 필요하겠다.

5. 보드가 PL(Programmable logic)-side FPGA에서 IO 핀을 34개 가지고 있다. IO 정규 레벨은 3.3V 고 5V를 인가하면 안  되는 것 같다.

6. 보드를 사용하기 위해 다음과 같은 소프트웨어가 설치되어 있어야 한다.

vivado 2018.3, CH340 driver, Serial port assistant

(additional for installing linux : petalinux installation program under linux / ubuntu / vmbox)

 

[1] : ZYNQ 칩이 FPGA 부분과 ARM-Cortex 로 이루어져 있어서 그렇다고 한다.

반응형
반응형

주문한 보드는 24년 3월 18일에 주문해 28일에 도착했다.

 

 

구성품은 그대로 왔다.

나는 아크릴 판이랑 나사, 스탠드오프는 미리 장착을 해 둔 상태고, 배송은 각각 따로 와서 조립을 해야 한다.

 

그리고 셀러가 SW, 설명서 등이 담긴 링크를 보내준다만

이게 정품일거라 생각은 하지도 않았지만 vivado 2018 + 라ol선스를 같이 보내준다.

 

음.. 웬만해선 개인 학습용으로 사용만 하도록 하자.

 


 

그럼 Vivado 를 설치해 보자. 불친절하게도 셀러는 툴 설치법에 대해서는 알려주지 않는다.

 

vivado 폴더의 xsetup.exe 를 실행시키면

 

와 같은 화면이 나올 텐데, 이후 인스톨러가 실행된다.

 

New version avilable 창이 뜨면 가볍게 무시해주도록 하자.

 

Vivado 2018에서 권장하는 OS 목록이다. 

Windows 11 에서도 정상적으로 동작하는걸 확인했다. Win11 사용자도 그대로 사용해도 될 듯 하다.

 

Next 를 누르고 License agreements 에 모두 동의하고 다시 Next 를 누르자.

 

 

설치할 판을 선택한다. 설명서에 SDK 주저리 적혀있는 것도 있으니 대충 HL Design Edition 을 설치하면 될 것 같다.

Next를 잘 못 눌렀어도 뒤에 설치 옵션을 지정할 수 있기 때문에 상관 없다.

 

Next 를 눌러 설치하자.

 


 

설치가 끝나면 라이선스를 추가하는 팝업 창이 나온다.(설치는 좀 걸린다.)

그러면 라이선스 파일을 모두 추가해주면 된다

 

 

Load License 에 들어가서 라이선스를 복사해 오자. 나는 셀러가 총 5개 파일을 제공해 줘서 모두 적용했다.

정식적으로 사서 사용하는 라ol선스도 아니기 때문에 개인 공부용으로만 사용하자.

반응형
반응형

 

연구실에서 공부를 하던 중, 심심해서 Aliexpress 에 접속을 했다.

그리고 생각보다 재밌어 보이는 보드를 발견했다.

ZYNQ-7010 칩을 사용하는 미니 개발 보드인데, Vivado를 한 번 써볼까 싶은 마음에 구매했다.

 

주 목적은 인터페이스 공부와 GPIO가 될 듯 하다. 기본적으로 달려 있는 OLED, 이더넷, HDMI, SDcard, GPIO 실습을 할 계획이다. 또한 AXI4 인터페이스도 추가로 할 것 같다.

 

다만 Quartus 라면 사용해 본 경험이 있는데, Vivado 라는 툴이 굉장히 익숙치 않아 배워 가는 과정이 필요할 듯 하다.

반응형

+ Recent posts