Xilinx FPGA入門 スイッチONでLED点灯


初めてのHDL記述

Xilinx FPGAスタータキット BASYS 3を動かしてみよう

図1 ロジック回路設計の初めの一歩も「Lチカ」.Velilog HDLで回路を記述して,Xilinx製FPGAスタータキット BASYS 3に実装してみよう.画像クリックで動画を見る.または記事を読む.[提供・著]森岡 澄夫.
詳細[VOD/KIT]Xilinx製FPGAで始めるHDL回路設計入門

スイッチとLEDの基本動作

FPGAの基本的な回路として,スイッチを押すとLEDが点灯するしくみを構築します.BASYS 3のようなFPGAボードでは,スイッチ信号がFPGAに入力され,その信号をLEDに出力することで,スイッチとLEDの動作を確認できます.

  1. トグル・スイッチ:ONのときはhigh(3.3V),OFFのときはlow(0V)となる.
  2. プッシュ・スイッチ:押したときにhigh(3.3V),離すとlow(0V)となる.
  3. FPGAのLEDピンはhigh(3.3V)で点灯する.
  4. LEDには電流制限抵抗が組み込まれている.

スイッチの信号がFPGAのピンに入力され,その値をFPGA内部で処理し,LEDに出力することで,スイッチON時にLEDが点灯する動作を実現できます.

FPGA内部での信号接続とHDL記述

FPGAの内部では,スイッチのピンとLEDのピンをHDL(Hardware Description Language)で記述し,接続を定義します.BASYS 3のHDL記述ファイルでは,Verilog HDLを使用し,assign文を用いてスイッチの信号をLEDへ渡します.

  1. Verilog HDLのコード内で,FPGAボードの入出力ピンを定義する.
  2. スイッチを入力ピン(input)として定義する.
  3. LEDを出力ピン(output)として定義する.
  4. assign文を使用して,スイッチとLEDを直接接続する.

このようにHDLを用いることで,論理回路の接続をプログラムで記述できる.

入出力ピンの割り当て(ピン・アサイン)

FPGAを設計する際,物理的なピンとHDLで記述した信号を関連付ける作業が必要です.これは「ピン・アサイン」と呼ばれ,設計ツール上で設定するか,制約ファイル(XDCファイル)を直接編集することで実現できます.

  1. 設計ツールで「Open Implemented Design」をクリックする.
  2. 「Layout」→「I/O planning」に進む.
  3. 制約ファイル(Basys-3-Master_mod.xdc)をテキスト・エディタで編集することも可能.

ピン・アサインを適切に設定することで,スイッチやLEDなどの外部デバイスとFPGAの対応が決まます.

キーワード

正論理と負論理とは

論理回路では,信号のON/OFFをどのように定義するかが重要です.一般的に,ONのときにhigh(3.3V),OFFのときにlow(0V)とする方式を「正論理(アクティブ・ハイ)」といいます.逆に,ONのときにlow(0V),OFFのときにhigh(3.3V)となる方式を「負論理(アクティブ・ロー)」といいます.

  1. 正論理:スイッチON(high)→ LED点灯(high)
  2. 負論理:スイッチON(low)→ LED点灯(low)

正論理と負論理の使いわけ

FPGAの設計では,どちらの論理を用いるかによって,HDL記述や回路の動作が変わります.assign文を`assign led = sw;`とした場合,スイッチがhighのときにLEDが点灯します.逆に,`assign led = ~sw;`とすると,スイッチがlowのときにLEDが点灯します.

正論理・負論理の応用

ディジタル回路では,どちらの論理方式を選択するかが設計の自由度に影響を与えます.アクティブ・ローのデバイス(7セグメントLEDなど)を使用する場合,負論理の考え方が重です.

  1. プッシュ・スイッチが負論理の場合,HDLで反転を考慮する.
  2. 7セグメントLEDは負論理駆動のため,ピンの状態を反転する必要がある.
  3. 複数のデバイスが混在する場合,論理の整合性を取ることが必要.

〈著:ZEPマガジン〉

動画を見る,または記事を読む

著者紹介

  • NTT,IBM,Sony,NECの各研究所において高性能回路IPやハイレベル・シンセシスの研究,およびプレイステーションなどの製品用SoC開発に従事した後,現職にて民間宇宙ロケットの飛行制御コンピュータの研究開発に従事.FPGAや高位合成を活用している

著書

  1. [VOD/KIT]一緒に動かそう!Lチカから始めるFPGA開発【基礎編&実践編】,ZEPエンジニアリング株式会社.
  2. [VOD/KIT]Xilinx製FPGAで始めるHDL回路設計入門,ZEPエンジニアリング株式会社.
  3. [VOD/KIT]一緒に動かそう!Lチカから始めるFPGA開発【基礎編】,ZEPエンジニアリング株式会社.
  4. [VOD/KIT]Zynqで初めてのFPGA×Linux I/O搭載カスタムSoC製作,ZEPエンジニアリング株式会社.
  5. [VOD/KIT]Tiny FPGA実習!高校生から始めるHDLプログラミング,ZEPエンジニアリング株式会社.
  6. [VOD/Pi KIT]カメラ×ラズパイで一緒に!初めての画像処理プログラミング,ZEPエンジニアリング株式会社.
  7. スパコンでも破れない!高セキュリティ・マイコン・プログラミング,ZEPエンジニアリング株式会社.
  8. [YouTube]宇宙軌道ロケット 成功の方程式
  9. [YouTube]宇宙ロケットの電子回路開発
  10. FPGA/Zynqで作るカスタム・コンピュータ・チップ,ZEPエンジニアリング株式会社.
  11. Lチカ入門!ソフトウェア屋のためのHDL事はじめ,ZEPエンジニアリング株式会社.
  12. USBカメラの動画キャプチャ&描画用 Pythonプログラム,ZEPエンジニアリング株式会社.
  13. ライブラリ完備!組立式ラズパイI/O増設ボード MCC DAQ HATSファミリ誕生,ZEPエンジニアリング株式会社.

参考文献

  1. [VOD/KIT] 実習キットで一緒に作る!オープンソースCPU RISC-V入門,ZEPエンジニアリング株式会社.
  2. [VOD/KIT]ARM Cortex-A9&FPGA内蔵SoC Zynqで初体験!オリジナル・プロセッサ開発入門,ZEPエンジニアリング株式会社.