2.BG Thiet Ke VI Mach CMOS VLSI 2020 - Chapter 2

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 66

TRƯỜNG ĐẠI HỌC KỸ THUẬT CÔNG NGHIỆP

KHOA ĐIỆN TỬ
----o0o----

BÀI GIẢNG
THIẾT KẾ VI MẠCH
CMOS VLSI
GV: ThS. Phạm Duy Khánh
BM: Kỹ thuật điện tử
GIỚI THIỆU NỘI DUNG MÔN HỌC

Một số công cụ thiết kế vi mạch tích hợp

07/01/2022 CMOS VLSI Design GV: ThS. Phạm Duy Khánh – BM KTĐT - Khoa Điện tử - TNUT 2
TÀI LIỆU HỌC TẬP
Sách, giáo trình chính:
1. Bài giảng Thiết kế vi mạch CMOS VLSI - Bộ môn Kỹ thuật Điện tử - Khoa Điện tử - Trường Đại học
kỹ thuật công nghiệp Thái Nguyên.
2. Tống Văn On, Thiết kế vi mạch CMOS VLSI (tập 1,2,3), NXB Phương Đông, TP. Hồ Chí Minh, 2007.
3. Neil H.E.Weste, David Money Harris, CMOS VLSI Design: A Circuits and Systems Perspective (4th
Edition), Pearson Education Inc, USA 2011.
4. R.J. Baker, CMOS: Circuit Design, Layout, and Simulation, IEEE Press Series on Microelectronic
Systems. Wiley, 2011.

Sách tham khảo:


5. Phạm Trần Bích Thuận, Giáo trình Công nghệ vi điện tử, Trường ĐH Công nghiệp TP.Hồ Chí Minh,
2009.
6. Nguyễn Đức Chiến, Nguyễn Văn Hiếu, Công nghệ chế tạo mạch vi điện tử, Nhà xuất bản Bách
Khoa – Hà Nội, 2014.
7. Trần Thu Hà, Đậu Trọng Hiển, Công nghệ thiết kế IC Layout với L-Edit, NXB Đại học quốc gia TP.
Hồ Chí Minh, 2012.
8. Neil H.E.Weste, Kamran Eshraghian, Priciples of CMOS VLSI Design – A systems Perspective,
Addison – Wesley Publishing Company, 1988.
07/01/2022 CMOS VLSI Design GV: ThS. Phạm Duy Khánh – BM KTĐT - Khoa Điện tử - TNUT 3
TÀI LIỆU HỌC TẬP
Sách tham khảo:
9. Kiran Kumar V. G., Nagesh H. R., Fundamentals of CMOS VLSI Design, Pearson Education India.
10. Stephen A.Campbell, The Science and Engineering of Microelectronic Fabrication, 2nd Edition,
Oxford University Press, 2001.
11. H. Allen, P.E. Allen, and D.R. Holberg, CMOS Analog Circuit Design, Oxford University Press,
Incorporated, 1995.
12. S.M. Sze, Semiconductor Devices, Physics and Technology,Willey,1985.
13. T.E. Price, Introduction to VLSI Technology, Prentice Hall, 1994.
14. S.M. Sze, Ed., VLSI Technology, McGraw-Hill, 1988.
15. S.M. Sze, Semiconductor Devices, Physics and Technology, Willey, 2002.
16. S.A. Campbell, The Science and Engineering of Microelectronic Fabrication, Oxford Univ. Press,
2001.
17. W. Zuhlehner and D. Huber, “Czochralski Grown Silicon”, Crystals 8, Springer-Verlag, 1982.
18. W.R. Runyan and K.E. Bean, Semiconductor Integrated Circuit Processing Technology, Addition
Wesley, 1990.

07/01/2022 CMOS VLSI Design GV: ThS. Phạm Duy Khánh – BM KTĐT - Khoa Điện tử - TNUT 4
TÀI LIỆU HỌC TẬP
Sách tham khảo:
19. E.H. Nicollian and J.R. Brews, Metal Oxide Semiconductor Physics and Technology, Wiley, 1982.
20. S.K. Ghandi, VLSI Fabrication Principles, Wiley, 1983.
21. W.C. Till and J.T. Luxon, Integrated Circuit: Materials, Devices and Fabrication, Princeton-Hall,
1982.
22. M. Armacost et al., “Plasma-Etching Processes for ULSI Semiconductor Circuits”, IBM J. Res. Dev.,
43,39,1999.
23. A.S. Grove, Physics and Technology of Semiconductor Devices, Wiley, 1967.
24. Các nguồn tài liệu mở (Internet và các nguồn tài liệu khác).

Keyword: MOS, CMOS, BiCMOS Technology, Semiconductor Devices, Integrated Circuit,


Microelectronic Fabrication, CMOS VLSI Design, VLSI Technology, IC Fabrication, Wafer
fabrication, Oxidation, Deposition, Metallization, Photolithography, Wet chemistry, Dry
etching, Chemical Vapor Deposition (CVD), Epitaxy, Sputtering, interconnection, Logical
Design, Physical Design, RTL, DRC, LVS, Tapeout …

07/01/2022 CMOS VLSI Design GV: ThS. Phạm Duy Khánh – BM KTĐT - Khoa Điện tử - TNUT 5
TÀI LIỆU HỌC TẬP

07/01/2022 CMOS VLSI Design GV: ThS. Phạm Duy Khánh – BM KTĐT - Khoa Điện tử - TNUT 6
CHƯƠNG 2: MỘT SỐ CÔNG CỤ THIẾT KẾ VI MẠCH

▪ Tổng quan các công nghệ thực thi mạch logic số
▪ Ngôn ngữ mô tả phần cứng VHDL
▪ Phần mềm Modelsim, Proteus
▪ Phần mềm PSpice
▪ Bộ công cụ phần mềm Tanner EDA (S-Edit, T-Spice, W-Edit,
L-Edit, LVS)
▪…

07/01/2022 CMOS VLSI Design GV: ThS. Phạm Duy Khánh – BM KTĐT - Khoa Điện tử - TNUT 7
2.1. TỔNG QUAN CÁC CÔNG NGHỆ THỰC THI MẠCH LOGIC SỐ
2.1.1. Giới thiệu về các công nghệ thiết kế mạch logic số
Có thể thực hiện mạch logic số bằng 3 phương pháp :
✓Phương pháp sử dụng các IC rời rạc: Sử dụng các IC họ TTL hoặc CMOS được thiết
kế để thực thi các phép toán logic cơ bản, các phép toán logic thường gặp
✓Phương pháp sử dụng các thiết bị lập trình được đơn giản (Simple Programable Logic
Devide - SPLD): Lập trình lên các thiết bị có sẵn như FPROM, PAL, PLA, GAL để thay
đổi cách thức đấu nối phù hợp, tạo nên hàm logic mong muốn
✓Phương pháp sử dụng các thiết bị lập trình được phức tạp (Complex Programable
Logic Devide - CPLD) hoặc FPGA: Dùng ngôn ngữ mô tả phần cứng để lập trình đấu
nối các phần tử logic cơ bản, các kết nối theo chủ đích nhằm thực hiện hàm logic

07/01/2022 CMOS VLSI Design GV: ThS. Phạm Duy Khánh – BM KTĐT - Khoa Điện tử - TNUT 8 8
2.1.1. GIỚI THIỆU VỀ CÁC CÔNG NGHỆ THIẾT KẾ MẠCH LOGIC SỐ

07/01/2022 CMOS VLSI Design GV: ThS. Phạm Duy Khánh – BM KTĐT - Khoa Điện tử - TNUT 9 9
2.1.1. GIỚI THIỆU VỀ CÁC CÔNG NGHỆ THIẾT KẾ MẠCH LOGIC SỐ

07/01/2022 CMOS VLSI Design GV: ThS. Phạm Duy Khánh – BM KTĐT - Khoa Điện tử - TNUT 10 10
2.1.1. GIỚI THIỆU VỀ CÁC CÔNG NGHỆ THIẾT KẾ MẠCH LOGIC SỐ

