FPGAを学び始めると、まず最初に「HDL(Hardware Description Language)」という言葉に出会います。しかし、いざVivadoやQuartusといった開発ツールを使ってみると、VHDLとVerilogという2種類のHDLが混在していることに気づきます。
「HDLって一つじゃないの?」 「どっちを使えばいいの?」 「なぜ2種類もあるの?」
こういった疑問に答えるため、本記事ではVHDLとVerilogの歴史、違い、そして実際の開発環境での扱いについて解説していきます。
1. HDLは大きく分けて2系統ある
HDLには大きく分けて以下の2つの系統があります。
- VHDL(Very High Speed Integrated Circuit Hardware Description Language)
- Verilog HDL(Verilog Hardware Description Language)
それぞれの歴史を簡単に振り返ってみましょう。
VHDLの歴史
VHDLは1980年代に米国防総省(DoD)が中心となり、軍事・航空宇宙用途の電子機器の標準化を目的として開発されました。1987年にIEEE 1076として標準化され、現在も改訂が続いています。
特徴として、厳格な型付けと強力な並行処理サポートがあり、安全性が求められるシステムに適しています。
Verilogの歴史
Verilogは1984年にGateway Design Automation(後にCadenceが買収)によって開発されました。元々はICのシミュレーションを目的として作られましたが、1995年にIEEE 1364として標準化され、ASIC(特定用途向けIC)設計の分野で広く普及しました。
VerilogはC言語に似たシンプルな文法を持ち、学習が容易なため、商業用途で広く使われています。
2. なぜ2種類のHDLがあるのか?
VHDLとVerilogは、それぞれ異なる背景を持つため、開発思想や用途が異なります。
HDL | 主な開発背景 | 特徴 |
---|---|---|
VHDL | 米国防総省による軍事・航空宇宙用途の標準化 | 型が厳格、エラーを防ぎやすい、記述が冗長 |
Verilog | ICシミュレーションのために開発 | C言語に似ていて記述が簡単、設計スピードが速い |
使い分けとしては、
- FPGA設計(特にXilinx製)ではVHDLがよく使われる
- ASIC設計ではVerilogが一般的
- Intel(旧Altera)系のFPGAではVerilogのサポートが強い
特定の用途によって向き・不向きがあるため、どちらを選んでもツールで対応可能です。
3. 実際の開発環境での扱い
HDLの違いは、拡張子や開発ツールでの設定にも影響を与えます。
拡張子の違い
言語 | 拡張子 |
---|---|
VHDL | .vhd or .vhdl |
Verilog | .v |
SystemVerilog | .sv |
Vivadoなどのツールでは「Mixed Language」設定が可能
FPGA設計では、VHDLとVerilogが混在したプロジェクトを扱うことがよくあります。VivadoやQuartusなどの開発環境では、「Mixed Language」設定を有効にすることで、VHDLとVerilogを同時に使用できます。
VHDLとVerilogを混在させる方法
Vivadoで混在プロジェクトを作成する際の基本ルール:
- VHDLからVerilogを呼び出す場合
- VerilogモジュールをVHDLのコンポーネントとして宣言し、ラッピングする
- VerilogからVHDLを呼び出す場合
- VHDLモジュールをブラックボックス(blackbox)として扱う
- Block Design(BD)を活用
- VivadoのIP Integratorを使うと、VHDL・Verilogの違いを意識せずに統合可能
4. まとめ:VHDLとVerilogの違いをスッキリ理解
比較項目 | VHDL | Verilog |
---|---|---|
歴史的背景 | 米国防総省の標準化プロジェクト | ICシミュレーションのために開発 |
主な用途 | FPGA(特にXilinx)、航空宇宙・軍事 | ASIC、FPGA(特にIntel/Altera) |
文法の厳格さ | 型が厳格でエラーが少ない | C言語風で柔軟だがエラーが出やすい |
学習のしやすさ | 記述が冗長で学習コストが高い | シンプルで習得が容易 |
開発スピード | 厳密な設計が可能だが記述量が多い | 記述が簡潔でスピードが速い |
拡張子 | .vhd | .v or .sv |
ツールでの扱い | Vivado/Quartusともにサポート | ASIC開発で主流、FPGAでも利用可 |
5. どちらを選ぶべきか?
FPGAを学習する上で、どちらを選んでも最終的にはツールで対応可能です。ただし、
- Xilinx FPGAを使うならVHDLが無難
- Intel FPGAならVerilogの方が親和性が高い
- ASIC開発を視野に入れるならVerilog(SystemVerilog)を学ぶのが良い
初心者のうちは、プロジェクトのサンプルコードを読んでみて、自分にとって書きやすい方を選ぶのがベストです。
FPGA学習の第一歩として、まずはサンプルプロジェクトを動かしながら、少しずつHDLの記述に慣れていきましょう!