EDAノート(1) - VHDL言語

目的:自分の使いやすいの抜粋を学ぶためにも、読者のために、知識のポイントを忘れて

EDA技術の概念

作業プラットフォーム-コンピュータ
開発環境-EDAソフトウェア
言語-ハードウェア記述言語(HDL)
テストベクトル-プログラマブル・ロジック・デバイス(PLD)
ターゲットデバイス-ASICチップ
アプリケーションの方向-電子設計

EDAアプリケーション

プリント回路基板(PCB)設計
の集積回路(IC又はASIC)設計
設計のプログラマブル・ロジック・デバイス(FPGA / CPLD)
ハイブリッド回路設計を

PLDの概要

基本ゲート回路は、組合せ回路及び順序回路
(ラッチ、フリップフロップ)回路を組み合わせて構成プラスされている任意の順序回路素子では、保存することができる
分類プログラマブル・ロジック・デバイス(PLD)である
:単純PLD PROM、PLA、PAL、GAL
複雑なPLD:CPLD、FPGA

基本的な構文組成

構造

機能構造:論理機能回路構成を説明するために使用されます。シーケンシャル文(にタンデムでの文の順序に従って実装)(パラレル文は文の前と後の順序に関係なく、同時に行わ

データの種類

一般的なデータタイプは、ビット型ビット整数型INTEGERブール型BOOLEAN標準的な論理型STD_LOGICの
BITデータ型ビットの所定の範囲の信号の論理「1」又は「0」です。論理レベル「1」または「0」一重引用符でなければなりません。
工程(B、S) - 敏感信号リスト

声明信号ポートとポート名

PORT()が導かれていると「との文の最後に追加、
VHDLは、データ信号としてのポートのみ同じタイプを必要とし、オペランド相互作用するように、システムにかかわらず資本の
ポートモード:
IN入力ポート、一方向のみの通路は、定義されましたモード読み取り
OUT出力ポートを、一方向モードによって定義された出力チャネル
INOUT入力チャンネルが出力双方向インタフェースに決定定義
ポートバッファ類似バッファ、およびINOUT機能以外は必要な入力データのみ内部リードバック信号出力、フィードバックを可能
INOUTモードに比べ、バッファリードバック信号は、外部信号を出力し、外部から入力されるが、内部的に生成されていません

識別子

キーワードは、英語の単語は、VHDLの定義済みのキーワード大文字小文字を区別しない特別な意味を持っている
言葉に、このような実体、構造名、ポート名や信号名などの名として異なる名前を、識別するための識別子
識別子はない2以上の連続が表示されますが、下線、アンダースコアで終了することはできません、文字で始まる必要があります。
識別子は、デジタル、デジタルテキストを使用していないか、中国人は表現し始めました

割り当てシンボルと論理演算子

代入演算子"<="データ・タイプ信号はの両側で同じである必要があり
VHDL論理演算子
AND - >論理とNAND - > NAND論理
OR - >または論理NOR - >論理NOR
XOR - >排他的論理和またはXNOR - >同じまたは論理
NOT - >論理否定
NULLは、プログラムが何も行わない表し
、標準的な一次元配列として定義STD_LOGIC_VECTORを、配列の各要素は、標準論理レベルSTD_LOGICあります。
使用においてSTD_LOGIC_VECTOR、アレイ、すなわち広いビット幅を示さなければなりません。
VHDLは以下を提供します。余分なビットのバイナリ数は、引用符を二重にする必要があり、シングル進数は単一引用符で囲まれています。

符号付きと符号なしのデータ型

各種演算は、直接的であってもよいが、論理演算を行うことができません。
UNSIGNEDデータ型は合成で、この値は二進数、左端の桁のバイナリー数が最も高い位置であると解釈され、非数値記号を表します。
署名されたデータ・タイプは、符号付きの値、補数表現を表し、負の補数をその元のコードに基づいて、正の数を補完することは、元のコードであり、符号ビットを変更し、残りのビットは反転され、最終的には+1;。

データオブジェクト

異なるデータ型の割り当て受け入れる類似の容器
定数(定数)変数(変数)シグナル(信号)
定数(一定):固定値は、プログラムで変更することができない
。定数定義されたフォーマット定名によってデータタイプ:=式;
変数(変数)は、プロセスまたはサブプログラムにのみ適用されます。
変数の定義:変数<変数名> <データタイプ>:=初期値]を省略してもよい、
変数代入構文:ターゲット変数名:=式;
式が特定の値/演算式を意味する
信号(SIGNAL)評決ポートは、信号です。
いいえ方向、また、入力として使用することができ、それに割り当てることができません。
割付:SIGNAL <信号名>:<データタイプ>:初期]、
割当信号および変数の形状、及び異なるの実行:即時割り当て変数(:=)、遅滞なく、ある程度の遅延信号の割り当てがあるべきです(<=)。
&連結演算子
連結演算子を使用して、新しい配列を作成するために、種々の方法を使用することができ

