Inflearn brand logo image
Inflearn brand logo image
Inflearn brand logo image
Hardware

/

Semiconductor

Verilog FPGA プログラム 1 (Arty A7-35T)

Verilog を使用した FPGA の実装

  • ihil
베릴로그
fpga
verilog
hdl
Verilog HDL
FPGA

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

こんなことが学べます

  • Verilog RTLの設計

  • FPGA設計

FPGAに興味がありましたか?
それではVerilogしてください! 😁

ベリログ(Verilog)?

C言語と文法が似ているベリログは、電子回路やシステムで利用されるハードウェア技術言語(HDL)です。回路、設計、検証、実装など様々な用途に利用されます。

20年以上のキャリアが教えてくれるFPGA設計📑

Verilogを使用してFPGAを実装することに興味のある開発者はいますか?しかし、これを詳しく説明した講義を見つけるのはとても難しいです。今20年以上現職者が開発に使われた内容をまとめた講義に会いましょう!講義内容が難しく感じられるかもしれませんが、3~4回くらい精読して実習してみると、FPGA開発者として成長するための良いアシスタントになってくれるでしょう。

このレッスンでは、Verilog HDLを使用してFPGAを実装する方法について詳しく説明します。 Verilogコードを実装し、 Simulationを通じて結果を確認し、最終的にArty A7ボードに実装した内容をダウンロードして結果を確認するすべての過程を学習します。また、ザイリンクス社が提供するIP (クロック関連、メモリ関連)も扱います。このレッスンで説明されている内容を理解し、独自のコーディング方法を習得したら、FPGAの設計に実力ある開発者になります。

📢受講前に必ず確認してください!

  • 本講義は、電子文書形式で構成されたテキスト講義です。講義を受講する方には、講義で説明されているすべてのソースファイルを提供します。講義は今後の動画で制作予定です。
  • 使用するツールはvivado 2018.3で、練習に使用されるボードはArty A7-35T(100T)です。
  • 講義資料は「セクション0 - 資料共有リンク - 添付ファイル」からダウンロードできます。

こんなことを学びます📚

vivadoツールの使い方

Verilogコーディング

Tech benchを作る
Simulation
する

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


知識共有者の一言🙋‍♀️

私は20年ほどFPGAを通じて開発を進めてきました。 ASICも作って発売した経験があります。しかし、まだFPGAの世界を完全に理解していません。それだけFPGAの世界は広いです。ツールの内容、HW的な部分、Verilogの内容など、多くのことを知っておく必要があります。これまで働いて感じたことは、VerilogやFPGAをよく扱うためには、独自のプログラムフォーマット(コーディングルール)を持っている必要があります。このレッスンでは、この部分について詳しく説明します。講義で説明されている内容を学び、独自のフォーマットにしてください。

本講義はVerilog文法をある程度知っており、HW的な内容を理解する方々を対象としています。 Verilog HDLがC言語に似ているので、C言語について知っていると便利です。また、本講義では最終結果をボード(Arty A7, Digilent社)にダウンロードして結果を確認します。 Verilog HDLはSimulationで結果を確認することで終わらないでください。 Verilog HDLは必ずFPGAボードにダウンロードして動作を確認する必要があります。本講義を受講される方はまず内容をご覧いただき、必ず実習ボードを購入して結果を確認することをお勧めします。

講義で理解できない部分は、Inflearnコミュニティまたは私が運営するカフェを通じて質問をしてくださると答えていただきます。


講義の特徴✨

本講義の構成は以下の通りです。

  • コードの実装
  • テストベンチを使用したシミュレーション検証
  • ボード検証

vivado 2018.3 バージョンを通じて各コースがどのように進行するか詳細に説明します。

実習内容は以下の通りです。

  1. counterを用いたLED on/off
  2. SPI Masterの実装
  3. SPI Slaveの実装
  4. SPI Master/Slave通信の実装とボードの検証
  5. Xilinx IP-1(クロックジェネレータ)
  6. Xilinx IP - 2(メモリー・ジェネレーター)
  7. UART Controllerの実装
  8. I2C Controllerの実装
  9. NRZL Decoderの実装
  10. FMC Interfaceの実装
  11. ブロックメモリ速度

最初の練習内容はカウンターです。 counterはシンプルですが、実際によく使われるモジュールです。 counter を設計し、Test bench を作成して実装したコードが正しく動作するか Simulation を進め、最終的にボードに適用して led on/off を通じて結果を確認します。

