gioi thieu verilog

21
2008 dce Thiếtkế mch svi HDL Chương 4: Thiếtkế lun lý vi Verilog Computer Engineering 2008 2 Advanced Digital Design with the Verilog HDL – chapter 4 Ni dung chính • Gii thiuvHDLs và verilog • Mô hình cu trúc cho mch lun lý thp • Mô phng lun lý, kim chng thiếtkế phương pháp lun kim tra • Thi gian trtruyn lan • Mô hình bng stht cho mch lun lý thp và tuntvi Verilog

Upload: tran-khanh-hoa

Post on 30-Oct-2014

67 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: 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

Page 2: Gioi Thieu 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

Page 3: Gioi Thieu Verilog

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: + - * / % > >= < <= >> <<

Page 4: Gioi Thieu Verilog

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

Page 5: Gioi Thieu Verilog

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

Page 6: Gioi Thieu 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

Page 7: Gioi Thieu Verilog

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

Page 8: Gioi Thieu Verilog

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

Page 9: Gioi Thieu Verilog

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

Page 10: Gioi Thieu Verilog

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)

Page 11: Gioi Thieu Verilog

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

Page 12: Gioi Thieu Verilog

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

Page 13: Gioi Thieu Verilog

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

Page 14: Gioi Thieu Verilog

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

Page 15: Gioi Thieu 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ế

Page 16: Gioi Thieu Verilog

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

Page 17: Gioi Thieu Verilog

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ụ

Page 18: Gioi Thieu Verilog

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

Page 19: Gioi Thieu 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

Page 20: Gioi Thieu Verilog

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

Page 21: Gioi Thieu 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