gioi thieu verilog 2

30
2009 d c e Thiết kế mch sdùng HDL Chương 5 Thiết kế lun lý bng mô hình hành vi    C   o   m   p   u    t   e   r    E   n   g    i   n   e   e   r    i   n   g    2    0    0    9 2 Thiết kế Vi mch sdùn g HDL Ni dung chính 1. Mô hình hành vi 2. Mô hình hành vi da trên phương trình boole 3. Mô hình hành vi vòng 4. Mô h ình hành vi cho c ác k hi cơ bn 5. Gii thut lp và lưu đồ máy tr ng thái cho mô hình hành vi

Upload: reno-tk

Post on 07-Apr-2018

221 views

Category:

Documents


0 download

TRANSCRIPT

8/4/2019 gioi thieu verilog 2

http://slidepdf.com/reader/full/gioi-thieu-verilog-2 1/30

2009

dce

Thiết kế mạch số dùng HDL

Chương 5 Thiết kế luận lý bằng

mô hình hành vi

   C  o  m  p  u   t  e  r   E  n  g   i  n  e  e  r   i  n  g   2   0   0   9

2Thiết kế Vi mạch số dùng HDL

Nội dung chính1. Mô hình hành vi

2. Mô hình hành vi dựa trên phương trình

boole

3. Mô hình hành vi vòng

4. Mô hình hành vi cho các khối cơ bản

5. Giải thuật lặp và lưu đồ máy tr ạng thái

cho mô hình hành vi

8/4/2019 gioi thieu verilog 2

http://slidepdf.com/reader/full/gioi-thieu-verilog-2 2/30

   C  o  m  p  u   t  e  r   E  n  g   i  n  e  e  r   i  n  g

   2   0   0   9

3Thiết kế Vi mạch số dùng HDL

Nội dung chính

1. Mô hình hành vi

2. Mô hình hành vi dựa trên phương trình

boole

3. Mô hình hành vi vòng

4. Mô hình hành vi cho các khối cơ bản

5. Giải thuật lặp và lưu đồ máy tr ạng thái

cho mô hình hành vi

   C  o  m  p  u   t  e  r   E  n  g   i  n  e  e  r   i  n  g   2   0   0   9

4Thiết kế Vi mạch số dùng HDL

Mô hình hành vi• Khái quát mô hình hành vi

• Kiểu dữ liệu cho mô hình hành vi

• Các phép toán cho mô hình hành vi

8/4/2019 gioi thieu verilog 2

http://slidepdf.com/reader/full/gioi-thieu-verilog-2 3/30

   C  o  m  p  u   t  e  r   E  n  g   i  n  e  e  r   i  n  g

   2   0   0   9

5Thiết kế Vi mạch số dùng HDL

Mô hình hành vi – đặc điểm

• Thiết kế các vi mạch lớn

• Mô tả chức năng (what) và cách xây dựng

(how) phần cứng

• Không quan tâm đến tr ễ truyền lan (được

quan tâm trong giai đoạn tổng hợp)

• Các bước thiết kế Nhanh chóng đưa ra nguyên mẫu (prototype)

Kiểm tra chức năng

Dùng công cụ tổng hợp tối ưu và ánh xạ công

nghệ

   C  o  m  p  u   t  e  r   E  n  g   i  n  e  e  r   i  n  g   2   0   0   9

6Thiết kế Vi mạch số dùng HDL

Kiểu dữ liệu cho mô hình hành vi• Biến trong Verilog biểu diễn một tín hiệu dạng

nhị phân của mạch

• Tất cả các biến trong Verilog được định ngh ĩ akiểu tr ước khi sử dụng net

register 

• Net hoạt động như dây nối vật lý wire 

• Register hoạt động giống như biến trong cácngôn ngữ lập trình cấp cao reg 

integer 

• Kích thước mặc định của kiểu dữ liệu reg vàwire  là 1 bit

8/4/2019 gioi thieu verilog 2

http://slidepdf.com/reader/full/gioi-thieu-verilog-2 4/30

   C  o  m  p  u   t  e  r   E  n  g   i  n  e  e  r   i  n  g

   2   0   0   9

7Thiết kế Vi mạch số dùng HDL

Các toán tử trong VerilogToán tử Tên Nhóm

[ ] Chọn

() Ngoặc

!

~

Phủ định (đảo)

Phủ định (not)

Logical

Bit-wise

&

|

~&

~|

^

~^ or ^~

Thu giảm AND

Thu giảm OR

Thu giảm NAND

Thu giảm NOR

Thu giảm XOR

Thu giảm XNOR

Thu giảm

+

 –

Dấu dương (một ngôi)

