dce

2008

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

Chương 6 Tổng hợp mạch luận lý tổ hợp và tuần tự

Tóm tắt các chương trước

• Các bước thiết kế ASIC • Các khái niệm cơ bản, sử dụng bìa

Karnaugh để thiết kế bằng tay

• Dùng Verilog-HDL để thiết kế mạch số

i

bằng mô hình cấu trúc và mô hình hành vi

Dùng những mô hình Verilog khả tổng

hợp là cốt lỗi của phương pháp thiết kế tự động

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

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

Nội dung chính

1. Giới thiệu về quá trình tổng hợp (synthesis) 2. Tổng hợp mạch luận lý tổ hợp 3. Tổng hợp mạch luận lý tuần tự 4. Tổng hợp máy trạng thái tường minh (Explicit State

Machine)

i

5. Mạch luận lý đồng bộ 6. Mã hóa trạng thái (State Encoding) 7. Tổng hợp máy trạng thái ẩn (Implicit State Machine),

thanh ghi và bộ đếm 8. Tổng hợp các tín hiệu 9. Tiên đoán kết quả tổng hợp 10. Tổng hợp các vòng lặp 11. Các bẫy thiết kế cần tránh

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

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

Nội dung chính

1. Giới thiệu về quá trình tổng hợp (synthesis) 2. Tổng hợp mạch luận lý tổ hợp 3. Tổng hợp mạch luận lý tuần tự 4. Tổng hợp máy trạng thái tường minh (Explicit State

Machine)

i

5. Mạch luận lý đồng bộ 6. Mã hóa trạng thái (State Encoding) 7. Tổng hợp máy trạng thái ẩn (Implicit State Machine),

thanh ghi và bộ đếm 8. Tổng hợp các tín hiệu 9. Tiên đoán kết quả tổng hợp 10. Tổng hợp các vòng lặp 11. Các bẫy thiết kế cần tránh

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

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

9 Các mức trừu tượng

• Architectural

 Quan hệ vào ra

• Logical

 Tập hợp các biến và các biểu thức boolean

i

• Physical

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

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

9 Góc nhìn

• Behavioral Description  Architectural: Algorithm  Logical: ASM

• Structural Description

i

 Architectural: datapath elements (register,

memory, adders,…), STG, ASM

 Logical: Schematic of gates

• Physical Description

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

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

Giới thiệu về tổng hợp

i

1

Mô tả hành vi

Mô tả cấu trúc

Giải thuật

Bộ xử lý, bộ nhớ

Thanh ghi, ALU

Dòng dữ liệu/RTL

Netlist

Đại số boole

Hình dạng Cell

Layout

Mô tả vật lý

2 3

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

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

Tổng hợp luận lý (Logic synthesis)

• Sinh ra một mô tả cấu trúc từ mô tả luận lý • Tối ưu netlist và ánh xạ thành các mạch tương đương dùng các tài

nguyên vật lý theo một công nghệ nào đó

Thư viện công nghệ

Đặc tả Verilog

i

Bộ dịch

Bộ tối ưu

Bộ ánh xạ

Hàm luận lý hai mức

Công nghệ hiện thực

Hàm luận lý nhiều mức tối ưu

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

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

Bộ dịch (translation engine)

• Đọc và chuyển dạng biểu diễn Verilog  Biểu thức Boolean cho các mạch kết hợp  Các dạng biểu diễn khác cho bộ nhớ và tín

hiệu đồng bộ

i

• Tạo ra các biểu thức POS

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

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

Bộ tối ưu (optimization engine)

• Quá trình tối ưu dựa trên quá trình tìm

kiếm lặp lại

• Theo sau tối ưu ogi là quá trình tối ưu hiệu

suất (performance optimization)

i

• Tối ưu đồng thời một tập hợp biểu thức

boolean  Loại bỏ dư thừa  Xem xét các giá trị don’t care  Dùng chung các mạch nhỏ hơn

• Expresso, misll…

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

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

Những sự biến đổi trong tổng hợp logic

i

• Phân rã (decomposition) • Gom nhóm (factoring) • Thay thế (substitution) • Loại bỏ (elimination)

Có thể có nhiều biểu thức Boolean tương

