강의

멘토링

로드맵

하드웨어

/

임베디드 · IoT

Verilog FPGA Program 1 (Zynq mini 7020)

이 강의를 통하여 수강생들은 Zynq 보드를 활용하여 Verilog를 구현하는 내용을 배우게 됩니다.

(5.0) 수강평 3개

수강생 80명

  • alex
텍스트 강의
베릴로그
verilog
하드웨어
zynqVerilog HDLFPGA

먼저 경험한 수강생들의 후기

이런 걸 배울 수 있어요

  • Verilog 코딩

  • ZYNQ 보드 활용

  • Vivado, Vitis 사용법

  • Test Bench를 만들고 Simulation 검증하기

  • 보드에 다운로드해서 결과 확인하기

Zynq 보드 활용 구현 + 실습의 핵심.

📢 수강 전 참고해주세요.

  • 본 강의는 전자문서(PDF) 형식으로 구성된 텍스트 강의입니다. (약 110,000자 분량) 강의를 수강하시는 분들께는 강의에 설명되어 있는 모든 소스 파일을 제공합니다. 강의 소스 코드는 섹션 0 [자료 공유 링크]에서 다운받을 수 있습니다.

Zynq 보드를 활용한 Verilog 구현

✅ 코드 구현 ✅ Text Bench를 이용한 Simulation 검증 ✅ 보드 검증

코딩하기 전에 전체적인 System을 분석하고 어떻게 해야 효율적으로 코딩할 수 있는지에 대한 노하우를 제공합니다. 지난 20여년 동안 현장에서 경험했던 많은 기법과 노하우를 바탕으로 이해하기 쉽게 설명합니다. 또한 강의에 포함된 소스 코드들은 스터디를 위한 코드가 아니라, 실무에서 사용된 코드들입니다. 강의를 듣는 모든 분들에게는 강의에 쓰인 전체 소스코드를 제공합니다.

강의 전반부에서는 아래 2가지 주제를 다루게 됩니다.

  • Vivado 2022.1 을 설치
  • Zynq 보드에 구현된 코드 다운로드 및 결과 확인

강의 후반부에서는 각 주제별로 코딩 및 시뮬레이션 검증을 통해 보드에 다운로드한 결과를 확인합니다.

  • Counter를 이용한 LED 제어
  • SPI Contoller 구현
  • UART Controller 구현
  • I2C Contoller 구현
  • Xilinx IP 사용 (Clock Generator, Memory Generator)
  • NRZL Decoder 구현
  • FMC(Flexible Memory Controller) Interface 구현

Verilog를 이용한 FPGA 활용 for ZYNQ - 강의 미리보기

