강의

멘토링

로드맵

Inflearn brand logo image
Hardware

/

Embedded IoT

Verilog FPGA Program 1 (Zynq mini 7020)

この講義を通じて、受講生はZynqボードを活用してVerilogを実装する内容を学びます。

  • ihil
텍스트 강의
베릴로그
verilog
하드웨어
zynq
Verilog HDL
FPGA

学習した受講者のレビュー

こんなことが学べます

  • Verilogコーディング

  • ZYNQボードの活用

  • Vivado、Vitisの使い方

  • Test Benchを作成してSimulationを検証する

  • ボードにダウンロードして結果を確認する

Zynqボード活用実装+実践の中核。

📢受講前に参考にしてください。

  • この講義は、電子文書(PDF)形式で構成されたテキスト講義です。 (約110,000文字)講義を受講している人は、講義で説明されているすべてのソースファイルを提供します。レッスンのソースコードは、セクション0 [資料共有リンク]からダウンロードできます。

Zynqボードを活用したVerilogの実装

✅ コードの実装 ✅ Text Bench による Simulation の検証 ✅ ボードの検証

コーディングする前に、システム全体を分析し、どのように効率的にコーディングできるかについてのノウハウを提供します。過去20年間で現場で経験してきた多くの技法とノウハウを基に理解しやすく説明します。また、講義に含まれるソースコードは、スタディのためのコードではなく、実務で使用されたコードです。講義を聞くすべての人には、講義に使われた完全なソースコードを提供します。

講義の前半では、以下の2つのテーマを扱います。

  • Vivado 2022.1をインストール
  • Zynqボードに実装されたコードのダウンロードと結果の確認

レッスンの後半では、トピックごとにコーディングとシミュレーションの検証を通じてボードにダウンロードした結果を確認します。

  • カウンターによるLED制御
  • SPI Contollerの実装
  • UART Controllerの実装
  • I2C Contollerの実装
  • Xilinx IPの使用(Clock Generator、Memory Generator)
  • NRZL Decoderの実装
  • FMC(Flexible Memory Controller)インターフェースの実装

Verilog を使用した FPGA 活用 for ZYNQ - 講義プレビュー

詳細カリキュラム
  1. 概要
  2. HW構成
  3. SWの取り付け
  4. ZynQボードのダウンロード
    1. デフォルトのテンプレート構成
      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. アプリケーションプロジェクトの作成
      3. Create Boot Image
    5. ボードのダウンロードと結果の確認
      1. カウンターによるLED制御
      2. プロジェクトの作成
      3. プロジェクト画面の構成
      4. ソースコードの追加
      5. テキストエディタの設定
      6. コードの実装
      7. XDCの実装
      8. Generate Bitstream
      9. 結果の確認
    6. Simulation
      1. Simulation source file の追加
      2. tb_led_counter.vコードの実装
      3. Simulationの進行
      4. シミュレーション結果
    7. コードについて
      1. 実装可能なコード、実装できないコード
      2. コードの基本単位はClockです。
      3. すべてのコードは並列に処理されます。
      4. 3項 演算子
      5. Registerの使用
      6. FSM(Finite State Machine)
    8. Spi Masterの実装
      1. 仕様
      2. コードの実装
        1. ポート定義
        2. State 定義
        3. コードの実装
        4. タイミング図
      3. Simulation
        1. Test benchの実装
        2. Simulation 結果の確認
    9. Spi Slaveの実装
      1. 仕様
      2. コードの実装
        1. ポート定義
        2. State 定義
        3. コードの実装
      3. Simulation
        1. Test benchの実装
        2. Simulation 結果の確認
    10. Spi通信の実装
      1. ボタンノイズ除去
        1. ボタン回路
        2. コードの実装
        3. Simulation
      2. SPI Taskの実装
        1. ポート定義
        2. ボタンノイズ除去
        3. State 定義
        4. コードの実装
      3. Simulation
        1. Test benchの実装
        2. Simulation 結果の確認
      4. UsetTopモジュールの実装
      5. xdcファイルの追加
      6. Generate Bitstream
      7. ボードのダウンロードと結果の確認
    11. Xilinx IPの使用
      1. クロックの作成
      2. メモリの作成
        1. Block Memory Generator
      3. Memory Test
        1. シングルポート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. クロックの作成
        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,649

受講生

67

受講レビュー

123

回答

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 감사합니다~

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

期間限定セール、あと4日日で終了

¥82,500

25%

¥12,972

ihilの他の講座

知識共有者の他の講座を見てみましょう!