đương cùng biểu diễn quan hệ giữa những ngõ vào và những ngõ ra (MIMO)

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

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

Phân rã - decomposition

• Biến đổi một mạch bằng cách biểu diễn một biểu thức

boolean thành các term (các node trung gian)

F = abc + abd + a’b’c’ + b’c’d’

F = XY + X’Y’ X = ab Y = c + d

i

Node trung gian

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

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

Rút trích - extraction • Rút trích tập hợp các hàm giống nhau thành node trung

gian

F = (a + b)cd + e G = (a + b)e’ H = cde

F = (a + b)cd + e G = (a + b)e’ H = cde X = a + b Y = cd

i

 

+ +

+

+ +

 

+

 

 

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

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

Factoring • Tìm những biểu thức dùng chung trong các hàm

boolean

F = ac + ad + bc +bd +e

F = (a + b)(c + d) + e

i

+

+

+

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

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

Thay thế - substitution • Thay thế những ngõ nhập những term bằng những biểu

thức boolean khác

G = a + b F = G + c

G = a + b F = a + b + c

i

+

+

+

+

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

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

Loại bỏ - elimination • Loại bỏ node trung gian và làm giảm cấu trúc mạch –

giảm số mức của mạch

F = ac + ad + ac’d

F = Ga + G’a G = c + d

i

+

+

+

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

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

Tổng hợp RTL

Biểu thức boolean tổng hợp được

Phát biểu mức RTL

i

• Giả sử có sẵn một tập hợp tài nguyên phần

cứng đã được định thời và cấp phát

• Đặc tả RTL

 Máy trạng thái hữu hạn  Toán tử Verilog và phép gán đồng thời (nonblocking)

• Tối ưu mã hóa trạng thái của máy trạng thái • Tối ưu các biểu thức luận lý tổ hợp • Ánh xạ kết quả vào công nghệ đích

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

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

Tổng hợp mức cao

• Tổng hợp hành vi, tổng hợp cấu trúc • Tìm ra kiến trúc để hiện thực một giải

thuật

i

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

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

Nội dung chính

1. Giới thiệu về quá trình tổng hợp (synthesis) 2. Tổng hợp mạch luận lý tổ hợp 3. Tổng hợp mạch luận lý tuần tự 4. Tổng hợp máy trạng thái tường minh (Explicit State

Machine)

i

5. Mạch luận lý đồng bộ 6. Mã hóa trạng thái (State Encoding) 7. Tổng hợp máy trạng thái ẩn (Implicit State Machine),

thanh ghi và bộ đếm 8. Tổng hợp các tín hiệu 9. Tiên đoán kết quả tổng hợp 10. Tổng hợp các vòng lặp 11. Các bẫy thiết kế cần tránh

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

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

Tổng hợp mạch luận lý tổ hợp

• Netlist các cấu trúc cơ

bản (primitives)

• Phát biểu gán liên tục • Hành vi vòng nhạy mức

(level-sensitive)

i

Những cách biểu diễn mạch tổ hợp khác không được hỗ trợ bởi công cụ tổng hợp

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

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

Tổng hợp Netlist các cấu trúc cơ bản

i

• Loại bỏ những dư thừa • Bảo đảm mạch nhỏ nhất

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

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

Tổng hợp phát biểu gán liên tục

i

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

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

Tổng hợp hành vi vòng nhạy mức

i

• Hành vi vòng được tổng hợp thành mạch tổ hợp nếu với một giá trị

ngõ vào có thể thì mạch sẽ gán giá trị cho tất cả ngõ xuất

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

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

Tổng hợp mạch luận lý tổ hợp

• Mô hình Verilog khả tổng hợp của mạch tổ

i

hợp  Mô tả chức năng của mạch  Độc lập kỹ thuật  Không có vòng hồi tiếp  Không chứa những phát biểu

• Case không hoàn chỉnh • Điều kiện (if) • Timing

• Thêm mạch logic trên tín hiệu điều khiển

nếu có nhiều tín hiệu điểu khiển

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

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

Ví dụ

i

multiplexer

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

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

Tổng hợp các cấu trúc ưu tiên

• Phát biểu case

 Phần tử đầu tiên có độ ưu tiên cao hơn  Các phần tử loại trừ nhau có độ ưu tiên