Dấu âm (một ngôi)Số học

{} Nối Nối

{{}} Nhân bản Nhân bản

*

/

%

+

 –

nhân

chia

Chia lấy dư

Cộng (hai ngôi)

Tr ừ (hai ngôi)

Số học

Toán tử Tên Nhóm

<<

>>

Dịch trái

Dịch phảiDịch

>

>=

<

<=

Lớn hơn

Lớn hơn hay bằng

Nhỏ hơn

Nhỏ hơn hay bằng

Quan hệ

==

!=

Bằng (logic)

Không bằng (logic)So sánh

bằng===

!==

Bằng (case)

Không bằng (case)

& bit-wise AND

Bit-wise^

^~ or ~^

bit-wise XOR

bit-wise XNOR

| bit-wise OR

&& logical ANDLogic

|| logical OR

?: Điều kiện Điều kiện

   C  o  m  p  u   t  e  r   E  n  g   i  n  e  e  r   i  n  g   2   0   0   9

8Thiết kế Vi mạch số dùng HDL

Toán tử số học (+, -, *, /, %)

• Bất kỳ bit nào trong toán hạng là x hoặc z thì kết quả là x

• Kích thước kết quả Phép nhân thì kích thước kết quả bằng tổng kích thước 2 toán hạng

Các phép toán khác bằng chiều dài lớn nhất của toán hạng

• Biểu diễn dấu

ƒ

A

B

C

 –

B = 4’b0101 (5)

A = 4’b0010 (2)

C = 4’b1101 (13)integer intA, intB;

intA = -12;

intB = -’d12;

8/4/2019 gioi thieu verilog 2

http://slidepdf.com/reader/full/gioi-thieu-verilog-2 5/30

   C  o  m  p  u   t  e  r   E  n  g   i  n  e  e  r   i  n  g

   2   0   0   9

9Thiết kế Vi mạch số dùng HDL

Toán tử quan hệ (<, >, <=, >=)

ƒ

A

B

True/False (1/0)

ƒ

A = 52

B = 8’hx5

x <

A = 3’b001

B = 3’b011

True (1)

>

A = 3’b001

B = 5’b01011

False (0)

A = 5’b00001

   C  o  m  p  u   t  e  r   E  n  g   i  n  e  e  r   i  n  g   2   0   0   9

10Thiết kế Vi mạch số dùng HDL

Toán tử bằng (==, ===, !=, !===)• Bằng luận lý (== và !=)

Giá tr ị x và z tương tự như toán tử quan hệ Kết quả có thể là x

• Case (=== và !==) So sánh từng bit

x === x, z === z, x !== z

Kết quả luôn xác định (0 hoặc 1)

• Nếu kích thước 2 toán hạng không bằng nhau thì các bit0 sẽ được thêm vào những bit tr ọng số cao của toán

hạng có kích thước nhỏData = 4’b11x0;

Addr = 4’b11x0;

Data == Addr //x

Data === Addr //1

8/4/2019 gioi thieu verilog 2

http://slidepdf.com/reader/full/gioi-thieu-verilog-2 6/30

   C  o  m  p  u   t  e  r   E  n  g   i  n  e  e  r   i  n  g

   2   0   0   9

11Thiết kế Vi mạch số dùng HDL

Toán tử luận lý (||, &&, !)

• Toán hạng là vector khác 0 được xem như 1

• Nếu bất kỳ bit nào của toán hạng có giá tr ị x hay z thìtoán hạng được xem như x

ABus = 4’b0110;

BBus = 4’b0100;

ABus || BBus // 1ABus && BBus // 1!ABus // giống như !BBus

// 0

   C  o  m  p  u   t  e  r   E  n  g   i  n  e  e  r   i  n  g   2   0   0   9

12Thiết kế Vi mạch số dùng HDL

Toán tử Bit-wise (&, |, ~, ^, ^~)

^~ (xnor) 0 1 x z

0 1 0 x x

1 0 1 x x

x x x x x

z x x x x

^ (xor) 0 1 x z

0 0 1 x x

1 1 0 x x

x x x x x

z x x x x

| (or) 0 1 x z

0 0 1 x x

1 1 1 1 1

x x 1 x x

z x 1 x x

& (and) 0 1 x z

0 0 0 0 0

1 0 1 x x

x 0 x x x

z 0 x x x

~ (not) 0 1 x z

1 0 x x

8/4/2019 gioi thieu verilog 2

http://slidepdf.com/reader/full/gioi-thieu-verilog-2 7/30

   C  o  m  p  u   t  e  r   E  n  g   i  n  e  e  r   i  n  g

   2   0   0   9