07/01/2022 CMOS VLSI Design GV: ThS. Phạm Duy Khánh – BM KTĐT - Khoa Điện tử - TNUT 11 11
2.1.1. GIỚI THIỆU VỀ CÁC CÔNG NGHỆ THIẾT KẾ MẠCH LOGIC SỐ

07/01/2022 CMOS VLSI Design GV: ThS. Phạm Duy Khánh – BM KTĐT - Khoa Điện tử - TNUT 12 12
2.1.1. GIỚI THIỆU VỀ CÁC CÔNG NGHỆ THIẾT KẾ MẠCH LOGIC SỐ

07/01/2022 CMOS VLSI Design GV: ThS. Phạm Duy Khánh – BM KTĐT - Khoa Điện tử - TNUT 13 13
2.1.1. GIỚI THIỆU VỀ CÁC CÔNG NGHỆ THIẾT KẾ MẠCH LOGIC SỐ
Manual design: Vi mạch số có thể được thiết kế bởi cách ghép nối các linh kiện bán dẫn
rời rạc (các IC đa dụng họ 74XX hay 40XX) thích hợp cho những mạch số cỡ nhỏ (SSI) và
cỡ vừa (MSI) trên một bản mạch in do giới hạn về mật độ tích hợp và tốc độ làm việc thấp.
Design Automation: sự hỗ trợ của máy tính là công cụ đắc lực cho việc thiết kế mô phỏng
IC nói riêng và các thiết bị khác nói chung. Tự động hóa thiết kế không những giúp đơn
giản hóa và rút ngắn đáng kể thời gian thiết kế sản phẩm mà còn đem lại những khả năng
mà quá trình thiết kế thủ công bởi con người không làm được đó là:
▪ Khả năng làm việc với những thiết kế phức tạp tới cỡ hàng nghìn đến hàng tỷ transistor.
▪ Khả năng xử lý những bài toán tối ưu với nhiều tiêu chí và nhiều điều kiện ràng buộc
phức tạp.
▪ Khả năng tự động tổng hợp thiết kế từ các mức trừu tượng cao xuống các mức trừu
tượng thấp hơn một cách chính xác, nhanh chóng.
▪ Đơn giản hóa việc lưu trữ và trao đổi dữ liệu thiết kế.
Các phần mềm hỗ trợ thiết kế gọi chung là CAD Tools, trong lĩnh vực thiết kế ASIC có 3 hệ
thống phần mềm phổ biến của Cadence®, Synopsys®, Magma® Design Automation Inc.
Trong thiết kế trên FPGA phổ biến có Xilinx, Altera.

07/01/2022 CMOS VLSI Design GV: ThS. Phạm Duy Khánh – BM KTĐT - Khoa Điện tử - TNUT 14 14
2.1.1. GIỚI THIỆU VỀ CÁC CÔNG NGHỆ THIẾT KẾ MẠCH LOGIC SỐ

Trong tự động hóa thiết kế IC thường phân biệt thành những quy trình như sau:
➢ Full-custom ASIC:
▪ Là quy trình thiết kế IC có mức độ chi tiết cao nhất nhằm thu được sản phẩm có
hiệu quả làm việc cao nhất trong khi vẫn đạt tối ưu về mặt tài nguyên trên nền
một công nghệ bán dẫn nhất định.
▪ Để đạt được mục đích đó thiết kế không những được tối ưu ở những mức cao
mà còn được tối ưu ở mức độ bố trí transistor và kết nối giữa chúng (ví dụ hai
khối logic cùng thực hiện hàm OR nhưng phân bố ở hai vị trí khác nhau thì được
cấu trúc bằng các mạch transitor khác nhau, phụ thuộc vào các thông số khác
như tải đầu vào đầu ra, vị trí, ảnh hưởng các khối liền kề…).
▪ Full-custom ASIC đôi khi còn được gọi là random-logic gate networks nghĩa là
mạch tạo bởi những cổng không đồng nhất.

07/01/2022 CMOS VLSI Design GV: ThS. Phạm Duy Khánh – BM KTĐT - Khoa Điện tử - TNUT 15 15
2.1.1. GIỚI THIỆU VỀ CÁC CÔNG NGHỆ THIẾT KẾ MẠCH LOGIC SỐ
➢ Semi-custom ASIC design:
▪ Là quy trình thiết kế mà mức độ chi tiết không đạt đến tối đa, thông thường thiết kế đạt
chi tiết đến mức cổng logic hoặc cao hơn.
▪ Do Full-custom ASIC có độ phức tạp cao (chi phí cho quá trình thiết kế rất lớn; thời gian
dành cho thiết kế kéo dài hàng vài năm trở lên, trong thời gian đó có thể đã có những
công nghệ mới ra đời, mỗi một thay đổi nhỏ kéo theo việc phải làm lại gần như toàn bộ
thiết kế và phát sinh thêm chi phí rất nhiều do vậy lợi nhuận sản phẩm bán ra thấp hay
thậm chí thua lỗ).
▪ Semi-custom ASIC cân bằng giữa chi phí thiết kế và lợi nhuận thu được sản phẩm bằng
cách đẩy nhanh và giảm thiểu chi phí cho quá trình thiết kế, dĩ nhiên bù lại sản phẩm làm
ra không đạt được mức tối ưu lý thuyết như Full-custom design. Có nhiều dạng Semi-
custom design nhưng một trong những kiểu cơ bản mà thường được sử dụng là thiết kế
trên cơ sở thư viện cổng chuẩn (Standard Cell Library), thư viện này là tập hợp của các
cổng logic như AND, OR, XOR, thanh ghi… và vì chúng có cùng kích thước chiều cao
nên được gọi là cổng chuẩn.
07/01/2022 CMOS VLSI Design GV: ThS. Phạm Duy Khánh – BM KTĐT - Khoa Điện tử - TNUT 16 16
2.1.1. GIỚI THIỆU VỀ CÁC CÔNG NGHỆ THIẾT KẾ MẠCH LOGIC SỐ
➢ ASIC based on Programmable Device :
Thiết kế ASIC trên cơ sở IC khả trình. Chíp khả trình (Programmable device) là IC chứa những phần tử
logic có thể được lập trình can thiệp để tái cấu trúc nhằm thực hiện một chức năng nào đó. Quá trình tái cấu trúc
thực hiện thông qua ngôn ngữ mô tả phần cứng nên thường được gọi ngắn gọn là lập trình.
IC khả trình có thể chia thành các dạng:
▪ SPLD (Simple Programmable Logic Device): Nhóm những IC khả trình PROM, PAL, PLA, GAL..chứa một số
lượng cổng từ vài chục (PROM) đến vài trăm (PAL, GAL) cổng, nhóm này sử dụng cấu trúc của bộ nhớ ROM
để lưu cấu hình IC (vì vậy nhóm này còn gọi là Memory-based PLD), cấu trúc này bao gồm một mảng ma trận
AND và một mảng ma trận OR có thể cấu trúc được. Trong các chip dạng này lại chia làm hai, thứ nhất là loại
chỉ lập trình một lần, và loại có khả năng tái lập trình dùng các công nghệ như EEPROM hay EPROM.
▪ CPLD (Complex Programmable Logic Device): CPLD là IC lập trình phức tạp thường được ghép từ nhiều
các SPLD trên một chip đơn. Số cổng tương đương của CPLD đạt từ hàng nghìn đến hàng chục nghìn cổng.
▪ FPGA (Field-Programmable Gate Array): là IC khả trình cấu trúc từ mảng các khối logic lập trình được. Nếu
như đối với các PLD khác việc tái cấu trúc IC được thực hiện trong điều kiện của nhà máy sản xuất bán dẫn,
quá trình này cần những mặt nạ cho quang khắc nên sử dụng lớp những PLD này được gọi chung bằng thuật
ngữ Mask-Programmable Device. FPGA phân biệt chính với các loại trên ở khả năng tái cấu trúc IC bởi người
dùng cuối hay chính là người lập trình IC.