ngang nhau  tổng hợp thành bộ phân kênh

i

• Phát biểu if

 Nhánh rẻ đầu tiên có độ ưu tiên cao hơn  Nếu các nhánh loại trừ nhau thì tổng hợp

thành các bộ phân kênh

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

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

Ví dụ - tổng hợp cấu trúc ưu tiên

i

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

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

Don’t care

• Mô phỏng trước và sau tổng hợp cho kết

i

quả giống nhau nếu default trong các phát biểu case, if, ?: không gán giá trị x hay z • casex và casez được bộ tổng hợp xem như case với các giá trị x và z là don’t care

• Phát biểu gán liên tục có giá trị z sẽ được

tổng hợp thành mạch 3 trạng thái

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

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

Ví dụ - bộ ALU đơn giản

Alu_with_z1

i

Alu_with_z2

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

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

Ví dụ - tổng hợp bộ ALU đơn giản

Alu_with_z1

i

Phát biểu default là don’t care giúp mạch đơn giản hơn

Alu_with_z2

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

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

Sử dụng các phần tử ASIC có sẵn

i

Sử dụng thư viện ASIC có sẵn hoặc tạo ra mạch mới

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

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

Chia sẽ tài nguyên

Phân kênh ngõ vào và chia sẽ bộ cộng hiệu quả hơn là sử dụng 2 bộ cộng và phân kênh ngõ ra

i

 Gom nhóm các toán tử số học trong một hành vi vòng

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

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

Nội dung chính

1. Giới thiệu về quá trình tổng hợp (synthesis) 2. Tổng hợp mạch luận lý tổ hợp 3. Tổng hợp mạch luận lý tuần tự 4. Tổng hợp máy trạng thái tường minh (Explicit State

Machine)

i

5. Mạch luận lý đồng bộ 6. Mã hóa trạng thái (State Encoding) 7. Tổng hợp máy trạng thái ẩn (Implicit State Machine),

thanh ghi và bộ đếm 8. Tổng hợp các tín hiệu 9. Tiên đoán kết quả tổng hợp 10. Tổng hợp các vòng lặp 11. Các bẫy thiết kế cần tránh

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

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

Tổng hợp mạch tuần tự với Latch

• Latch được tổng hợp theo 2 cách

 Mong muốn  Không mong muốn

• Mạch sau tổng hợp không có latch

i

 Netlist các thành phần cơ bản không hồi tiếp  Tập hợp các phát biểu liên tục không hồi tiếp

• Phát biểu gán liên tục sử dụng toán tử

điều kiện và có hồi tiếp sẽ tổng hợp thành latch

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

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

Latch không mong muốn trong hành vi vòng (1)

Tổng hợp không tạo ra latch

i

Không ảnh hưởng bởi x[0]

Tổng hợp tạo ra latch

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

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

Latch không mong muốn trong hành vi vòng (2)

i

• Không tạo ra latch trong mạch tổng hợp được

 Tất cả tín hiệu ngõ vào xuất hiện trong biểu thức điều

khiển hành vi vòng

 Vế phải của phép gán là các tín hiệu ngõ nhập  Tín hiệu xuất hiện trong vế trái phép gán không xuất

hiện trong vế phải

 Ngõ ra bao gồm tất cả các trường hợp có thể có của

ngõ vào

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

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

Latch không mong muốn trong case và if

i

Tổng hợp dùng thư viện ASIC

không dùng thư viện

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

Phát biểu case/if không đủ các trạng thái  tạo ra latch

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

Latch xác định trước • Sinh ra latch nếu biến chỉ được gán giá trị trong một dòng hoạt động nào đó (phát biểu if/case không hoàn chỉnh)

• Tín hiệu điều khiển latch làm cho latch giữ

nguyên giá trị ở các nhánh không gán giá trị cho biến

i

• Trong các phát biểu if/case có sự hồi tiếp sẽ

sinh ra bộ mux

• Trong hành vi vòng nhạy cạnh, phát biểu if/case

không hoàn chỉnh sẽ sinh ra flip-flop

• Hồi tiếp trong phát biểu ?:

 Sinh ra mux trong phát biểu gán liên tục  Sinh ra flip-flop trong hành vi vòng nhạy cạnh  Sinh ra latch trong hành vi vòng nhạy mức

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

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

