1.キャリー、コード(8421)、簡略化ルール、カルノー図簡略化、プロパティ、フリップフロップ(変換設計、応用)、回路図、回路設計

10進数と元のコード、補数コード、補数コード間の変換

元のコード、補数コード、正の数の補数コードが同じで、符号ビットが0

負の数の元のコードは、符号ビット + 1、+ 2 進数です。

1 の補数コード。符号ビットは変更されず、他のビットは反転されます。

補数は次のとおりです: 補数の最下位ビット + 1 

手術

カルノー図の簡略化

パリティコード

1の数を確認し、奇数の場合はヘッダーに0を、偶数の場合は1を埋めます。

つまり、パリティチェックコードは「1」の数が奇数か偶数かをチェックして変化しなければならず、奇数のチェックコードは奇数を維持しなければならず、偶数のチェックコードは偶数を維持しなければなりません。

8421コード

8421 コードでは、2 進数 4 桁を使用して 10 進数 1 桁を表します。これは 16 進数と同等ですが、10 より大きい部分は直接破棄されるため、16 進数ではありません。

引き金

トリガーの基本は、二次状態と現在の状態の間の関係、つまり Qn+1 と Qn の間の関係を確立することです。 

トリガートランジション  

JKからRSへ 

S を展開し、フィーチャ制約 RS=0 を使用します。つまり、単純化が完了します。 

JKからDまで

 D に変更するということは、外部入力信号用の D 入力ポートが 1 つだけあることを意味し、この入力信号は内部で変換されます。つまり、その機能を実現するために内部 JK が実装され、D 信号がインターフェースに接続されます。 JKフリップフロップ。

JKからTまで 

つまり、外部に T 信号が 1 つしかない場合、式は現在の状態を反転したもので、1 であれば反転し、1 でなければ維持するという電流です。 TXORの信号、つまりJK信号にT信号が直接入力されます。

外部入力は T 信号で、内部で処理されて JK 信号が分割され、JK フリップフロップを使用して実装されます。 

DからJK

Dフリップフロップで構成される他のフリップフロップの考え方は非常にシンプルで、外部信号を特性方程式にまとめ、それをD信号としてDフリップフロップに渡すというものです。

つまり、外部インターフェースは J と K の 2 つがあり、それぞれ対応する電流状態量の正負を制御するために使用され、内部インターフェースは D フリップフロップです。

D フリップフロップの特性に基づいて、D 信号は何であり、次の状態は何であるか? したがって、D をフリップフロップに変換すると、そのフリップフロップの特性方程式をそのまま D として使用できます。信号。

DからTまで

次の周期では D の方程式が D となり、T の方程式が反転します。

したがって、D を T に変換するには、現在の状態を D 信号に直接接続できます。

TからDまで

つまり、外部インターフェイスは D フリップフロップのインターフェイスであり、内部インターフェイスは T フリップフロップによって実装されます。

D フリップフロップの方程式は現在の状態とは関係なく、完成した D 信号です。つまり、このような D 信号が外部から入力されると、次の 2 次状態はこの信号になります。つまり、このような D 信号を入力した後、何らかの内部処理を経て、内部の T フリップフロップで使用できる T 信号に変換され、T フリップフロップを使用して実装されます。 -flop で D を実装する

トリガーデザイン

モジュロ 5 カウンターの設計

それは、現在の状態から二次状態への状態間の移行であり、輪廻の変化です。

 

このカルノー図が示しているのは、3 つの二次状態成分とそれぞれの現状成分との関係です。まず、二次状態成分と現状成分の関係という 3 つの式が得られます。この式は、次の関係を示しています。 1 つの二次状態コンポーネントと 3 つの現在の状態コンポーネント

次のステップはトリガーを選択することです

各フリップフロップは 1 つの状態コンポーネントのみを決定できることに注意してください。つまり、決定すべき二次状態がいくつかある場合は、いくつかのフリップフロップが必要になります。

次に、フリップフロップ方程式は、二次状態コンポーネントと対応する現在の状態コンポーネントの間の関係を記述します。

D フリップフロップには対応する電流成分は含まれず、すべてを入力するだけです。

他のトリガーにはすべて、決定される二次状態コンポーネントに対応する現在の状態コンポーネントが含まれます。

いわゆるフリップフロップの相互変換は、実際には状態方程式間の変化です。 

フリップフロップの特性方程式は、自身の状態成分を考慮する必要はなく、方程式の対応する位置に入力する必要がある入力信号のみを考慮すればよい。