07/01/2022 CMOS VLSI Design GV: ThS. Phạm Duy Khánh – BM KTĐT - Khoa Điện tử - TNUT 17 17
2.1.2. CÁC PHƯƠNG PHÁP THỂ HIỆN THIẾT KẾ

Mô tả bằng sơ đồ Mô tả bằng Hardware Description Language - HDL

07/01/2022 CMOS VLSI Design GV: ThS. Phạm Duy Khánh – BM KTĐT - Khoa Điện tử - TNUT 18 18
2.1.2. CÁC PHƯƠNG PHÁP THỂ HIỆN THIẾT KẾ
➢ Mô tả bằng sơ đồ: cho ra sơ đồ các khối logic rõ ràng thuận tiện cho việc phân tích mạch, tuy vậy phương
pháp này chỉ được sử dụng để thiết kế những mạch logic số cỡ nhỏ, độ phức tạp không cao. Đối với những
mạch cỡ lớn hàng trăm ngàn cổng logic thì việc mô tả đồ họa là gần như không thể và nếu có thể cũng tốn
rất nhiều thời gian, chưa kể những khó khăn trong công việc kiểm tra lỗi trên mạch sau đó.
➢ Mô tả bằng HDL (Hardware Description Language ):
HDL cho phép mô tả vi mạch bằng các cú pháp tương tự như cú pháp của ngôn ngữ lập trình. Có ba ngôn
ngữ mô tả phần cứng phổ biến hiện nay là:
▪ Verilog: Ra đời năm 1983. Đây là một ngôn ngữ mô tả phần cứng có cấu trúc và cú pháp gần giống với
ngôn ngữ lập trình C, ngoài khả năng hỗ trợ thiết kế logic thì Verilog rất mạnh trong việc hỗ trợ cho quá
trình kiểm tra thiết kế.
▪ VHDL: Very-high-speed intergrated circuits Hardware Description Language, hay ngôn ngữ mô tả cho
các mạch tích hợp tốc độ cao. VHDL được phát triển dựa trên cấu trúc của ngôn ngữ lập trình Ada. Cấu
trúc của mô tả VHDL tuy phức tạp hơn Verilog nhưng mang tính logic chặt chẽ và gần với phần cứng
hơn.
▪ AHDL: Altera HDL được phát triển bởi công ty bán dẫn Altera với mục đích dùng thiết kế cho các sản
phẩm FPGA và CPLD của Altera. AHDL có cấu trúc hết sức chặt chẽ và là ngôn ngữ rất khó sử dụng
nhất so với 2 ngôn ngữ trên. Bù lại, AHDL cho phép mô tả thực thể logic chi tiết và chính xác hơn. Ngôn
ngữ này ít phổ biến tuy vậy nó cũng được rất nhiều chương trình phần mềm hỗ trợ mô phỏng biên dịch

07/01/2022 CMOS VLSI Design GV: ThS. Phạm Duy Khánh – BM KTĐT - Khoa Điện tử - TNUT 19 19
2.1.2. CÁC PHƯƠNG PHÁP THỂ HIỆN THIẾT KẾ

Bên cạnh các ngôn ngữ trên thì một loạt các ngôn ngữ khác đã và đang phát triển
cũng hỗ trợ khả năng mô tả phần cứng như System Verilog và SystemC.
▪ System Verilog là phiên bản mở rộng của Verilog hướng của C++ như hỗ trợ
các kiểu dữ liệu khác nhau, sử dụng Class và nhiều hàm hệ thống bậc cao.
▪ SystemC không hoàn toàn phải là một HDL mà là một dạng mở rộng của C++
cho phép hỗ trợ kiểm tra các thiết kế bằng VHDL hay Verilog.

07/01/2022 CMOS VLSI Design GV: ThS. Phạm Duy Khánh – BM KTĐT - Khoa Điện tử - TNUT 20 20
2.1.3. YÊU CẦU ĐỐI VỚI MỘT THIẾT KẾ LOGIC

▪ Yêu cầu chức năng: các đầu vào đầu ra như thế nào, thực hiện nhiệm vụ gì…
▪ Yêu cầu về mặt công nghệ: Mạch thiết kế sử dụng nền công nghệ bán dẫn
nào (IC rời rạc, PLD, ASIC, FPGA…)
▪ Yêu cầu về mặt tài nguyên: Giới hạn số lượng cổng, transitors, về diện tích
quy đổi chuẩn, về kích thước của IC thiết kế.
▪ Yêu cầu về khả năng làm việc (performance): độ trễ cổng vào, độ trễ cổng ra,
độ trễ logic với mạch tổ hợp, các xung nhịp làm việc, số lượng xung nhịp cho
một chu trình xử lý dữ liệu, số lượng dữ liệu xử lý trên một đơn vị thời gian.
▪ Yêu cầu về mức tiêu hao năng lượng (power consumtion).
▪ Yêu cầu về chi phí cho quá trình thiết kế và chế tạo (design cost).

07/01/2022 CMOS VLSI Design GV: ThS. Phạm Duy Khánh – BM KTĐT - Khoa Điện tử - TNUT 21 21
2.2. NGÔN NGỮ MÔ TẢ PHẦN CỨNG VHDL
2.2.1. Giới thiệu về vi mạch logic khả trình CPLD và FPGA
 CPLD  FPGA

07/01/2022 CMOS VLSI Design GV: ThS. Phạm Duy Khánh – BM KTĐT - Khoa Điện tử - TNUT 22 22
2.2. NGÔN NGỮ MÔ TẢ PHẦN CỨNG VHDL
2.2.2. Giới thiệu về ngôn ngữ mô tả phần cứng VHDL
 VHDL là gì?
– Một ngôn ngữ mô tả phần cứng:
• VHDL - VHSIC Hardware Description Language.
• VHSIC - Very High Speed Integrated Circuits.
– Là chuẩn do Bộ QP Mỹ phát triển từ thập niên 70.
Dựa trên ngôn ngữ lập trình ADA, nhằm tạo ra tài
liệu mô tả hoạt động của các mạch điện tử.
• 1987 được IEEE chuẩn hóa trong IEEE 1076-1987.
• 1993 hoàn thiện lại thành IEEE 1076-1993.
• 2002 giải quyết vấn đề protected types=>IEEE 1076-2002
• 2004 IEC 61691-1-1:2004 IEC adoption of IEEE 1076-2002
• 2008 EEE 1076-2008
• 2011 IEC 61691-1-1:2011 IEC adoption of IEEE 1076-2008

07/01/2022 CMOS VLSI Design GV: ThS. Phạm Duy Khánh – BM KTĐT - Khoa Điện tử - TNUT 23 23
2.2.2. GIỚI THIỆU VỀ NGÔN NGỮ MÔ TẢ PHẦN CỨNG VHDL
 Ví dụ VHDL đơn giản  Ưu điểm của VHDL:
• Tính công cộng
• Khả năng hỗ trợ nhiều công
nghệ và phương pháp thiết kế
• Độc lập với công nghệ
• Khả năng mô tả mở rộng
• Khả năng trao đổi kết quả
• Khả năng hỗ trợ thiết kế lớn
và tái sử dụng các thiết kế

07/01/2022 CMOS VLSI Design GV: ThS. Phạm Duy Khánh – BM KTĐT - Khoa Điện tử - TNUT 24 24
2.2.3. GIỚI THIỆU CÔNG NGHỆ THIẾT KẾ MẠCH BẰNG VHDL
2.2.3.1. Ứng dụng của công nghệ thiết kế mạch bằng VHDL

