| パラダイム | 並行、リアクティブ、データフロー |
|---|---|
| 初登場 | 1980年代 |
| 安定リリース | IEEE 1076-2019 / 2019年12月23日 |
| タイピングの規律 | 強い |
| ファイル名拡張子 | .vhd |
| Webサイト | IEEE VASG |
| 方言 | |
| VHDL-AMS | |
| 影響を受けた | |
| アダ、[1] パスカル | |

VHDL ( VHSICハードウェア記述言語) は、設計入力、ドキュメント作成、検証を目的として、システム レベルからロジック ゲートレベルまで、複数の抽象レベルでデジタル システムの動作と構造をモデル化できるハードウェア記述言語です。この言語は1980 年代に米軍のVHSICプログラム用に開発され、電気電子技術者協会(IEEE)によってIEEE Std 1076として標準化されました。最新バージョンはIEEE Std 1076-2019です。アナログおよびミックスド シグナルシステムをモデル化するために、VHDL に基づく IEEE 標準化 HDL であるVHDL-AMS (正式には IEEE 1076.1) が開発されました。
歴史
1983 年、VHDL はもともと米国国防総省の要請により、サプライヤ企業が機器に組み込んでいたASICの動作を文書化するために開発されました。MIL-STD-454N 規格[2]の要件 64 のセクション 4.5.1「VHDL での ASIC の文書化」では、「マイクロエレクトロニクス デバイス」を VHDL で文書化することが明示的に要求されています。
このドキュメントの情報から ASIC をシミュレートできるというアイデアは明らかに魅力的だったので、 VHDL ファイルを読み取ることができるロジック シミュレータが開発されました。次のステップは、VHDL を読み取り、回路の物理的な実装の定義を出力する ロジック合成ツールの開発でした。
国防総省は、Ada の開発ですでに徹底的にテストされた概念を再発明することを避けるために、可能な限り多くの構文を Ada に基づいて作成することを要求しているため、[引用が必要] VHDL は概念と構文の両方でAda プログラミング言語から多くの部分を借用しています。
IEEE標準IEEE 1076-1987 [3]に基づいて設計されたVHDLの初期バージョンには、数値(整数と実数)、論理(ビットとブール値)、文字と時間、および呼び出された配列と呼び出された文字列の配列を含む、幅広いデータ型が含まれていました。
bitbit_vectorcharacter
しかし、この版では解決されなかった問題が「多値ロジック」であり、信号の駆動力 (なし、弱、強) と未知の値も考慮されます。これには、9 値のロジック タイプ (スカラーとそのベクター バージョン)を定義するIEEE 標準 1164 が必要です。親タイプの解決済みサブタイプである 型の信号は、バス構造をモデル化するために複数の駆動を許可し、接続された解決関数が競合する割り当てを適切に処理します。
std_logicstd_logic_vectorstd_Ulogicstd_logic
1993 年に更新されたIEEE 1076では、構文の一貫性が向上し、命名の柔軟性が向上し、ISO-8859-1印刷可能文字をcharacter許可するように型が拡張され、演算子が追加されるなどしました。 [指定]xnor
標準 (2000 および 2002) のマイナー変更により、保護された型の概念 ( C++のクラスの概念に類似) が追加され、ポート マッピング ルールからいくつかの制限が削除されました。
IEEE 標準 1164 に加えて、言語の機能を拡張するためにいくつかの子標準が導入されました。IEEE 標準 1076.2 では、実数および複素数データ型の処理が改善されました。IEEE 標準 1076.3 では、ベクトルの算術演算を容易にするために、符号付きおよび符号なしの型が導入されました。IEEE 標準 1076.1 ( VHDL-AMSとして知られる) では、アナログおよびミックス信号回路設計の拡張機能が提供されました。
他のいくつかの標準では、特にVITAL (VHDL Initiative Towards ASIC Libraries) とマイクロ波回路設計拡張が、VHDL のより広範な使用をサポートしています。
2006 年 6 月、 Accelleraの VHDL 技術委員会(IEEE から標準の次の更新作業の委託を受けています) は、いわゆる VHDL-2006 のドラフト 3.0 を承認しました。この提案された標準は、旧バージョンとの完全な互換性を維持しながら、VHDL コードの作成と管理を容易にする多数の拡張機能を提供します。主な変更には、子標準 (1164、1076.2、1076.3) のメインの 1076 標準への組み込み、演算子の拡張セット、caseおよびgenerateステートメントのより柔軟な構文、VHPI (VHDL Procedural Interface) (C/C++ 言語へのインターフェイス) と PSL ( Property Specification Language )のサブセットの組み込みが含まれます。これらの変更により、合成可能な VHDL コードの品質が向上し、テストベンチがより柔軟になり、システムレベルの記述に VHDL をより幅広く使用できるようになります。
2008 年 2 月、Accellera は VHDL 4.0 (非公式には VHDL 2008 とも呼ばれる) を承認しました。このバージョンでは、バージョン 3.0 の試用期間中に発見された 90 件を超える問題が修正され、拡張されたジェネリック型が含まれています。2008 年、Accellera は VHDL 4.0 を IEEE にリリースし、IEEE 1076-2008 への組み込みの投票を行いました。VHDL 標準 IEEE 1076-2008 [4]は 2009 年 1 月に発行されました。
標準化
IEEE規格 1076 は、VHSIC ハードウェア記述言語 (VHDL) を定義します。この 言語は、もともと 1983 年に米国空軍から発注された契約 F33615-83-C-1003 に基づいて開発されました。この契約では、言語の専門家および主契約者として Intermetrics, Inc.、チップ設計の専門家としてTexas Instruments、およびコンピュータ システム設計の専門家としてIBMのチームが担当しました。この言語は何度も改訂され、重要な点で強化または拡張するさまざまなサブ規格が関連付けられてきました。
1076は電子システムの設計における画期的な出来事であり、現在もその存在は変わりません。[5]
改訂
- IEEE 1076-1987 [3]アメリカ空軍による言語バージョン7.2の最初の標準化された改訂版。
- IEEE 1076-1993 [6] ( ISBN 1-55937-376-8でも出版)。数年にわたるフィードバックから大幅な改善が行われました。おそらく最も広く使用されているバージョンであり、ベンダーツールのサポートも最大です。
- IEEE 1076-2000。[7]マイナーリビジョン。保護された型の使用を導入。
- IEEE 1076-2002。[8] 1076-2000のマイナーリビジョン。バッファポートに関するルールが緩和されました。
- IEC 61691-1-1:2004. [9] IECによるIEEE 1076-2002の採用。
- IEEE 1076c-2007。[10] VHDL手続き型インターフェースであるVHPIを導入しました。これはソフトウェアにVHDLモデルにアクセスする手段を提供します。VHPIに対応するために、VHDL言語に若干の変更が必要でした。
- IEEE 1076-2008 (以前は 1076-200x と呼ばれていました)。2009 年 1 月 26 日にメジャー リビジョンがリリースされました。その他の変更点としては、この標準では PSL の基本サブセットが組み込まれ、パッケージとサブプログラムでジェネリックが許可され、外部名の使用が導入されています。
- IEC 61691-1-1:2011. [11] IEEE 1076-2008のIEC採用。
- IEEE 1076-2019。大幅な改訂。
関連規格
- IEEE 1076.1 VHDL アナログおよびミックスドシグナル ( VHDL-AMS )
- IEEE 1076.1.1 VHDL-AMS 標準パッケージ (stdpkgs)
- IEEE 1076.2 VHDL 数学パッケージ
- IEEE 1076.3 VHDL 合成パッケージ (vhdlsynth) (数値 std )
- IEEE 1076.3 VHDL 合成パッケージ – 浮動小数点 (fphdl)
- IEEE 1076.4 タイミング (ASIC ライブラリに向けた VHDL イニシアチブ: 重要)
- IEEE 1076.6 VHDL合成相互運用性(2010年に廃止)[12]
- IEEE 1164 VHDL マルチバリューロジック (std_logic_1164) パッケージ
デザイン
VHDL は一般に、論理回路を記述するテキスト モデルを記述するために使用されます。このようなモデルは、論理設計の一部である場合に限り、合成プログラムによって処理されます。シミュレーション プログラムは、設計にインターフェイスする論理回路を表すシミュレーション モデルを使用して、論理設計をテストするために使用されます。このシミュレーション モデルのコレクションは、一般にテストベンチと呼ばれます。
VHDLシミュレータは、通常、イベント駆動型シミュレータです。[13]これは、各トランザクションが特定のスケジュールされた時間だけイベントキューに追加されることを意味します。たとえば、信号割り当てが1ナノ秒後に発生する場合、イベントは時間+1nsの間キューに追加されます。ゼロ遅延も許可されますが、スケジュールする必要があります。このような場合は、無限に小さい時間ステップを表すデルタ遅延が使用されます。シミュレーションは、トリガーされたステートメントが評価されるステートメント実行と、キュー内のイベントが処理されるイベント処理の2つのモード間で切り替わります。
VHDL には、ハードウェア設計に固有の並列処理を処理するための構造がありますが、これらの構造 (プロセス) は、Ada の並列構造 (タスク) とは構文が異なります。Ada と同様に、VHDL は厳密に型指定されており、大文字と小文字は区別されません。ハードウェアで一般的な操作を直接表現するために、 nandやnorを含むブール演算子の拡張セットなど、Ada にはない VHDL の機能が多数あります。
VHDL にはファイル入出力機能があり、テキスト処理用の汎用言語として使用できますが、ファイルは、刺激または検証データ用のシミュレーション テストベンチでより一般的に使用されます。実行可能なバイナリを作成する VHDL コンパイラがいくつかあります。この場合、VHDL を使用してテストベンチを作成し、ホスト コンピュータ上のファイルを使用して刺激を定義し、ユーザーと対話し、結果を期待値と比較することで、設計の機能を検証できる可能性があります。ただし、ほとんどの設計者は、この作業をシミュレータに任せています。
経験の浅い開発者が、シミュレーションは成功しても実際のデバイスに合成できない、または大きすぎて実用的ではないコードを作成することは比較的簡単です。特に陥りやすい落とし穴の 1 つは、ストレージ要素としてD 型フリップフロップではなく、透過ラッチを誤って作成することです。[14]
VHDL IDE (FPGA実装用にはXilinx ISE、Altera Quartus、Synopsys Synplify、Mentor Graphics HDL Designerなど)でハードウェアを設計し、目的の回路のRTL回路図を作成することができます。その後、生成された回路図は、適切なテストベンチを生成した後、回路の入力と出力の波形を表示するシミュレーションソフトウェアを使用して検証できます。特定の回路またはVHDLコードに適切なテストベンチを生成するには、入力を正しく定義する必要があります。たとえば、クロック入力には、ループプロセスまたは反復ステートメントが必要です。[15]
最後のポイントは、VHDL モデルがCPLDやFPGAなどのプログラマブル ロジック デバイスにマップされる「ゲートとワイヤ」に変換されるとき、何らかのプロセッサ チップ上で「実行される」 VHDL コードではなく、実際のハードウェアが構成されるということです。
利点
システム設計に使用する場合の VHDL の主な利点は、合成ツールが設計を実際のハードウェア (ゲートおよびワイヤ) に変換する前に、必要なシステムの動作を記述 (モデル化) および検証 (シミュレーション) できることです。
もう 1 つの利点は、VHDL では並行システムの記述が可能になることです。VHDL は、一連のステートメントが 1 命令ずつ順番に実行される BASIC、C、アセンブリ コードなどの手続き型コンピューティング言語とは異なり、すべてのステートメントが同時に実行されると見なされるデータフロー言語です。
VHDL プロジェクトは多目的です。一度作成された計算ブロックは、他の多くのプロジェクトで使用できます。ただし、多くの構成および機能ブロック パラメータ (容量パラメータ、メモリ サイズ、要素ベース、ブロック構成、相互接続構造) を調整できます。
VHDL プロジェクトは移植可能です。1 つの要素ベース用に作成されたコンピューティング デバイス プロジェクトは、さまざまなテクノロジを備えたVLSIなど、別の要素ベースに移植できます。
オリジナルのVerilogと比較したVHDLの大きな利点は、VHDLが完全な型システムを持っていることです。設計者は型システムを使用して、より構造化されたコードを書くことができます(特にレコード型を宣言することによって)。[16]
デザイン例
‹テンプレート マニュアルは統合が検討されています。›
VHDL では、設計は少なくとも、インターフェイスを記述するエンティティと、実際の実装を含むアーキテクチャで構成されます。また、ほとんどの設計ではライブラリ モジュールがインポートされます。設計によっては、複数のアーキテクチャと構成が含まれる場合もあります。
VHDLの単純なANDゲートは次のようになります。
-- (これは VHDL コメントです)
/*
これはブロックコメントです( VHDL - 2008 ) */ -- IEEE ライブラリlibrary IEEEから std_logicをインポートします。; IEEE.std_logic_1164. allを使用します。
-- これはエンティティ
ANDGATEのポート( I1 : in std_logic ; I2 : in std_logic ; O : out std_logic ) ;エンティティANDGATE の終了です。
-- これはANDGATEのアーキテクチャアーキテクチャRTLです。begin O < = I1 and I2 ; endアーキテクチャRTL ;
( はレジスタ転送レベルRTL設計の略であることに注意してください。) 上記の例は HDL 初心者には冗長に思えるかもしれませんが、多くの部分はオプションであるか、一度だけ記述すれば済みます。通常、このような単純な関数は、このような単純なもののために別のモジュールを用意するのではなく、より大きな動作モジュールの一部となります。また、型などの要素の使用は、最初はやり過ぎのように思えるかもしれません。最初は組み込み型を使用してライブラリのインポートを回避することも簡単にできます。ただし、単純なビット (0,1) の代わりに、多値ロジックの形式、具体的には9 値ロジック( 、、、、、、、、) を使用すると、現在他の HDL には存在しない非常に強力なシミュレーションおよびデバッグ ツールが設計者に提供されます。
std_logicbitUX01ZWHL-
次の例では、VHDL コードが非常にコンパクトな形式で記述できることがわかります。ただし、経験豊富な設計者は通常、読みやすさと保守性を考慮して、このようなコンパクトな形式を避け、より冗長なコーディング スタイルを使用します。
合成可能な構造とVHDLテンプレート
VHDL は、電子設計のシミュレーションとそのような設計の合成という 2 つの異なる目的で頻繁に使用されます。合成は、VHDL がコンパイルされ、FPGA や ASIC などの実装テクノロジにマッピングされるプロセスです。
VHDL のすべての構造が合成に適しているわけwait for 10 ns;ではありません。たとえば、タイミングを明示的に扱う構造のほとんどは、シミュレーションには有効ですが、合成できません。合成ツールによって機能は異なりますが、多くの合成ツールで共通のハードウェアにマップされる言語構造とイディオムを定義する、VHDL の共通の合成可能なサブセットが存在します。IEEE 1076.6 は、公式の合成サブセットと見なされる言語のサブセットを定義します。非標準の構造では結果が不正確または最適ではない可能性があるため、合成には非常に慣用的なコードを記述することが一般に「ベスト プラクティス」と見なされます。
MUX テンプレート
マルチプレクサ、または通常「MUX」と呼ばれるものは、ハードウェア設計で非常によく使われるシンプルな構造です。以下の例は、入力と、セレクタと出力を持つシンプルな2対1 MUXを示しています。VHDLでは同じMUXを表現する方法が他にもたくさんあることに注意してください。[17]ABSX
S = '1'の場合X <= A 、それ以外の場合はB ;
4x3 入力と 2 ビット セレクタを備えた MUX のより複雑な例:
library IEEE ; use IEEE.std_logic_1164. all ; entity mux4 is port ( a1 : in std_logic_vector ( 2 downto 0 ) ; a2 : in std_logic_vector ( 2 downto 0 ); a3 : in std_logic_vector ( 2 downto 0 ) ; a4 : in std_logic_vector ( 2 downto 0 ); sel : in std_logic_vector ( 1 downto 0 ); b : out std_logic_vector ( 2 downto 0 ) ); end mux4 ; Architecture rtl of mux4 is -- declarative part: empty begin p_mux : process ( a1 , a2 , a3 , a4 , sel ) begin case sel is when "00" => b <= a1 ; "01"の場合=> b <= a2 ; "10"の場合=> b <= a3 ;その他の場合=> b <= a4 ;ケース終了;プロセスp_mux終了; RTL終了;
ラッチテンプレート
透過ラッチは基本的に、イネーブル信号が上がったときに更新される 1 ビットのメモリです。繰り返しますが、VHDL ではこれを表現する方法は他にもたくさんあります。
-- ラッチ テンプレート 1:
Enable = '1'の場合Q <= D 、それ以外の場合はQ ;
-- ラッチ テンプレート 2:
プロセス(すべて)
開始
Q <= Dとき(有効);終了プロセス;
D型フリップフロップ
D 型フリップフロップは、クロックの立ち上がり (または立ち下がり) エッジで入力信号をサンプリングします。この例では、非同期のアクティブ ハイ リセットがあり、クロックの立ち上がりエッジでサンプリングします。
DFF :プロセス(すべて)が開始されます。RSTの場合はQ <= '0'です。それ以外の場合はrising_edge ( CLK )の場合はQ <= Dです。次の場合は終了します。DFFプロセスを終了します。
VHDL でエッジ トリガー動作を記述するもう 1 つの一般的な方法は、「イベント」信号属性を使用することです。信号名と属性名の間に 1 つのアポストロフィを記述する必要があります。
DFF :プロセス( RST 、CLK )が開始されます。RSTの場合、 Q <= ' 0'です。それ以外の場合、CLK 'イベントかつCLK = '1'の場合、 Q <= Dです。次の場合、終了します。DFFプロセスを終了します。
VHDLは次のような「ワンライナー」にも適しています。
DFF : RST = '1'の場合Q <= '0' 、それ以外の場合rising_edge ( clk )の場合Dです。
または
DFF :プロセス(すべて)が開始されます。立ち上がりエッジ( CLK )の場合、Q <= Dの場合、終了の場合、RSTの場合、 Q <= '0'の場合、終了の場合、DFFプロセスが終了します。
または:
ライブラリIEEE ; USE IEEE.Std_logic_1164. all ;
エンティティRisingEdge_DFlipFlop_SyncResetはポートです( Q : out std_logic ; Clk : in std_logic ; sync_reset : in std_logic ; D : in std_logic ); end RisingEdge_DFlipFlop_SyncReset ;
RisingEdge_DFlipFlop_SyncResetのアーキテクチャ動作は、begin process ( Clk ) begin if ( rising_edge ( Clk )) then if ( sync_reset = '1' ) then Q <= '0' ; else Q <= D ; end if ; end if ; end process ; end Behavioral ;です。
これは、このプロセスによって駆動されるすべての信号 (レジスタ) をリセットする必要がない場合に役立ちます。
例: カウンター
次の例は、非同期リセット、並列ロード、および設定可能な幅を備えたアップ カウンターです。これは、'unsigned' 型の使用、'unsigned' と 'std_logic_vector' 間の型変換、および VHDLジェネリックを示しています。ジェネリックは、C++ などの他の従来のプログラミング言語の引数やテンプレートに非常に似ています。この例は、VHDL 2008 言語で記述されています。
ライブラリIEEE ; IEEE.std_logic_1164. allを使用します; IEEE.numeric_std. allを使用します--符号なし型の場合
エンティティCOUNTERはgeneric ( WIDTH : in natural := 32 ); port ( RST : in std_logic ; CLK : in std_logic ; LOAD : in std_logic ; DATA : in std_logic_vector ( WIDTH - 1 downto 0 ); Q : out std_logic_vector ( WIDTH - 1 downto 0 )); end entity COUNTER ;
COUNTERのアーキテクチャRTLは
始める
プロセス( all )は、 RSTの場合、 Q <= (その他=> '0' )であり、 rising_edge ( CLK )の場合、LOAD = '1'の場合、 Q <= DATAであり、else Q <= std_logic_vector ( unsigned ( Q ) + 1 ) であり、if の場合終了し、if の場合終了し、endプロセスが実行されます。
エンドアーキテクチャRTL ;
より複雑なカウンターでは、rising_edge(CLK) elsifカウントの有効化、あるカウント値での停止またはロールオーバー、ターミナル カウント信号などの出力信号の生成などの他の機能を追加するために、if/then/else ステートメントがカウンター内に追加される場合があります。 一緒に使用する場合は、必要な優先順位を生成し、必要なロジック レベルの数を最小限に抑えるために、このようなコントロールの順序とネストに注意する必要があります。
シミュレーションのみの構成
VHDL の大部分のサブセットはハードウェアに変換できません。このサブセットは、VHDL の非合成可能サブセットまたはシミュレーション専用サブセットと呼ばれ、プロトタイピング、シミュレーション、およびデバッグにのみ使用できます。たとえば、次のコードは 50 MHz の周波数のクロックを生成します。これは、たとえば、シミュレーション中に設計のクロック入力を駆動するために使用できます。ただし、これはシミュレーション専用の構造であり、ハードウェアに実装することはできません。実際のハードウェアでは、クロックは外部で生成され、ユーザー ロジックまたは専用ハードウェアによって内部でスケールダウンできます。
プロセス
開始
CLK <= ' 1' ; 10 NS待機; CLK < = '0' ; 10 NS待機;プロセス終了;
シミュレーションのみの構造を使用すると、非常に短時間で複雑な波形を構築できます。このような波形は、たとえば、複雑な設計のテスト ベクトルとして、または将来実装されるシンセサイザー ロジックのプロトタイプとして使用できます。
プロセス
開始
wait until START = '1' ; -- START がハイになるまで待機しますfor i in 1 to 10 loop -- その後、いくつかのクロック周期を待機します... wait until rising_edge ( CLK );ループを終了;
for i in 1 to 10ループ-- 1 から 10 までの数字を DATA に書き込みます (1 サイクルごとに 1 ずつ) DATA <= to_unsigned ( i , 8 ); rising_edge ( CLK )まで待機します。ループを終了します。
-- 出力が変化するまで待機します。
RESULTを待機します。-- クロック周期で ACK を発生させます。 ACK <= '1'です。rising_edge ( CLK )まで待機します。 ACK <= '0'です。
-- 以下同様...
プロセスを終了します。
VHDL-2008 の機能
階層エイリアス
ライブラリieee ; ieee.std_logic_1164. allを使用します。
エンティティbfmは、エンティティの終了です。アーキテクチャbeh of bfmは、シグナルen : std_logicです。begin -- ここで実装を挿入します。end architectureです。
// ------------------------------------------
ライブラリieee ; ieee.std_logic_1164. allを使用します。
エンティティtest1 は終了エンティティです。test1のアーキテクチャの動作は開始です。
ibfm :エンティティwork.bfm ; --テストベンチ プロセスプロセスエイリアスprope_enは<< signal.test1.ibfm.en : std_logic >>です。begin prope_en <= ' 1 ' ; wait for 100 ns ; prope_en < = ' 0 ' ; wait for 100 ns ; prope_en < = ' 1 ' ; wait for 100 ns ; std.env.stop ( 0 ) ; end process ; end architecture ;
標準ライブラリ
標準パッケージとも呼ばれます。
IEEE 標準パッケージ
IEEE標準パッケージには以下のものが含まれています。[18]
- 数値標準
- std_logic_1164
- std_logic_arith
- std_logic_unsigned
- std_logic_signed
- std_logic_misc
VHDLシミュレータ
コマーシャル:
- アルデックアクティブ HDL
- ケイデンス インシシブ
- メンターグラフィックスモデルシム
- メンターグラフィックス Questa アドバンスシミュレータ
- シノプシスVCS-MX [19]
- Xilinx Vivado Design Suite (Vivado シミュレータを搭載)
他の:
- EDA Playground - 無料の Web ブラウザベースの VHDL IDE ( VHDL シミュレーションにはSynopsys VCS、Cadence Incisive、Aldec Riviera-PRO 、GHDL を使用)
- GHDLはVHDLプログラムを実行できるオープンソース[20]のVHDLコンパイラです。GHDL on GitHub
- freerangefactory.orgのbootはGHDLとGTKWaveをベースにしたVHDLコンパイラとシミュレータです。
- Symphony EDA の VHDL Simili は、無料の商用 VHDL シミュレーターです。
- Nick GassonによるnvcはオープンソースのVHDLコンパイラおよびシミュレータである[21] [22]
- Edwin Naroska による freehdl は、2001 年以来放棄されたオープンソースの VHDL シミュレータでした。[23]
参照
- アルテラハードウェア記述言語(AHDL)
- ノミ
- ゲゼル
- numeric std - ベクトルの算術関数を提供する標準パッケージ
- システムC
- システムVerilog
- ベリログ
- HDLシミュレータのリスト
参考文献
- ^ David R. Coelho (1989年6月30日). VHDLハンドブック. Springer Science & Business Media. ISBN 978-0-7923-9031-2。
- ^ 国防総省 (1992)。軍事規格、電子機器の標準一般要件。 2017年11月15日閲覧。
- ^ ab 1076-1987 – IEEE 標準 VHDL 言語リファレンスマニュアル。1988 年。doi :10.1109 / IEEESTD.1988.122645。ISBN 0-7381-4324-3。
- ^ 1076-2008 – IEEE 標準 VHDL 言語リファレンスマニュアル。2009 年。doi : 10.1109 / IEEESTD.2009.4772740。ISBN 978-0-7381-6854-8。
- ^ IEEE P1076 ワーキンググループ VHDL 分析および標準化グループ (VASG)
- ^ 1076-1993 – IEEE 標準 VHDL 言語リファレンスマニュアル。1994 年。doi :10.1109 / IEEESTD.1994.121433。ISBN 0-7381-0986-X。
- ^ 1076-2000 – IEEE 標準 VHDL 言語リファレンスマニュアル。2000 年。doi :10.1109 / IEEESTD.2000.92297。ISBN 0-7381-1948-2。
- ^ 1076-2002 – IEEE 標準 VHDL 言語リファレンスマニュアル。2002 年。doi :10.1109 / IEEESTD.2002.93614。ISBN 0-7381-3247-0。
- ^ IEC 61691-1-1 第1版 2004-10; IEEE 1076 — IEC/IEEE 動作言語 – パート1-1: VHDL 言語リファレンスマニュアル (IEEE Std 1076-2002 の採用)。2004 年。doi :10.1109/IEEESTD.2004.95752。ISBN 2-8318-7691-5。
- ^ 1076c-2007 – IEEE 標準 VHDL 言語リファレンスマニュアル 修正 1: 手続き型言語アプリケーションインターフェイス。2007 年。doi : 10.1109/ IEEESTD.2007.4299594。ISBN 978-0-7381-5523-4。
- ^ 61691-1-1-2011 — 動作言語 – パート1-1: VHDL言語リファレンスマニュアル。2011年。doi :10.1109 / IEEESTD.2011.5967868。ISBN 978-0-7381-6605-6。
- ^ 「IEEE 1076.6-2004 - VHDL レジスタ転送レベル (RTL) 合成の IEEE 標準」。
- ^ 「ELEC3017 - シミュレーション」(PDF)。サウサンプトン大学。2017年2月23日時点のオリジナルよりアーカイブ(PDF) 。 2017年2月23日閲覧。
- ^ 「なぜ透過ラッチに注意する必要があるのか?」 Doulos 。 2012 年12 月 22 日閲覧。
- ^ 「クロック生成」 Doulos . 2012年12月22日閲覧。
- ^ Jiri Gaisler. 「構造化VHDL設計法」(PDF) 。 2022年10月10日時点のオリジナルよりアーカイブ(PDF) 。 2017年11月15日閲覧。
- ^ 「組み合わせロジックのVHDL論理演算子と信号割り当て」。FPGAtutorial。2020年5月16日。 2020年8月23日閲覧。
- ^ Chiusano, Silvia (2011 年 4 月 5 日). 「IEEE 標準パッケージで使用可能な VHDL データ型と演算子」(PDF)。トリノ工科大学。2022年 10 月 10 日時点のオリジナルからのアーカイブ(PDF) 。
- ^ 「VCS: 業界最高性能のシミュレーションソリューション」synopsis.com。
- ^ 「著作権 | ライセンス」。GHDLドキュメント - GHDL 0.36-dev ドキュメント。readthedocs.io。
- ^ Gasson, Nick (2011 年 11 月 5 日)。「VHDL コンパイラの作成」。
- ^ Gasson, Nick (2023年7月22日). 「NVC - VHDLコンパイラおよびシミュレータ」 . 2023年7月23日閲覧。
- ^ 「freehdl: By Thread」。2002年2月10日時点のオリジナルよりアーカイブ。
- 注記
- 1076/INT-1991 – IEEE 標準解釈: IEEE Std 1076-1987、IEEE 標準 VHDL 言語リファレンスマニュアル。1992 年。doi :10.1109/ IEEESTD.1992.101084。ISBN 0-7381-0987-8。
さらに読む
- Peter J. Ashenden、「The Designer's Guide to VHDL, Third Edition (Systems on Silicon)」、2008 年、ISBN 0-1208-8785-1。(この言語の主要開発者の 1 人によって書かれた VHDL リファレンス ブック)
- Bryan Mealy、Fabrizio Tappero (2012 年 2 月)。[1] デジタル実装用の強力な VHDL コードを作成するためのシンプルなガイド。2015 年 2 月 13 日にオリジナルの Free Range VHDL からアーカイブされました。
- Johan Sandstrom (1995 年 10 月)。「Verilog と VHDL の構文的および意味的比較」。Integrated System Design。EE Times。— Sandstrom は、VHDL 構造とVerilog構造を関連付ける表を提示します。
- Qualis Design Corporation (2000-07-20)。「VHDL クイック リファレンス カード」(PDF)。1.1。Qualis Design Corporation。2003-12-10にオリジナル(PDF)からアーカイブ。
{{cite journal}}:ジャーナルを引用するには|journal=(ヘルプ)が必要です - Qualis Design Corporation (2000-07-20)。「1164 パッケージ クイック リファレンス カード」(PDF)。1.0。Qualis Design Corporation。2016-03-14 にオリジナル(PDF)からアーカイブ。
{{cite journal}}:ジャーナルを引用するには|journal=(ヘルプ)が必要です - Janick Bergeron、「Writing Testbenches: Functional Verification of HDL Models」、2000 年、ISBN 0-7923-7766-4 (HDL テストベンチ バイブル)
外部リンク
- 公式サイト
- VHDL 分析および標準化グループ (VASG)