このアイデアは、まずカルノー図を使用してサブ状態コンポーネントと 3 つの現在の状態コンポーネントの間の関係を見つけ、対応する現在の状態コンポーネントがあるかどうかを観察することです。ない場合は D を検討します。ある場合は、を選択します。特性に基づいてトリガを設定します。2 つあり、1 つが正、もう 1 つが負の場合は T フリップフロップを検討し、1 つだけ (正または負) がある場合は JK フリップフロップを検討します。

フリップフロップの機能は、二次状態の状態コンポーネントを決定することです。 

回路の解析 

JK フリップフロップは特定のサブ状態コンポーネントの変換を実現でき、変換項には 1 つまたは 2 つの対応する現在の状態量が含まれていることがわかります。

J と K はそれぞれ、対応する現在の状態コンポーネントの正と負を担当し、J は Q の現在の状態の負を決定し、K は Q の現在の状態の正と負を決定します。

JKを用いて実現できますが、対応する電流状態量が含まれていない場合は、直接Dフリップフロップを考慮することができます。

逆に、モジュロ 3 の可逆加算および減算カウンタを設計したい場合は、最初に状態量を決定し、次に状態コンポーネントがいくつあるかを決定し、次に各状態間の変換関係を論理的に決定し、状態テーブルと真理値表: カルノー図に基づいて、各状態コンポーネントのサブ状態と入力およびすべての状態コンポーネントの現在の状態との関係を決定し、フリップフロップを使用して、最終的に回路図を描きます。

2 つのルール (反転と双対性) 

逆転規則

それは、定数 1 を 0 に変更し、元の変数の加算と乗算、および反転を行うことです。 

二元性の法則

反転との唯一の違いは、変数を反転する必要がなく、その他すべてを変更する必要があることです。反転の場合はバーが追加され、双対性の場合はプライムが追加されます。 

順序の問題があります。つまり、最初に定数を変更し、次に演算子を変更し、次に変数を変更します。

逆数とは双対性に基づいてすべての変数の逆数をとることです。

2 つの最小項の積は 0 で、すべての最小項の合計は 1 になります。

任意の 2 つの最大項の合計は 1 で、すべての最大項の積は 0 です。 

論理的隣接とは、隣接する 2 つの最大項/最小項を意味し、その違いは 1 つの変数のみです。

カルノー マップには、論理的隣接性と幾何学的隣接性の両方があります。

最小項は式を 1 に等しくする値であり、最大項は式を 0 に等しくする値です。 

 

そしてまたは式 

  1. 2 つの標準式の関係
  • 最大項と最小項は相互の逆関数です
  • コードが最小の用語に現れない場合は、最大の用語の番号にコードが現れる必要があります。

ORと方程式からカルノー図を描くとき、​​0が削除されます。つまり、どの変数値がこの方程式を0にできるかということです。

AND またはからカルノー図を描くとき、​​マーク 1 を削除します。つまり、変数のどの値がこの式を 1 にすることができますか 

これは OR と数式です。標準を削除すると、この数式の値が 0 になる可能性があります。 

図でマークされている 0 は、この式の変数値が全体として 0 であっても 

次に、この式によって生成されたカルノー マップを使用して、最も単純な式を見つけます。最大の項を描画するには、式を 0 にすることが目的であり、探しているのは 0 であるため、対応する 1 の反転になります。

最小項が必要な場合は 1 を見つける必要があり、1 が配置される場所は 1 になります。 

3変数投票装置(組み合わせ論理設計回路)

 

フリップフロップは含まれておらず、組み合わせ論理回路です。入力はシミュレーションに必要な状況信号入力です。その後、さまざまな入力条件に基づいて出力状況を決定するための真理値表が描画されます。その後、カルノー図が描画されます。そして最後に式が見つかります。 

ブロッキング代入とノンブロッキング代入の描画 

'タイムスケール 1ns/1ns

モジュール ex(入力ワイヤ x1、

出力レジスタ f、g);

always@(ポーズジクロック)開始

終わり

エンドモジュール

割り当てにはクロック エッジでトリガする必要があるため、D ラッチが使用されます。

これはブロッキング、つまりブロッキング代入を反映したものであり、前述したように G を決定するには F を先に決定する必要があるため、F の後に G が決定されます。つまり、最初に F が決定され、次に G が決定されます。だからブロックしているのです。

 

そして、ノンブロッキングを使用すると、この時点で F が決定されるのを待つ必要はありません。前の段階の F を使用します。このようにして、G ははるかに早く決定されます。 F が決定されるまで待つ必要があるため、非ブロッキング値を割り当てます。 

ブロッキング代入において、FG を求める順序が逆になると、最初に G、次に F を求めることになります。このとき、G を求めるために使用される F は、現在のステージの F ではなく、前ステージの F になります。 、つまりトリガーは F に格納されるため、ノンブロッキング代入を使用した場合と同じ回路が生成されます。

 

