Gioi Thieu Verilog
-
Upload
tran-khanh-hoa -
Category
Documents
-
view
67 -
download
3
Transcript of Gioi Thieu Verilog
2008dce
Thiết kế mạch số với HDL
Chương 4: Thiết kế luận lý vớiVerilog
Com
pute
r Eng
inee
ring
2008
2Advanced 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• 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
Com
pute
r Eng
inee
ring
2008
3Advanced 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• 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
Com
pute
r Eng
inee
ring
2008
4Advanced Digital Design with the Verilog HDL –chapter 4
Giới thiệu HDLs• HDLs (Hardware Description Languages)
Không là một ngôn ngữ lập trìnhTựa CThêm những chức năng mô hình hóa, môphỏng chức năngVerilog vs. VHDL
• Các bước thiết kế bằng HDLMô tả mạch từ khóaBiên dịch để kiểm tra cú pháp (syntax)Mô phỏng để kiểm tra chức năng của mạch
Com
pute
r Eng
inee
ring
2008
5Advanced Digital Design with the Verilog HDL –chapter 4
Đặc tả bằng HDL Cấu trúc/hành vi của mạch
Mô phỏng
Kiểm tra: thiết kế đã đúng yêu cầu chưa?Chức năng: Hành vi I/OMức thanh ghil (Kiến trúcl)Mức luận lý (Cổng)Mức transistor (Điển tử)Timing: Waveform Behavior
Tổng hợp
Ánh xạ đặc tả thành các hiện thực
Phương pháp luận thiết kế HDLC
ompu
ter E
ngin
eerin
g 20
08
6Advanced Digital Design with the Verilog HDL –chapter 4
Mô hình cấu trúc và mô hình hành vi trongHDLs• Cấu trúc (Structural) chỉ ra cấu trúc phần cứng
thật sự của mạchMứ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
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 bitsMứ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ổnghợp được
Không sử dụng: + - * / % > >= < <= >> <<
Com
pute
r Eng
inee
ring
2008
7Advanced 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
Cần một bộ priority encoder• Nếu chương trình song song, có thể có những
trạng thái không xác địnhNhiề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ướcif (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
x = x + 1 có thể cần RẤT NHIỀU phần tử phần cứng
Com
pute
r Eng
inee
ring
2008
8Advanced 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)
Mô phỏng nhưng không tổng hợp• Abel (circa 1983) – được phát triển bởi Data-I/O
Mục tiêu dùng cho các thiết bị luận lý khả lập trìnhKhông tốt cho máy trạng thái
• Verilog (circa 1985) – phát triển bởi Gateway (now Cadence)Đặc tả được đưa ra từ 1985Ban đầu được phát triển cho mô phỏng, tương tự C và PascalHiệu quả và dễ viếtBerkeley phát triển công cụ tổng hợp vào thập niên 80Được IEEE chuẩn hóa
• Verilog standardized (Verilog-1995 standard)• Verilog-2001 standard
• VHDL (circa 1987) - DoD sponsored standardDưa trên VHSIC phát triển bởi DARPATương tự như Ada (Nhấn mạnh vào tái sử dụng và bảo trì)Ngữ nghĩa mô phỏng rõ ràngRất tổ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
Com
pute
r Eng
inee
ring
2008
9Advanced Digital Design with the Verilog HDL –chapter 4
Verilog HDL• Verilog là một ngôn ngữ lớn
Có nhiều tính năng cho tổng hợp và mô phỏng phần cứngCó thể biểu diễn những đặc trưng mức thấp
• TransistorCó thể hoạt động như ngôn ngữ lập trình
• 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ệmcủa Verilog
• Các công cụ tổng hợp chỉ chấp nhận một phần các kháiniệm của Verilog
• Chỉ tập trung nghiên cứu một phầnSử dụng ở một mức thích hợpTập trung trên những cấu trúc tổng hợp đượcTập trung tránh những cấu trúc gây lỗi khi tổng hợp
Com
pute
r Eng
inee
ring
2008
10Advanced 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• 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
Com
pute
r Eng
inee
ring
2008
11Advanced 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(netlist) chứa
Các cổngCác khối chức năng
• Một mô hình hành vi làCác biểu thức Boolean đơn giảnMô hình chuyển đổi mức thanh ghi (Register Transfer Level – RTL)Một giải thuật
Com
pute
r Eng
inee
ring
2008
12Advanced 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)
• SchematicHình biểu diễn cổng logic,Ngõ vào ra,Các đường kết nối giữacác cổng.
• Mô hình cấu trúc HDLDanh sách các cổng cơbản và kết nối giữa chúngCác phát biểu chỉ ra ngõvào-ra
Com
pute
r Eng
inee
ring
2008
13Advanced 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-inputn-output3-states
and bufnand not
or bufif0nor bufif1xor notif0xnor 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õ ra là phần tử đầu tiên trongdanh sách các ngõ vào-ra
Com
pute
r Eng
inee
ring
2008
14Advanced Digital Design with the Verilog HDL –chapter 4
Mô hình cấu trúc trong Verilog• Module
Tên module và đi theosau là danh sách cácngõ vào-ra (port)Danh sách đặc tả loạiport (input/output)Danh sách các dây nối, các biến sử dụng bêntrong module (optional)Danh sách các kết nốigiữa các cổng và cácmodule khác bên trongendmodule
module module_name (port_list);//Declarations:
reg, wire, parameter,input, output, inout,function, task, …
//Statements:Initial statementAlways statementModule instantiationGate instantiationUDP instantiationContinuous assignment
endmodule
Com
pute
r Eng
inee
ring
2008
15Advanced Digital Design with the Verilog HDL –chapter 4
Ví dụ
port modes
Internal wires
Instantiated primitives
Module portsC
ompu
ter E
ngin
eerin
g 20
08 Ví dụ khác
Com
pute
r Eng
inee
ring
2008
17Advanced Digital Design with the Verilog HDL –chapter 4
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ệuMột chiều (Unidirectional)
• input• output
Hai chiều (Bidirectional)• inout
• Kiểu của module port phải được khai báotường minh và không cần theo thứ tự xuấthiện trong port list
Com
pute
r Eng
inee
ring
2008
18Advanced 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ự• Một phát biểu được kế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ểu trên một dòng hay nhiều dòng
Com
pute
r Eng
inee
ring
2008 Quy tắt trong Verilog
Comments
Lower casekey words
identifiers
Com
pute
r Eng
inee
ring
2008
20Advanced Digital Design with the Verilog HDL –chapter 4
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
Dễ thiết kếDễ kiểm tra
• Các module lồng nhau trong Verilog hỗ trợ thiếtkế từ trên xuống
• Module tham khảo đến module khác được gọi làmodule “cha”, module được module khác thamkhảo đến gọi là module “con”
• Độ sâu của các module lồng nhau không giớihạn
• Mỗi module con phải có tên duy nhất trongphạm vi module cha (trừ các primitives)
Com
pute
r Eng
inee
ring
2008
21Advanced Digital Design with the Verilog HDL –chapter 4
Binary full adder
Half_addera
b
sum
c_out
Half_addera
b
sum
c_outa
b
c_in sum
c_out
M1
M2
w1
w2
w3
a ⊕ b ⊕ c_inC
ompu
ter E
ngin
eerin
g 20
08
22Advanced Digital Design with the Verilog HDL –chapter 4
Thiết kế phân cấp và tổ chức mã nguồn
• Top-level module là module ở cấp caonhất
• Module ở mức thấp nhấtChứa các primitivesCá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
Com
pute
r Eng
inee
ring
2008
23Advanced Digital Design with the Verilog HDL –chapter 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
Com
pute
r Eng
inee
ring
2008
24Advanced Digital Design with the Verilog HDL –chapter 4
Cây phân cấp mạch cộng 16-bit ripple carryAdd_rca_16
Add_rca_4 Add_rca_4 Add_rca_4 Add_rca_4M1 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ấp thiết kế mạch cộng 16 bit ripple carry
Com
pute
r Eng
inee
ring
2008
25Advanced Digital Design with the Verilog HDL –chapter 4
Hiện thực mạch cộng 16-bit ripple carry
Com
pute
r Eng
inee
ring
2008
26Advanced 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 bitsum[3:0] vector sum kích thước 4 bit
• 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
vectorsum[1] bit thứ 2 từ phải sang của sumsum[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
Com
pute
r Eng
inee
ring
2008
27Advanced Digital Design with the Verilog HDL –chapter 4
Cấu trúc liên kết (connectivity)• Wire
Thiết lập các liên kết giữa các đối tượng thiết kếGiá trị được quyết định trong quá trình mô phỏng bởicái mà nó được nối vào
• Kiểu wireKhai báo bằng từ khóa wire
• wire y_outCá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ế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));
Com
pute
r Eng
inee
ring
2008
28Advanced 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• 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
Com
pute
r Eng
inee
ring
2008
29Advanced Digital Design with the Verilog HDL –chapter 4
Các giá trị luận lý trong Verilog• Verilog sử dụng 4 giá trị luận lý
1 True0 Falsex Không xác địnhz tổng trở cao
x z
x x x
a
b
y
0 1
a
by
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 za
xb
x
x
x x
x
xx
out5
out6
out2
Com
pute
r Eng
inee
ring
2008
30Advanced 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
Kiểm tra ngẫu nhiên phức tạp và không chính xácCần lập kế hoạch kiểm tra tỉ mỉ
• Kiểm tra mạch lớnKiểm tra tất cả các trường hợp
• Mạch cộng 16 bit cần kiểm tra 223 trường hợp• Kiểm tra phân cấp
half_adderfull_adderAdd_rca_4 cần kiểm tra 29 trường hợpChọn một số trường hợp để kiểm tra kết nối của cácAdd_rca_4 trong Add_rca_16
• Kiểm tra theo chiều ngược so với cây phân cấpthiết kế
Com
pute
r Eng
inee
ring
2008
31Advanced Digital Design with the Verilog HDL –chapter 4
Mô phỏng luận lý• Xây dựng các
testbench đưa vàomạch và hiển thị dạngsóng của kết quả
• Bộ mô phỏngKiểm tra mã nguồnBáo lỗiMô phỏng hành vi củamạch thông qua cáctín hiệu vào trongtestbench
⇒/Không có lỗi cú pháp Mạch thực thi đúng kết quả
StimulusGenerator
unit_under_test(UUT)
ResponseMonitor
Người sử dụng hay phần mềm
Com
pute
r Eng
inee
ring
2008
32Advanced Digital Design with the Verilog HDL –chapter 4
Sinh tín hiệu để kiểm tra• Một hành vi (behavior)
Tập hợp các phát biểu được thi trong quá trình mô phỏng (cácphát biểu thủ tục)Được gán giá trị mô phỏng giống như là được điểu khiển bởiphần cứng
• Initial khai báo hành vi một lượt (single-pass)• begin … end
Chứa danh sách các phát biểu của hành viThờ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ềnCác phát biểu được thực thi từ trên xuống, từ trái sang phải
• # <integer> <statement>Điều khiển trễ truyềnCác phát biểu phía sau phải đợi
Com
pute
r Eng
inee
ring
2008
33Advanced Digital Design with the Verilog HDL –chapter 4
Khuôn mẫu cho testbenchmodule t_module ();
reg …;
wire …;parameter time_out = 100;UUT_name U1 (port_list);initial $monitor();
initial #time_out $finishinitial
begin … end
endmodule
Tên module UUTKhai báo kiểu thanh ghi để chứa
giá trị cho các biến ngõ vàocủa UUT
Khai báo kiểu wire cho các ngõ racủa UUT
Khai báo các tham số
Tín hiệu được xuất ra dạng textKết thúc mô phỏng sau thời gian
time_out
Xây dựng các tín hiệu ngõ vàocho U1
Com
pute
r Eng
inee
ring
2008
34Advanced Digital Design with the Verilog HDL –chapter 4
Ví dụ
Com
pute
r Eng
inee
ring
2008
35Advanced 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ố• <num_of_bit> ‘ <base> <value>
8’b1000_00013’d298716’h24ce3’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
Com
pute
r Eng
inee
ring
2008
36Advanced 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• 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
Com
pute
r Eng
inee
ring
2008
37Advanced 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
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 <time_unit base>/<precision base>
Chỉ thị biên dịchChỉ ra đơn vị thời gian và độ chính xác thời gian trễPhải được khai báo trước các module
Com
pute
r Eng
inee
ring
2008
38Advanced Digital Design with the Verilog HDL –chapter 4
Ví dụ `timescale
Com
pute
r Eng
inee
ring
2008
39Advanced Digital Design with the Verilog HDL –chapter 4
Các loại trễ lan truyền• Trễ quán tính (inertial delay)
• Trễ truyền (transport delay)Gây ra do các dây nối0.033ns/1cmCó thể bỏ quawire #2 A_long_wire
Δ = 4 tpd = 2
t = 3 t = 5
Δ = 4
Δ = 1 tpd = 2
t = 3 t = 5
Com
pute
r Eng
inee
ring
2008
40Advanced 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• 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
Com
pute
r Eng
inee
ring
2008
41Advanced 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 <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ần tự
<input_list>:<state>:<output/next_state>Ngõ ra phải được khai báo kiểu thanh ghiDùng kí hiệu ‘-’ biểu diễn ngõ ra không thay đổi