
Toùm taét baøi giaûng TK Heä Thoáng Soá Phaàn Verilog
GV: Nguyeãn Troïng Haûi Trang 6
Chöông IV
CAÙC DAÏNG DÖÕ LIEÄU
I. Ñaët giaù trò:
Verilog bao goàm 4 giaù trò cô baûn. Haàu heát caùc daïng döõ lieäu Verilog chöùa caùc
giaù trò sau:
0: möùc logic 0, hoaëc ñieàu kieän sai.
1: möùc logic 1, hoaëc ñieàu kieän ñuùng.
X: möùc logic tuyø ñònh
Z: traïng thaùi toång trôû cao.
X vaø Z duøng coù giôùi haïn trong toång hôïp (synthesis)
II. Wire:
Moâ taû vaät lieäu ñöôøng daây daãn trong moät maïch ñieän vaø ñöôïc duøng ñeå keát noái
caùc coång hay caùc module. Giaù trò cuûa Wire coù theå ñoïc, nhöng khoâng ñöôïc gaùn
trong haøm (function) hoaëc khoái (block). Wire khoâng löu tröõ giaù trò cuûa noù
nhöng vaãn phaûi ñöôïc thöïc thi bôûi 1 leänh gaùn keá tieáp hay bôûi söï keát noái Wire
vôùi ngoõ ra cuûa 1 coång hoaëc 1 module. Nhöõng daïng ñaëc bieät khaùc cuûa Wire:
Wand(wired_and): giaù trò phuï thuoäc vaøo möùc logic And toaøn boä boä ñieàu khieån
keát noái ñeán Wire.
Wor (wired_or): giaù trò phuï thuoäc vaøo möùc logic Or toaøn boä boä ñieàu khieån keát
noái ñeán Wire.
Tri(three_state): taát caû boä ñieàu khieån keát noái ñeán 1 tri phaûi ôû traïng thaùi toång
trôû cao.
1. Cuù phaùp:
Wire [msb:lsb] teân bieán wire.
Wand [msb:lsb] teân bieán wand.
Wor [msb:lsb] teân bieán wor.
Tri [msb:lsb] teân bieán tri.
2. Ví duï:

Toùm taét baøi giaûng TK Heä Thoáng Soá Phaàn Verilog
GV: Nguyeãn Troïng Haûi Trang 7
Wire c;
Wand d;
Assign d= a;
Assign d= b;// giaù trò d laø möùc logic cuûa pheùp And a vaø b.
Wire [9:0] A; // vectô A coù 10 wire.
III. Reg:
Reg (register) laø moät ñoái töôïng döõ lieäu maø noù chöùa giaù trò töø moät thuû tuïc gaùn
keá tieáp. Chuùng chæ ñöôïc duøng trong haøm vaø khoái thuû tuïc. Reg laø moät loaïi bieán
Verilog vaø khoâng nhaát thieát laø thanh ghi töï nhieân. Trong thanh ghi nhieàu bit,
data ñöôïc löu tröõ baèng nhöõng chöõ soá khoâng daáu vaø khoâng coù kí hieäu ñuoâi môû
roäng, ñöôïc thöïc hieän maø ngöôøi söû duïng coù chuû y ùlaø soá buø hai.
1. Cuù phaùp:
Reg [msb:lsb] teân bieán reg.
2. Ví duï:
Reg a; // bieán thanh ghi ñôn giaûn 1 bit.
Reg [7:0] A; // moät vectô 8 bit; moät bank cuûa 8 thanh ghi.
Reg [5:0]b, c; // hai bieán thanh ghi 6 bit.
IV. Input, Output, Inout:
Nhöõng töø khoaù naøy bieåu thò ngoõ vaøo, ngoõ ra, vaø port hai chieàu cuûa moät module
hoaëc task. Moät port ngoõ ra coù theå ñöôïc caáu hình töø caùc daïng: wire, reg, wand,
wor, hoaëc tri. Maëc ñònh laø wire.
1. Cuù phaùp:
Input [msb:lsb] port ngoõ vaøo.
Output [msb:lsb] port ngoõ ra.
Inout [msb:lsb] port ngoõ vaøo,ra hai chieàu.
2. Ví duï:
Module sample (b, e, c, a);
Input a; // moät ngoõ vaøo maëc ñònh laø kieåu wire.
Output b, e; // hai ngoõ ra maëc ñònh laø kieåu wire.
Output [1:0] c; /* ngoõ ra hai bit, phaûi ñöôïc khai baùotrong moät leänh rieâng*/
Reg [1:0] c; // ngoõ c ñöôïc khai baùo nhö moät reg.