Ví dụ - sinh ra mux và latch

i

Phát biểu if không đầy đủ

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

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

Tổng hợp mạch luận lý tuần tự

• Phát biểu case/if không hoàn chỉnh sẽ

sinh ra latch

• Phát biểu case/if hoàn chỉnh có hồi tiếp sẽ

sinh ra mux

i

• Cả hai có thể cho kết quả mô phỏng giống nhau nhưng hiện thực phần cứng khác nhau  Kích thước  Tốc độ

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

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

Tổng hợp thiết bị ba trạng thái

i

assign Bus = (bus_enable)?ckt_to_bus:32’bz

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

assign Bus = (send_data)?ckt_to_bus:32’bz assign data_from_bus = (rev_data)?Bus:32’bz 41

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

Tổng hợp mạch tuần tự với Flip-Flop

• FFs chỉ được sinh ra khi tổng hợp hành vi

vòng nhạy cạnh  Khi nào sinh ra FFs?  Công cụ tổng hợp phân biệt tín hiệu đồng bộ

i

xung nhịp (clock) bằng cách nào?

 Bảo đảm các FFs hoạt động đồng thời?

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

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

Tổng hợp thành FFs

• Biến kiểu register trong hành vi vòng nhạy

cạnh  Được tham khảo ngoài hành vi vòng  Được tham khảo trong hành vi vòng trước khi

i

được gán giá trị

 Có một hay nhiều trường hợp trong hành vi

vòng biến không được gán giá trị

Cần FFs để lưu trữ giá trị

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

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

Ví dụ - tham khảo trước khi gán

i

Tham khảo giá trị trước khi gán  Sinh ra FFs

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

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

Ví dụ - tham khảo ngoài hành vi vòng

i

Empty circuit

Tham khảo ngoài hành vi vòng

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

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

Phân biệt tín hiệu điều khiển và clock

• Biểu thức điều khiển sự kiện (event-control) nhạy cạnh chỉ có 1 tín hiệu  clock

Clock

Control

i

• Biểu thức điều khiển sự kiện nhạy cạnh có nhiều hơn 1 tín hiệu  phải có phát biểu if trong thân hành vòng  Tín hiệu xuất hiện trong

biểu thức điều kiện của if là tín hiệu điều khiển

 Tín hiệu không xuất hiện trong biểu thức điều kiện của if là clock

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

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

Nội dung chính

1. Giới thiệu về quá trình tổng hợp (synthesis) 2. Tổng hợp mạch luận lý tổ hợp 3. Tổng hợp mạch luận lý tuần tự 4. Tổng hợp máy trạng thái tường minh (Explicit

i

State Machine) 5. Mạch luận lý đồng bộ 6. Mã hóa trạng thái (State Encoding) 7. Tổng hợp máy trạng thái ẩn (Implicit State Machine),

thanh ghi và bộ đếm 8. Tổng hợp các tín hiệu 9. Tiên đoán kết quả tổng hợp 10. Tổng hợp các vòng lặp 11. Các bẫy thiết kế cần tránh

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

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

Máy trạng thái tường minh

• Phát biểu các thanh ghi trạng thái tường

minh

• Mạch luận lý điều khiển trạng thái • Verilog

i

 Hành vi nhạy cạnh: thay đổi trạng thái  Hành vi nhạy mức: mô tả trạng thái tiếp theo

và giá trị ngõ ra

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

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

Tổng hợp BCD-to-Excess-3 (1)

i

• Hành vi nhạy cạnh  Thay đổi trạng thái  Dùng non-blocking assignment

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

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

Tổng hợp BCD-to-Excess-3 (2)

i

• Hành vi nhạy mức

 mô tả trạng thái tiếp theo và giá trị ngõ ra  Dùng blocking assignment

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

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

BCD-to-Excess3_b

Phát biểu case không đủ tất cả các trường hợp

i

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

Mạch tổng hợp bằng Synflify 9.0.2

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

BCD-to-Excess3_c

• Phát biểu default trong case làm cho mạch

không có latch

i

Mạch tổng hợp bằng Synflify 9.0.2

Tham khảo mạch tổng hợp bằng Synopsys trang 279 [1]

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

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