▪ Hiện nay 2 ứng dụng chính và trực tiếp của VHDL là các ứng dụng trong các
thiết bị logic có thể lập trình được (Programmable Logic Devices – PLD) (bao
gồm các thiết bị logic phức tạp có thể lập trình được và các FPGA - Field
Programmable Gate Arrays) và ứng dụng trong ASICs (Application Specific
Integrated Circuits).
▪ Khi chúng ta lập trình cho các thiết bị thì chúng ta chỉ cần viết mã VHDL một
lần, sau đó ta có thể áp dụng cho các thiết bị khác nhau (như Altera, Xilinx,
Atmel,…) hoặc có thể để chế tạo một con chip ASIC. Hiện nay, có nhiều cấu
trúc phức tạp (như các vi điều khiển) được thiết kế dựa trên ngôn ngữ VHDL.

07/01/2022 CMOS VLSI Design GV: ThS. Phạm Duy Khánh – BM KTĐT - Khoa Điện tử - TNUT 25 25
2.2.3. GIỚI THIỆU CÔNG NGHỆ THIẾT KẾ MẠCH BẰNG VHDL
2.2.3.2. Quy trình thiết kế mạch bằng VHDL
Đa số các ứng dụng của VHDL là chế tạo các
mạch hoặc hệ thống trong thiết bị có thể lập trình
được (PLD hoặc FPGA) hoặc trong ASIC. Việc chế
tạo ra vi mạch sẽ được chia thành 3 giai đoạn như
sau:
▪ Giai đoạn 1:
Chúng ta bắt đầu thiết kế bằng viết mã VHDL. Mã
VHDL này sẽ được lưu vào file có đuôi là .vhd và
có tên cùng với tên thực thể. Mã VHDL sẽ được mô
tả ở tầng chuyển đổi thanh ghi (RTL code).

Tóm tắt quy trình thiết kế VHDL


07/01/2022 CMOS VLSI Design GV: ThS. Phạm Duy Khánh – BM KTĐT - Khoa Điện tử - TNUT 26 26
2.2.3. GIỚI THIỆU CÔNG NGHỆ THIẾT KẾ MẠCH BẰNG VHDL
2.2.3.2. Quy trình thiết kế mạch bằng VHDL
▪ Giai đoạn 2: Giai đoạn chế tạo
✓ Bước đầu tiên trong quá trình chế tạo là biên dich. Quá trình biên dịch sẽ
chuyển mã VHDL vào một netlist ở tầng cổng.
✓ Bước thứ 2 của quá trình chế tạo là tối ưu. Quá trình tối ưu được thực hiện
trên netlist ở tầng cổng về tốc độ và phạm vi.
✓ Trong giai đoạn này, thiết kế có thể được mô phỏng để kiểm tra phát hiện
những lỗi xảy ra trong quá trình chế tạo.
▪ Giai đoạn 3:
Là giai đoạn ghép nối, đóng gói phần mềm. Ở giai đoạn này sẽ tạo ra sự sắp
xếp vật lý cho chip PLD/FPGA hoặc tạo ra mặt nạ (mask) cho ASIC.

07/01/2022 CMOS VLSI Design GV: ThS. Phạm Duy Khánh – BM KTĐT - Khoa Điện tử - TNUT 27 27
2.2.3. GIỚI THIỆU CÔNG NGHỆ THIẾT KẾ MẠCH BẰNG VHDL
2.2.3.3. Công cụ EDA

Các công cụ phục vụ cho quá trình thiết kế vi mạch sẽ là:
▪ Công cụ Active – HDL, Notepad++, Modelsim: Tạo mã VHDL và mô phỏng
▪ Công cụ EDA (Electronic Design Automation): là công cụ tự động thiết kế mạch
điện tử. Công cụ này được dùng để phục vụ cho việc chế tạo, thực thi và mô
phỏng mạch sử dụng VHDL.
▪ Công cụ cho đóng gói: Các công cụ này sẽ cho phép tổng hợp mã VHDL vào các
chip CPLD/FPGA của Altera hoặc hệ ISE của Xilinx, for Xilinx’s CPLD/FPGA
chips).

07/01/2022 CMOS VLSI Design GV: ThS. Phạm Duy Khánh – BM KTĐT - Khoa Điện tử - TNUT 28 28
2.2.3. GIỚI THIỆU CÔNG NGHỆ THIẾT KẾ MẠCH BẰNG VHDL
2.2.3.4. Chuyển mã VHDL vào mạch

s = a  b  cin Mã VHDL thiết kế bộ cộng đầy đủ

cout = ab + (a  b).cin
= ab + a.cin + b.cin
07/01/2022 CMOS VLSI Design GV: ThS. Phạm Duy Khánh – BM KTĐT - Khoa Điện tử - TNUT 29 29
2.2.3. GIỚI THIỆU CÔNG NGHỆ THIẾT KẾ MẠCH BẰNG VHDL
2.2.3.4. Chuyển mã VHDL vào mạch

Từ mã VHDL này, mạch vật lý được


tạo ra. Tuy nhiên có nhiều cách để
thực hiện phương trình được mô tả
trong ARCHITECTURE OF, vì vậy
mạch thực tế sẽ phụ thuộc vào bộ
biên dịch/bộ tối ưu đang được sử
dụng và đặc biệt phụ thuộc mục đích
công nghệ.

Một số dạng kiến trúc của mạch cộng

07/01/2022 CMOS VLSI Design GV: ThS. Phạm Duy Khánh – BM KTĐT - Khoa Điện tử - TNUT 30 30
2.2.3. GIỚI THIỆU CÔNG NGHỆ THIẾT KẾ MẠCH BẰNG VHDL
2.2.3.4. Chuyển mã VHDL vào mạch
Bất cứ một mạch nào được tạo ra từ mã, thì những thao tác của nó sẽ luôn luôn
được kiểm tra ở mức thiết kế. Tất nhiên, chúng ta cũng có thể kiểm tra nó ở tầng vật
lý, nhưng sau đó những thay đổi là rất tai hại.

Kết quả mô phỏng của đoạn chương trình VHDL đã viết ở trên cho mạch bộ cộng đầy đủ

07/01/2022 CMOS VLSI Design GV: ThS. Phạm Duy Khánh – BM KTĐT - Khoa Điện tử - TNUT 31 31
2.2.4. KIẾN TRÚC CƠ BẢN CỦA CHƯƠNG TRÌNH VHDL
 Kiến trúc VHDL đơn giản

Kiến trúc cơ bản của một


chương trình VHDL bao gồm
ba phần:
▪ Khai báo thư viện (Library)
▪ Khai báo thực thể (Entity)
▪ Mô tả kiến trúc bên trong
của thực thể (Architecture).

07/01/2022 CMOS VLSI Design GV: ThS. Phạm Duy Khánh – BM KTĐT - Khoa Điện tử - TNUT 32 32
2.2.4. KIẾN TRÚC CƠ BẢN CỦA CHƯƠNG TRÌNH VHDL

 Khai báo thư viện  Các thư viện thường sử dụng:


• ieee.std_logic_1164 (from the ieee
Cú pháp: library),
• Gói của thư viện IEEE hỗ trợ multi-
level logic.
LIBRARY ieee; • std (from the standard library), and
USE ieee.std_logic_1164.all
• Gói thư viện tài nguyên (kiểu dữ liệu,
LIBRARY std; text IO…) cho môi trường thiết kế
USE std.standard.all; VHDL.
LIBRARY work; • work (work library).
USE work.all; • Gói thư viện chứa các thiết kế của
người dùng mới tạo ra.

07/01/2022 CMOS VLSI Design GV: ThS. Phạm Duy Khánh – BM KTĐT - Khoa Điện tử - TNUT 33 33
2.2.4. KIẾN TRÚC CƠ BẢN CỦA CHƯƠNG TRÌNH VHDL
 Khai báo thực thể
Cú pháp:

• Port_name:
• Đặt tên theo quy tắc đặt tên chuẩn, tránh các từ khóa.
• signal_mode: chiều truyền dữ liệu
• IN, OUT, INOUT (2 chiều), BUFFER (khi tín hiệu ra được dùng cho các tín hiệu khác
bên trong). LINKAGE (Có thể làm bất kỳ các cổng nào kể trên)
• signal_type:
• bit, std_logic, integer…