13Thiết kế Vi mạch số dùng HDL

Toán tử thu giảm.. .... .. f  0/1/x

x .... .. f  x z .... .. f  x

~& (thu giảm nand): ~&bn-1bn-1…b0

0 .... .. & 0 1 11 1 & 1

& (thu giảm and): &bn-1bn-1…b0

.. .... .. & ~ 0/1

| (thu giảm or): |bn-1bn-1…b0

1 .... .. | 1 0 00 0 | 0

^ (thu giảm xor): ^bn-1bn-1…b0

If count(bi = 1) mod 2 == 0,kết quả 0 Ngược lại kết quả 1

~^/^~ (thu giảm xnor): ~^bn-1bn-1…b0

~| (thu giảm nor): ~|bn-1bn-1…b0 .. .... .. | ~ 0/1

   C  o  m  p  u   t  e  r   E  n  g   i  n  e  e  r   i  n  g   2   0   0   9

14Thiết kế Vi mạch số dùng HDL

Toán tử dịch (<<, >>)A << B, A >> B

• Dịch toán hạng bên trái số lần biểu diễn bởi toán hạng

bên phải

Dịch trái

Dịch phải

reg [0:7] Qreg;

Qreg = 4’b0111;

Qreg >> 2 // is 8’b0000_0001

wire [0:3] DecoderOut = 4’d1 << Address[0:1];

b0...

0... 0

b1

b0b1

b2bn-1bn

bn-2bn-1

b0...

b1...

b1

b2b3

b2bn-1bn

bn00

x ....f  z zz

..

z ....f  z zz

..

8/4/2019 gioi thieu verilog 2

http://slidepdf.com/reader/full/gioi-thieu-verilog-2 8/30

   C  o  m  p  u   t  e  r   E  n  g   i  n  e  e  r   i  n  g

   2   0   0   9

15Thiết kế Vi mạch số dùng HDL

Toán tử điều kiện

• Nếu Cond_expr có chứabất kỳ bit nào là x hoặc zthì kết quả là phép toánbit-wise trên Expr1 vàExpr2 như sau 0 ♣ 0 => 0

1 ♣ 1 => 1

Tr ường hợp khác là x

• Toán tử điều kiện có thểđược lồng nhau vô tận

Cond_expr ? Expr1 : Expr2

wire[15:0]bus_a = drive_a ? data : 16’bz;/* drive_a = 1 thì data được gán vào bus_a

drive_a = 0 thì bus_a ở tổng trở caodrive_a = x thì bus_a là x */

Cond_expr?

Expr2

Expr1

yes

no

   C  o  m  p  u   t  e  r   E  n  g   i  n  e  e  r   i  n  g   2   0   0   9

16Thiết kế Vi mạch số dùng HDL

Toán tử kết nối/nhân bản• Kết nối {expr1, expr2,… , exprN}

Những hằng số không biết kích thước không thể thực hiện kết

nối

• Nhân bản {rep_number {expr1, expr2,… , exprN}}

wire [7:0] Dbus;wire [11:0] Abus;

assign Dbus[7:4] = {Dbus[0], Dbus[1], Dbus[2], Dbus[3]};

assign Dbus = {Dbus[3:0], Dbus[7:4]};

{Dbus, 5} // not allowed

Abus = {3{4’b1011}}; // 12’b1011_1011_1011

{3{1’b1}} // 111

{3{Ack}} // {Ack, Ack, Ack}

8/4/2019 gioi thieu verilog 2

http://slidepdf.com/reader/full/gioi-thieu-verilog-2 9/30

   C  o  m  p  u   t  e  r   E  n  g   i  n  e  e  r   i  n  g

   2   0   0   9

17Thiết kế Vi mạch số dùng HDL

Nội dung chính

1. Mô hình hành vi

2. Mô hình hành vi dựa trên phương

trình boole

3. Mô hình hành vi vòng

4. Mô hình hành vi cho các khối cơ bản

5. Giải thuật lặp và lưu đồ máy tr ạng thái

cho mô hình hành vi

   C  o  m  p  u   t  e  r   E  n  g   i  n  e  e  r   i  n  g   2   0   0   9

18Thiết kế Vi mạch số dùng HDL

Mô hình hành vi dựa trên phương trình boole

• Phép gán liên tục

• Thời gian tr ễ truyền lan và phép gán liên

tục

• Latch và mạch tích cực mức trong

Verilog

8/4/2019 gioi thieu verilog 2

http://slidepdf.com/reader/full/gioi-thieu-verilog-2 10/30

   C  o  m  p  u   t  e  r   E  n  g   i  n  e  e  r   i  n  g

   2   0   0   9