Các ràng buộc

• Thanh ghi trạng thái phải được gán toàn bộ (không gán bit hay gán từng phần)

• Toàn bộ thanh ghi trạng thái phải có giá trị • Tín hiệu điều khiển bất đồng bộ phải là vô

i

hướng (scalar)

• Giá trị gán cho thanh ghi trạng thái phải là

hằng số hoặc biến có giá trị hằng

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

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

Tổng hợp NRZ-to Manchester Line Code (1)

Mealy-Type

i

Moore-Type

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

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

Tổng hợp NRZ-to Manchester Line Code (2)

Mealy-Type

i

Moore Type

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

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

Nội dung chính

1. Giới thiệu về quá trình tổng hợp (synthesis) 2. Tổng hợp mạch luận lý tổ hợp 3. Tổng hợp mạch luận lý tuần tự 4. Tổng hợp máy trạng thái tường minh (Explicit State

Machine)

i

5. Mạch luận lý đồng bộ 6. Mã hóa trạng thái (State Encoding) 7. Tổng hợp máy trạng thái ẩn (Implicit State Machine),

thanh ghi và bộ đếm 8. Tổng hợp các tín hiệu 9. Tiên đoán kết quả tổng hợp 10. Tổng hợp các vòng lặp 11. Các bẫy thiết kế cần tránh

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

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

Mạch luận lý đồng bộ

• Biến được gán giá trị đồng bộ với xung

clock được gọi là registered

• Tín hiệu registered được cập nhật khi khi

i

có tín hiệu tích cực của xung clock, ngược lại giữ nguyên giá trị

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

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

Ví dụ

i

FFs đồng bộ tín hiệu ngõ ra

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

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

Đồng bộ ngõ ra máy trạng thái (1)

• Ngõ ra tương ứng với trạng thái ở chu kỳ trước đó

i

Mealy Type

Moore Type

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

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

Đồng bộ ngõ ra máy trạng thái (2)

• Ngõ ra tương ứng với trạng thái ở chu kỳ hiện tại

i

Mealy Type

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

Moore Type 60

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

Nội dung chính

1. Giới thiệu về quá trình tổng hợp (synthesis) 2. Tổng hợp mạch luận lý tổ hợp 3. Tổng hợp mạch luận lý tuần tự 4. Tổng hợp máy trạng thái tường minh (Explicit State

Machine)

i

5. Mạch luận lý đồng bộ 6. Mã hóa trạng thái (State Encoding) 7. Tổng hợp máy trạng thái ẩn (Implicit State Machine),

thanh ghi và bộ đếm 8. Tổng hợp các tín hiệu 9. Tiên đoán kết quả tổng hợp 10. Tổng hợp các vòng lặp 11. Các bẫy thiết kế cần tránh

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

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

Mã hóa trạng thái

• Quyết định số FFs để lưu trữ trạng thái và độ phức tạp mạch luận lý mạch tính trạng thái và ngõ ra

• Heuristic mã hóa trạng thái bằng tay

i

 Nếu hai trạng thái có cùng trạng thái kế tiếp dưới cùng một tín hiệu ngõ vào, mã hóa thành hai trạng thái luận lý kế cận

 Mã hóa trạng thái kế tiếp là kế cận luận lý của

trạng thái hiện tại

 Mã hóa kế cận luận lý cho các trạng thái có

cùng ngõ ra dưới một ngõ vào

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

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

Nội dung chính

1. Giới thiệu về quá trình tổng hợp (synthesis) 2. Tổng hợp mạch luận lý tổ hợp 3. Tổng hợp mạch luận lý tuần tự 4. Tổng hợp máy trạng thái tường minh (Explicit State

Machine)

i

5. Mạch luận lý đồng bộ 6. Mã hóa trạng thái (State Encoding) 7. Tổng hợp máy trạng thái ẩn (Implicit State

Machine), thanh ghi và bộ đếm

8. Tổng hợp các tín hiệu 9. Tiên đoán kết quả tổng hợp 10. Tổng hợp các vòng lặp 11. Các bẫy thiết kế cần tránh

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

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

Máy trạng thái ẩn

• Có một hoặc biểu thức điều khiển được đồng bộ bởi clock trong một hành