07/01/2022 CMOS VLSI Design GV: ThS. Phạm Duy Khánh – BM KTĐT - Khoa Điện tử - TNUT 34 34
2.2.4. KIẾN TRÚC CƠ BẢN CỦA CHƯƠNG TRÌNH VHDL
 Ví dụ về khai báo thực thể

07/01/2022 CMOS VLSI Design GV: ThS. Phạm Duy Khánh – BM KTĐT - Khoa Điện tử - TNUT 35 35
2.2.4. KIẾN TRÚC CƠ BẢN CỦA CHƯƠNG TRÌNH VHDL
 Thực thi kiến trúc (Architecture)
Cú pháp:

▪ Phần ARCHITECTURE mô tả mạch hoạt động như thế nào.


▪ Một ARCHITECTURE luôn gắn với một ENTITY và mô tả hoạt động của ENTITY đó.
▪ Một ARCHITECTURE chỉ gắn với một ENTITY nhưng một ENTIY có thể có nhiều
ARCHITECTURE khác nhau

07/01/2022 CMOS VLSI Design GV: ThS. Phạm Duy Khánh – BM KTĐT - Khoa Điện tử - TNUT 36 36
2.2.4. KIẾN TRÚC CƠ BẢN CỦA CHƯƠNG TRÌNH VHDL
 Thực thi kiến trúc (Architecture)
Mô tả VHDL

• Testbenches
• ARCHITECTURE có hai phần:
behavioral
• Phần khai báo (optional) dataflow structural
(sequential)
• Khai báo tín hiệu và biến.
Các phát biểu Các thành phần Các lệnh tuần tự
• Phần mã code: đồng thời và liên kết
• Registers
• Mô tả cách kết nối, hoạt động của mạch. • State machines
• Instruction decoders
• Có 3 loại ARCHITECTURE:
• Dataflow, behavioral, structure

Tập hợp phù hợp nhất khi tổng hợp

07/01/2022 CMOS VLSI Design GV: ThS. Phạm Duy Khánh – BM KTĐT - Khoa Điện tử - TNUT 37 37
2.2.5. THIẾT KẾ CHƯƠNG TRÌNH VHDL THEO KIẾN TRÚC DATAFLOW
 Cú pháp cho mô hình dataflow
f ( A, B, C ) =  m(1,3, 6, 7) = ABC + ABC + ABC + ABC
ARCHITECTURE architecture_name OF entity_name IS
library IEEE;
[Khai báo các tín hiệu;]
use IEEE.STD_LOGIC_1164.ALL;
BEGIN entity Alarm is
Các phát biểu đồng thời; port (A : in std_logic;
END architecture_name; B : in std_logic;
C : in std_logic;
 Mô hình Dataflow: Gán tín hiệu đồng thời f : out std_logic
• Cú pháp: );
end Alarm;
• signal <=expression;
architecture dataflow of Alarm
• Phát biểu này được thi hành bất cứ khi nào tín hiệu is begin
f <= ((not A) and (not B) and C)
trong biểu thức của nó thay đổi giá trị.
or ((not A) and B and C)or
 Thực thi ví dụ 2.1 (A and B and (not C)) or (A
and B and C);
end dataflow;

07/01/2022 CMOS VLSI Design GV: ThS. Phạm Duy Khánh – BM KTĐT - Khoa Điện tử - TNUT 38 38
2.2.5. THIẾT KẾ CHƯƠNG TRÌNH VHDL THEO KIẾN TRÚC DATAFLOW
 Cú pháp cho mô hình dataflow
f ( A, B, C ) =  m(1,3, 6, 7) = ABC + ABC + ABC + ABC f ( A, B, C ) =  m(1,3, 6, 7) = AC + AB
library IEEE; library IEEE;
use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_1164.ALL;
entity Alarm is entity Alarm is
port (A : in std_logic; port (A : in std_logic;
B : in std_logic; B : in std_logic;
C : in std_logic; C : in std_logic;
f : out std_logic f : out std_logic
); );
end Alarm; end Alarm;
architecture dataflow of Alarm architecture dataflow of Alarm is
is begin begin
f <= ((not A) and (not B) and C) f <= ((not A) and C) or (A and B);
or ((not A) and B and C)or end dataflow;
(A and B and (not C)) or (A
and B and C);
end dataflow;

07/01/2022 CMOS VLSI Design GV: ThS. Phạm Duy Khánh – BM KTĐT - Khoa Điện tử - TNUT 39 39
2.2.5. THIẾT KẾ CHƯƠNG TRÌNH VHDL THEO KIẾN TRÚC DATAFLOW

 Mô hình Dataflow: Gán tín hiệu dựa trên điều kiện


Architecture dataflow2 of Alarm is begin
Signal <= value1 WHEN condition1 ELSE begin
f <= '1' WHEN (A='0' and B='0'and C='1')
value2 WHEN condition2 ELSE
ELSE
…… '1' WHEN (A='0' and B='1'and C='1')
ELSE
value3; '1' WHEN (A='1' and B='1'and C='0')
ELSE
 Thực thi ví dụ 2.1?
'1' WHEN (A='1' and B='1'and C='1')
f ( A, B, C ) =  m(1,3, 6, 7) = ABC + ABC + ABC + ABC ELSE
'0’;
end dataflow2;

07/01/2022 CMOS VLSI Design GV: ThS. Phạm Duy Khánh – BM KTĐT - Khoa Điện tử - TNUT 40 40
2.2.5. THIẾT KẾ CHƯƠNG TRÌNH VHDL THEO KIẾN TRÚC DATAFLOW

 Mô hình Dataflow: Gán tín hiệu dựa trên biểu thức lựa chọn

f ( A, B, C ) =  m(1,3, 6, 7) = ABC + ABC + ABC + ABC


WITH expression SELECT
Architecture dataflow3 of Alarm is begin
Signal <= value1 WHEN choice1, signal sel : std_logic_vector(2 downto 0);
begin
value2 WHEN choice2 | choice3, sel <= A&B&C;
…… WITH sel SELECT
F <= '1' WHEN b"001",
value4 WHEN OTHERS; '1' WHEN b"011",
'1' WHEN b"110",
 Thực thi ví dụ 2.1? '1' WHEN b"111",
'0' WHEN OTHERS;
end dataflow3;

07/01/2022 CMOS VLSI Design GV: ThS. Phạm Duy Khánh – BM KTĐT - Khoa Điện tử - TNUT 41 41
2.2.6. THIẾT KẾ CHƯƠNG TRÌNH VHDL THEO KIẾN TRÚC BEHAVIORAL

 Cú pháp cho mô hình Behavioral  Mô hình Behavioral: Process

ARCHITECTURE architecture_name • Các câu lệnh nằm ngoài Process được thực hiện
OF entity_name IS đồng thời (concurrent)

[Khai báo các tín hiệu;] • Các câu lệnh nằm trong Process được thực hiện tuần
tự (sequential)
[Định nghĩa hàm ;]
• Process được kích hoạt khi 1 trong các tín hiệu trong
[Định nghĩa thủ tục;]
“sensitivity list” thay đổi giá trị.
BEGIN
• Các tín hiệu trong “sensitivity list” thường là các tín
Các khối process; hiệu đầu vào của vi mạch.
Các phát biểu đồng thời;

END architecture_name;

07/01/2022 CMOS VLSI Design GV: ThS. Phạm Duy Khánh – BM KTĐT - Khoa Điện tử - TNUT 42 42
2.2.6. THIẾT KẾ CHƯƠNG TRÌNH VHDL THEO KIẾN TRÚC BEHAVIORAL
 Mô hình Behavioral: Process
