
Toùm taét baøi giaûng TK Heä Thoáng Soá Phaàn Verilog
GV: Nguyeãn Troïng Haûi Trang 18
assign c = a&b;
endmodule
// module instantiations
wire [3:0] in1, in2;
wire [3:0] o1, o2;
// ñaët vò trí
and4 C1(in1, in2,o1);
// teân
and4 C2(.c(o2), .a(in1), .b(in2));

Toùm taét baøi giaûng TK Heä Thoáng Soá Phaàn Verilog
GV: Nguyeãn Troïng Haûi Trang 19
Chöông VIII
KHUOÂN MAÃU HAØNH VI
(BEHAVIORAL)
Verilog coù 4 möùc khuoân maãu:
• Chuyeån maïch. Khoâng ñöôïc ñeà caäp ñeán ôû ñaây.
• Coång.
• Möùc traøn döõ lieäu.
• Haønh vi hoaëc thuû tuïc ñöôïc ñeà caäp ôû beân döôùi
Caùc leänh thuû tuïc Verilog ñöôïc duøng taïo moät maãu thieát keá ôû möùc cao hôn. Chuùng
chæ ra nhöõng caùch thöùc maïnh cuûa veäc laøm ra nhöõng thieát keá phöùc taïp. Tuy nhieân,
nhöõng thay ñoåi nhoû n phöông phaùp maõ hoùa coù theå gay ra bieán ñoåi lôùn trong phaàn
cöùng. Caùc leänh thuû tuïc chæ coù theå ñöôïc duøng trong nhöõng thuû tuïc.
I. Nhöõng chæ ñònh theo thuû tuïc:
Laø nhöõng chæ ñònh duøng trong phaïm vi thuû tuïc Verilog (khoái always vaø initial).
Chæ bieán reg vaø integers (vaø choïn ñôn bit/ nhoùm bit cuûa chuùng, vaø keát noái
thoâng tin) coù theå ñöôïc ñaët beân traùi daáu ‘=’ trong thuû tuïc. Beân phaûi cuûa chæ ñònh
laø moät bieåu thöùc maø coù theå duøng baát cöù daïng toaùn töû naøo.
II. Delay trong chæ ñònh:
Trong chæ ñònh treã ∆t laø khoaûng thôøi gian traûi qua tröôùc khi moät leänh ñöôïc thöïc
thi vaø beân traùi leänh gaùn ñöôïc taïo ra. Vôùi nhieàu chæ ñònh treã (intra-assignment
delay), beân phaûi ñöôïc ñònh giaù trò tröïc tieáp nhöng coù moät delay cuûa ∆t tröôùc
khi keát quaû ñöôïc ñaët beân traùi leänh gaùn. Neáu theâm moät quaù trình thay ñoåi nöõa
caïnh beân phaûi tín hieäu trong khoaûng thôi gian ∆t,thì khoâng cho keát quaû ôû ngoõ
ra. Delay khoâng ñöôïc hoã trôï bôûi caùc coâng cuï.
1. Cuù phaùp chæ ñònh thuû tuïc:
Bieán = bieåu thöùc;
Chæ dònh treã:

Toùm taét baøi giaûng TK Heä Thoáng Soá Phaàn Verilog
GV: Nguyeãn Troïng Haûi Trang 20
#∆t bieán = bieåu thöùc;
intra_assignment delay:
bieán = #∆t bieåu thöùc.
2. Ví duï:
Reg [6:0] sum; reg h, zilch;
Sum[7] = b[7]^c[7]; // thöïc thi töùc thôøi;
Ziltch = #15 ckz & h; // ckz & h ñònh giaù trò töùc thôøi; ziltch thay ñoåi sau 15 ñôn
vò thôøi gian.
#10 hat = b & c;/* 10 ñôn vò thôøi gian sau khi ziltch thay ñoåi, b & c ñöôïc ñònh
giaù vaø hat thay ñoåi*/
III. Chæ ñònh khoái:
Chæ ñònh khoái (=) thöïc hieän lieân tuïc trong thöù töï leänh ñaõ ñöôïc vieát. Chæ ñònh
thöù hai khoâng ñöôïc thöïc thi neáu nhö chæ ñònh ñaàu cho hoaøn thaønh.
1. Cuù phaùp:
Bieán = bieåu thöùc;
Bieán = #∆t bieåu thöùc;
#∆t bieán = bieåu thöùc;
2. Ví duï:
Initial
Begin
a = 1; b = 2; c = 3;
#5 a = b + c; // sau 5 ñôn vò thôøi gian thöïc hieän a = b + c = 5.
d = a; // d = a = 5.
Always @(posedge clk)
Begin
Z = Y; Y = X; // thanh ghi dòch.
y = x; z = y; // flip flop song song.
IV. Begin …end:
Leänh khoái begin … end ñöôïc duøng ñeå nhoùm moät vaøi leänh maø moät leänh cuù phaùp
ñöôïc cho pheùp. Bao goàm function, khoái always vaø khoái initial. Nhöõng khoái naøy
coù theå ñöôïc tuøy yù goïi teân. Vaø bao goàm khai baùo reg, integer, tham soá.

Toùm taét baøi giaûng TK Heä Thoáng Soá Phaàn Verilog
GV: Nguyeãn Troïng Haûi Trang 21
1. Cuù phaùp:
Begin: teân khoái
Reg[msb:lsb] danh saùch bieán reg;
Integer [msb:lsb] danh saùch integer;
Parameter [msb:lsb] danh saùch tham soá;
…caùc leänh…
End
2. Ví duï:
function trivial_one;// teân khoái laø: trivial_one
input a;
begin: adder_blk
integer i;
… leänh…
end
V. Voøng laëp for:
Gioáng nhö c/c++ ñöôïc duøng ñeå thöïc hieän nhieàu laàn moät leänh hoaëc khoái leänh.
Neáu trong voøng laëp chæ chöùa moät leänh thì khoái begin … end coù theå boû qua.
1. Cuù phaùp:
For (bieán ñeám = giaù trò 1; bieán ñeám </ <=/ >/ >= giaù trò 2;
bieán ñeám = bieán ñeám +/- giaù trò)
begin
… leänh …
end
2. Ví duï:
For (j = 0; j<=7; j = j+1)
Begin
c[j] = a[j] & b[j];
d[j] = a[j] | b[j];
end
VI. Voøng laëp while:

Toùm taét baøi giaûng TK Heä Thoáng Soá Phaàn Verilog
GV: Nguyeãn Troïng Haûi Trang 22
Voøng laëp while thöïc hieän nhieàu laàn moät leänh hoaëc khoái leänh cho ñeán khi bieåu
thöùc trong leänh while ñònh giaù laø sai.
1. Cuù phaùp:
While (bieåu thöùc)
Begin
… caùc leänh…
end
2. Ví duï:
While (!overflow)
@(posedge clk);
a = a +1;
end
VII. Khoái leänh if… else if… else:
Thöïc hieän moät leänh hoaëc moät khoái leänh phuï thuoäc vaøo keát quaû cuûa bieåu thöùc
theo sau meänh ñeà if.
Cuù phaùp
If (bieåu thöùc)
Begin
… caùc leänh…
end
else if (bieåu thöùc)
Begin
… caùc leänh…
end
else
Begin
… caùc leänh…
end
VIII. Case:
Leänh case cho pheùp löïa choïn tröôøng hôïp. Caùc leäng trong khoái default thöïc thi
khi khoâng coù tröôøng hôïp löïa choïn so saùnh gioáng nhau. Neáu khoâng coù söï so