상세 커리큘럼
  1. 개요
  2. HW 구성
  3. SW 설치
  4. ZynQ 보드 다운로드
    1. 기본 Template 구성
      1. 프로젝트 생성
      2. Create Block Design
    2. Debug Mode로 다운로드
      1. 소스 코드 추가
      2. Bitstream 생성
      3. Vitis 실행 및 다운로드
    3. FSBL (First Stage Bootloader)을 이용한 다운로드
      1. FSBL 프로젝트 생성
      2. Create Boot Image
      3. 보드 다운로드 및 결과 확인
    4. FSBL, Application SW을 이용한 다운로드
      1. FSBL 프로젝트 생성
      2. Application 프로젝트 생성
      3. Create Boot Image
    5. 보드 다운로드 및 결과 확인
      1. Counter를 이용한 LED 제어
      2. 프로젝트 생성
      3. 프로젝트 화면 구성
      4. 소스 코드 추가
      5. Text Editor 설정
      6. 코드 구현
      7. XDC 구현
      8. Generate Bitstream
      9. 결과 확인
    6. Simulation
      1. Simulation source file 추가
      2. tb_led_counter.v 코드 구현
      3. Simulation 진행
      4. Simulation 결과
    7. 코드에 대하여
      1. 구현 가능한 코드, 구현할 수 없는 코드
      2. 코드의 기본 단위는 Clock 입니다.
      3. 모든 코드는 병렬로 처리됩니다.
      4. 3항 연산자
      5. Register 사용
      6. FSM (Finite State Machine)
    8. Spi Master 구현
      1. 스펙
      2. 코드 구현
        1. Port 정의
        2. State 정의
        3. 코드 구현
        4. 타이밍 다이어그램
      3. Simulation
        1. Test bench 구현
        2. Simulation 결과 확인
    9. Spi Slave 구현
      1. 스펙
      2. 코드 구현
        1. Port 정의
        2. State 정의
        3. 코드 구현
      3. Simulation
        1. Test bench 구현
        2. Simulation 결과 확인
    10. Spi 통신 구현
      1. 버튼 노이즈 제거
        1. 버튼 회로
        2. 코드 구현
        3. Simulation
      2. SPI Task 구현
        1. Port 정의
        2. 버튼 노이즈 제거
        3. State 정의
        4. 코드 구현
      3. Simulation
        1. Test bench 구현
        2. Simulation 결과 확인
      4. UsetTop 모듈 구현
      5. xdc 파일 추가
      6. Generate Bitstream
      7. 보드 다운로드 및 결과 확인
    11. Xilinx IP 사용
      1. Clock 생성
      2. Memory 생성
        1. Block Memory Generator
      3. Memory Test
        1. Single Port RAM
        2. Simple Dual Port RAM
        3. 그 외의 메모리
    12. UART Controller 구현
      1. Uart Tx 구현
        1. 코드 구현
        2. simulation
      2. Uart Rx 구현
        1. FIFO 생성
        2. 코드 구현
        3. simulation
      3. Uart Controller 구현
      4. LoopBack 구현
        1. 구성
        2. 코드 구현
        3. simulation
        4. UserTop 모듈 구현
        5. xdc 생성
        6. Bitstream, XSA 파일 생성
        7. 결과 확인
    13. I2C Controller 구현
      1. I2C Controller 스펙
        1. Start, Stop Condition
        2. 8bits 데이터 전송
        3. Slave ID
        4. I2C Write 데이터 구조
        5. I2C Read 데이터 구조
      2. I2C Master 구현
        1. i2c_master write신호 분석
        2. i2c_master read신호 분석
        3. i2c_master 코드 구현
        4. i2c_master simulation
        5. 결과 확인
        6. i2c_master8x8 구현
        7. i2c_master8x8 simulation
      3. I2C Slave 구현
        1. I2C Slave 신호 분석
        2. i2c_slave8x8 코드 구현
        3. i2c_reg8x8 구현
        4. i2c_slave8x8, i2c_reg8x8 simulation
      4. I2C TASK
        1. i2c_task 코드 구현
      5. UserTop 모듈 구현
      6. xdc 파일 추가 
      7. Bitstream, XSA 파일 생성
      8. 보드 다운로드 및 결과 확인
    14. NRZL Decoder 구현
      1. 시스템 개요
      2. 코드 구현
        1. clock 생성
        2. FIFO 생성
        3. data_counter 구현
        4. noise_reduction 구현
        5. data_encoder 구현
        6. nrzlDecTop 구현
        7. UserTop 모듈 구현
        8. xdc 구현
        9. Bitstream, XSA 파일 생성, 결과 확인
        10. 결론
    15. FMC Interface 구현
      1. FMC Timing
      2. 코드 구현
        1. fmc_model.v
        2. simulation fmc_model
        3. fmc_interface.v
        4. sys_host.v
        5. spram_32x8192
        6. simulation fmc_interface
        7. fmc_top.v
        8. UserTop.v
        9. UserTop.xdc
      3. Bitstream 생성
      4. Timing 오류 해결
      5. 보드 다운로드 및 결과 확인
      6. 결론
    16. Revision History

Q&A 💬

Q. 강의를 듣는 대상자는 누구인가요?

Verilog, FPGA를 배우고자 하시는 분들을 대상으로 합니다.  본 강의는 "Verilog를 이용한 FPGA 활용"편을 Zynq 보드에서 구현할 수 있도록 내용을 새롭게 구성하고, 모든 소스 코드들은 Zynq mini 7020(7010)보드에서 검증된 자료들을 사용하였습니다.

Q. 강의를 듣기 위해서 준비해야 할 사항이 있나요?

강의의 모든 내용은 Zynq mini 7020(7010) 보드에서 실습할 수 있습니다. Zynq mini 7020(7010) 보드를 준비해 주시면 직접 코드를 구현해서 결과를 확인할 수 있어 많은 도움이 됩니다.

Q. 프로그램 툴은 무엇을 사용하나요?

Vivado 2022.1 버전을 사용합니다. 강의 내용중에 툴을 설치하는 내용이 있으니 강의에 따라서 설치해 주시면 됩니다.

Q. Zynq mini 보드는 어디에서 구매하나요?

국내 쇼핑몰이나 알리익스프레스를 통해 구매하시면 됩니다.


25년 경험으로 축적된 
베릴로그 활용 노하우를 전합니다.

저는 20여 년 동안 대기업, 중소기업에서 개발자로 일해왔고 현재는 작은 기업을 운영하고 있습니다. CCTV용 ISP (Image Signal Processing) ASIC를 개발하였고 OLED 검사 장비, DAQ (Data Acquisition System) 등 FPGA를 이용한 많은 제품을 개발하였습니다. FPGA뿐만 아니라 FW 개발 (STM32, PIC32, AVR, ATMEGA 등), 회로설계, Windows Program 등 많은 경험을 가지고 있습니다. 

💾 강의 환경을 확인해주세요.

  • 실습 환경으로는 Windows OS, Vivado 2022.1을 사용합니다.
  • 본 강의는 전자문서(PDF) 형식으로 구성된 텍스트 강의입니다. (약 110,000자 분량)

이런 분들께
추천드려요

학습 대상은
누구일까요?

  • FPGA를 배우고자 하시는 분

  • Verilog를 배우고자 하시는 분

  • Zynq를 배우고자 하시는 분

선수 지식,
필요할까요?

  • C 언어

  • Verilog 언어 (기초)

안녕하세요
입니다.

1,667

수강생

71

수강평

125

답변

4.8

강의 평점

19

강의

저는 지난 20여년 동안 대기업, 중소기업에서 개발자로 일해왔고

현재는 작은 기업의 대표로 있습니다.

주요 경력사항은

  • Verilog HDL을 이용한 FPGA 설계

    • CCTV용 ISP ASIC 개발 (약 10년)

    • OLED Display 검사장비 개발 (약 3년)

    • FPGA를 이용한 장비 개발

  • MCU FW

    • STM32

    • PIC32

    • AVR, ATMEGA

    • DSP (TI)

  • Windows Application Program

    • Visual Studio MFC, C++

입니다.

커리큘럼

전체

381개

해당 강의에서 제공:

수업자료
강의 게시일: 
마지막 업데이트일: 

수강평

전체

3개

5.0