Cú pháp: • Các câu lệnh nằm ngoài Process được thực
hiện đồng thời (concurrent)
[process_name:] PROCESS (sensitivity-list)
Khai báo các biến; • Các câu lệnh nằm trong Process được thực
BEGIN hiện tuần tự (sequential)
Các lệnh tuần tự;
END PROCESS [process_name]; • Process được kích hoạt khi 1 trong các tín hiệu
trong “sensitivity list” thay đổi giá trị.

• Các tín hiệu trong “sensitivity list” thường là


các tín hiệu đầu vào của vi mạch.

07/01/2022 CMOS VLSI Design GV: ThS. Phạm Duy Khánh – BM KTĐT - Khoa Điện tử - TNUT 43 43
2.2.6. THIẾT KẾ CHƯƠNG TRÌNH VHDL THEO KIẾN TRÚC BEHAVIORAL

 Mô hình Behavioral: Gán biến


• Cú pháp: variable := expression; f ( A, B, C ) =  m(1,3, 6, 7) = ABC + ABC + ABC + ABC
architecture behavioral1 of Alarm is
• So sánh sự khác biệt giữa variable và signal begin
• Giá trị của variable được cập nhật ngay process(A,B,C)
lập tức, trong khi giá trị của signal chỉ variable temp:std_logic;
begin
được cập nhật khi process kết thúc.
temp :=((not A) and (not B) and C) or
• Variable và signal có thể gán giá trị cho ((not A) and B and C)or(A and B and (not
nhau C)) or (A and B and C);
• Variable chỉ được dùng tạm thời trong F <= temp;
process, nếu giá trị của nó muốn được end process;
truy cập ngoài process ta cần phải gán end behavioral1;

giá trị đó cho một signal.


 Thực thi ví dụ 2.1?

07/01/2022 CMOS VLSI Design GV: ThS. Phạm Duy Khánh – BM KTĐT - Khoa Điện tử - TNUT 44 44
2.2.6. THIẾT KẾ CHƯƠNG TRÌNH VHDL THEO KIẾN TRÚC BEHAVIORAL
 Mô hình Behavioral: Phát biểu IF…THEN…ELSIF…ELSE

f ( A, B, C ) =  m(1,3, 6, 7) = ABC + ABC + ABC + ABC


IF condition THEN
Architecture behavioral2 of Alarm is begin
Sequential-statements ; process(a,b,c)
{ ELSIF condition THEN variable temp:std_logic_vector(2 downto 0);
begin
Sequential-statements } temp :=a&b&c;
[ ELSE if (temp = b”001”) then F <= '1';
elsif (temp = b"011") then F <= '1';
Sequential-statements ] elsif (temp = b"110") then F <= '1';
END IF ; elsif (temp = b"111") then F <= '1';

 Thực thi ví dụ 2.1?


else F <= '0';
end if;
end process;
end behavioral2;

07/01/2022 CMOS VLSI Design GV: ThS. Phạm Duy Khánh – BM KTĐT - Khoa Điện tử - TNUT 45 45
2.2.6. THIẾT KẾ CHƯƠNG TRÌNH VHDL THEO KIẾN TRÚC BEHAVIORAL
 Mô hình Behavioral: Phát biểu CASE…WHEN
f ( A, B, C ) =  m(1,3, 6, 7) = ABC + ABC + ABC + ABC
CASE expression IS architecture behavioral3 of Alarm is begin
process(a,b,c)
WHEN choices1 => Sequential-statements1;
variable temp:std_logic_vector(2 downto 0);
WHEN choices2 => Sequential-statements2; begin
temp :=a&b&c;

CASE temp IS
WHEN OTHERS => Sequential-statements; WHEN b"001" => F <= '1';
WHEN b"011" => F <= '1';
END CASE;
WHEN b"110" => F <= '1';
 Thực thi ví dụ 2.1? WHEN b"111" => F <= '1';
WHEN OTHERS => F <= '0';
END CASE;
end process;
end behavioral3;

07/01/2022 CMOS VLSI Design GV: ThS. Phạm Duy Khánh – BM KTĐT - Khoa Điện tử - TNUT 46 46
2.2.6. THIẾT KẾ CHƯƠNG TRÌNH VHDL THEO KIẾN TRÚC BEHAVIORAL

 Mô hình Behavioral: Phát biểu FOR…LOOP  Mô hình Behavioral: Phát biểu WHILE…LOOP
▪ Cú pháp: ▪ Cú pháp:

[label :] WHILE condition LOOP


[label:] FOR identifier IN start [TO | DOWNTO] stop
sequential_statement ;
LOOP
END LOOP [label];
sequential-statements;
▪ Ví dụ:
END LOOP [label];
▪ Ví dụ: j := 0;sum := 10;
VARIABLE sum := 0; wh_loop: WHILE j < 20 LOOP
FOR count IN 1 TO 10 LOOP sum := sum * 2
sum := sum + count; j := j + 3;
END LOOP; END LOOP wh_loop;

07/01/2022 CMOS VLSI Design GV: ThS. Phạm Duy Khánh – BM KTĐT - Khoa Điện tử - TNUT 47 47
2.2.7. THIẾT KẾ CHƯƠNG TRÌNH VHDL THEO KIẾN TRÚC STRUCTURAL
 Mô hình Structural:
Mô hình structural: Khai báo các thành phần của mạch sau đó nối các thành phần đó với nhau một
cách thích hợp. Các thành phần được gọi là các COMPONENT

Cú pháp:

ARCHITECTURE architecture_name OF entity_name IS


Khai báo component;
Khai báo các tín hiệu;
BEGIN
instance-name: PORT MAP-statements;
Các phát biểu đồng thời;
END architecture_name;

07/01/2022 CMOS VLSI Design GV: ThS. Phạm Duy Khánh – BM KTĐT - Khoa Điện tử - TNUT 48 48
2.2.7. THIẾT KẾ CHƯƠNG TRÌNH VHDL THEO KIẾN TRÚC STRUCTURAL

 Mô hình Structural: Component  Mô hình Structural: Portmap


▪ Cú pháp: ▪ Cú pháp:

COMPONENT component_name IS instance_name: component_name PORT MAP(signal_list);


PORT ( signal_name: IN signal_type; ▪ Ví dụ:

Signal_name: OUT signal_type); SIGNAL x, y,c0,c1, s: BIT;


END COMPONENT; U: half_adder PORT MAP (x,y,c0,c1,s);
▪ Ví dụ: Hoặc:

COMPONENT full_adder IS SIGNAL x, y, c0, c1, s: BIT;--Khai báo các tín hiệu thực tế
PORT( xi,yi,cin: IN BIT; trong mạch.
cout,si: OUT BIT); U: half_adder PORT MAP (cout => c1,si => s, cin => c0,xi
END COMPONENT; =>x,yi=>y);

07/01/2022 CMOS VLSI Design GV: ThS. Phạm Duy Khánh – BM KTĐT - Khoa Điện tử - TNUT 49 49
2.2.7. THIẾT KẾ CHƯƠNG TRÌNH VHDL THEO KIẾN TRÚC STRUCTURAL
 Thực thi ví dụ 2.1 f ( A, B, C ) =  m(1,3, 6, 7) = ABC + ABC + ABC + ABC

------------ Dinh nghia Not ----------- ------------ Dinh nghia AND 3 dau vao----
LIBRARY IEEE; -------------
USE IEEE.STD_LOGIC_1164.ALL; LIBRARY ieee;
ENTITY notgate IS PORT( USE ieee.std_logic_1164.ALL;
i: IN STD_LOGIC; ENTITY AND_3 IS
o: OUT STD_LOGIC); PORT ( in1, in2, in3: IN STD_LOGIC;
END notgate; output: OUT STD_LOGIC);
ARCHITECTURE Not_Dataflow OF notgate IS END AND_3;
BEGIN ARCHITECTURE AND_Dataflow OF AND_3 IS
o <= NOT i; BEGIN
END Not_Dataflow; output <= in1 AND in2 AND in3;
END AND_Dataflow;