19Thiết kế Vi mạch số dùng HDL

Phép gán liên tục• Phép gán liên tục

assign variable = boolean_expression

wire wire_name = boolean_expression

Boolean_expression được tính lại khi bất kỳ tín hiệu nào trong nó thayđổi

• Một module có thể có nhiều phát biểu gán liên tục được thực thiđồng thời

input x_in1, x_in2;

output y_out;

assign y_out = ~(x_in & x_in2);

input x_in1, x_in2;

output y_out;wire y_out = ~(x_in & x_in2);

circuitSchematic

Structuremodel

Truthtable

User-DefinePrimitive

BooleanExpressionl

ContinuousAssignments

Logic description Verilog Description

   C  o  m  p  u   t  e  r   E  n  g   i  n  e  e  r   i  n  g   2   0   0   9

20Thiết kế Vi mạch số dùng HDL

Ví dụ - Mux_2_32

Mux_2_32

select

data0

data1

mux_out

8/4/2019 gioi thieu verilog 2

http://slidepdf.com/reader/full/gioi-thieu-verilog-2 11/30

8/4/2019 gioi thieu verilog 2

http://slidepdf.com/reader/full/gioi-thieu-verilog-2 12/30

   C  o  m  p  u   t  e  r   E  n  g   i  n  e  e  r   i  n  g

   2   0   0   9

23Thiết kế Vi mạch số dùng HDL

Ví dụ - Latch với tín hiệu reset

Mạch phức tạp khó hiện thực bằng hàm boolean

   C  o  m  p  u   t  e  r   E  n  g   i  n  e  e  r   i  n  g   2   0   0   9

24Thiết kế Vi mạch số dùng HDL

Nội dung chính1. Mô hình hành vi

2. Mô hình hành vi dựa trên phương trình

boole

3. Mô hình hành vi vòng

4. Mô hình hành vi cho các khối cơ bản

5. Giải thuật lặp và lưu đồ máy tr ạng thái

cho mô hình hành vi

8/4/2019 gioi thieu verilog 2

http://slidepdf.com/reader/full/gioi-thieu-verilog-2 13/30

   C  o  m  p  u   t  e  r   E  n  g   i  n  e  e  r   i  n  g

   2   0   0   9

25Thiết kế Vi mạch số dùng HDL

Mô hình hành vi vòng

• Khái quát mô hình hành vi vòng

• Mô hình hành vi vòng cho mạch phát hiện

cạnh

• So sánh các loại mô hình hành vi

Mô hình phép gán liên tục

Mô hình dòng dữ liệu

Mô hình dựa trên thuật toán

   C  o  m  p  u   t  e  r   E  n  g   i  n  e  e  r   i  n  g   2   0   0   9

26Thiết kế Vi mạch số dùng HDL

Mô hình hành vi vòng – khái quát• Mô hình hành vi gán liên tục không hiện thực

được mạch kích mức (edge-sensitive)

• Thực thi những phát biểu thủ tục (procedure)

• Mô hình hành vi vòng Các phát biểu được thực thi tuần tự và quay lại khi

thực thi xong phát biểu cuối cùng

Thực thi không điều kiện dưới sự điều khiển của mộtbiểu thức

always @ (<event_expression>)

beginprocedural statements

end

• Sử dụng trong cả kích cạnh (đồng bộ) và kíchmức

8/4/2019 gioi thieu verilog 2

http://slidepdf.com/reader/full/gioi-thieu-verilog-2 14/30

   C  o  m  p  u   t  e  r   E  n  g   i  n  e  e  r   i  n  g

   2   0   0   9

27Thiết kế Vi mạch số dùng HDL

Ví dụ - D Flip-Flop

Non-blocking/concurrent assignment

Cạnh lên xung clock

   C  o  m  p  u   t  e  r   E  n  g   i  n  e  e  r   i  n  g   2   0   0   9

28Thiết kế Vi mạch số dùng HDL

Phát hiện cạnh• Các phát biểu thủ tục trong hành vi vòng sẽ được thực

thi khi sự kiện điều khiển xảy ra

• postedge và negedge dùng phát hiện cạnh lên hayxuống của tín hiệu

8/4/2019 gioi thieu verilog 2

http://slidepdf.com/reader/full/gioi-thieu-verilog-2 15/30

   C  o  m  p  u   t  e  r   E  n  g   i  n  e  e  r   i  n  g

   2   0   0   9

29Thiết kế Vi mạch số dùng HDL

So sánh giữa các loại mô hình hành vi

• Mô hình gán liên tục (Continuous-

Assignment models)

• Dataflow/RTL models