声明の概要

IF文

フォーマット:
IF条件THEN
順次実行文は、
END IF
注:典型的には、タイミング回路を生成するために使用される非完全条件文、。

二つのフォーマット:
条件IF THEN
。順次実行文1;
そうで
順次実行文2は、
IFが終了し
、通常、組み合わせ回路を生成するために使用される条件文を完成します。

3つの形式:
IF条件1 THEN
順次実行文1;
ELSIF条件2つのその後、
順次実行された文2;
...
ELSIF条件のnその後、
順次実行されるステートメントのn;
エルスシーケンシャル文;
END IF;

4つの形式:
IF条件文THEN
IF条件文THEN
...
END IF;
END IF;
フォーマット三つ、四つフォーマット生成することができ、タイミング回路は、また、生成、または両方合成回路の組み合わせとすることができます。

WHEN_ELSE条件信号代入文

パラレル声明に属し、それはプロセスを導くためのステートメントを必要としません。同じ機能を持つIF文構造体条件信号代入文で。
フォーマット:
割り当て先<= 1つの発現の割り当て条件1つのELSE
表現ELSE 2割り当て条件2
...
式N-。

信号代入文を選択

パラレル文に属しているプロセスで使用することができない、機能およびプロセスはCASE文と非常によく似ています

選択式SELECTと
評価対象信号<= 1つの発現セレクト値1
式セレクト値2 2、
...
式N N、選択された値。

コンポーネントのインスタンス化の声明

エレメントの例:コネクタが関係に導入され、エンティティが一つの要素として定義されるあらかじめデザイン、および特定のステートメント指定されたポートを使用して、この要素は、それによって現在の設計エンティティにローレベルを導入するために、現在のデザイン・エンティティに接続されています。デザイン階層。

第1の部分は、第1の設計エンティティは、既製の要素として定義されます。すなわち、記載された要素を呼び出すための呼び出しを行うために:
構成要素名は
ポート(ポート時計);
ENDコンポーネントファイル名;
注:元の文書と一致するデータ型の配置と信号の信号ポート

ポート記述に接続された第2の部分は、現在の設計エンティティ(トップ文書)この要素は、要素間に接続されています。
次のようにポートマッピング文の形式は次のとおりです。
例の仮名:要素名PORT MAP([ポート=名>]はポート名、...);
PORTキーワードMAPへ。「=>」の接続関係を表します。
題し要素自体のポートポート名が呼び出されます。
接続ポートは、トップレベルのファイルに接続されていると呼ばれるには、ポート要素のポート名を呼ぶ準備しました

LOOP文

2サイクル制御文を切り替える:
FORループとLOOP LOOPサイクルWHILE。
ループサイクルを中心に、所定数の繰り返しの場合に使用され、
条件に応じて制御条件が偽になるまでwhileループのループが実行されます。

LOOP文の(1)
用のループ形式:
[ラベル:] LOOP範囲で周期的にループ変数の
順次処理文を、
END LOOP [ラベル];
(2)whileループ文
whileループの形式:
[LOOPラベル:] WHILE条件LOOP
文は順番に処理され;
END LOOP [ラベル];
条件は、循環、またはサイクルの終わり、その後、真である場合。

演算子

代入演算子は省略
:R1を=(その他=>「 0」) =「00000000」:R1に相当
語句(その他=> X)を使用することができ、代入式と変数の場合のビット数を単純化するために
シフト演算子を
シフト演算子であって
SLL(論理シフト左)、SRL(論理右シフト);(S 0)
1010 <= 1101 => 0110ゼロパディングビットは、以下の
SLA(算術シフト左)、SRA(右シフト算術) (不変)
うち最初の充填と1011 <= 1101 => 1110第一の位置
ROL(回転、論理左)、(右論理回転)RORは、
1011 <= 1101 => 1110順次充填のために除去サイクル以降の空いた位置、

VHDLは、オペランドのデータ型の厳格な要件があることをオペレータ強く型付けされた言語です。乗算演算のためのオペランドがSTD_LOGIC_VECTOR型指定する必要があり、オペランド、すなわちパッケージを呼び出し、符号付きまたは符号なしの型でstd_logic_signed区別std_logic_unsigned、
加算演算のため、区別することなく、VHDL合成動作は常に想定される追加を符号なし。

エンディング

間違っている場合は、正しい私の批判を喜ば

リリース3元の記事 ウォンの賞賛8 ビュー2033

おすすめ

転載: blog.csdn.net/weixin_43788952/article/details/105075727