07/01/2022 CMOS VLSI Design GV: ThS. Phạm Duy Khánh – BM KTĐT - Khoa Điện tử - TNUT 50 50
2.2.7. THIẾT KẾ CHƯƠNG TRÌNH VHDL THEO KIẾN TRÚC STRUCTURAL
 Thực thi ví dụ 2.1 f ( A, B, C ) =  m(1,3, 6, 7) = ABC + ABC + ABC + ABC

------------ Dinh nghia OR 4 dau vao- library IEEE;


LIBRARY ieee; use IEEE.STD_LOGIC_1164.ALL;
USE ieee.std_logic_1164.ALL; ---------------------------------
ENTITY OR_4 IS entity Alarm is
PORT ( in1, in2, in3, in4: IN port (A : in std_logic;
STD_LOGIC; B : in std_logic;
output: OUT STD_LOGIC); C : in std_logic;
END OR_4; f : out std_logic
ARCHITECTURE OR_Dataflow OF OR_4 IS );
BEGIN end Alarm;
output <= in1 OR in2 OR in3 OR in4; -------------------------------------------
END OR_Dataflow;

07/01/2022 CMOS VLSI Design GV: ThS. Phạm Duy Khánh – BM KTĐT - Khoa Điện tử - TNUT 51 51
2.2.7. THIẾT KẾ CHƯƠNG TRÌNH VHDL THEO KIẾN TRÚC STRUCTURAL
 Thực thi ví dụ 2.1 f ( A, B, C ) =  m(1,3, 6, 7) = ABC + ABC + ABC + ABC
architecture structural of Alarm is begin SIGNAL
------------ Khai bao not----------- nota,notb,notc,out1,out3,out6,out7:
COMPONENT notgate STD_LOGIC;
PORT( BEGIN
i: IN STD_LOGIC; not1: notgate PORT MAP (a, nota);
o: OUT STD_LOGIC); not2: notgate PORT MAP (b, notb);
END COMPONENT; not3: notgate PORT MAP (c, notc);
------------ Khai bao OR 4-------------- and1: AND_3 PORT MAP
COMPONENT OR_4 (nota,notb,notc,d,out1);
PORT ( in1, in2, in3, in4: IN STD_LOGIC; and3: AND_3 PORT MAP
output: OUT STD_LOGIC); (nota,notb,c,notd,out3);
END COMPONENT; and6: AND_3 PORT MAP
------------ Khai bao AND 3----------- (nota,notb,c,d,out6);
COMPONENT AND_4 and7: AND_3 PORT MAP
PORT ( in1, in2, in3: IN STD_LOGIC; (nota,b,notc,notd,out7);
output: OUT STD_LOGIC); or5: OR_4 PORT MAP
END COMPONENT; (out1,out3,out6,out7,F);
end structural;
07/01/2022 CMOS VLSI Design GV: ThS. Phạm Duy Khánh – BM KTĐT - Khoa Điện tử - TNUT 52 52
2.2.8. MÔ PHỎNG, KIỂM TRA THIẾT KẾ VHDL BẰNG MODELSIM
▪ Do các ngôn ngữ mô tả phần cứng như VHDL được chuẩn hóa bởi IEEE và được công bố rộng rãi
nên có rất nhiều các phần mềm mô phỏng mạch số được nhiều công ty khác nhau phát triển. Điểm
chung của các chương trình này là đều phải có một trình biên dịch và có khả năng mô phỏng mạch
theo thời gian thực, kết xuất kết quả một số dạng nhất định như file text, file định kiểu, hay phổ biến
và trực quan nhất là dưới dạng giản đồ sóng.
▪ ModelSim là một chương trình mô phỏng khá mạnh và chính xác được phát triển bởi Mentor
Graphics.

07/01/2022 CMOS VLSI Design GV: ThS. Phạm Duy Khánh – BM KTĐT - Khoa Điện tử - TNUT 53 53
2.2.8. MÔ PHỎNG, KIỂM TRA THIẾT KẾ VHDL BẰNG MODELSIM
-----------------Testbench cua Alarm- component Alarm is
library IEEE; port (a,b,c : in std_logic;
use IEEE.STD_LOGIC_1164.ALL; F : out std_logic
entity Alarm_test is );
end component;
end Alarm _test;
signal ain,bin,cin,Fout : std_logic;
architecture test of Alarm_test is begin
type sample is record process
a,b,c: std_logic; begin
end record sample; for i in test_data'range loop
type sample_array is array (natural ain <= test_data(i).a;
range <>) of sample; bin <= test_data(i).b;
cin <= test_data(i).c;
constant test_data: sample_array :=
wait for 10 ns;
( end loop;
('0','0','0'),('0','0','1'),( wait;
'0','1','0'), end process;
('0','1','1'),('1','0','0'),( DUT: Alarm port map(ain, bin,cin,
'1','0','1'), Fout);
('1','1','0'),( '1','1','1') end;
);
07/01/2022 CMOS VLSI Design GV: ThS. Phạm Duy Khánh – BM KTĐT - Khoa Điện tử - TNUT 54 54
2.2.8. MÔ PHỎNG, KIỂM TRA THIẾT KẾ VHDL BẰNG MODELSIM

Kết quả kiểm tra thiết kế trên chương trình Modelsim
07/01/2022 CMOS VLSI Design GV: ThS. Phạm Duy Khánh – BM KTĐT - Khoa Điện tử - TNUT 55 55
2.2.9. QUY TRÌNH THỰC HIỆN BÀI TOÁN LOGIC SỐ DÙNG VHDL

Để thực hiện bài toán logic số đơn giản dùng VHDL ta phải trải qua các bước
cơ bản như sau:
Bước 1: Xác định số lượng các biến đầu vào và đầu ra, mô tả chúng trong Entity
Bước 2: Tối giản hàm logic (nếu muốn tiết kiệm tài nguyên)
Bước 3: Lựa chọn kiểu kiến trúc Architecture dựa trên quan hệ vào/ra
▪ Quan hệ trực tiếp: Dataflow, behavioral
▪ Gián tiếp qua các biến trung gian: behavioral
▪ Qua các khối chức năng con: Structural
Bước 4: Xây dựng chương trình VHDL
Bước 5: Mô phỏng kiểm chứng trên phần mềm (Modelsim)
Bước 6: Thực thi chương trình trên thiết bị CPLD hoặc kit FPGA cụ thể

07/01/2022 CMOS VLSI Design GV: ThS. Phạm Duy Khánh – BM KTĐT - Khoa Điện tử - TNUT 56 56
2.2.9. QUY TRÌNH THỰC HIỆN BÀI TOÁN LOGIC SỐ DÙNG VHDL
 Hệ thống cảnh báo an ninh (bằng chuông) trên ô tô kêu khi:
▪ Xe đang hoạt động nhưng quên không đóng cửa
▪ Xe đang hoạt động nhưng quên thắt dây an toàn
▪ Quên tắt đèn trong xe khi không dùng

Với quy ước các trạng thái của các biến logic như sau:

Tên biến Ký hiệu Điều kiện Hoạt động


Tín hiệu chuông A A=1 Chuông kêu
Chìa khóa K K=1 Chìa khóa trong ổ đề
Cửa D D=1 Cửa mở
Đèn L L=1 Đèn sáng
Dây an toàn S S=1 Dây an toàn được thắt

07/01/2022 CMOS VLSI Design GV: ThS. Phạm Duy Khánh – BM KTĐT - Khoa Điện tử - TNUT 57 57
2.2.9. QUY TRÌNH THỰC HIỆN BÀI TOÁN LOGIC SỐ DÙNG VHDL
 Thực hiện hàm logic cảnh báo chuông bằng các phần tử logic cơ bản :
▪ Sau khi lập bảng chân lý và tối giản của hàm A(K,D,L,S) như sau:

F ( K , D, L, S ) = KL + K S + KD F ( K , D, L, S ) = ( K + L)( K + D + S )

