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