3개의 수강평

  • 박현영님의 프로필 이미지
    박현영

    수강평 5

    평균 평점 5.0

    5

    75% 수강 후 작성

    FPGA 설계 강의 찾기가 생각보다 어려운데, 차근차근 교재 보면서 따라해보면서 재밌게 할 수 있는 강의 입니다!!! 이번 강의 말고도 Zynq 보드 활용한 다른 강의들도 많이많이 만들어주세요~!! 전부 다 수강 하고 경험 해보면서, 실습해보면서 실력 업그레이드 하고 싶습니다 ㅎㅎ 감사합니다~!

    • alex
      지식공유자

      수강평 감사드립니다. 나름 열심히 만들었는데 이런 수강평은 많은 힘이 됩니다. verilog, fpga가 배우기가 쉽지 않습니다. 그러나 차근차근 배우다보면 조심씩 실력이 늘고 자신감도 생기게 됩니다. 강의 통해 능력있는 개발자 되시길 바랍니다 감사합니다 ~!!

  • draco님의 프로필 이미지
    draco

    수강평 5

    평균 평점 5.0

    5

    100% 수강 후 작성

    코딩 스타일에 도움이 되었습니다.

    • alex
      지식공유자

      코딩 스타일에 도움이 되셨다니 감사합니다. 개발자가 자신의 코딩 스타일을 개발하는 것을 무척 중요할 것 같습니다. 저는 시간이 지날수록 알고리즘 개발에 SM(State Machine)을 사용하는 것이 무척 중요하고 유용하다고 생각됩니다. SM을 많이 이용해 보시길 권해드립니다. 감사합니다 ~!!

  • 권홍근님의 프로필 이미지
    권홍근

    수강평 1

    평균 평점 5.0

    5

    10% 수강 후 작성

    안녕하세요 최근에 강의를 구매한 수강생입니다. 다름이아니라 이러한 강의교재를 어떻게 활용해야하는지 모르겠습니다. 그저 소스코드를 직접 타이핑하고 왜 이렇게 코딩을했는지 의문을 가지고 추궁을 하면 코딩 실력이 향상이 되는건가요? 구체적인 학습방법을 알려주신다면 정말 감사하겠습니다.

    • alex
      지식공유자

      안녕하세요~ verilog, fpga를 배우는 것은 상위 언어(C, App, Java, 등)와는 매우 다릅니다. verilog, fpga는 HW와 매우 밀접하게 연관이 있습니다. 즉 HW 자체를 설계하는 것입니다. 예를 들어, UART 통신을 생각해 보면, 상위 Application단에서는 시리얼 프로토콜을 만들고 통신을 구현합니다. fpga 단에서는 UART Controller 자체를 설계하고 구현합니다. fpga 단에서 구현되는 것은 Main Clock 단위에서 구현됩니다. 매 Clock마다 신호들이 어떻게 구현되는지를 구현하는 것입니다. Application 에서는 Protocol level에서 코드를 구현합니다. verilog, fpga를 공부하려면 타겟보드에서 코드를 구현하고 구현된 코드대로 HW가 동작하는 것을 확인하고, 물론 코드를 구현/검증하기 위해서는 simulation을 통하여 매 clock 마다 신호들이 맞게 동작하는지를 확인해야 합니다. verilog, fpga를 배우려면, 단순히 study 차원에서 하는 것은 크게 의미가 없을 수도 있습니다. 가장 좋은 방법은 기본적인 기능들을 익히고 (자신이 마음대로 코드를 구현하고, 툴을 사용하는 것을 익혀야 합니다) 실제 프로젝트를 해가면서 자신이 무언가를 새롭게 구현하는 것이 좋습니다. 본 강의는 실제 프로젝트를 진행하기 위한 선행 기술들을 학습한다고 보시면 좋습니다. 실제 프로젝트를 하기 위해서는 verilog, fpga, 툴 등을 마음대로 다루는 것이 매우 중요합니다. verilog로 코딩하고, simulation으로 검증하고 (오류가 있으면 코드 수정해서 다시 simulation 으로 검증하고), 구현한 내용을 보드에 올려서 동작을 확인하는 이 과정을 어느 정도 익혀야 합니다. 본 강의 내용을 어느 정도 익히면, 실제 실무에서 작은 것부터 프로젝트를 진행해 나갈 수 있습니다. 제가 최근에 진행한 프로젝트는 PC에서 USB 를 통해서 들어오는 이미지 데이터를 FPGA에서 Frame Converter(DDR3)를 구현해서 LVDS로 데이터를 출력하는 내용이었습니다. 이러한 것들을 구현하기 위해서는 본 강의의 내용과 DDR3 Contoroller를 구현하고, LVDS에 대한 이해가 있어야 가능합니다. 아무튼 verilog, fpga를 배우는 과정이 쉽지는 않습니다. 그러나 기본적인 기능들을 잘 익히고, 실무에서 프로젝트들을 진행하면서 여러가지 기술들을 습득해 나가시다 보면 좋은 개발자가 되실 것이라 생각합니다. 인내심을 가지고 배우시길 바랍니다. 감사함니다.

    • 우선, 상세한 답변 정말 감사합니다. 앞으로 강의를 수강하면서 궁금한 점이나 막히는 부분이 생기면, 여기에 질문을 드려도 괜찮을까요? 혹시 메일이나 연락주고받기 편한 방법이 있으시면 알려주시면 감사하겠습니다.

    • alex
      지식공유자

      메일로 주셔도 되고, 제가 운영하는 카페에 질문을 올려주셔도 됩니다. 메일 : alex@ihil.co.kr 카페 : Cafe.naver.com/worshippt 감사합니다~

    • 네넵 알겠습니다. 오늘도 좋은 하루 보내십시오 감사합니다.

2025 추석맞이 감사할인 중 (3일 남음)

월 ₩16,500

5개월 할부 시

25%

₩110,000

₩82,500

alex님의 다른 강의

지식공유자님의 다른 강의를 만나보세요!