FPGAデジタルシステムデザイン(2)-ゲートレベルモデリング

1.ドアレベルのモデリング構文
1.モジュール定義

module 模块名(端口名1 ,端口名2...;
...
endmodule
例:
module MUX4x1(Y,A,B,C,D,S1,S0,EN_);

Verilog HDL言語の識別子は、文字、数字、ドル記号、およびアンダースコアで構成されます。文字は大文字と小文字が区別され、識別子の先頭は文字またはアンダースコアのみにすることができます。
2.ポートステートメント

VerilogHDLキーワード ポートタイプ
入力 入力ポート
出力 出力ポート
inout 双方向ポート

ポートのデフォルトは1ビット幅です。つまり、1ビットの有効な情報のみを送信できます。

端口类型 [端口位宽左界:端口位宽右界] 端口名;
例如:
input [2:0] cin;
outout[0:4] cout;
inout [4:7] fast;

ポート宣言では、定義されたポート宣言ビットはデフォルトでワイヤタイプです。ただし、出力はregタイプとして定義でき、入力と入力はワイヤタイプのみです。

ここに画像の説明を挿入3.ドアレベルの呼び出し `

	逻辑门类型 <实例名称(可选)> (端口连接)
	例:
	not (s1_n , s1);
	buf b1 (out1 , in);
	

論理ゲートは
、buf(バッファ)、not(ゲートではない)
単一入力論理ゲート関数テーブル、
ここに画像の説明を挿入
多入力論理ゲート、
多入力呼び出しの2つのカテゴリに分類されます。

	and(Y,A,B);
	or (Y,A,B);
	and and1 (Y,A,B);

ここに画像の説明を挿入
4.モジュールのインスタンス化

	模块名称  实例名称 (端口连接)
	例
	MUX4*1 mymux(.Y(y), .A(a), .B(b), .C(c), .D(d), .En(e), .S1(f), .S0(g));
	

ここに画像の説明を挿入
5.内部接続ステートメント

	wire [线宽-1 :0] 线名称;
	例:
	wire [3:0] b;   //定义4位网线b
	wire a;         //定义1位网线a

2.一般的なゲートレベルのモデリング1.4
ビット全加算器
4ビット全加算器は、直列の1ビット全加算器で構成されます。

1ビット全加算器のRTL図を次の図に示します。RTLシミュレーション図

module fulladd(cin ,A ,B ,S ,cout);
output S,cout;
input cin ,A ,B;
xor (S, cin , A , B);
and (a1, cin , A);
and (a2, cin , B);
and (a3, A , B);
or  (cout , a1 , a2 , a3);
endmodule 

4ビット全加算器のRTL図を次の図に示します。
ここに画像の説明を挿入

module add4 (S, COUT , CIN , A , B);
output [3:0] S;
output COUT;
input [3:0] CIN, A, B;
wire c0 ,c1 ,c2;
fulladd add0(.S(S[0]) , .cout(c0) , .cin(CIN), .A(A[0]), .B(B[0]));
fulladd add1(.S(S[1]) , .cout(c1) , .cin(c0), .A(A[1]), .B(B[1]));
fulladd add2(.S(S[2]) , .cout(c2) , .cin(c1), .A(A[2]), .B(B[2]));
fulladd add3(.S(S[3]) , .cout(COUT) , .cin(c2), .A(A[3]), .B(B[3]));
endmodule

シミュレーション結果を下図に示します。2。2-4デコーダー
ここに画像の説明を挿入
ゲートレベル回路
2-4デコーダーは0001 10 11を入力し、それぞれ4つの異なる値を出力します。
RTL回路図を以下に示します。

ここに画像の説明を挿入

module DEC2_4(A,B,En,Z);
input A,B,En;
output [3:0] Z;
wire n1,n2;
not (n1, A);
not (n2, B);
nand(Z[0],n1,n2,En);
nand(Z[1],n1,B,En);
nand(Z[2],A,n2,En);
nand(Z[3],A,B,En);
endmodule

シミュレーション結果を次の図
ここに画像の説明を挿入
3に示します。マスタースレーブDフリップフロップ
Dフリップフロップは、メモリ機能とゼロ安定状態ストレージを備えたメモリです。
関数テーブル
ここに画像の説明を挿入

タイミング図以下に示す
ここに画像の説明を挿入
RTLゲートレベル回路図:
ここに画像の説明を挿入

module MSDFF(D,Q,Qbar,C);
output Q,Qbar;
input  D,C;
not
 not1(NotD, D),
 not2(NotC, C),
 not3(NotY, Y);
nand 
 nand1(D1,D,C),
 nand2(D2,C,NotD),
 nand3(Y,D1,Ybar),
 nand4(Ybar,D2,Y),
 nand5(Y1,Y,NotC),
 nand6(Y2,NotY,NotC),
 nand7(Q,Qbar,Y1),
 nand8(Qbar,Y2,Q);
endmodule

シミュレーション回路図を次の図に示します。
ここに画像の説明を挿入
ステートメント:この記事は学習にのみ適しており、その内容には本からの抜粋と要約が含まれています。皆さんが一緒に追加して学習することを歓迎します。

おすすめ

転載: blog.csdn.net/qq_24213087/article/details/107457306