非ブロッキング代入のステートメントを逆にしても効果はありません

生成されたブロッキング割り当ての回路図 

 

ノンブロッキング割り当てに変更した場合 

つまり、F に対する最初のステートメントの影響は次のサイクルでのみ影響を及ぼし、2 番目のステートメントも F に影響を及ぼします。したがって、最終的に F に保持されるのは、 F に関する最後のステートメント。それが対象の F です

つまり、非ブロッキングが使用されている場合は、最後に変更されたステートメントのみが保持されます。

 

後者の OR ゲートは、最終的に F を出力し、F を保存する必要があることを意味します。これは、それ自体と再度 OR 演算でき、その一部が出力され、その一部がそれ自身と OR 演算されることを意味します。 

シフトレジスタ 

Lは選択信号で、このレジスタは何層にも重なっており、複数の信号を決定するレジスタファイルです。 

'タイムスケール 1ns/1ns

モジュール ff(入力ワイヤー clk,

                入力ワイヤーd、

                まず入力線、

                出力レジスタ q);

always@(posedge clk,negedge rst)begin

        もし(!最初)

                q<=0;

        それ以外

                q<=d;

終わり

エンドモジュール

 

常に直列、常に並列 

 

並行して、前の瞬間のQが反転されます。 

カルノー図の不人気な性質

カルノー図の特徴: 幾何学的位置で隣接する最小正方形は論理的にも隣接している必要があります。つまり、2 つの隣接する変数の 1 つは相補的です。

論理的に隣接: 1 つの項目だけが指定された最小項と異なることを意味します。2 つの最小項のうち、1 つの変数だけが異なる形式を持ち、残りは同じです。

これらは同じ変数の異なる形式、つまり正と負であることに注意してください。

256 個の 8 ビット メモリ reg[7:0]ram[0:255] 

reg [WIDTH-1:0] RAM_MEM [0:DEPTH-1];

なお、1つ目はデータビット幅、2つ目はメモリ数で、1つ目が最も大きいもの、最後がその後ろの最大のものです。

'timescale 1ns/1ns 前者は時間スケールを表し、後者は時間精度を表します。時間精度は時間スケール e を超えることはできないと規定されています

組み合わせロジックは、遅延の違いによる競合やリスクを引き起こす可能性があります。 

verliog プログラムの 4 つの主要な部分は、モジュール宣言、ポート定義、信号タイプ宣言、および関数記述です。

前のノンブロッキングでは 2 つのフリップフロップが生成され、一方が他方の前後に配置されます。前者は B を決定し、後者は C を決定します。B の D 信号は A、C の D 信号は B です。

後ろにフリップフロップがあり、D 信号は A、そして 2 つの出力信号 (C と B) が出力されます。

最初の問題では、OR と式のマークが 0、丸 0 であることに注意してください。式を 0 にすることが目的であり、式を 0 にする変数の値を見つけることです。1 は に対応します。最終式では non、0 は正に相当します

2 番目の質問は、初期、1、11、111 の合計 4 つの状態があり、その後 2 つの状態コンポーネントを使用します。 

 

最初の問題は4桁のカウンター、つまり4桁のcntです。

'タイムスケール 1ns/1ns

モジュール dclk(入力ワイヤ clk,入力ワイヤ負荷,入力ワイヤ en,入力ワイヤ rst,出力 reg q);

reg[3:0]cnt;

always@(posedge clk,negedge rst)begin

        もし(!最初)

                cnt<=4'b0000;

        そうでなければ始まる

                もし

                        cnt<=cnt+1'b1;

                それ以外

                        cnt<=cnt;

        終わり

終わり 

always@(posedge clk,negedge rst)begin

        もし(!最初)

                q<=0;

        そうでなければ始まる

                if(cnt==4'b1111)

                        q<=1;

                それ以外

                        q<=0;

        終わり

終わり

エンドモジュール

質問 2、D ラッチ

'タイムスケール 1ns/1ns

モジュール d(入力 clk,入力 rst,入力 d,出力 reg q);

always@(posedge clk,negedge rst)begin

        もし(!最初)

                q<=0;

        それ以外

                q<=d;

終わり

エンドモジュール

質問 3、同期クリア付きシフトレジスタ

'タイムスケール 1ns/1ns

モジュール yiwei(入力 clk,入力 rst,入力 d,出力 q);

reg[3:0]ラム;

always@(ポーズジクロック)開始

        もし(!最初)

                ラム<=4'b0000;

        それ以外

                ram<={ram[2:0],d};

                q<=ram[3];

終わり

エンドモジュール

おすすめ

転載: blog.csdn.net/m0_73553411/article/details/135345266