07/01/2022 CMOS VLSI Design GV: ThS. Phạm Duy Khánh – BM KTĐT - Khoa Điện tử - TNUT 58 58
2.2.9. QUY TRÌNH THỰC HIỆN BÀI TOÁN LOGIC SỐ DÙNG VHDL
 Xây dựng sơ đồ thực hiện mạch báo chuông bằng IC logic :

A( K , D, L, S ) = KL + K S + KD = KL + K S + KD = KL. K S .KD ( )

07/01/2022 CMOS VLSI Design GV: ThS. Phạm Duy Khánh – BM KTĐT - Khoa Điện tử - TNUT 59 59
2.2.9. QUY TRÌNH THỰC HIỆN BÀI TOÁN LOGIC SỐ DÙNG VHDL
 Thực hiện hàm logic cảnh báo chuông bằng NAND 2 đầu vào:

A( K , D, L, S ) = KL + K S + KD = KL + K S + KD = KL.K S .KD

07/01/2022 CMOS VLSI Design GV: ThS. Phạm Duy Khánh – BM KTĐT - Khoa Điện tử - TNUT 60 60
2.2.9. QUY TRÌNH THỰC HIỆN BÀI TOÁN LOGIC SỐ DÙNG VHDL
 Thực hiện hàm logic cảnh báo chuông bằng NOR 2 đầu vào:

F ( K , D, L, S ) = ( K + L)( K + D + S ) = ( K + L)( K + D + S ) =
F ( K , D, L, S ) = KL + K S + KD = KL + K S + KD = K + L + K + S + K + D =

= K +L+K +S +K +D
= ( K + L) + ( K + D + S ) = ( K + L) + ( K + D + S )

07/01/2022 CMOS VLSI Design GV: ThS. Phạm Duy Khánh – BM KTĐT - Khoa Điện tử - TNUT 61 61
2.2.9. QUY TRÌNH THỰC HIỆN BÀI TOÁN LOGIC SỐ DÙNG VHDL
 Thực hiện hàm logic cảnh báo chuông bằng VHDL theo 3 cấu trúc :
---------------------------------
library IEEE; Bước 1: Xác định số lượng các biến đầu vào
use IEEE.STD_LOGIC_1164.ALL; và đầu ra, mô tả chúng trong Entity
---------------------------------
Bước 2: Tối giản hàm logic
entity Alarm is
port (K : in std_logic; F ( K , D, L, S ) = KL + K S + KD
D : in std_logic;
L : in std_logic;
Bước 3: Lựa chọn kiểu kiến trúc Architecture
S : in std_logic; dựa trên quan hệ vào/ra
A : out std_logic Với ví dụ này ta thấy xây dựng dựa trên kiến
); trúc dataflow là thuận lợi nhất. Tuy nhiên ta
end Alarm;
vẫn có thể thiết kế VHDL theo hai kiến trúc
------------------------------------
còn lại.
architecture dataflow of Alarm is
begin Bước 4: Xây dựng chương trình VHDL
A <= ((not K)and L)or(K and (not S))or(K and D);
end dataflow;
07/01/2022 CMOS VLSI Design GV: ThS. Phạm Duy Khánh – BM KTĐT - Khoa Điện tử - TNUT 62 62
2.2.9. QUY TRÌNH THỰC HIỆN BÀI TOÁN LOGIC SỐ DÙNG VHDL
 Thực hiện hàm logic cảnh báo chuông bằng VHDL theo 3 cấu trúc :
architecture behavioral of Alarm is begin
process(K,D,K,S)
variable temp:std_logic_vector(3 downto 0);
begin
temp :=K&D&L&S;
if (temp = b"0010") then A <= '1';
elsif (temp = b"0011") then A <= '1';
elsif (temp = b"0110") then A <= '1';
elsif (temp = b"0111") then A <= '1';
elsif (temp = b"1000") then A <= '1';
elsif (temp = b"1010") then A <= '1';
elsif (temp = b"1100") then A <= '1';
elsif (temp = b"1101") then Â<= '1';
elsif (temp = b"1110") then A <= '1';
elsif (temp = b"1111") then A <= '1';
else A <= '0';
end if;
end process;
end behavioral;

07/01/2022 CMOS VLSI Design GV: ThS. Phạm Duy Khánh – BM KTĐT - Khoa Điện tử - TNUT 63 63
2.2.9. QUY TRÌNH THỰC HIỆN BÀI TOÁN LOGIC SỐ DÙNG VHDL
Dùng cấu trúc Structural
------------ Dinh nghia Not ARCHITECTURE AND_Dataflow OF AND_2 IS
LIBRARY IEEE; BEGIN
USE IEEE.STD_LOGIC_1164.ALL; output <= in1 AND in2;
ENTITY notgate IS PORT( END AND_Dataflow;
i: IN STD_LOGIC; ------- Dinh nghia OR 3 dau vao----------
o: OUT STD_LOGIC); LIBRARY ieee;
END notgate; USE ieee.std_logic_1164.ALL;
ARCHITECTURE Not_Dataflow OF notgate IS ENTITY OR_3 IS
BEGIN o <= NOT i; PORT ( in1, in2, in3: IN STD_LOGIC;
END Not_Dataflow; output: OUT STD_LOGIC);
------------ Dinh nghia AND 2 dau vao- END OR_3;
LIBRARY ieee; ARCHITECTURE OR_Dataflow OF OR_3 IS
USE ieee.std_logic_1164.ALL; BEGIN
ENTITY AND_2 IS output <= in1 OR in2 OR in3;
PORT ( in1, in2: IN STD_LOGIC; END OR_Dataflow;
output: OUT STD_LOGIC); ----------------------------
END AND_2;
07/01/2022 CMOS VLSI Design GV: ThS. Phạm Duy Khánh – BM KTĐT - Khoa Điện tử - TNUT 64 64
2.2.9. QUY TRÌNH THỰC HIỆN BÀI TOÁN LOGIC SỐ DÙNG VHDL
 Thực hiện hàm logic cảnh báo chuông bằng VHDL theo 3 cấu trúc :
library IEEE; ------------ Khai bao OR 3---------------
use IEEE.STD_LOGIC_1164.ALL; COMPONENT OR_3
--------------------------------- PORT ( in1, in2, in3: IN STD_LOGIC;
entity Alarm is output: OUT STD_LOGIC);
port (K : in std_logic; END COMPONENT;
------------ Khai bao AND 2-------------
D : in std_logic;
COMPONENT AND_2
L : in std_logic; PORT ( in1, in2: IN STD_LOGIC;
S : in std_logic; output: OUT STD_LOGIC);
A : out std_logic END COMPONENT;
); SIGNAL notK,notS,Out1,out2,out3: STD_LOGIC;
end Alarm; BEGIN
architecture structural of Alarm is notK: notgate PORT MAP (K, notK);
notS: notgate PORT MAP (S, notS);
------------ Khai bao not------------
andKL: AND_2 PORT MAP (notK,L,out1);
COMPONENT notgate andKS: AND_2 PORT MAP (K,notS,out2);
PORT( andKD: AND_2 PORT MAP (K,D,out3);
i: IN STD_LOGIC; output: OR_3 PORT MAP (out1,out2,out3,A);
o: OUT STD_LOGIC); end structural;
END COMPONENT;
07/01/2022 CMOS VLSI Design GV: ThS. Phạm Duy Khánh – BM KTĐT - Khoa Điện tử - TNUT 65 65
2.2.9. QUY TRÌNH THỰC HIỆN BÀI TOÁN LOGIC SỐ DÙNG VHDL
 Thực hiện hàm logic cảnh báo chuông bằng VHDL theo 3 cấu trúc :
Bước 5, Bước 6: Mô phỏng và nạp chương trình trên thiết bị thực

07/01/2022 CMOS VLSI Design GV: ThS. Phạm Duy Khánh – BM KTĐT - Khoa Điện tử - TNUT 66 66

You might also like