VHDL
出典: フリー百科事典『ウィキペディア(Wikipedia)』
VHDL(VHSIC Hardware Description Language)は、デジタル回路設計用の、ハードウェア記述言語(HDL)の一種である。EDA分野における標準の一つとしてFPGAやASICなどの設計に使われている。
目次 |
[編集] 歴史
VHDLは、米国国防総省が業者の納品する機器に含まれるASICの動作のドキュメントを書かせるために開発された。すなわち、分厚く複雑になりがちな紙のマニュアルを代えることを目指したのが始まりである。
VHDLの文法はプログラム言語のALGOLおよびその直系である、Pascal、Adaに似せて設計された。従ってVHDLも大文字、小文字の区別をしない。
このドキュメント作成用言語で書かれた仕様がそのまま実行できたら便利であろうとのアイデアはすぐ論理シミュレータとして実現された。さらにゲートレベルの回路を生成する論理合成も開発された。最新の合成ツールを用いれば、同じVHDL記述から設計者の指定する条件で別の回路を合成することもできる。コストを優先するか、性能を優先するか、その他各種の複合条件を指定して生成させることができる。 ただしこれは同様のHDLであるVerilogでも可能なことであり、VHDLの特質というよりはツールの機能による。
VHDLの最初のバージョンはIEEE 1076-1987として規格化された。整数、実数、論理値、文字、時間およびそれらの配列としてbit_vectorやstring(文字列)など広範囲なデータ型が用意された。
しかしこのバージョンでは多値論理は定義されていない。信号のドライブ能力や不定値を考慮した9値のstd_logicが定められ、IEEE 1164として規格化された。
[編集] コード例
ここでは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
がオーバーフローするまで、フィボナッチ数列を生成する。
カテゴリ: コンピュータの利用 | ハードウェア記述言語 | 電子工学