dce
2008
Thiết kế mạch số với HDL
Chương 4: Thiết kế luận lý với Verilog
Nội dung chính
• Giới thiệu về HDLs và verilog • Mô hình cấu trúc cho mạch luận lý tổ hợp • Mô phỏng luận lý, kiểm chứng thiết kế và
phương pháp luận kiểm tra
i
• Thời gian trễ truyền lan • Mô hình bảng sự thật cho mạch luận lý tổ
hợp và tuần tự với Verilog
8 0 0 2 g n i r e e n g n E r e t u p m o C
2 Advanced Digital Design with the Verilog HDL – chapter 4
Nội dung chính
• Giới thiệu về HDLs và verilog • Mô hình cấu trúc cho mạch luận lý tổ hợp • Mô phỏng luận lý, kiểm chứng thiết kế và
phương pháp luận kiểm tra
i
• Thời gian trễ truyền lan • Mô hình bảng sự thật cho mạch luận lý tổ
hợp và tuần tự với Verilog
8 0 0 2 g n i r e e n g n E r e t u p m o C
3 Advanced Digital Design with the Verilog HDL – chapter 4
Giới thiệu HDLs
• HDLs (Hardware Description Languages)
(cid:131) Không là một ngôn ngữ lập trình (cid:131) Tựa C (cid:131) Thêm những chức năng mô hình hóa, mô
i
phỏng chức năng (cid:131) Verilog vs. VHDL
• Các bước thiết kế bằng HDL
(cid:131) Mô tả mạch từ khóa (cid:131) Biên dịch để kiểm tra cú pháp (syntax) (cid:131) Mô phỏng để kiểm tra chức năng của mạch
8 0 0 2 g n i r e e n g n E r e t u p m o C
4 Advanced Digital Design with the Verilog HDL – chapter 4
Phương pháp luận thiết kế HDL
Cấu trúc/hành vi của mạch
Đặc tả bằng HDL
i
Mô phỏng
Tổng hợp
Ánh xạ đặc tả thành các hiện thực
Kiểm tra: thiết kế đã đúng yêu cầu chưa? Chức năng: Hành vi I/O Mức thanh ghil (Kiến trúcl) Mức luận lý (Cổng) Mức transistor (Điển tử) Timing: Waveform Behavior
8 0 0 2 g n i r e e n g n E r e t u p m o C
Mô hình cấu trúc và mô hình hành vi trong HDLs • Cấu trúc (Structural) chỉ ra cấu trúc phần cứng
thật sự của mạch (cid:131) Mức trừu tượng thấp
• Các cổng cơ bản (ví dụ and, or, not) • Cấu trúc phân cấp thông qua các module
5 Advanced Digital Design with the Verilog HDL – chapter 4
i
(cid:131) Tương tự lập trình hợp ngữ
• Hành vi (Behavioral) chỉ ra hoạt động của mạch
trên các bits (cid:131) Mức trừu tượng cao hơn
• Biểu diễn bằng các biểu thức (ví dụ out = (a & b) | c)
• Không phải tất cả các đặc tả hành vi đều tổng
hợp được (cid:131) Không sử dụng: + - * / % > >= < <= >> <<
8 0 0 2 g n i r e e n g n E r e t u p m o C
6 Advanced Digital Design with the Verilog HDL – chapter 4
Những nguy hiểm trong thiết kế Verilog
• Chương trình tuần tự, bộ tổng hợp có thể sẽ
phải thêm nhiều chi tiết phần cứng (cid:131) Cần một bộ priority encoder
• Nếu chương trình song song, có thể có những
i
trạng thái không xác định (cid:131) Nhiều khối “always”, khối nào thực thi trước? • Tạo ra nhiều trạ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 được số phần tử phần cứng
(cid:131) x = x + 1 có thể cần RẤT NHIỀU phần tử phần cứng
8 0 0 2 g n i r e e n g n E r e t u p m o C
7 Advanced Digital Design with the Verilog HDL – chapter 4
Lịch sử phát triển HDLs
•
ISP (circa 1977) – dự án nghiên cứu CMU (Carnegie Mellon University)
(cid:131) Mô phỏng nhưng không tổng hợp
• Abel (circa 1983) – được phát triển bởi Data-I/O (cid:131) Mục tiêu dùng cho các thiết bị luận lý khả lập trình (cid:131) Không tốt cho máy trạng thái
• Verilog (circa 1985) – phát triển bởi Gateway (now Cadence)
i
(cid:131) Đặc tả được đưa ra từ 1985 (cid:131) Ban đầu được phát triển cho mô phỏng, tương tự C và Pascal (cid:131) Hiệu quả và dễ viết (cid:131) Berkeley phát triển công cụ tổng hợp vào thập niên 80 (cid:131) Được IEEE chuẩn hóa
• Verilog standardized (Verilog-1995 standard) • Verilog-2001 standard
• VHDL (circa 1987) - DoD sponsored standard
(cid:131) Dưa trên VHSIC phát triển bởi DARPA (cid:131) Tương tự như Ada (Nhấn mạnh vào tái sử dụng và bảo trì) (cid:131) Ngữ nghĩa mô phỏng rõ ràng (cid:131) Rất tổng quát nhưng dài dòng (cid:131) Được IEEE chuẩn hóa
• VHDL standardized (’87 and ’93)
(cid:131) Cấu trúc nghiêm ngặt
8 0 0 2 g n i r e e n g n E r e t u p m o C
8 Advanced Digital Design with the Verilog HDL – chapter 4
Verilog HDL
• Verilog là một ngôn ngữ lớn
(cid:131) Có nhiều tính năng cho tổng hợp và mô phỏng phần cứng (cid:131) Có thể biểu diễn những đặc trưng mức thấp
• Transistor
(cid:131) Có thể hoạt động như ngôn ngữ lập trình
i
• Cấu trúc lặp • Cấu trúc điều khiển….
• Các công cụ mô phỏng chấp nhận toàn bộ khái niệm
của Verilog
• Các công cụ tổng hợp chỉ chấp nhận một phần các khái
niệm của Verilog
• Chỉ tập trung nghiên cứu một phần
(cid:131) Sử dụng ở một mức thích hợp (cid:131) Tập trung trên những cấu trúc tổng hợp được (cid:131) Tập trung tránh những cấu trúc gây lỗi khi tổng hợp
8 0 0 2 g n i r e e n g n E r e t u p m o C
9 Advanced Digital Design with the Verilog HDL – chapter 4
Nội dung chính
• Giới thiệu về HDLs và verilog • Mô hình cấu trúc cho mạch luận lý tổ
hợp
• Mô phỏng luận lý, kiểm chứng thiết kế và
i
phương pháp luận kiểm tra
• Thời gian trễ truyền lan • Mô hình bảng sự thật cho mạch luận lý tổ
hợp và tuần tự với Verilog
8 0 0 2 g n i r e e n g n E r e t u p m o C
10 Advanced Digital Design with the Verilog HDL – chapter 4
Mô hình mạch tổ hợp
• Một mô hình Verilog của một mạch tóm tắt các mô tả chức nă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ột mô hình cấu trúc là một cấu trúc kết nối
i
(netlist) chứa (cid:131) Các cổng (cid:131) Các khối chức năng • Một mô hình hành vi là
(cid:131) Các biểu thức Boolean đơn giản (cid:131) Mô hình chuyển đổi mức thanh ghi (Register Transfer
Level – RTL) (cid:131) Một giải thuật
8 0 0 2 g n i r e e n g n E r e t u p m o C
11 Advanced Digital Design with the Verilog HDL – chapter 4
Mô hình cấu trúc mạch tổ hợp
• Thiết kế cấu trúc tương tự như tạo ra một sơ đồ (schematic)
• Schematic
i
(cid:131) Hình biểu diễn cổng logic, (cid:131) Ngõ vào ra, (cid:131) Các đường kết nối giữa
các cổng.
• Mô hình cấu trúc HDL (cid:131) Danh sách các cổng cơ
bản và kết nối giữa chúng
(cid:131) Các phát biểu chỉ ra ngõ
vào-ra
8 0 0 2 g n i r e e n g n E r e t u p m o C
12 Advanced Digital Design with the Verilog HDL – chapter 4
Verilog primitives
• Primitives là các đối tượng cơ bản có thể được sử dụng
trong thiết kế
• 26 đối tượng chức năng được định nghĩa trước
n-input
n-output 3-states
i
and
buf
output
kết thúc phát biểu
nand
not
nand (y, a, b, c);
or
bufif0
input
nor
bufif1
keyword name
xor
notif0
xnor
notif1
nand N1(y, a, b, c);
Ngõ ra là phần tử đầu tiên trong danh sách các ngõ vào-ra
8 0 0 2 g n i r e e n g n E r e t u p m o C
instance name (optional)
13 Advanced Digital Design with the Verilog HDL – chapter 4
Mô hình cấu trúc trong Verilog
• Module
module module_name (port_list); //Declarations:
(cid:131) Tên module và đi theo sau là danh sách các ngõ vào-ra (port)
(cid:131) Danh sách đặc tả loại port (input/output)
reg, wire, parameter, input, output, inout, function, task, …
i
//Statements:
(cid:131) Danh sách các dây nối, các biến sử dụng bên trong module (optional) (cid:131) Danh sách các kết nối giữa các cổng và các module khác bên trong
(cid:131) endmodule
Initial statement Always statement Module instantiation Gate instantiation UDP instantiation Continuous assignment
endmodule
8 0 0 2 g n i r e e n g n E r e t u p m o C
14 Advanced Digital Design with the Verilog HDL – chapter 4
Ví dụ
Module ports
port modes
Internal wires
i
Instantiated primitives
8 0 0 2 g n i r e e n g n E r e t u p m o C
15 Advanced Digital Design with the Verilog HDL – chapter 4
8 Ví dụ khác
i
0 0 2 g n i r e e n g n E r e t u p m o C
Module ports
• Giao tiếp với “môi trường” bên ngoài • Kiểu của port quyết định chiều truyền dữ
liệu (cid:131) Một chiều (Unidirectional)
i
• input • output
(cid:131) Hai chiều (Bidirectional)
• inout
• Kiểu củ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
8 0 0 2 g n i r e e n g n E r e t u p m o C
17 Advanced Digital Design with the Verilog HDL – chapter 4
Quy tắt trong Verilog
• Phân biệt chữ hoa thường (Case sensitive) • Identifier: a-z, A-Z, 0-9, ‘_’ và ‘$’ • Tên biến không được bắt đầu bằng ‘$’ hay ký số
và có thể tối đa là 1024 ký tự
i
• Một phát biểu được kết thúc bằng ‘;’ • Chú thích
(cid:131) ‘//’ một dòng chú thích (cid:131) /*…*/ chú thích nhiều dòng
• Có thể viết các phát biểu trên một dòng hay
nhiều dòng
8 0 0 2 g n i r e e n g n E r e t u p m o C
18 Advanced Digital Design with the Verilog HDL – chapter 4
8 Quy tắt trong Verilog
Comments
i
Lower case key words
identifiers
0 0 2 g n i r e e n g n E r e t u p m o C
Thiết kế từ trên xuống (top-down)
• Hệ thống phức tạp được phân chia thành những
đơn vị chức năng nhỏ hơn (cid:131) Dễ thiết kế (cid:131) Dễ kiểm tra
• Các module lồng nhau trong Verilog hỗ trợ thiết
kế từ trên xuống
i
• Module tham khảo đến module khác được gọi là module “cha”, module được module khác tham khảo đến gọ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)
8 0 0 2 g n i r e e n g n E r e t u p m o C
20 Advanced Digital Design with the Verilog HDL – chapter 4
Binary full adder
M2
a ⊕ b ⊕ c_in
sum
c_in
sum
a
Half_adder
w1
w3
a
a
sum
b
c_out
c_out
Half_adder
w2
b
b
c_out
M1
i
8 0 0 2 g n i r e e n g n E r e t u p m o C
Thiết kế phân cấp và tổ chức mã nguồn
• Top-level module là module ở cấp cao
nhất
• Module ở mức thấp nhất
21 Advanced Digital Design with the Verilog HDL – chapter 4
i
(cid:131) Chứa các primitives (cid:131) Các module không phân chia nhỏ hơn
• Tất cả các module được đặt trong một hay
nhiều tập tin khác nhau
• Công cụ mô phỏng tích hợp các module
từ các tập tin
8 0 0 2 g n i r e e n g n E r e t u p m o C
22 Advanced Digital Design with the Verilog HDL – chapter 4
Mạch cộng 16-bit ripple carry
a[15:0]
b[15:0]
c_in
Add_rca_16
c_out
sum[15:0]
i
a[15:12]
b[15:12]
a[11:8]
b[11:8]
a[7:4]
b[7:4]
a[3:0]
b[3:0]
c_in
Add_rca_4
Add_rca_4
Add_rca_4
Add_rca_4
c_out
M4
M3
M2
M1
c_in12
c_in8
c_in4
sum[3:1]
sum[15:12]
sum[11:8]
sum[7:4]
8 0 0 2 g n i r e e n g n E r e t u p m o C
Cây phân cấp mạch cộng 16-bit ripple carry Add_rca_16
M1
M2
M3
M4
Add_rca_4
Add_rca_4
23 Advanced Digital Design with the Verilog HDL – chapter 4
...
Add_rca_4 ...
Add_rca_4 ...
M1
M2
M3
M4
i
Add_full
Add_full ...
Add_full ...
Add_full ...
M1
M2
M3
Add_half
or
Add_half
or
xor
or
xor
Cây phân cấp thiết kế mạch cộng 16 bit ripple carry
8 0 0 2 g n i r e e n g n E r e t u p m o C
24 Advanced Digital Design with the Verilog HDL – chapter 4
Hiện thực mạch cộng 16-bit ripple carry
i
8 0 0 2 g n i r e e n g n E r e t u p m o C
25 Advanced Digital Design with the Verilog HDL – chapter 4
Vectors trong Verilog
• Một vector được biểu diễn bằng ngoặc vuông
chứa dãy liên tiếp các bit (cid:131) sum[3:0] vector sum kích thước 4 bit
i
• Bit trái nhất là MSB • Bit phải nhất là LSB • Có thể truy xuất từng bit hay từng dãy bit trong
vector (cid:131) sum[1] bit thứ 2 từ phải sang của sum (cid:131) sum[2:1] bit thứ 2 và 3 từ phải sang của sum
• sum[4] giá trị x (không xác định) • Có thể gán, so sánh 2 vector với nhau
8 0 0 2 g n i r e e n g n E r e t u p m o C
26 Advanced Digital Design with the Verilog HDL – chapter 4
Cấu trúc liên kết (connectivity)
• Wire
(cid:131) Thiết lập các liên kết giữa các đối tượng thiết kế (cid:131) Giá trị được quyết định trong quá trình mô phỏng bởi
cái mà nó được nối vào
• Kiểu wire
(cid:131) Khai báo bằng từ khóa wire
i
• wire y_out
(cid:131) Các biến sử 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ết nối giữa port hình thức và port thực tế
(cid:131) Theo thứ tự trong danh sách các port (cid:131) .tên_hình_thức(tên_thực_tế)
• half_adder (.b(b), .Cout(w2), .a(a), .sum(w1));
8 0 0 2 g n i r e e n g n E r e t u p m o C
27 Advanced Digital Design with the Verilog HDL – chapter 4
Nội dung chính
• Giới thiệu về HDLs và verilog • Mô hình cấu trúc cho mạch luận lý tổ hợp • Mô phỏng luận lý, kiểm chứng thiết kế
và phương pháp luận kiểm tra
i
• Thời gian trễ truyền lan • Mô hình bảng sự thật cho mạch luận lý tổ
hợp và tuần tự với Verilog
8 0 0 2 g n i r e e n g n E r e t u p m o C
28 Advanced Digital Design with the Verilog HDL – chapter 4
Các giá trị luận lý trong Verilog
a
y
b
• Verilog sử dụng 4 giá trị luận lý
x
z
0
a
1
x z
x z
x z
x z
b
(cid:131) 1 True (cid:131) 0 False (cid:131) x Không xác định (cid:131) z tổng trở cao
x
x
x
y
i
s0
a
x
x
z
a
x
x
z
b
x
s1
b
x
out5
x
x
out3
z
z
x
out6
x
x
out4
z
z
x
out2
x
x
x
8 0 0 2 g n i r e e n g n E r e t u p m o C
out1
z
z
x
x
29 Advanced Digital Design with the Verilog HDL – chapter 4
Phương pháp luận kiểm tra
• Kiểm tra mạch thực hiện đúng chức năng
(cid:131) Kiểm tra ngẫu nhiên phức tạp và không chính xác (cid:131) Cần lập kế hoạch kiểm tra tỉ mỉ
• Kiểm tra mạch lớn
(cid:131) Kiểm tra tất cả các trường hợp
i
• Mạch cộng 16 bit cần kiểm tra 223 trường hợp • Kiểm tra phân cấp (cid:131) half_adder (cid:131) full_adder (cid:131) Add_rca_4 cần kiểm tra 29 trường hợp (cid:131) Chọn một số trường hợp để kiểm tra kết nối của các
Add_rca_4 trong Add_rca_16
• Kiểm tra theo chiều ngược so với cây phân cấp
thiết kế
8 0 0 2 g n i r e e n g n E r e t u p m o C
30 Advanced Digital Design with the Verilog HDL – chapter 4
Mô phỏng luận lý
• Xây dựng các
Stimulus Generator
testbench đưa vào mạch và hiển thị dạng sóng của kết quả
unit_under_test (UUT)
• Bộ mô phỏng
i
Response Monitor
Người sử dụng hay phần mềm
(cid:131) Kiểm tra mã nguồn (cid:131) Báo lỗi (cid:131) 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ực thi đúng kết quả
⇒/
8 0 0 2 g n i r e e n g n E r e t u p m o C
31 Advanced Digital Design with the Verilog HDL – chapter 4
Sinh tín hiệu để kiểm tra
• Một hành vi (behavior)
(cid:131) Tập hợp các phát biểu được thi trong quá trình mô phỏng (các
phát biểu thủ tục)
(cid:131) Được gán giá trị mô phỏng giống như là được điểu khiển bởi
phần cứng
Initial khai báo hành vi một lượt (single-pass)
i
• • begin … end
(cid:131) Chứa danh sách các phát biểu của hành vi (cid:131) Thời gian thực thi các phát biểu thủ tục tùy thuộc vào thứ tự và
thời gian trễ truyền
(cid:131) Các phát biểu được thực thi từ trên xuống, từ trái sang phải
• #
8 0 0 2 g n i r e e n g n E r e t u p m o C
32 Advanced Digital Design with the Verilog HDL – chapter 4
Khuôn mẫu cho testbench
module t_module ();
reg …;
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
i
Khai báo các tham số
wire …; parameter time_out = 100; UUT_name U1 (port_list); initial $monitor();
Tín hiệu được xuất ra dạng text Kết thúc mô phỏng sau thời gian
time_out
initial #time_out $finish initial
begin … end
Xây dựng các tín hiệu ngõ vào
cho U1
endmodule
8 0 0 2 g n i r e e n g n E r e t u p m o C
33 Advanced Digital Design with the Verilog HDL – chapter 4
Ví dụ
i
8 0 0 2 g n i r e e n g n E r e t u p m o C
34 Advanced Digital Design with the Verilog HDL – chapter 4
Kích thước số
• Chỉ ra số lượng bit dùng để lưu trữ số
•
i
(cid:131) 8’b1000_0001 (cid:131) 3’d2987 (cid:131) 16’h24ce (cid:131) 3’o7
• Những số không khai báo kích thước được hiể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 “_” được bỏ qua
8 0 0 2 g n i r e e n g n E r e t u p m o C
35 Advanced Digital Design with the Verilog HDL – chapter 4
Nội dung chính
• Giới thiệu về HDLs và verilog • Mô hình cấu trúc cho mạch luận lý tổ hợp • Mô phỏng luận lý, kiểm chứng thiết kế và
phương pháp luận kiểm tra
i
• Thời gian trễ truyền lan • Mô hình bảng sự thật cho mạch luận lý tổ
hợp và tuần tự với Verilog
8 0 0 2 g n i r e e n g n E r e t u p m o C
36 Advanced Digital Design with the Verilog HDL – chapter 4
Thời gian trễ truyền
• Ngõ vào thay đổi ngõ ra không thay đổi ngay lập
tức
• Các phần tử cơ bản của verilog có thời gian trễ
là 0
• Các vi mạch thực tế được sản xuất dựa trên các
i
thư viện chuẩn được định nghĩa trước
• Người thiết kế chỉ quan tâm đến tính đúng đắn
của mạch
• Sử dụng các công cụ tổng hợp để hiện thực các
thiết kế thỏa mãn các ràng buộc thời gian
• ‘timescale
(cid:131) Chỉ thị biên dịch (cid:131) Chỉ ra đơn vị thời gian và độ chính xác thời gian trễ (cid:131) Phải được khai báo trước các module
8 0 0 2 g n i r e e n g n E r e t u p m o C
37 Advanced Digital Design with the Verilog HDL – chapter 4
Ví dụ `timescale
i
8 0 0 2 g n i r e e n g n E r e t u p m o C
38 Advanced Digital Design with the Verilog HDL – chapter 4
Các loại trễ lan truyền
• Trễ quán tính (inertial delay)
tpd = 2
Δ = 1
t = 3
t = 5
Δ = 4
tpd = 2
Δ = 4
i
t = 5
t = 3
• Trễ truyền (transport delay)
(cid:131) Gây ra do các dây nối (cid:131) 0.033ns/1cm (cid:131) Có thể bỏ qua (cid:131) wire #2 A_long_wire
8 0 0 2 g n i r e e n g n E r e t u p m o C
39 Advanced Digital Design with the Verilog HDL – chapter 4
Nội dung chính
• Giới thiệu về HDLs và verilog • Mô hình cấu trúc cho mạch luận lý tổ hợp • Mô phỏng luận lý, kiểm chứng thiết kế và
phương pháp luận kiểm tra
i
• Thời gian trễ truyền lan • Mô hình bảng sự thật cho mạch luận lý
tổ hợp và tuần tự với Verilog
8 0 0 2 g n i r e e n g n E r e t u p m o C
40 Advanced Digital Design with the Verilog HDL – chapter 4
Bảng sự thật trong Verilog
• table
• Ngõ ra phải có kiểu vô hướng (scalar)
• Dùng kí hiệu ‘?’ thay cho 0, 1, x
• Thứ tự các cột trong
i
thứ tự trong khai báo input của module
• Mạch tổ hợp
(cid:131)
• Mạch tuần tự
(cid:131)
8 0 0 2 g n i r e e n g n E r e t u p m o C
41 Advanced Digital Design with the Verilog HDL – chapter 4