vi

• Các biểu thức điều khiển được đồng bộ cùng xung clock và cùng cạnh

(posedge/negedge)

• Không có thanh ghi chứa trạng thái • Trạng thái được định nghĩa ngầm bởi hoạt động trong một chu kỳ (always) • Mỗi trạng thái chỉ có thể được tiếp cận từ một trạng thái khác

i

always @ (posedge clk) begin

Chu kỳ 1

reg_a <= reg_b; reg_c <= reg_d; @ (posedge clk) begin

reg_g <= reg_f; reg_m <= reg_r;

end

Chu kỳ 2

end

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

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

Tổng hợp bộ đếm

• Bất kỳ máy tuần tự nào với một luồng hoạt động đồng nhất trong mỗi chu trình là một máy trạng thái ẩn một chu trình

• Công cụ tổng hợp dễ dàng tổng hợp các bộ đếm, thanh

ghi dịch dạng máy trạng thái ẩn một chu trình

i

4-bit ripple counter

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

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

Tổng hợp 4-bit ripple counter (1)

Biến trong biểu thức điều khiển phải là biến đơn giản (không dùng phép toán chọn bit)

i

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

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

Tổng hợp 4-bit ripple counter (2)

i

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

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

Tổng hợp thanh ghi

• Các phần tử lưu trữ có thể được tổng hợp thành các FFs hay các

Latch tùy theo sơ đồ định thời

• Dùng thanh ghi (register) để chỉ cấu trúc bộ nhớ cấu thành từ D FFs

với clock chung

i

Shifter1 Registered output

Shifter1 Unregistered output

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

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

Shifter_1 vs. Shifter_2

i

Registered output

Unregistered output

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

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

Resets

• Các module tuần tự phải có tín hiệu reset

để thiết lập giá trị ban đầu

• Phát biểu đầu tiên trong hành vi phải là

i

phát biểu điều kiện  Kết hợp với tín hiệu reset  Kết thúc sự thực thi khi tín hiệu reset tích cực

• Reset bất đồng bộ có thể gây ra glitch

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

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

Ví dụ nhận dạng chuỗi (sequence recognizer)

• Ngõ ra là 1 khi ngõ vào giống nhau 2 chu kỳ liên tiếp

i

Các thanh ghi dịch (last_bit, this_bit) giữ nguyên giá trị khi reset

Các thanh ghi dịch (last_bit, this_bit) không giữ giá trị khi reset

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

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

Tổng hợp mạch nhận dạng chuỗi (1)

i

dffrmqb_a RB = 0: Reset SL = 0: Q = D0 SL = 1: Q= D1

dffrgpqb_a RB = 0: Reset G = 0: Q = Q G = 1: Q = D

last_bit, this_bit giữ giá trị khi reset

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

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

Tổng hợp mạch nhận dạng chuỗi (2)

• Khi các thanh ghi giữ giá trị khi reset cần thêm mạch

logic để hồi tiếp ngõ ra của thanh ghi về ngõ vào để giữ giá trị

i

Nên xóa giá trị thanh ghi khi reset

last_bit, this_bit không giữ giá trị khi reset

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

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

Nội dung chính

1. Giới thiệu về quá trình tổng hợp (synthesis) 2. Tổng hợp mạch luận lý tổ hợp 3. Tổng hợp mạch luận lý tuần tự 4. Tổng hợp máy trạng thái tường minh (Explicit State

Machine)

i

5. Mạch luận lý đồng bộ 6. Mã hóa trạng thái (State Encoding) 7. Tổng hợp máy trạng thái ẩn (Implicit State Machine),

thanh ghi và bộ đếm 8. Tổng hợp các tín hiệu 9. Tiên đoán kết quả tổng hợp 10. Tổng hợp các vòng lặp 11. Các bẫy thiết kế cần tránh

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

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

Gated clocks và clock enable

i

• Gated clock có thể gây lệch xung • Sử dụng gated clock để giảm thiêu hao

năng lượng

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

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

Nội dung chính

1. Giới thiệu về quá trình tổng hợp (synthesis) 2. Tổng hợp mạch luận lý tổ hợp 3. Tổng hợp mạch luận lý tuần tự 4. Tổng hợp máy trạng thái tường minh (Explicit State

Machine)

