Verilog Coding
3640 ワード
モデリング
基本
数表
何名様ですか.|何進数ですか.|対応する数量
リファレンス
x->自動32"dを表示(32ビット+10進+該当数)
ろんりち
0、1、x(不明)、z(オフ-アウト状態)
スチールワイヤ
wire <이름>;
wire <이름> = 값;
レジスタ
reg <이름>;
integer <이름>;
(32ビットreg)リファレンス
ビーム
wire
とreg
の束:<reg또는 wire> [0:7] <이름>
*ex) reg [0:10] = busA;
切り裂く
ハーネスを切り離すことも可能です.
*ex)
wire [0:30] = busA
byte1= busA[0:5]
それ以外は
n単位時間後に実行するコードを示す.
Gate Levelモデリング
ゲートウェイを使用したモジュールのモデリング
モジュール
ブラックボックスの内部を定義する
module <module_name>(<input port/ output port>);
input/output port선언 (wire와 같은 느낌)
reg 선언
wire 선언
parameter 선언
// 구성요소 선언
always, initial
function, task 정의
assign
function, task 호출
// 구성요소 연결
endmodule
*ex)入力a,bでsum,coutの加算器を出力module half_add(a,b,sum,cout)
input a, b;
output sum. cout;
wire cout_bar;
xor(sum, a, b);
nand(cout_bar, a, b);
not(cout, cout_bar);
endmodule
順序は関係ありません(プログラミング言語ではありません)子供たちの仲さえよければいい.
作成されたモジュール/関数の使用
パラメータに
xor(sum, a, b) //함수(출력,입력)
and(cout, a, b, c) // 기본함수의 출력은 1개임
nand(cout, a, b)
.해당포트(넣을 값)
)ex)
fulladder(.c_out(a), .sum(b))
データストリームモデリング
ゲートウェイの代わりに
연산자
と할당
を使用演算子
わりあて
assign
출력
= 입력 + 연산자
ex) assign out = i1 & i2;
ex)
wire i1, i2, out; assign out = i1 & i2;
ex)
real a,b,c; c = a - b
;* 動作モデリング
条件文
if()
~;
else
~;
case()
~;
case()
~;
endcase
構文
ハードウェアが常に実行しなければならない動作について説明します.
always @(in1, in2, a, b) begin
if (in1 ==0)
out = a;
else
out = b;
always
~ begin
~ end
プログラミング言語のカッコ({})はbegin endとして表される.@(~)
これは、カッコ(~)の値を常にチェックしているが、変更した場合にのみチェックすることを意味します.(すべての入力は*で表示)
$display();
->Cに類似したprintf構文$time
testbenchの作成
シミュレーションモジュールのテスト
入出力ポートが存在するX
(wireで表示)
刺激を加えて反応を観察する
初期構文:testbenchでのみ使用され、1回のみ実行され、主に刺激を追加するために使用されます.
module test_Fix();
reg A, B, C;
circuit c1(A, B, C, Out);
initial begin
A=0; B=1; C=0;
#50 A=1;
#50 A=0; C=1;
#50 C=0;
#50 $finish;
Reference
この問題について(Verilog Coding), 我々は、より多くの情報をここで見つけました https://velog.io/@abrahamkim98/Verilog-Codingテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol