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の動作を確認できます.
- トグル・スイッチ:ONのときはhigh(3.3V),OFFのときはlow(0V)となる.
- プッシュ・スイッチ:押したときにhigh(3.3V),離すとlow(0V)となる.
- FPGAのLEDピンはhigh(3.3V)で点灯する.
- LEDには電流制限抵抗が組み込まれている.
スイッチの信号がFPGAのピンに入力され,その値をFPGA内部で処理し,LEDに出力することで,スイッチON時にLEDが点灯する動作を実現できます.
FPGA内部での信号接続とHDL記述
FPGAの内部では,スイッチのピンとLEDのピンをHDL(Hardware Description Language)で記述し,接続を定義します.BASYS 3のHDL記述ファイルでは,Verilog HDLを使用し,assign文を用いてスイッチの信号をLEDへ渡します.
- Verilog HDLのコード内で,FPGAボードの入出力ピンを定義する.
- スイッチを入力ピン(input)として定義する.
- LEDを出力ピン(output)として定義する.
- assign文を使用して,スイッチとLEDを直接接続する.
このようにHDLを用いることで,論理回路の接続をプログラムで記述できる.
入出力ピンの割り当て(ピン・アサイン)
FPGAを設計する際,物理的なピンとHDLで記述した信号を関連付ける作業が必要です.これは「ピン・アサイン」と呼ばれ,設計ツール上で設定するか,制約ファイル(XDCファイル)を直接編集することで実現できます.
- 設計ツールで「Open Implemented Design」をクリックする.
- 「Layout」→「I/O planning」に進む.
- 制約ファイル(Basys-3-Master_mod.xdc)をテキスト・エディタで編集することも可能.
ピン・アサインを適切に設定することで,スイッチやLEDなどの外部デバイスとFPGAの対応が決まます.
キーワード
正論理と負論理とは
論理回路では,信号のON/OFFをどのように定義するかが重要です.一般的に,ONのときにhigh(3.3V),OFFのときにlow(0V)とする方式を「正論理(アクティブ・ハイ)」といいます.逆に,ONのときにlow(0V),OFFのときにhigh(3.3V)となる方式を「負論理(アクティブ・ロー)」といいます.
- 正論理:スイッチON(high)→ LED点灯(high)
- 負論理:スイッチON(low)→ LED点灯(low)
正論理と負論理の使いわけ
FPGAの設計では,どちらの論理を用いるかによって,HDL記述や回路の動作が変わります.assign文を`assign led = sw;`とした場合,スイッチがhighのときにLEDが点灯します.逆に,`assign led = ~sw;`とすると,スイッチがlowのときにLEDが点灯します.
正論理・負論理の応用
ディジタル回路では,どちらの論理方式を選択するかが設計の自由度に影響を与えます.アクティブ・ローのデバイス(7セグメントLEDなど)を使用する場合,負論理の考え方が重です.
- プッシュ・スイッチが負論理の場合,HDLで反転を考慮する.
- 7セグメントLEDは負論理駆動のため,ピンの状態を反転する必要がある.
- 複数のデバイスが混在する場合,論理の整合性を取ることが必要.
〈著:ZEPマガジン〉
著者紹介
- NTT,IBM,Sony,NECの各研究所において高性能回路IPやハイレベル・シンセシスの研究,およびプレイステーションなどの製品用SoC開発に従事した後,現職にて民間宇宙ロケットの飛行制御コンピュータの研究開発に従事.FPGAや高位合成を活用している
著書
- [VOD/KIT]一緒に動かそう!Lチカから始めるFPGA開発【基礎編&実践編】,ZEPエンジニアリング株式会社.
- [VOD/KIT]Xilinx製FPGAで始めるHDL回路設計入門,ZEPエンジニアリング株式会社.
- [VOD/KIT]一緒に動かそう!Lチカから始めるFPGA開発【基礎編】,ZEPエンジニアリング株式会社.
- [VOD/KIT]Zynqで初めてのFPGA×Linux I/O搭載カスタムSoC製作,ZEPエンジニアリング株式会社.
- [VOD/KIT]Tiny FPGA実習!高校生から始めるHDLプログラミング,ZEPエンジニアリング株式会社.
- [VOD/Pi KIT]カメラ×ラズパイで一緒に!初めての画像処理プログラミング,ZEPエンジニアリング株式会社.
- スパコンでも破れない!高セキュリティ・マイコン・プログラミング,ZEPエンジニアリング株式会社.
- [YouTube]宇宙軌道ロケット 成功の方程式
- [YouTube]宇宙ロケットの電子回路開発
- FPGA/Zynqで作るカスタム・コンピュータ・チップ,ZEPエンジニアリング株式会社.
- Lチカ入門!ソフトウェア屋のためのHDL事はじめ,ZEPエンジニアリング株式会社.
- USBカメラの動画キャプチャ&描画用 Pythonプログラム,ZEPエンジニアリング株式会社.
- ライブラリ完備!組立式ラズパイI/O増設ボード MCC DAQ HATSファミリ誕生,ZEPエンジニアリング株式会社.
参考文献
- [VOD/KIT] 実習キットで一緒に作る!オープンソースCPU RISC-V入門,ZEPエンジニアリング株式会社.
- [VOD/KIT]ARM Cortex-A9&FPGA内蔵SoC Zynqで初体験!オリジナル・プロセッサ開発入門,ZEPエンジニアリング株式会社.