2番目の練習トピックはSPI通信です。 SPIを選択した理由は、いくつかのインタフェースの中で比較的難しくない実装ができ、実際によく使われるインタフェースだからです。まず、SPI Masterを実装し、その後にSPI Slaveを実装します。そしてMasterとSlaveの通信を実装し、ボード上で正しく動作していることを確認します。

3番目のコンテンツは、ザイリンクスが提供するIPの間でよく使用され、難しくないアクセスを可能にするクロックとメモリについて説明します。

4番目の内容はUART通信です。 Uart Controllerを実装し、PCとの通信で検証まで進めます。

5番目の練習トピックはI2C通信です。 I2C通信は簡単に見えますが、コードで実装することは決して簡単ではありません。 SPIに比べて2~3倍の難易度があります。 I2C Master、Slaveをコードで実装することで、他のインターフェイスも難しくないように実装できます。コードを実装する前に仕様をどのように把握し、SM(State Machine)をどのように設計するかについて詳しく説明します。実装されたI2Cコントローラはボード上の動作を確認します。

6番目のコンテンツはv2.1に新しく追加されたものです。 NRZL(Non-Return Zero Level)デコーダを実装します。具体的には、FIFOの設計と使用方法について詳しく説明します。 FIFOは、多くの分野で使用されている非常に重要なIPです。この章では、FIFOの設計と実装について理解できます。

7番目の内容はv2.3に追加されたものです。 FMC(Flexible Memory Controller)インターフェイスを実装します。具体的には、2つ以上のクロックを使用するときによく発生するTimeing Violationをどのように解決するかについての詳細が含まれています。

8番目の内容はv2.4に追加されたものです。 FPGA内部のBlock Memoryの速度(性能)をテストし、最も適切な速度はどのくらいかを確認する内容です。

詳細カリキュラムが気になったら?
  1. 概要
  2. HW構成
    1. USB-JTAGを利用した方法
    2. JTAG-HS3を用いた方法
  3. カウンターによるLED制御
    1. 機能定義
    2. プロジェクトの作成
    3. プロジェクト画面の構成
    4. ソースコードの追加
    5. テキストエディタの設定
    6. コードの実装
    7. XDCの実装
    8. Generate Bitstream
    9. Download Bitstream
    10. 結果の確認
  4. Simulation
    1. Simulation source file の追加
    2. tb_led_counter.vコードの実装
    3. Simulationの進行
    4. シミュレーション結果
  5. Spi Masterの実装
    1. 仕様
    2. プロジェクトの作成
    3. ソースコードの追加
    4. コードの実装
      1. ポート定義
      2. State 定義
      3. コードの実装
      4. タイミング図
    5. Simulation
      1. Test benchの実装
      2. Simulation 結果の確認
  6. Spi Slaveの実装
    1. 仕様
    2. ソースコードの追加
    3. コードの実装
      1. ポート定義
      2. State 定義
      3. コードの実装
    4. Simulation
      1. Test benchの実装
      2. Simulation 結果の確認
  7. Spi通信の実装
    1. ボタンノイズ除去
      1. ボタン回路
      2. コードの実装
      3. Simulation
    2. SPI Taskの実装
      1. ポート定義
      2. ボタンノイズ除去
      3. State 定義
      4. コードの実装
    3. Simulation
      1. Test benchの実装
      2. Simulation 結果の確認
    4. Bitstreamの作成、ダウンロード
  8. Xilinx IPの使用
    1. クロックの作成
    2. Clock IP Test
      1. 仕様
      2. コードの実装
      3. xdcファイル
      4. Bitstreamの作成、ダウンロード
    3. メモリの作成
      1. Block Memory Generator
    4. Memory Test
      1. シングルポートRAM
      2. Simple Dual Port RAM
      3. その他のメモリ
  9. 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. Bitstreamの作成
      5. 結果の確認
  10. 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コードの実装
      2. 結果の確認
  11. NRZL Decoderの実装
    1. システム概要
    2. コードの実装
      1. プロジェクトの作成
      2. コードの実装
      3. data_counterの実装
      4. noise_reductionの実装
      5. data_encoderの実装
      6. nrzlDecTopの実装
      7. xdcの実装
      8. Generate Bitstream&ダウンロード、確認
      9. 結論
  12. FMC Interfaceの実装
    1. FMC Timing
    2. コードの実装
      1. プロジェクトの作成
      2. fmc_model.v
      3. simulation fmc_model
      4. fmc_interface.v
      5. sys_host.v
      6. spram_32x8192
      7. simulation fmc_interface
      8. fmc_top.v
      9. fmc_top.xdc
    3. Bitstreamの作成
    4. Timingエラーの解決
    5. ボードのダウンロードと結果の確認
    6. ボードのダウンロードと結果の確認
  13. ブロックメモリ速度
    1. 動作シナリオ
    2. Block RAMの実装
    3. コードの実装
    4. Simulation
    5. xdcファイル
    6. ファイル構造
    7. 結果の確認
    8. 結論
  14. Revision Histrory