i

5. Mạch luận lý đồng bộ 6. Mã hóa trạng thái (State Encoding) 7. Tổng hợp máy trạng thái ẩn (Implicit State Machine),

thanh ghi và bộ đếm 8. Tổng hợp các tín hiệu 9. Tiên đoán kết quả tổng hợp 10. Tổng hợp các vòng lặp 11. Các bẫy thiết kế cần tránh

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

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

Tổng hợp kiểu dữ liệu

• Net giữ nguyên như thiết kế  Internal nets có thể bị lược bỏ

• Integer được lưu trữ như đối tượng 32-

bits

i

• Không nên dùng các giá trị x hay z trong các phép so sánh logic (ví dụ: A == 4’bxx)

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

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

Các toán tử

• Tất cả các toán tử định nghĩa trước đều

được sử dụng

• Các toán tử

 Ánh xạ thành các phần tử tương ứng nếu có

i

thể (+, -, <, > và =)

 Chuyển các toán tử thành tập hợp biểu thức boole nếu không có các phần tử tương ứng • Toán tử điều kiện được chuyển thành mux hay các cổng hiện thực chức năng mux

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

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

Gom nhóm các toán tử

i

Sum2 được tổng hợp nhanh hơn 30%

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

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

Tổng hợp sum1 và sum2

Sum1

i

Sum2

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

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

Thay thế biểu thức (1)

• Công cụ tổng hợp tiến

hành thay thế biểu thức để xác định ngõ ra cho biểu các biểu thức gán thủ tục tuần tự

i

Cả 2 cho cùng kết quả tổng hợp

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

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

Thay thế biểu thức (2)

i

Dataflow structure

Nên sử dụng nonblocking

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

Synthesis circuit

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

Nội dung chính

1. Giới thiệu về quá trình tổng hợp (synthesis) 2. Tổng hợp mạch luận lý tổ hợp 3. Tổng hợp mạch luận lý tuần tự 4. Tổng hợp máy trạng thái tường minh (Explicit State

Machine)

i

5. Mạch luận lý đồng bộ 6. Mã hóa trạng thái (State Encoding) 7. Tổng hợp máy trạng thái ẩn (Implicit State Machine),

thanh ghi và bộ đếm 8. Tổng hợp các tín hiệu 9. Tiên đoán kết quả tổng hợp 10. Tổng hợp các vòng lặp 11. Các bẫy thiết kế cần tránh

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

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

Các loại vòng lặp trong hành vi vòng

• Static/data-independent

 Số lần lặp biết trước khi tổng hợp  Có thể tổng hợp bằng các cấu trúc repeat, for,

i

while, forever • Data-dependent

 Số lần lặp phụ thuộc vào giá biến trong quá

trình thực thi

 Không có timing control thì không thể tổng

hợp

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

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

Các cấu lặp có thể

i

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

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

Vòng lặp tĩnh không có timing control

Số lần lặp biết trước

i

Static repeat tương tự như static for

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

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

Vòng lặp tĩnh có timing control

Internal timing control

i

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

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

Vòng lặp không tĩnh không có timing control

i

Không thể tổng hợp

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

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

Vòng lặp tĩnh có timing control

i

Timing control  Có thể tổng hợp được

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

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

Nội dung chính

1. Giới thiệu về quá trình tổng hợp (synthesis) 2. Tổng hợp mạch luận lý tổ hợp 3. Tổng hợp mạch luận lý tuần tự 4. Tổng hợp máy trạng thái tường minh (Explicit State

Machine)

i

5. Mạch luận lý đồng bộ 6. Mã hóa trạng thái (State Encoding) 7. Tổng hợp máy trạng thái ẩn (Implicit State Machine),

thanh ghi và bộ đếm

8. Tổng hợp các tín hiệu 9. Tiên đoán kết quả tổng hợp 10. Tổng hợp các vòng lặp 11. Các bẫy thiết kế cần tránh

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

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

Các bẫy thiết kế cần tránh

• Tránh tham khảo đến cùng một biến trong

nhiều hơn một hành vi vòng (always)

• Không gán giá trị cho cùng một biến trong

nhiều hành vi vòng

i

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

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