• Mô hình dựa trên thuật toán (Algorithm-

Based models)

   C  o  m  p  u   t  e  r   E  n  g   i  n  e  e  r   i  n  g   2   0   0   9

30Thiết kế Vi mạch số dùng HDL

Mô hình gán liên tục• Mô tả những hành vi nhạy mức (level-sensitive)

• Những biểu thức gán liên tục được thực hiệnđồng thời

8/4/2019 gioi thieu verilog 2

http://slidepdf.com/reader/full/gioi-thieu-verilog-2 16/30

   C  o  m  p  u   t  e  r   E  n  g   i  n  e  e  r   i  n  g

   2   0   0   9

31Thiết kế Vi mạch số dùng HDL

Mô hình Dataflow/RTL (1)

• Mô hình dòng dữ liệu của mạch tổ hợp mô tả

những hoạt động đồng thời trên các tín hiệu• Trong máy tr ạng thái đồng bộ các tính toán

được thực hiện khi có cạnh tích cực của xungclock và được lưu tr ữ vào thanh ghi ở chu kỳtiếp theo

• Mô hình dòng dữ liệu cho máy đồng bộ đượcgọi là mô hình RTL (register transfer level)

• Mô hình RTL chỉ ra kiến trúc các thanh ghiđường dữ liệu và các hoạt động của máy

• Mô hình hành vi của mạch tổ hợp có thể được

mô tả bằng tập hợp các phát biểu gán liên tụchoặc bằng một hành vi vòng

   C  o  m  p  u   t  e  r   E  n  g   i  n  e  e  r   i  n  g   2   0   0   9

32Thiết kế Vi mạch số dùng HDL

Mô hình Dataflow/RTL (2)

Blocked assignment

     t     i    m    e

8/4/2019 gioi thieu verilog 2

http://slidepdf.com/reader/full/gioi-thieu-verilog-2 17/30

   C  o  m  p  u   t  e  r   E  n  g   i  n  e  e  r   i  n  g

   2   0   0   9

33Thiết kế Vi mạch số dùng HDL

Non-blocking vs. Blocking

• Non-blocking

Toán tử <=

Các phát biểu thực thi

đồng thời (song song)

Thứ tự các phát biểu

không ảnh hưởng đến

kết quả cuối cùng

Khi thực hiện hành vi

vòng bộ mô phỏng

tính giá tr ị biểu thức

bên vế phải tr ước khi

gán cho vế trái

• Blocking

Toán tử =

Các phát biểu thực thi

tuần tự

Thứ tự các phát biểu

có thể ảnh hưởng đến

kết quả cuối cùng

Khi thực hiện hành vi

vòng bộ mô phỏng chỉ tính giá tr ị biểu thức

bên phải ngay sau khi

phát biểu tr ước đó

hoán tất

   C  o  m  p  u   t  e  r   E  n  g   i  n  e  e  r   i  n  g   2   0   0   9

34Thiết kế Vi mạch số dùng HDL

Mô hình dựa trên thuật toán• Mức tr ừu tượng cao

hơn mô hình dòngdữ liệu

• Dễ hiểu dễ đọc

• Các lệnh trong mộthành vi vòng đượcthực thi tuần tự

• Không phải tất cảcác giải thuật đềucó thể hiện thựcbằng phần cứng

Synopsys’s Design Compiler 

8/4/2019 gioi thieu verilog 2

http://slidepdf.com/reader/full/gioi-thieu-verilog-2 18/30

   C  o  m  p  u   t  e  r   E  n  g   i  n  e  e  r   i  n  g

   2   0   0   9

35Thiết kế Vi mạch số dùng HDL

Mô phỏng trong mô hình hành vi

• Sự kiện xảy ra ở những tín hiệu nhập hay trong

vế phải kích hoạt bộ mô phỏng tính toán giá tr ịngõ xuất

• Khi hành vi vòng được kích hoạt, bộ mô phỏng

thực thi những phát biểu cho đến