予想される質問 Q&A 💬

Q.講義を聞く対象者は誰ですか?

Verilog文法をある程度(初級)知っていて、HWに関する基本知識を持っていなければなりません。

Q.講義を聞くために準備すべき事項はありますか?

講義は実習ボード(Arty A7 -35T or 100T、Digilent社製)で行われますが、ボードが用意されていない場合は、まず講義を聞き、講義に記載されているように(コーディングおよびSimulation)進行後、後でボードが準備されれば実習を進めてください。また、ボードにダウンロードするためにJTAG-HS2(or HS3)を使用します。

Q.プログラムツールは何を使用しますか?

本講義はザイリンクス社のFPGAを対象としています。 SWツールはvivado 2018.3バージョンを使用しています。 swのインストールに関する内容は含まれていません。講義受講前にsw tool(vivado 2018.3 or以降)を設置してください。


知識共有者の紹介✒️

私は20年以上にわたり大企業、中小企業で開発者として働いてきましたが、現在は小さな企業を運営しています。 CCTV用ISP(Image Signal Processing)ASICを開発し、OLED検査装置、DAQ(Data Acquisition System)などFPGAを利用した多くの製品を開発しました。 FPGAだけでなく、FW開発(STM32、PIC32、AVR、ATMEGAなど)、回路設計、Windows Programなど多くの経験を持っています。


こんな方に
おすすめです

学習対象は
誰でしょう?

  • FPGA に興味のある方

  • Verilog に興味のある方

  • Verilog レベルアップを希望される方

  • FPGA レベルアップを希望される方

前提知識、
必要でしょうか?

  • Verilog HDL

  • FPGA

こんにちは
です。

1,647

受講生

66

受講レビュー

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++

입니다.

カリキュラム

全体

359件

講座資料(こうぎしりょう):

授業資料
講座掲載日: 
最終更新日: 

受講レビュー

全体

14件

5.0

14件の受講レビュー

  • neulha님의 프로필 이미지
    neulha

    受講レビュー 12

    平均評価 5.0

    5

    9% 受講後に作成

    I am using it like an encyclopedia. I feel once again how happy it is to have a teacher. Thank you!

    • ihil
      知識共有者

      Thank you for your kind words. I will continue to add more content to make the lecture more helpful and beneficial. Thank you~!!

  • miheungsound8323님의 프로필 이미지
    miheungsound8323

    受講レビュー 2

    平均評価 5.0

    5

    30% 受講後に作成

    I studied FPGA in advance before this lecture, but it was too difficult. I'm watching it once now, and I think I'll learn it happily if I follow this lecture. I think it's a good lecture. I'll definitely succeed.

    • ihil
      知識共有者

      FPGA is not easy. If you follow the lecture content, your skills will gradually increase. Fighting and I will support you~ Thank you~!!

  • wwe08982913님의 프로필 이미지
    wwe08982913

    受講レビュー 1

    平均評価 5.0

    5

    12% 受講後に作成

    Course completed

    • ihil
      知識共有者

      Thank you for your hard work~ Congratulations on completing it despite the small amount. I hope you fully understand the lecture content and become a great developer in the field~!! Thank you.

  • withuman3898님의 프로필 이미지
    withuman3898

    受講レビュー 2

    平均評価 5.0

    5

    8% 受講後に作成

    It's very helpful. Thank you for the great lecture!

    • appleid71335256님의 프로필 이미지
      appleid71335256

      受講レビュー 4

      平均評価 5.0

      5

      100% 受講後に作成

      It helped me a lot. Thank you.

      • ihil
        知識共有者

        Thank you so much for your help~!!

    ¥12,845

    ihilの他の講座

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

    似ている講座

    同じ分野の他の講座を見てみましょう!