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

• # (cid:131) Điều khiển trễ truyền (cid:131) Các phát biểu phía sau phải đợ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 tương ứng với

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) :: (cid:131) Ngõ ra phải được khai báo kiểu thanh ghi (cid:131) Dùng kí hiệu ‘-’ biểu diễn ngõ ra không thay đổi

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