2008
dce
Thiếtkế mạch số vớiHDL
Chương 4: Thiếtkế luậnlývới
Verilog
Computer Engineering 2008
2
Advanced Digital Design with the Verilog HDL –
cha
p
ter 4
Nội dung chính
•Giớithiệuvề HDLs và verilog
•Môhìnhcấutrúcchomạch luậnlýtổ hợp
•Môphỏng luận lý, kiểmchứng thiếtkế và
phương pháp luậnkiểmtra
•Thờigiantrễ truyềnlan
•Môhìnhbảng sự thậtchomạch luậnlýtổ
hợpvàtuầntự với Verilog
Computer Engineering 2008
3
Advanced Digital Design with the Verilog HDL –
cha
p
ter 4
Nội dung chính
• Giớithiệuvề HDLs và verilog
•Môhìnhcấutrúcchomạch luậnlýtổ hợp
•Môphỏng luận lý, kiểmchứng thiếtkế và
phương pháp luậnkiểmtra
•Thờigiantrễ truyềnlan
•Môhìnhbảng sự thậtchomạch luậnlýtổ
hợpvàtuầntự với Verilog
Computer Engineering 2008
4
Advanced Digital Design with the Verilog HDL –
cha
p
ter 4
Giớithiệu HDLs
• HDLs (Hardware Description Languages)
Không là một ngôn ngữ lập trình
TựaC
Thêm những chứcnăng mô hình hóa, mô
phỏng chứcnăng
Verilog vs. VHDL
•Cácbướcthiếtkế bằng HDL
Mô tả mạch từ khóa
Biên dịch để kiểm tra cú pháp (syntax)
Mô phỏng để kiểmtrachứcnăng củamạch
Computer Engineering 2008
5
Advanced Digital Design with the Verilog HDL –
cha
p
ter 4
Đặctả bằng HDL
Cấutrúc/hànhvi củamạch
Mô phỏng
Kiểmtra: thiếtkếđã đúng yêu cầuchưa?
Chứcnăng: Hành vi I/O
Mức thanh ghil (Kiếntrúcl)
Mứcluậnlý(Cổng)
Mức transistor (Điểntử)
Timing: Waveform Behavior
Tổng hợp
Ánh xạđặctả thành các hiệnthực
Phương pháp luậnthiếtkế HDL
Computer Engineering 2008
6
Advanced Digital Design with the Verilog HDL –
cha
p
ter 4
Mô hình cấutrúcvàmôhìnhhànhvi trong
HDLs
• Cấu trúc (Structural) chỉ ra cấu trúc phầncứng
thậtsự củamạch
Mứctrừutượng thấp
•Cáccổng cơ bản(vídụ and, or, not)
•Cấutrúcphâncấp thông qua các module
Tương tự lậptrìnhhợpngữ
• Hành vi (Behavioral) chỉ ra hoạt động củamạch
trên các bits
Mứctrừutượng cao hơn
•Biểudiễnbằng các biểuthức(vídụ out = (a & b) | c)
• Không phảitấtcả các đặctả hành vi đềutổng
hợp được
Không sử dụng: + - * / % > >= < <= >> <<
Computer Engineering 2008
7
Advanced Digital Design with the Verilog HDL –
cha
p
ter 4
Những nguy hiểm trong thiếtkế Verilog
•Chương trình tuầntự, bộ tổng hợpcóthể sẽ
phải thêm nhiều chi tiếtphầncứng
Cầnmộtbộ priority encoder
•Nếuchương trình song song, có thể có những
trạng thái không xác định
Nhiềukhối “always”, khối nào thựcthitrước?
•Tạoranhiềutrạng thái không dự dịnh trước
if (x == 1) out = 0;
if (y == 1) out = 1; // else out retains previous state?
R-S latch!
• Không tính trước đượcsố phầntử phầncứng
x = x + 1 có thể cầnRẤT NHIỀU phầntử phầncứng
Computer Engineering 2008
8
Advanced Digital Design with the Verilog HDL –
cha
p
ter 4
Lịch sử phát triển HDLs
• ISP (circa 1977) – dự án nghiên cứu CMU (Carnegie Mellon University)
Mô phỏng nhưng không tổng hợp
• Abel (circa 1983) – được phát triểnbởi Data-I/O
Mục tiêu dùng cho các thiếtbị luậnlýkhả lậptrình
Không tốtchomáytrạng thái
• Verilog (circa 1985) – phát triểnbởi Gateway (now Cadence)
Đặctảđược đưaratừ 1985
Ban đầu được phát triển cho mô phỏng, tương tự C và Pascal
Hiệuquả và dễ viết
Berkeley phát triển công cụ tổng hợpvàothậpniên80
Được IEEE chuẩn hóa
• Verilog standardized (Verilog-1995 standard)
• Verilog-2001 standard
• VHDL (circa 1987) - DoD sponsored standard
Dưa trên VHSIC phát triểnbởi DARPA
Tương tự như Ada (Nhấnmạnh vào tái sử dụng và bảotrì)
Ngữ nghĩamôphỏng rõ ràng
Rấttổng quát nhưng dài dòng
Được IEEE chuẩn hóa
• VHDL standardized (’87 and ’93)
Cấu trúc nghiêm ngặt
Computer Engineering 2008
9
Advanced Digital Design with the Verilog HDL –
cha
p
ter 4
Verilog HDL
•Veriloglàmột ngôn ngữ lớn
Có nhiều tính năng cho tổng hợpvàmôphỏng phầncứng
Có thể biểudiễnnhững đặctrưng mứcthấp
• Transistor
Có thể hoạt động như ngôn ngữ lậptrình
•Cấutrúclặp
•Cấutrúcđiềukhiển….
• Các công cụ mô phỏng chấpnhận toàn bộ khái niệm
của Verilog
• Các công cụ tổng hợpchỉ chấpnhậnmộtphần các khái
niệmcủaVerilog
•Chỉ tập trung nghiên cứumộtphần
Sử dụng ở mộtmứcthíchhợp
Tập trung trên những cấutrúctổng hợp được
Tập trung tránh những cấu trúc gây lỗikhitổng hợp
Computer Engineering 2008
10
Advanced Digital Design with the Verilog HDL –
cha
p
ter 4
Nội dung chính
•Giớithiệuvề HDLs và verilog
• Mô hình cấutrúcchomạch luậnlýtổ
hợp
•Môphỏng luận lý, kiểmchứng thiếtkế và
phương pháp luậnkiểmtra
•Thờigiantrễ truyềnlan
•Môhìnhbảng sự thậtchomạch luậnlýtổ
hợpvàtuầntự với Verilog
Computer Engineering 2008
11
Advanced Digital Design with the Verilog HDL –
cha
p
ter 4
Mô hình mạch tổ hợp
•MộtmôhìnhVerilogcủamộtmạch tóm tắtcác
mô tả chứcnăng bằng góc nhìn cấu trúc hay
hành vi trên những mối quan hệ ngõ vào-ngõ ra
•Mộtmôhìnhcấutrúclàmộtcấu trúc kếtnối
(netlist) chứa
Các cổng
Các khốichứcnăng
•Một mô hình hành vi là
Các biểuthức Boolean đơngiản
Mô hình chuyển đổimức thanh ghi (Register Transfer
Level – RTL)
Mộtgiảithuật
Computer Engineering 2008
12
Advanced Digital Design with the Verilog HDL –
cha
p
ter 4
Mô hình cấutrúcmạch tổ hợp
•Thiếtkế cấutrúctương
tự như tạoramộtsơđồ
(schematic)
• Schematic
Hình biểudiễncổng logic,
Ngõ vào ra,
Các đường kếtnốigiữa
các cổng.
• Môhìnhcấu trúc HDL
Danh sách các cổng cơ
bảnvàkếtnốigiữa chúng
Các phát biểuchỉ ra ngõ
vào-ra
Computer Engineering 2008
13
Advanced Digital Design with the Verilog HDL –
cha
p
ter 4
Verilog primitives
• Primitives là các đốitượng cơ bảncóthểđượcsử dụng
trong thiếtkế
• 26 đốitượng chứcnăng được định nghĩatrước
n-input
n-output
3-states
and buf
nand not
or bufif0
nor bufif1
xor notif0
xnor notif1
nand (y, a, b, c);
keyword name
output
input
kết thúc phát biểu
nand N1(y, a, b, c);
instance name (optional)
Ngõralàphầntửđầutiêntrong
danh sách các ngõ vào-ra
Computer Engineering 2008
14
Advanced Digital Design with the Verilog HDL –
cha
p
ter 4
Mô hình cấu trúc trong Verilog
• Module
Tên module và đi theo
sau là danh sách các
ngõ vào-ra (port)
Danh sách đặctả loại
port (input/output)
Danh sách các dây nối,
các biếnsử dụng bên
trong module (optional)
Danh sách các kếtnối
giữacáccổng và các
module khác bên trong
endmodule
module module_name (port_list);
//Declarations:
reg, wire, parameter,
input, output, inout,
function, task, …
//Statements:
Initial statement
Always statement
Module instantiation
Gate instantiation
UDP instantiation
Continuous assignment
endmodule
Computer Engineering 2008
15
Advanced Digital Design with the Verilog HDL –
cha
p
ter 4
Ví dụ
port modes
Internal wires
Instantiated primitives
Module ports
Computer Engineering 2008
Ví dụ khác
Computer Engineering 2008
17
Advanced Digital Design with the Verilog HDL –
cha
p
ter 4
Module ports
•Giaotiếpvới“môitrường” bên ngoài
•Kiểucủa port quyết định chiềutruyềndữ
liệu
Mộtchiều (Unidirectional)
• input
• output
Hai chiều (Bidirectional)
• inout
•Kiểucủa module port phải được khai báo
tường minh và không cần theo thứ tự xuất
hiện trong port list
Computer Engineering 2008
18
Advanced Digital Design with the Verilog HDL –
cha
p
ter 4
Quy tắt trong Verilog
• Phân biệtchữ hoa thường (Case sensitive)
• Identifier: a-z, A-Z, 0-9, ‘_’ và ‘$’
• Tên biến không đượcbắt đầubằng ‘$’ hay ký số
và có thể tối đa là 1024 ký tự
•Một phát biểu đượckết thúc bằng ‘;’
• Chú thích
‘//’ một dòng chú thích
/*…*/ chú thích nhiều dòng
•Cóthể viết các phát biểutrênmột dòng hay
nhiềudòng
Computer Engineering 2008
Quy tắt trong Verilog
Comments
Lower case
key words
identifiers
Computer Engineering 2008
20
Advanced Digital Design with the Verilog HDL –
cha
p
ter 4
Thiếtkế từ trên xuống (top-down)
•Hệ thống phứctạp được phân chia thành những
đơnvị chứcnăng nhỏ hơn
Dễ thiếtkế
Dễ kiểmtra
•Cácmodule lồng nhau trong Verilog hỗ trợ thiết
kế từ trên xuống
• Module tham khảo đến module khác đượcgọilà
module “cha”, module được module khác tham
khảo đếngọi là module “con”
• Độ sâu của các module lồng nhau không giới
hạn
•Mỗi module con phải có tên duy nhất trong
phạm vi module cha (trừ các primitives)
Computer Engineering 2008
21
Advanced Digital Design with the Verilog HDL –
cha
p
ter 4
Binary full adder
Half_adder
a
b
sum
c_out
Half_adder
a
b
sum
c_out
a
b
c_in
sum
c_out
M1
M2
w1
w2
w3
a
⊕
b
⊕
c_in
Computer Engineering 2008
22
Advanced Digital Design with the Verilog HDL –
cha
p
ter 4
Thiếtkế phân cấpvàtổ chứcmãnguồn
• Top-level module là module ở cấpcao
nhất
• Module ở mứcthấpnhất
Chứa các primitives
Các module không phân chia nhỏ hơn
•Tấtcả các module được đặttrongmộthay
nhiềutập tin khác nhau
• Công cụ mô phỏng tích hợp các module
từ các tậptin
Computer Engineering 2008
23
Advanced Digital Design with the Verilog HDL –
cha
p
ter 4
Mạch cộng 16-bit ripple carry
Add_rca_16
a[15:0] b[15:0] c_in
sum[15:0]c_out
Add_rca_4 Add_rca_4 Add_rca_4 Add_rca_4
M4 M3 M2 M1
sum[15:12] sum[11:8] sum[7:4]
sum[3:1]
c_out
c_in
a[3:0]a[7:4]a[11:8]a[15:12] b[3:0]b[7:4]b[11:8]b[15:12]
c_in4c_in8c_in12
Computer Engineering 2008
24
Advanced Digital Design with the Verilog HDL –
cha
p
ter 4
Cây phân cấpmạch cộng 16-bit ripple carry
Add_rca_16
Add_rca_4 Add_rca_4 Add_rca_4 Add_rca_4
M1 M2 M3 M4
Add_full Add_fullAdd_full Add_full
Add_halforAdd_half
M1 M2 M3 M4
M3M2M1
or xoror xor
Cây phân cấpthiếtkế mạch cộng 16 bit ripple carry
Computer Engineering 2008
25
Advanced Digital Design with the Verilog HDL –
cha
p
ter 4
Hiệnthựcmạch cộng 16-bit ripple carry
Computer Engineering 2008
26
Advanced Digital Design with the Verilog HDL –
cha
p
ter 4
Vectors trong Verilog
•Một vector đượcbiểudiễnbằng ngoặc vuông
chứa dãy liên tiếp các bit
sum[3:0] vector sum kích thước4 bit
• Bit trái nhấtlàMSB
•Bit phảinhấtlàLSB
•Cóthể truy xuấttừng bit hay từng dãy bit trong
vector
sum[1] bit thứ 2 từ phải sang củasum
sum[2:1] bit thứ 2 và 3 từ phải sang củasum
• sum[4] giá trị x (không xác định)
•Cóthể gán, so sánh 2 vector với nhau
Computer Engineering 2008
27
Advanced Digital Design with the Verilog HDL –
cha
p
ter 4
Cấutrúcliênkết (connectivity)
•Wire
Thiếtlập các liên kếtgiữacácđốitượng thiếtkế
Giá trịđược quyết định trong quá trình mô phỏng bởi
cái mà nó đượcnốivào
•Kiểuwire
Khai báo bằng từ khóa wire
• wire y_out
Các biếnsử dụng không khai báo
• Các ngõ vào và ra mặc định là kiểu wire (trừ khi
được khai báo kiểu khác)
•Kếtnốigiữa port hình thức và port thựctế
Theo thứ tự trong danh sách các port
.tên_hình_thức(tên_thực_tế)
• half_adder (.b(b), .Cout(w2), .a(a), .sum(w1));
Computer Engineering 2008
28
Advanced Digital Design with the Verilog HDL –
cha
p
ter 4
Nội dung chính
•Giớithiệuvề HDLs và verilog
•Môhìnhcấutrúcchomạch luậnlýtổ hợp
• Mô phỏng luận lý, kiểmchứng thiếtkế
và phương pháp luậnkiểmtra
•Thờigiantrễ truyềnlan
•Môhìnhbảng sự thậtchomạch luậnlýtổ
hợpvàtuầntự với Verilog
Computer Engineering 2008
29
Advanced Digital Design with the Verilog HDL –
cha
p
ter 4
Các giá trị luận lý trong Verilog
• Verilog sử dụng 4 giá trị luậnlý
1 True
0 False
x Không xác định
z tổng trở cao
x z
x x x
a
b
y
0
1
a
b
y
x z x z x z x z
x x z
x
z z x
z z x
z z x x
s0
a
s1
b
out3
out4
out1
x x z
a
x
b
x
x
x x
x
xx
out5
out6
out2
Computer Engineering 2008
30
Advanced Digital Design with the Verilog HDL –
cha
p
ter 4
Phương pháp luậnkiểmtra
•Kiểmtramạch thựchiện đúng chứcnăng
Kiểmtrangẫu nhiên phứctạp và không chính xác
Cầnlậpkế hoạch kiểmtratỉ mỉ
•Kiểmtramạch lớn
Kiểmtratấtcả các trường hợp
•Mạch cộng 16 bit cầnkiểmtra2
23
trường hợp
•Kiểm tra phân cấp
half_adder
full_adder
Add_rca_4 cầnkiểmtra2
9
trường hợp
Chọnmộtsố trường hợp để kiểmtrakếtnốicủacác
Add_rca_4 trong Add_rca_16
•Kiểm tra theo chiềungượcso với cây phân cấp
thiếtkế
Computer Engineering 2008
31
Advanced Digital Design with the Verilog HDL –
cha
p
ter 4
Mô phỏng luậnlý
•Xâydựng các
testbench đưavào
mạch và hiểnthị dạng
sóng củakếtquả
•Bộ mô phỏng
Kiểm tra mã nguồn
Báo lỗi
Mô phỏng hành vi của
mạch thông qua các
tín hiệu vào trong
testbench
⇒
/
Không có lỗi cú pháp Mạch thựcthiđúng kếtquả
Stimulus
Generator
unit_under_test
(UUT)
Response
Monitor
Ngườisử dụng hay phầnmềm
Computer Engineering 2008
32
Advanced Digital Design with the Verilog HDL –
cha
p
ter 4
Sinh tín hiệu để kiểmtra
•Một hành vi (behavior)
Tậphợp các phát biểu được thi trong quá trình mô phỏng (các
phát biểuthủ tục)
Được gán giá trị mô phỏng giống như là được điểukhiểnbởi
phầncứng
• Initial khai báo hành vi mộtlượt(single-pass)
• begin … end
Chứa danh sách các phát biểucủahànhvi
Thờigianthựcthicácphátbiểuthủ tụctùythuộcvàothứ tự và
thờigiantrễ truyền
Các phát biểu đượcthựcthitừ trên xuống, từ trái sang phải
• # <integer> <statement>
Điềukhiểntrễ truyền
Các phát biểu phía sau phải đợi
Computer Engineering 2008
33
Advanced Digital Design with the Verilog HDL –
cha
p
ter 4
Khuôn mẫu cho testbench
module t_module ();
reg …;
wire …;
parameter time_out = 100;
UUT_name U1 (port_list);
initial $monitor();
initial #time_out $finish
initial
begin … end
endmodule
Tên module UUT
Khai báo kiểu thanh ghi để chứa
giá trị cho các biến ngõ vào
của UUT
Khai báo kiểu wire cho các ngõ ra
của UUT
Khai báo các tham số
Tín hiệu đượcxuấtradạng text
Kếtthúcmôphỏng sau thờigian
time_out
Xây dựng các tín hiệungõvào
cho U1
Computer Engineering 2008
34
Advanced Digital Design with the Verilog HDL –
cha
p
ter 4
Ví dụ
Computer Engineering 2008
35
Advanced Digital Design with the Verilog HDL –
cha
p
ter 4
Kích thướcsố
•Chỉ ra số lượng bit dùng để lưutrữ số
• <num_of_bit> ‘ <base> <value>
8’b1000_0001
3’d2987
16’h24ce
3’o7
•Những số không khai báo kích thước đượchiểu
ở dạng integer (thông thường 32 bits)
•Mặc định các sốởdạng decimal
• Không phân biệt hoa thường trong khai báo số
•Dấu “_” đượcbỏ qua
Computer Engineering 2008
36
Advanced Digital Design with the Verilog HDL –
cha
p
ter 4
Nội dung chính
•Giớithiệuvề HDLs và verilog
•Môhìnhcấutrúcchomạch luậnlýtổ hợp
•Môphỏng luận lý, kiểmchứng thiếtkế và
phương pháp luậnkiểmtra
• Thờigiantrễ truyềnlan
•Môhìnhbảng sự thậtchomạch luậnlýtổ
hợpvàtuầntự với Verilog
Computer Engineering 2008
37
Advanced Digital Design with the Verilog HDL –
cha
p
ter 4
Thờigiantrễ truyền
• Ngõ vào thay đổi ngõ ra không thay đổi ngay lập
tức
• Các phầntử cơ bảncủaverilogcóthờigiantrễ
là 0
•Cácvi mạch thựctếđượcsảnxuấtdựa trên các
thư việnchuẩn được định nghĩatrước
•Ngườithiếtkế chỉ quan tâm đến tính đúng đắn
củamạch
•Sử dụng các công cụ tổng hợp để hiệnthựccác
thiếtkế thỏa mãn các ràng buộcth
ờigian
• ‘timescale <time_unit base>/<precision base>
Chỉ thị biên dịch
Chỉ ra đơnvị thờigianvàđộ chính xác thờigiantrễ
Phải được khai báo trước các module
Computer Engineering 2008
38
Advanced Digital Design with the Verilog HDL –
cha
p
ter 4
Ví dụ `timescale
Computer Engineering 2008
39
Advanced Digital Design with the Verilog HDL –
cha
p
ter 4
Các loạitrễ lan truyền
•Trễ quán tính (inertial delay)
•Trễ truyền (transport delay)
Gây ra do các dây nối
0.033ns/1cm
Có thể bỏ qua
wire #2 A_long_wire
Δ = 4
tpd
= 2
t
= 3
t
= 5
Δ = 4
Δ = 1
tpd
= 2
t
= 3
t
= 5
Computer Engineering 2008
40
Advanced Digital Design with the Verilog HDL –
cha
p
ter 4
Nội dung chính
•Giớithiệuvề HDLs và verilog
•Môhìnhcấutrúcchomạch luậnlýtổ hợp
•Môphỏng luận lý, kiểmchứng thiếtkế và
phương pháp luậnkiểmtra
•Thờigiantrễ truyềnlan
• Mô hình bảng sự thậtchomạch luậnlý
tổ hợpvàtuầntự với Verilog
Computer Engineering 2008
41
Advanced Digital Design with the Verilog HDL –
cha
p
ter 4
Bảng sự thật trong Verilog
• table
• Ngõ ra phảicókiểuvôhướng (scalar)
• Dùng kí hiệu ‘?’ thay cho 0, 1, x
•Thứ tự các cột trong <input_list> tương ứng với
thứ tự trong khai báo input của module
•Mạch tổ hợp
<input_list>:<output>
•Mạch tuầntự
<input_list>:<state>:<output/next_state>
Ngõraphải được khai báo kiểuthanhghi
Dùng kí hiệu‘-’biểudiễn ngõ ra không thay đổi