工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> VHDL

チュートリアル - 組み合わせコードとシーケンシャル コードの記述

VHDL プロセスまたは Verilog Always ブロックの使用

このチュートリアルでは、プロセスに含まれる VHDL または Verilog のブロックを記述する方法を示します。 または 常にブロック それぞれ。プロセス (VHDL) と Always ブロック (Verilog) は基本的なものであり、よく理解する必要があります。どちらもまったく同じように動作するため、ここでは両方を紹介します。現在 1 つの言語だけを学習している場合は、その特定の言語に焦点を当てた例に注意してください。プロセスまたは Always ブロックは、次の 2 つの主なシナリオで使用されます。

<オール>
  • 組み合わせのブロックを定義するには ロジック
  • シーケンシャルのブロックを定義するには ロジック
  • 最初のシナリオは、新入生に Processes または Always Blocks を紹介するときに教科書でよく見られるものです。その存在を知ってもらうために、ここに提示します。しかし実際には、組み合わせロジックのブロックを定義するために使用される Process/Always ブロックは、シーケンシャル ロジックを定義するために使用される Process/Always ブロックよりも、「実際の」コードでははるかに少ない頻度で見られます。

    あなたが自問するかもしれない最初の質問は、組み合わせ論理と順次論理の違いは何ですか?組み合わせ (または組み合わせ) ロジックは、動作にクロックを必要としないロジックです。先ほどのアンドゲートの例は組み合わせ例です。シーケンシャル ロジックは、動作にクロックを必要とするロジックです。シーケンシャル ロジックの最も基本的なビルディング ブロックは、D フリップフロップ (下図) です。

    D フリップフロップ!

    D フリップフロップの仕組みを知らない場合は、すぐに読むのをやめてください。読み進める前に、FPGA 内でフリップフロップがどのように使用されるかを理解する必要があります。準備完了?よかった。

    VHDL での組み合わせプロセス:

    process (input_1, input_2)
    begin
        and_gate <= input_1 and input_2;
    end process;
    

    Verilog で組み合わせ常にブロック:

    always @ (input_1 or input_2)
      begin
        and_gate = input_1 & input_2;
      end
    

    上記の VHDL コードと Verilog コードの両方で、input_1 と input_2 は、センシティビティ リストと呼ばれるものにあります。 .センシティビティ リストは、Process/Always ブロックを実行させるすべてのシグナルのリストです。上記の例では、input_1 または input_2 のいずれかを変更すると、Process/Always ブロックが実行されます。この process/always ブロックは 2 つの入力を受け取り、「and」演算を実行して、結果を信号 and_gate に格納します。これは、このコードとまったく同じ機能です:

    -- VHDL:
    and_gate <= input_1 and input_2;
    
    // Verilog:
    assign and_gate = input_1 & input_2;
    

    コードの両方の例は、信号 and_gate を割り当てるという同じ目的を果たします。違いは、1 つは Process/Always ブロックの組み合わせにあり、もう 1 つはそうでないことです。したがって、Process/Always ブロックの組み合わせを使用しなくても同じ結果が得られるため、初心者のデジタル デザイナーがこれらのステートメントをこのように使用することはお勧めしません。

    Process または Always Block を使用できる 2 つ目の方法 (さらに興味深い例) は、順次ロジックのブロックを定義することです。繰り返しますが、シーケンシャル ロジックはクロックされるロジックです。


    VHDL

    1. チュートリアル - 組み合わせコードとシーケンシャル コードの記述
    2. Infrastructure-as-Codeの長所と短所
    3. 組み合わせ論理関数の概要
    4. コーディングとは:作業、言語、およびその課題
    5. Integrated Logic Analyzer (ILA) および Virtual Input/Output (VIO) の使用
    6. Java スタックとヒープ:Java メモリ割り当てのチュートリアル
    7. Python で CSV ファイルを読み取る方法 | CSVファイルの読み書き
    8. assign を使用した組み合わせロジック
    9. ラダーロジック102:長所と短所
    10. 執筆手順:デジタル化することでシンプルかつ効率的
    11. G コードと M コードの違い