VHDL
| VHDL | |
|---|---|
| パラダイム | ハードウェア記述言語 |
| 登場時期 | 1981年 |
| 最新リリース | IEEE 1076-2008 / 2009年01月26日 |
| 型付け | 静的型付け |
| 影響を受けた言語 | Ada |
VHDL[1]は、デジタル回路設計用の、ハードウェア記述言語の一種である。EDA分野における標準の一つで、主として論理回路の設計に、特にFPGAやASICなどの設計で使われる。規格が存在し、IEEE 1076-2008 である。
目次 |
歴史 [編集]
米国国防総省は、業者の納品する機器で含むASICの動作の文書記述のためにVHDLを開発した。すなわち、分厚く複雑になりがちな紙のマニュアルの代替を目指したのが始まりである。
全般に、同じく米国防総省のプログラミング言語であるAdaの影響が大きく、その構文は(Adaと同じく)いわゆる「ALGOL系」である。規格では、ケース・インセンシティブ(大文字、小文字の区別をしない)としている。
この文書作成用言語で書いた仕様がそのまま実行できたら便利であろうとのアイデアにより、論理(シミュレータ)が実装され、さらにゲートレベルの回路を生成する論理合成ツール(ソフトウェア)が実装された。合成ツールを用いれば、他のHDLと同様、同じVHDL記述から設計者の指定する条件で別の回路を合成することもできる。費用を優先するか、性能を優先するか、その他各種の複合条件を指定して生成することができる。
VHDLの最初のバージョンはIEEE 1076-1987として規格化した。整数、実数、論理値、文字、時間およびそれらの配列としてbit_vectorやstring(文字列)など広範囲なデータ型を用意している。
しかしこのバージョンでは多値論理を定義していない。信号のドライブ能力や不定値を考慮した9値のstd_logicを定め、IEEE 1164として規格化した。
その後、IEEE 1076-1993[2]、IEEE 1076-2000[3]、IEEE 1076-2002[4]、IEEE 1076-2008[5] と改定していった。
コード例 [編集]
ここではVHDL-93に準拠したコードを示す。
Hello World [編集]
Hello Worldプログラム例:
-- VHDL example programme: hello.vhd use std.textio.all; entity hello is end entity hello; architecture Wiki of hello is constant message : string := "hello world"; begin process is variable L: line; begin write(L, message); writeline(output, L); wait; end process; end architecture Wiki;
メッセージはシミュレータのデフォルト出力ウインドウに出力される。
フィボナッチ数列 [編集]
次の例はもう少し実用的なものである:
-- Fib.vhd -- -- Fibonacci number sequence generator library IEEE; use IEEE.std_logic_1164.all; use IEEE.numeric_std.all; entity Fibonacci is port ( Reset : in std_logic; Clock : in std_logic; Number : out unsigned(31 downto 0) ); end entity Fibonacci; architecture Rcingham of Fibonacci is signal Previous : natural; signal Current : natural; signal Next_Fib : natural; begin Adder: Next_Fib <= Current + Previous; Registers: process (Clock, Reset) is begin if Reset = '1' then Previous <= 1; Current <= 1; elsif Clock'event and Clock = '1' then Previous <= Current; Current <= Next_Fib; end if; end process Registers; Number <= to_unsigned(Previous, 32); end architecture Rcingham;
シミュレーションを行うとNext_Fibがオーバーフローするまで、フィボナッチ数列を生成する。
参照 [編集]
- ^ 名前の由来は英語の「英: very-high-speed-integrated-circuits hardware description language」である。
- ^ 1076-1993 IEEE Standard VHDL Language Reference Manual
- ^ 1076-2000 IEEE Standard VHDL Language Reference Manual
- ^ 1076-2002 IEEE Standard VHDL Language Reference Manual
- ^ 1076-2008 IEEE Standard VHDL Language Reference Manual