「VHDL」の版間の差分
44行目: | 44行目: | ||
Hello Worldプログラム例: |
Hello Worldプログラム例: |
||
< |
<syntaxhighlight lang="vhdl"> |
||
-- VHDL example programme: hello.vhd |
-- VHDL example programme: hello.vhd |
||
67行目: | 67行目: | ||
end architecture Wiki; |
end architecture Wiki; |
||
</syntaxhighlight> |
|||
</source> |
|||
メッセージはシミュレータのデフォルト出力ウインドウに出力される。 |
メッセージはシミュレータのデフォルト出力ウインドウに出力される。 |
||
73行目: | 73行目: | ||
次の例はもう少し実用的なものである: |
次の例はもう少し実用的なものである: |
||
< |
<syntaxhighlight lang="vhdl"> |
||
-- Fib.vhd |
-- Fib.vhd |
||
-- |
-- |
||
117行目: | 117行目: | ||
end architecture Rcingham; |
end architecture Rcingham; |
||
</syntaxhighlight> |
|||
</source> |
|||
シミュレーションを行うと<code>Next_Fib</code>がオーバーフローするまで、フィボナッチ数列を生成する。 |
シミュレーションを行うと<code>Next_Fib</code>がオーバーフローするまで、フィボナッチ数列を生成する。 |
2020年7月5日 (日) 22:43時点における版
パラダイム | ハードウェア記述言語(HDL: Hardware Description Language) |
---|---|
登場時期 | 1981年 |
最新リリース | IEEE 1076-2008/ 2009年1月26日 |
型付け | 静的型付け |
影響を受けた言語 | Ada |
影響を与えた言語 | Verilog-HDL |
ライセンス | IEEE/IEC Standard |
ウェブサイト | http://ieeexplore.ieee.org/xpl/articleDetails.jsp?arnumber=4772740 |
VHDLは、デジタル回路設計用の、ハードウェア記述言語(HDL: Hardware Description Language)の一種である。標準化は(現在は)IEEE/IECによる。主として論理回路の設計に、特にFPGAやASICなどの設計で使う。IEEEとIECで同一規格IEEE 1076-2008 VHDL Language Reference Manual/IEC 61691-1-1:2011 Behavioural languages - Part 1-1: VHDL Language Reference Manual を発行している。名前の由来は英語のVHSIC HDLの略で、VHSICは、very high speed integrated circuits(超高速集積回路)である。
歴史
米国国防総省は、業者の納品する機器で含むASICの動作の文書記述のためにVHDLを開発した。すなわち、分厚く複雑になりがちな紙のマニュアルの代替を目指したのが始まりである。
全般に、同じく米国防総省のプログラミング言語であるAdaの影響が大きく、その構文は(Adaと同じく)いわゆる「ALGOL系」である。規格では、ケース・インセンシティブ(大文字、小文字の区別をしない)としている。
この文書作成用言語で書いた仕様がそのまま実行できたら便利であろうとのアイデアにより、論理(シミュレータ)が実装され、さらにゲートレベルの回路を生成する論理合成ツール(ソフトウェア)が実装された。合成ツールを用いれば、他のHDLと同様、同じVHDL記述から設計者の指定する条件で別の回路を合成することもできる。費用を優先するか、性能を優先するか、その他各種の複合条件を指定して生成することができる。
VHDLの最初のバージョンはIEEE 1076-1987として規格化した。整数、実数、論理値、文字、時間およびそれらの配列としてbit_vectorやstring(文字列)など広範囲なデータ型がある。
しかしこのバージョンでは多値論理を定義していない。信号のドライブ能力や不定値を考慮した9値のstd_logicを定め、IEEE 1164として規格化した。
その後、IEEE 1076-1993[1]、IEEE 1076-2000[2]、IEEE 1076-2002[3]、IEEE 1076-2008[4] と改定し、IECが同一規格を発行するようになった。WTO/TBT協定で、国際取引の技術基準は国際規格を尊重することになっているため、IECの規格文書として発行することに合意したものである。
コード例
ここではVHDL-93に準拠したコードを示す。
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
がオーバーフローするまで、フィボナッチ数列を生成する。
参照
- ^ 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