Toán tử điều khiển tr ễ (#)

Toán tử điều khiển sự kiện (@)

Cấu trúc đợi (wait)

Phát biểu cuối cùng của hành vi vòng

• Nếu có nhiều hành vi vòng được kích hoạt cùnglúc thì thứ tự thực thi không xác định được

   C  o  m  p  u   t  e  r   E  n  g   i  n  e  e  r   i  n  g   2   0   0   9

36Thiết kế Vi mạch số dùng HDL

Nội dung chính1. Mô hình hành vi

2. Mô hình hành vi dựa trên phương trình

boole

3. Mô hình hành vi vòng

4. Mô hình hành vi cho các khối cơ bản

5. Giải thuật lặp và lưu đồ máy tr ạng thái

cho mô hình hành vi

8/4/2019 gioi thieu verilog 2

http://slidepdf.com/reader/full/gioi-thieu-verilog-2 19/30

   C  o  m  p  u   t  e  r   E  n  g   i  n  e  e  r   i  n  g

   2   0   0   9

37Thiết kế Vi mạch số dùng HDL

Mô hình hành vi cho các khối cơ bản

• Phân kênh (multiplexer)

• Mã hóa (encoder)

• Giải mã (decoder)

• Thanh ghi dịch hồi tiếp tuyến tính

   C  o  m  p  u   t  e  r   E  n  g   i  n  e  e  r   i  n  g   2   0   0   9

38Thiết kế Vi mạch số dùng HDL

Bộ phân kênh (1)• Cấu trúc case tương tự như switch trong C

• Giá tr ị default nên có trong tất cả các cấu trúc case

Mux_4_32

data_0

data_1

data_2

data_3

select

enable

mux_out

2

32 32

32

32

32

32

8/4/2019 gioi thieu verilog 2

http://slidepdf.com/reader/full/gioi-thieu-verilog-2 20/30

   C  o  m  p  u   t  e  r   E  n  g   i  n  e  e  r   i  n  g

   2   0   0   9

 ©2008, Pham Quoc Cuong 39Thiết kế Vi mạch số dùng HDL

Bộ phân kênh (2)

   C  o  m  p  u   t  e  r   E  n  g   i  n  e  e  r   i  n  g   2   0   0   9

40Thiết kế Vi mạch số dùng HDL

Bộ mã hóa – encoder 

8/4/2019 gioi thieu verilog 2

http://slidepdf.com/reader/full/gioi-thieu-verilog-2 21/30

   C  o  m  p  u   t  e  r   E  n  g   i  n  e  e  r   i  n  g

   2   0   0   9

41Thiết kế Vi mạch số dùng HDL

Mã hóa ưu tiên – priority encoder 

• Cấu trúc casex cho phép tín hiệu trong phép so

sánh

   C  o  m  p  u   t  e  r   E  n  g   i  n  e  e  r   i  n  g   2   0   0   9

42Thiết kế Vi mạch số dùng HDL

Bộ giải mã - decoder 

8/4/2019 gioi thieu verilog 2

http://slidepdf.com/reader/full/gioi-thieu-verilog-2 22/30

   C  o  m  p  u   t  e  r   E  n  g   i  n  e  e  r   i  n  g

   2   0   0   9

43Thiết kế Vi mạch số dùng HDL

Mô hình dòng dữ liệu của thanh ghi dịch hồi

tiếp tuyến tính (1)

• Thanh ghi dịch hồi tiếp tuyến tính (linear-feedback shift

register – LFSR) Hoạt động chuyển dữ liệu dưới sự điều khiển của tín hiệu clock

Sử dụng trong hiện thực mạch nén dữ liệu có CRC

• Các hệ số C1, C2,…, CN quyết định hoạt động của mạch

CN = 1 Nếu CN-j+1 = 1 ngõ nhập tầng thứ j là Y[j-1]⊕Y[N] (j ≥ 2)

Nếu CN-j+1 = 0 ngõ nhập tần thứ j là Y[j-1]

D QR

clk

D QR

clk

D QR

clk

D QR

clk

+ + +

Cn-1 C2 C1

Clock

Reset

Y[1] Y[N-2] Y[N-1] Y[N]

   C  o  m  p  u   t  e  r   E  n  g   i  n  e  e  r   i  n  g   2   0   0   9

44Thiết kế Vi mạch số dùng HDL

Mô hình dòng dữ liệu của thanh ghi dịch hồi

tiếp tuyến tính (2)

8/4/2019 gioi thieu verilog 2

http://slidepdf.com/reader/full/gioi-thieu-verilog-2 23/30

   C  o  m  p  u   t  e  r   E  n  g   i  n  e  e  r   i  n  g

   2   0   0   9

45Thiết kế Vi mạch số dùng HDL

Nội dung chính

1. Mô hình hành vi

2. Mô hình hành vi dựa trên phương trình

boole

3. Mô hình hành vi vòng

4. Mô hình hành vi cho các khối cơ bản

5. Giải thuật lặp và lưu đồ máy tr ạng thái

cho mô hình hành vi

   C  o  m  p  u   t  e  r   E  n  g   i  n  e  e  r   i  n  g   2   0   0   9

46Thiết kế Vi mạch số dùng HDL

Giải thuật lặp và lưu đồ máy tr ạng cho mô

hình hành vi

• Mô hình hóa máy số bằng các giải thuậtlặp

• Máy với các tác vụ đa chu kỳ• Lập tài liệu thiết kế cho Function và Task

• Lưu đồ giải thuật máy tr ạng thái cho môhình hành vi

• Lưu đồ ASMD• Mô hình hành vi cho bộ đếm, thanh ghidịch và tập thanh ghi

8/4/2019 gioi thieu verilog 2

http://slidepdf.com/reader/full/gioi-thieu-verilog-2 24/30

   C  o  m  p  u   t  e  r   E  n  g   i  n  e  e  r   i  n  g

   2   0   0   9

47Thiết kế Vi mạch số dùng HDL

Mô hình hóa máy số bằng các giải thuật lặp

• Cấu trúc lặp for (có thể tổng hợp)for (initial_statement; control_expression; index_statement)

statement_for_expression; 

• Cấu trúc lặp repeatrepeat (num_of_loop)

statement_repeat_expression; 

• Cấu trúc lặp whilewhile (condition_expression)

statement_while_expression; 

• Cấu trúc lặp forever forever statement_forever_expression; 

   C  o  m  p  u   t  e  r   E  n  g   i  n  e  e  r   i  n  g   2   0   0   9

48Thiết kế Vi mạch số dùng HDL

Sở hữu trí tuệ, tái sử dụng và tham số hóa

mô hình• Mô hình có giá tr ị hơn nếu có thể mở r ộng cho

nhiều hơn một ứng dụng Sử dụng tham số cho độ r ộng bus, chiều dài word…

8/4/2019 gioi thieu verilog 2

http://slidepdf.com/reader/full/gioi-thieu-verilog-2 25/30

   C  o  m  p  u   t  e  r   E  n  g   i  n  e  e  r   i  n  g

   2   0   0   9

49Thiết kế Vi mạch số dùng HDL

Sinh xung clock• Xung clock được sử dụng trong các testbench của các

mạch đồng bộ• Sử dụng cấu trúc forever và disable để tạo xung clock

   C  o  m  p  u   t  e  r   E  n  g   i  n  e  e  r   i  n  g   2   0   0   9

50Thiết kế Vi mạch số dùng HDL

Khác nhau giữa forever và always• always

Xây dựng một hành vi

đồng thời

Không thể lồng nhau

Thực thi ngay khi bắt

đầu mô phỏng

• forever 

Là hoạt động tính toán

và được sử dụng

trong một hành vi,

không cần thực hiện

đồng thời với những

hành vi khác

Có thể lồng nhau

Chỉ thực thi khi dònglệnh đạt đến

8/4/2019 gioi thieu verilog 2

http://slidepdf.com/reader/full/gioi-thieu-verilog-2 26/30

   C  o  m  p  u   t  e  r   E  n  g   i  n  e  e  r   i  n  g

   2   0   0   9

51Thiết kế Vi mạch số dùng HDL

Lập tài liệu cho thiết kế task và function

• Một module chỉ hữu dụng cho những

người khác khi nó đúng đắn và được mô

tả rõ ràng

• Task và function là những dạng chương

trình con giúp tăng tính rõ ràng của mã

nguồn

Task tạo ra một cấu trúc phân cấp trong phát

biểu thủ tục trong một hành vi

Function thay thế cho một biểu thức

• Tính trong suốt của chi tiết hiện thực

   C  o  m  p  u   t  e  r   E  n  g   i  n  e  e  r   i  n  g   2   0   0   9

52Thiết kế Vi mạch số dùng HDL

Tasks• Được phát biểu trong

một module

• Chỉ có thể được thamkhảo từ bên trong mộthành vi vòng hay hành vimột lượt (single pass)

• Có thể tham khảo đếnbiến môi tr ường bênngoài

• Có thể gọi đệ quy

• Có thể chứa các phátbiểu: parameter, input,

output, inout, reg,integer, real, time,realtime và event 

• Khi gọi một task cáctham số thực đượctruyền cho task theo thứtự khai báo của các ngõvào ra

8/4/2019 gioi thieu verilog 2

http://slidepdf.com/reader/full/gioi-thieu-verilog-2 27/30

   C  o  m  p  u   t  e  r   E  n  g   i  n  e  e  r   i  n  g

   2   0   0   9

53Thiết kế Vi mạch số dùng HDL

Functions• Được phát biểu bên trong module

• Có thể được tham khảo trong bất kỳ biểu thức có ngh ĩ a – ví dụ trong vếphải của biểu thức gán liên tục

• Được hiện thực bằng các biểu thức và tr ả ra giá tr ị thông qua tên function

• Không có phát biểu output hay inout

• Không được chứa các phát biểu điều khiển sự kiện (@), điều khiển thờigian (#) hay phát biểu wait

• Phải có ít nhất một input và các input được truyền vào theo thứ tự lúc khaibáo

   C  o  m  p  u   t  e  r   E  n  g   i  n  e  e  r   i  n  g   2   0   0   9

54Thiết kế Vi mạch số dùng HDL

Lưu đồ giải thuật máy tr ạng thái cho mô

hình hành vi• Lưu đồ giải thuật máy

tr ạng thái (Algorithmicstate machine – ASM –charts) là sự tr ừu tượnghóa hành vi của máy tuầntự

• Tương tự như dòng dữliệu (flowcharts)

• Tập trung vào hoạt độngcủa máy hơn là nội dungcủa các thành phần lưutr ữ

• ASM block State box

Conditional output box

Decision box

State box Conditional output Desicion

ASM block

8/4/2019 gioi thieu verilog 2

http://slidepdf.com/reader/full/gioi-thieu-verilog-2 28/30

   C  o  m  p  u   t  e  r   E  n  g   i  n  e  e  r   i  n  g

   2   0   0   9

55Thiết kế Vi mạch số dùng HDL

Lưu đồ ASMD

• Kết hợp lưu đồ ASM với đường dữ liệu

P1[7:0] P1[7:0]

P1[7:0] P1[7:0]

Data

8 8

8

S_idle

S_idle

rst

en

S_full

ldS_waitl

ld en

1 11

1

1

   {   P   1 ,

   P   0   }   <  =   {   0 ,   0

   }

   {   P   1 ,

   P   0   }   <  =   {   0 ,   0

   }

   P   1   <  =   D  a   t  a

   P   0   <  =   P   1

P1 <= DataP0 <= P1

P1 <= DataP0 <= P1

R0 <= {P1, P0}

   C  o  m  p  u   t  e  r   E  n  g   i  n  e  e  r   i  n  g   2   0   0   9

56Thiết kế Vi mạch số dùng HDL

Mô hình hành vi cho bộ đếm (1)S_idle

up_downS_decr S_incr  up_down up_down

reset

1

2

0,3

12

1

2

0,3

0,3

Moore style

S_idle

up_downS_decr S_incr  up_down up_down

reset

1

2

0,3

12

1

2

0,3

0,3

count <= count - 1 count <= count + 1

count <= count + 1

count <= count + 1

count <= count - 1

count <= count - 1

Mealy style

8/4/2019 gioi thieu verilog 2

http://slidepdf.com/reader/full/gioi-thieu-verilog-2 29/30

   C  o  m  p  u   t  e  r   E  n  g   i  n  e  e  r   i  n  g

   2   0   0   9

57Thiết kế Vi mạch số dùng HDL

Mô hình hành vi cho bộ đếm (2)

S_running

up_down

reset

count <= 0count <= count + 1

count <= count - 11

2

0,3

Asynchronous reset

S_running

up_down

count <= 0count <= count + 1

count <= count - 1

1

2

0,3

reset

1

Synchronous rest

   C  o  m  p  u   t  e  r   E  n  g   i  n  e  e  r   i  n  g   2   0   0   9

58Thiết kế Vi mạch số dùng HDL

Thanh ghi dịch - shift register 

D QR

clk

D QR

clk

D QR

clk

D QR

clk

Data_in

Reset

Clock

Data_out

8/4/2019 gioi thieu verilog 2

http://slidepdf.com/reader/full/gioi-thieu-verilog-2 30/30

   C  o  m  p  u   t  e  r   E  n  g   i  n  e  e  r   i  n  g

   2   0   0   9

59Thiết kế Vi mạch số dùng HDL

Thanh ghi chuyển dữ liệu song song –

parallel load

D QR

clk

D QR

clk

D QR

clk

D QR

clk

Data_in[3]

Reset

Clock

Data_out[3]

Mux Mux Mux Mux

Load

Data_in[2] Data_in[1] Data_in[0]

D at a_o ut [2 ] D at a_ ou t[ 1] Data_out[0]

   C  o  m  p  u   t  e  r   E  n  g   i  n  e  e  r   i  n  g   2   0   0   9

60Thiết kế Vi mạch số dùng HDL

Tập thanh ghi• Tập thanh ghi bao gồm

một số lượng nhỏ các

thanh ghi hỗ tr ợ đọc ghi

thường được hiện thực

bằng D Flip-Flop

Register file

/

//

/

/

/

clock

write_enable

data_in

write_addr 

read_add1

read_add2

5

5

5

32

data_out1

data_out2

32

32

data_out

32

ALU_zero

opcode