Toùm taét baøi giaûng TK Heä Thoáng Soá Phaàn Verilog
GV: Nguyeãn Troïng Haûi Trang 8
V. Integer (Soá nguyeân):
Integer laø moät bieán ña naêng. Trong toång hôïp chuùng ñöôïc duøng chuû yeáu cho
voøng laëp, tham soá, vaø haèng soá. Chuùng hoaøn toaøn laø reg. Tuy nhieâu chuùng chöùa
döõ lieäu baèng nhöõng soá coù daáu, trong khi ñoù khai baùo daïng reg chöùa chung
baèng soá khoâng daáu. Neáu chuùng chöùa nhöõng soá maø khoâng ñònh nghóa thôøi gian
bieân dòch thì kích thöôùc maëc ñònh laø 32 bit. Neáu chuùng chöùa haèng, söï toång hôïp
ñieàu chænh caùc soá coù kích thöôùc nhoû nhaát caàn thieát cho söï bieân dòch.
1. Cuù phaùp:
Integer teân bieán nguyeân;
…teân haèng nguyeân…;
2. Ví duï:
Integer a; // soá nguyeân ñôn giaûn 32bit.
Assign b= 63; // maëc ñònh laø moät bieán 7 bit.
VI. Supply 0, Supply1:
Xaùc ñònh choå ñöôøng daãn leân möùc logic 0 ( ñaát), logic 1( nguoàn) theo thöù töï
ñònh saün.
VII. Time:
Time laø moät löôïng 64 bit maø ñöôïc söû duïng cuøng vôùi $time, heä thoáng thao taùc
chöùa löôïng thôøi gian moâ phoûng. Time khoâng ñöôïc hoã trôï toång hôïp vaø vì theá
chæ ñöôïc duøng trong muïc ñích moâ phoûng.
1. Cuù phaùp:
Time bieán time;
2. Ví duï:
Time c;
c = $time; // c = thôøi gian moâ phoûng doøng ñieän.
VIII. Parameter (Tham soá):
Moät Parameter xaùc ñònh 1 haèng soá maø ñöôïc ñaët khi baïn cho ví duï cuï theå laø
moät module. Caùc naøy cho pheùp ta coù theå söûa chöõa.
1. Cuù phaùp:
Parameter par_1= gaùi trò, par_2= gaùi trò, …;
Parameter [giôùi haïn] par_3 = giaù trò;
2. Ví duï:

Toùm taét baøi giaûng TK Heä Thoáng Soá Phaàn Verilog
GV: Nguyeãn Troïng Haûi Trang 9
Parameter add = 2b’00, sub = 3b’111;
Parameter n = 4;
Parameter [3:0] par_2 = 4b’1010;
…
reg [n-1:0] harry;// moät thanh ghi 4 bít maø ñoä roäng ñöôïc ñaët bôûi tham soá n ôû
treân.
always @(x)
y = {{(add - sub) {x}}}
if (x) begin
state = par_2[1];
else
state =par_2[2];
end.

Toùm taét baøi giaûng TK Heä Thoáng Soá Phaàn Verilog
GV: Nguyeãn Troïng Haûi Trang 10
ChöôngV
TOAÙN TÖÛ
I. Toaùn töû soá hoïc:
Nhöõng toaùn töû naøy thöïc hieän caùc pheùp tính soá hoïc. Daáu ’+’ vaø ’-’ coù theå ñöôïc
söû duïng moät trong hai toaùn töû ñôn (-z) hoaëc keùp (x - y).
1. Toaùn töû:
+, -, *, /, %.
2. Ví duï:
parameter n = 4;
Reg[3:0] a, c, f, g, count;
f= a +c;
g= c –n;
count = (count +1) % 16; // coù theå ñeám töø 0 ñeán 15.
II. Toaùn töû quan heä:
Toaùn töû quan heä so saùnh hai toaùn haïng vaø traû veà moät ñôn bit laø 0 hoaëc 1.
Nhöõng toaùn töû naøy toång hôïp vaøo duïng cuï so saùnh. Bieán Wire vaø Reg laø nhöõng
bieán döông. Vì theá, (-3b001) = (3b111) vaø (-3b001) > ( 3b110) nhöng neáu laø
soá nguyeân thì -1< 6.
1. Caùc toaùn töû quan heä:
<, <=, >, >=, = =, !=.
2. Ví duï:
If (x= =y) e =1;
Else e= 0;
// so saùnh hai vector a, b
reg [3:0] a, b;
if (a[3] = =b [3]) a[2:0] >b[2:0];
else b[3];

