thietke ic baigiang.v1.0
TRANSCRIPT
![Page 1: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/1.jpg)
IC
Bộ môn Kỹ thuật Máy tính Viện Công nghệ thông tin và Truyền thông, ĐHBKHN
Msc. Nguyễn Đức Tiến
+84-91-313-7399
![Page 2: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/2.jpg)
Nắm bắt được kiến thức cơ bản và ứng dụng của các IC lập trình mô tả phần cứng được.
Nắm bắt được các nguyên lý lập trình mô tả phần cứng và các cấu trúc lập trình cơ bản, minh họa bằng ngôn ngữ VHDL..
Có kiến thức và kỹ năng thiết kế mạch số
Hiểu biết về nguyên lý hoạt động phần cứng của bộ vi điều khiển và có khả năng thiết kế bộ vi điều khiển.
2 http://dce.hut.edu.vn
![Page 3: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/3.jpg)
3 http://dce.hut.edu.vn
![Page 4: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/4.jpg)
1/2
Cứng hóa các ứng dụng mềm, tạo sản phầm ưu việt về tốc độ.
Hiểu rõ nguyên tắc hoạt động của bộ xử lý, làm căn bản giúp việc lập trình phần mềm, lập trình hệ thống trở nên hợp lý, logic hơn.
4 http://dce.hut.edu.vn
>>
NVIDIA Tegra INTEL Core i7
Đồ họa(Tính toán vector)
![Page 5: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/5.jpg)
2/2
Dễ dàng thiết kế các bo mạch xử lý số.
Nhanh chóng tạo ra các bộ xử lý mới, mạch số chuyên dụng dựa trên mã nguồn mở và tùy biến theo nhu cầu.
Khuynh hướng tạo ra các giải pháp tổng thể hardware/soft ware (Oracle & Sun, Google& Motorola Mobility), và các khối xử lý tăng tốc.
5 http://dce.hut.edu.vn
QuadPort H/I
HDMI2SDI
Card tăng tốc chuyên dụng
Chipset
chuyên
dụng
![Page 6: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/6.jpg)
1/2
Nguyên lý mạch tích hợp. Tống Văn On. NXB Lao động xã hội. 2007.
Thiết kế mạch số với VHDL & Verilog. Tống Văn On. NXB Lao động xã hội. 2007.
Digital VLSI Systems Design. Dr. S. Ramachandran. Springer. 2007.
Digital Integrated Circuits - A Design Perspective. Jan M. Rabaey, Anantha Chandrakasan, Borivoje Nikolic. Mc Graw Hill.
6 http://dce.hut.edu.vn
![Page 7: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/7.jpg)
2/2
Analysis and Design of Digital IC. David A.Hodges, Horace G.jackson, Resve A.Saleh. Mc Graw Hill.
The Design Warrior‟s Guide to FPGA. Clive Max Maxfield. 2004.
Circuit Design with VHDL. Volnei A. Pedroni. MIT Press. 2006.
Fundamentals Of Digital Logic With VHDL Design 2nd Edition. Stephen Brown, Zvonko Vranesic. McGraw Hill. 2005.
7 http://dce.hut.edu.vn
![Page 8: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/8.jpg)
FPGA4U, kit, usb-powered, altera, niosII & linux, http://fpga4u.epfl.ch/wiki/Main_Page
SecretBlaze, bộ xử lý RISC 32bit dựa trên MicroBlaze, Xilinx, mã mở VHDL, 5 công đoạn, cache, ngắt. http://www.lirmm.fr/~barthe/index.php/page/SecretBlaze.html
Các project và module mã nguồn mở http://www.opencores.org/
Các thủ thuật trên VHDL http://vhdlguru.blogspot.com/
8 http://dce.hut.edu.vn
![Page 9: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/9.jpg)
Phần I:
• Các linh kiện để thiết kế IC (3)
• Các qui trình sản xuất IC (1)
![Page 10: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/10.jpg)
IC, Integrated Circuit, là một mạch điện tử mà tất cả các thành phần đều được đặt trên một đế bán dẫn, không thể tách rời nhau được.
10 http://dce.hut.edu.vn/
Vi điều khiển Intel 8742: CPU 12MHz, RAM 128B, EPROM 2KB.
![Page 11: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/11.jpg)
Thực hiện một / vài chức năng điện tử cụ thể.
11 http://dce.hut.edu.vn/
Chức năng có thể lập trình được.
Thiết kế = IC chuẩn + custom IC (glue logic)
![Page 12: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/12.jpg)
Tất cả các thành phần của IC được sản xuất đồng thời và hàng loạt, chứ không phải từng IC đơn lẻ.
Ít tốn linh kiện.
Được tối ưu về không gian, 1 triệu transitor/mm2
Module hóa quá trình thiết kế mạch điện tử.
Giảm chi phí nghiên cứu, triển khai, nâng cấp...
Giảm giá thành thiết bị, chức năng.
12 http://dce.hut.edu.vn/
![Page 13: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/13.jpg)
Tiêu thụ ít năng lượng.
Được tối ưu hóa về tốc độ...
Đồng bộ và tin cậy.
Được kiểm thử bởi nhà sản xuất.
Tuổi thọ cao.
13 http://dce.hut.edu.vn
![Page 14: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/14.jpg)
1/2
Die: khuôn, chip sillicon.
Leadframe: khung dẫn, chứa các chân nối ra ngoài rắp ráp lên board dễ hơn
Wire: nối các chân IO trên die ra các chân tương ứng trên leadframe.
Vỏ: phủ kín, đóng gói leadframe & die bằng ceramic, plastic… bảo vệ, tản nhiệt.
14 http://dce.hut.edu.vn
![Page 15: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/15.jpg)
2/2
Liên kết khung dẫn
Liên kết khung dẫn (2)
15 http://dce.hut.edu.vn
![Page 16: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/16.jpg)
Vỏ - package - có nhiều hình dạng khác nhau.
16 http://dce.hut.edu.vn
Ball
Grid
Array
Dual
Inline
Package
Small
Outline
Package
Plastic
Leader
Chip
Carrier
Zigzag
Inline
Package
Tham khảo một số dạng vỏ
![Page 17: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/17.jpg)
1/2
Độ dài mỗi cạnh chừng vài mm.
Kích thước IC được đo bằng số cổng logic/transistor (cổng là đơn vị đo tương ứng với cổng NAND 2 đầu vào).
Xilinx Spartan II XC2S200, 540k đ, 200k cổng.
Intel Core i7, 6.6m đ, >1 tỷ cổng.
17 http://dce.hut.edu.vn
Cấu thành bởi các transistor CMOS. Một cổng NAND có 4 transistor.
![Page 18: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/18.jpg)
2/2
Quy trình xử lý N nm sẽ cho transistor nhỏ nhất có chiều dài N nm. Ví dụ, qui trình 28 nm.
Kích thước đặc trưng nhỏ nhất λ ≈ ½ chiều dài transistor nhỏ nhất.
Các bộ phận chức năng cấu thành IC được phân vùng rõ ràng. (FGPA hỗ trợ).
Intel Quad Core Intel Core i7 Intel Pentium 5 AMD Quad Core
![Page 19: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/19.jpg)
1/2
Sử dụng các transistor lưỡng cực, Bipolar
19 http://dce.hut.edu.vn
NPN PNP
Sử dụng các transistor có cực cổng kim loại, Metal Oxide Semiconductor
nMOS Kênh N Kênh P
![Page 20: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/20.jpg)
2/2
CMOS,
Complementary MOS
20 http://dce.hut.edu.vn
Các lớp
liên kết nối
![Page 21: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/21.jpg)
21 http://dce.hut.edu.vn
emitor collector
base
Transistor lưỡng cực Transistor MOSFET
![Page 22: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/22.jpg)
Mật độ tích hợp: tăng với tốc độ nhanh chóng
Cỡ nhỏ (Small Scale Integration)
Cỡ trung bình (Medium Scale Integration)
Cỡ lớn (Large Scale Integration)
Cỡ rất lớn (Very Large Scale Integration)
Hiệu năng: Tần số xung clock nhân đôi sau mỗi 3 năm
22 http://dce.hut.edu.vn
![Page 23: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/23.jpg)
Nhu cầu từ thực tế, từ các dự đoán trong tương lai. Ví dụ, cần RAM gấp đôi.
Đặc tả các nhu cầu trên phương diện kỹ thuật. Ví dụ, cần tăng độ rộng bus địa chi.
Thiết kế: mức đỉnh – logic, thiết kế mức RTL, Register Transfer Level
Tối ưu: về tốc độ, không gian, năng lượng, về công nghệ sản xuất ns.
Ứng dụng: Release To Menufacturer
23 http://dce.hut.edu.vn
Nhu cầu
Đặc tả
Thiết kế
Kiểm thử prototype
Tối ưu
Sản xuất
Kiểm thử
Ứng dụng
ASIC
![Page 24: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/24.jpg)
1/2
24 http://dce.hut.edu.vn
Tạo thỏi silicon
Cắt thành wafer
Mài bóng wafer
Oxi hóa wafer
Phủ cản quang
In litô
Rửa bề mặt
Phủ kim loại
Kiểm thử
Đóng gói
![Page 25: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/25.jpg)
25 http://dce.hut.edu.vn
Wafer thành phẩm
![Page 26: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/26.jpg)
2/2
Tạo cắt mài wafer
Cát và siliicon
Bài dịch tham khảo
Nhà máy
![Page 27: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/27.jpg)
Phần II:
Field Programmable Gate Array
Application Specific Integrated Circuit
• Tổng quan (1)
• Kiến trúc (2)
• Qui trình thiết kế FPGA, ASIC (1)
• Giới thiệu công cụ thiết kế và triển khai (4)
![Page 28: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/28.jpg)
1/4
1980s, VLSI xuất hiện thiết kế IC theo nhu cầu.
Độ phức tạp tăng 40% mỗi năm.
Nhu cầu thiết kế tăng 15% mỗi năm Mức độ tích hợp của PCB trên mỗi die
![Page 29: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/29.jpg)
2/4
Silicon, 2010
29 http://dce.hut.edu.vn
Mật độ
(Gb/cm2)
Tốc độ truy
xuất (ns)
DRAM 8.5 10
DRAM (logic) 2.5 10
SRAM (cache) 0.3 1.5
Mật độ
(Mgate/cm2)
Năng lượng
(W/cm2)
Xung đồng hồ
(GHz)
Custom 25 54 3
Std. Cell 10 27 1.5
Gate 5 18 1
Single-Mask GA 2.5 12.5 0.7
FPGA 0.3 4.5 0.25
Die Area: 2.5x2.5 cm
Voltage: 0.6 V
Technology: 0.07 m
![Page 30: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/30.jpg)
3/4
30 http://dce.hut.edu.vn
Intel 4004 (1971) - thiết kế thủ công
![Page 31: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/31.jpg)
4/4
ASIC ra đời so nhu cầu về các hoạt động thiết kế ngày càng tăng.
Hội nghị các vi mạch tùy biến theo khách hàng của IEEE đưa ra các tài liệu hướng dẫn phát triển custom IC.
Thiết kế = IC chuẩn + custom IC
Từ custom IC thuật ngữ Application Specific IC
31 http://dce.hut.edu.vn
![Page 32: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/32.jpg)
1/3
ASIC không đồng nhất với custom IC. IC chuẩn: ROM, RAM, DRAM, Processor, etc.
ASIC: chip cho đồ chơi biết nói, chip cho 1 vệ tinh, chip cho bộ xử lý dưới dạng cell cùng với mạch logic.
Qui tắc phổ biến: “Nếu một IC xuất hiện trong sách tra cứu, thì đó không phải là ASIC”.
ASIC, IC chuyên dụng.
Application Specific Standard Product.
![Page 33: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/33.jpg)
1/2
ASIC đem lại cơ hội sản xuất với số lượng lớn; các bộ phận được tiêu chuẩn hóa để nhanh chóng trở thành sản phẩm thương mại.
Giá thành giảm theo số lượng.
None Reducing Cost.
Quy trình Cost Down trong các nhà máy.
Hiệu quả kinh tế trong thiết kế Thực hiện prototype nhanh với số lượng thấp.
Thiết kế theo nhu cầu, chuyên sâu, số lượng lớn.
33 http://dce.hut.edu.vn
![Page 34: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/34.jpg)
2/2
Có công cụ CAD cần thiết để đạt được hiệu quả trong chiến lược thiết kế:
Thiết kế mức hệ thống: VHDL
Thiết kế mức vật lý, từ VHDL tới silicon, timing closure (Monterey, Magma, Synopsys, Cadence, Avant!)
Chiến lược thiết kế: Hierarchy - phân cấp; Regularity; Modularity - mô đun; Locality.
34 http://dce.hut.edu.vn
![Page 35: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/35.jpg)
Thiết kế là một quá trình liên tục cân đối các tham số đầu vào, để đạt được hiệu quả mong đợi.
35 http://dce.hut.edu.vn
• chức năng, thời gian, tốc độ, năng lượng
Hiệu năng
• chi phí sản xuất
Kích thước die
• lập lịch và chi phí nghiên cứu
Thời gian thiết kế
• lập lịch, chi phí nguồn lực, chi phí sản xuất
Test và Stability Test
![Page 36: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/36.jpg)
36 http://dce.hut.edu.vn
Ý tưởng thiết kế
Đặc tả thiết kế
Thiết kế hệ thống
HDL
Giả lập
Thiết kế mức cổng
Tổng hợp
Giả lập
Thư viện
cell
Layout
Kiểm tra Layout
Sản xuất
Kiểm thử chip
Sản phẩm
c := a + b;
if (c = 1) then cf := 1;
Simulink
Synopsys
Cadence
Novelus
![Page 37: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/37.jpg)
37 http://dce.hut.edu.vn
Mức thiết bị
Mức mạch
Mức cổng
Mức mô-đun
chức năng
Mức hệ thống
![Page 38: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/38.jpg)
1/2
38 http://dce.hut.edu.vn
Full
Custo
m I
C
• Thiết kế rất phức tạp, hàng trăm man-year
• ~ 25M gate
• Phải sản xuất với số lượng cực lớn mới
Cell
Base I
C
• Các cell là Flip-Flop, gate, hoặc bộ xử lý đã được định nghĩa trước, được tái sử dụng lại,
• Sản xuất với số lượng 100k sản phẩm/ năm P
rog
ram
able
Logic
Devic
e
• Dựa trên công nghệ ROM/PROM, cấu tạo chỉ gồm các lớp cổng AND, OR và một số Flip Flop.
• Sản phẩm khá đơn giản với khoảng 1K gate.
• Sản xuất đơn lẻ được
Ga
te A
rra
y
• Các trans tạo sẵn thảnh mảng, và nhà thiết kế thực hiện việc tạo các liên kết nối giữa chúng bằng cách sử dụng các thư viện cell và CAD.
• Sản xuất đơn lẻ được.
FPGA CPLD
![Page 39: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/39.jpg)
2/2
39 http://dce.hut.edu.vn
FPGA, PLD, CPLD được xếp vào nhóm các IC lập trình được bởi người dùng
![Page 40: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/40.jpg)
1/4
40 http://dce.hut.edu.vn
Phát sinh thứ 1:
Một khi chip ASIC càng mạnh thì thiết kế càng tinh vi, phức tạp, càng tiềm tàng những sai sót lớn.
Các phần mềm hỗ trợ, giả lập chưa thực sự phản ánh hết được hoạt động thực tế của hệ thống.
Để kiểm tra thiết kế, người kĩ sư buộc phải đặt các nhà sản xuất sản xuất chip đơn lẻ và kiểm tra trên các ứng dụng, môi trường thực tốn thời gian, và tiền bạc.
cần hệ nền kiểm thử phần cứng nhanh chóng.
![Page 41: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/41.jpg)
2/4
41 http://dce.hut.edu.vn
Năm 1984, Ross Freeman, Bernard Vonderschmitt, đồng sáng lập công ty Xillinx.
Năm 1985, Xilinx đưa ra dòng FPGA thương mại đầu tiên, XC2064. Năm 2006, Freeman được vinh danh tại National Inventors Hall of Fame vì sáng chế này.
FPGA dựa trên các công nghệ nền tảng như PROM và PLD, nhưng với kiến trúc mới hiệu quả hơn.
Các thiết kế IC được thử nghiệm prototype trên các chip FPGA ngay lập tức tiết kiệm thời gian và tiền bạc.
![Page 42: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/42.jpg)
3/4
42 http://dce.hut.edu.vn
Phát sinh thứ 2:
Các nhà sản xuất lớn chỉ cung cấp các chip thông dụng trên thị trường, với số lượng lớn. bỏ qua nhu cầu về các IC chuyên dụng có số lượng thấp, nhưng tổng nhu cầu thì rất lớn.
Phát sinh thứ 3:
Ban đầu, các chip lập trình được có giá thành khá cao và tốc độ chậm, chỉ sử dụng trong các phòng thí nghiệm.
Khi công nghệ sản xuất phát triển vượt bậc, thì các chip lập trình được ngày càng mạnh và rẻ ứng dụng đại trà.
![Page 43: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/43.jpg)
4/4
43 http://dce.hut.edu.vn
Hệ quả: Chân trời mới
FPGA không chỉ là chip prototype trong các phòng thí nghiệm, mà thực sự trở thành sản phẩm thường mại đại chúng.
Thị trường phần cứng được cung cấp một dòng sản phẩm có thể thiết kế và sử dụng được ngay.
Các công ty vừa nhỏ, các kỹ sư hoạt động độc lập, không phải lệ thuộc vào các IC của các nhà sản xuất lớn tự do sáng tạo.
![Page 44: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/44.jpg)
vs
44 http://dce.hut.edu.vn
CustomIC FPGA
Sản xuất nhỏ
Tối ưu tính năng
Chi phí chế tạo thấp
Sản xuất lớn
Tối ưu tốc độ, năng lượng…
Chi phí chế tạo lớn
![Page 45: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/45.jpg)
1/2
45 http://dce.hut.edu.vn
Flexibility & Expandability
31%
Best Performance (thoughput
speed) 15%
Lowest Cost 17%
Lowest Power
3%
Complete Solution
18%
Quality,
Reliability 9%
Easiest to use 4%
Other 3%
Nguyên nhân sử dụng chip ASIC prototyping
![Page 46: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/46.jpg)
1/2
46 http://dce.hut.edu.vn
Hard IP
Hard IP
Soft IP
Soft IP
Others
... ...
EDA
Tools
System On Chip IP-based
Platform-based
ED
A
Inte
gra
tor
Application specific integration platform
EDA
Tools
Derivative
Hard IP
Others
Soft IP EDA
Tools
![Page 48: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/48.jpg)
RCC, Reconfigurable Computing. Ví dụ: RAM, ROM, PLA, PAL.
FPGA với tính chất lập trình được cao, ưu việt, là đại diện của RCC.
48 http://dce.hut.edu.vn
Input: Địa chỉ
Output: Giá trị
Giá trị = f(Địa chỉ)
y = f(x)
![Page 49: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/49.jpg)
49 http://dce.hut.edu.vn
A B C Yêu cầu: F = AB = ABC + ABC
PAL thương mại
Lập
trình
Programable Array Logic (a)
Programable ROM (b)
![Page 50: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/50.jpg)
50 http://dce.hut.edu.vn
Programable Logic Array, cả ma trận AND và OR đều lập trình được.
Tiết kiệm dung lượng ma trận.
Bị hạn chế bởi số lượng các cổng AND khi số đầu vào của cổng OR lớn hơn số cổng AND.
Trễ truyền lan lớn hơn và mật độ tích hợp nhỏ.
![Page 51: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/51.jpg)
Generic Array Logic nâng cấp từ PAL, gồm một ma trận AND lập trình được (cấu tạo từ EEPROM) và ma trận OR cố định.
Tuy nhiên, các cổng OR nằm trong các macrocell được nối với flip-flop và các bộ dồn kênh để có thể chọn tín hiệu ra.
Tên gọi chung của các thiết bị như PAL, PLA, GAL… là Programable Logic Device
51 http://dce.hut.edu.vn
Ví dụ: Dùng GAL điều khiển
đèn giao thông:
![Page 52: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/52.jpg)
FPGA gồm 3 thành phần chính Khối logic – Logic Block (LB): đơn vị xử lý.
Khối Vào ra – IO cell: giao tiếp với bên ngoài.
Liên kết nối – Interconnection: liên kết các đơn vị xử lý.
Thành phần khác Buffer
ClockDll
…
52 http://dce.hut.edu.vn
Configurable
Logic Block
I/O Block Connec
t
Connect
![Page 53: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/53.jpg)
1/3
Cả 3 thành phần: khối logic, khối vào ra, liên kết nối, đều lập trình được.
Lập trình cho khối logic là hành động: “có kết nối hay không phần tử logic A với phần tử logic B?”
Lập trình cho khối vào ra là hành động: “có kết nối hay không đầu ra logic A với chuẩn ngoại vi B?”
Lập trình cho liên kết nối là hành động: “có kết nối hay không khối logic A với khối logic/vào ra B?”
53 http://dce.hut.edu.vn
![Page 54: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/54.jpg)
2/3
Với FPGA, lập trình là quá trình định tuyến giữa các phần tử logic, flipflop… đã được chế tạo cố định sẵn, để thực thi một tác vụ nào đó.
Một tuyến đều được chế tạo sẵn, và đính kèm một khóa đóng mở. Tuyến được thiết lập hoặc hủy, tương ứng với trạng thái khóa đóng hay mở.
Mỗi trạng thái của khóa đóng/mở ứng với một bit nhớ trạng thái 0/1 tương ứng.
Tập hợp các bít nhớ tạo thành bộ nhớ cấu hình cho FPGA.
Bảng định tuyến được lưu trữ trong bộ nhớ.
Công cụ EDA sẽ dịch HDL thành bảng định tuyến.
![Page 55: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/55.jpg)
3/3
55 http://dce.hut.edu.vn
Bộ nhớ cấu hình
HDL
• c := a + b;
• if (c == 1) then cf := 1;
RTL
•
BIT file
• 01000100
• 11010101
• 10001001
Phân tích
Ánh xạ vào
FPGA cụ thể
![Page 56: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/56.jpg)
Tất cả ASIC lập trình được, bao gồm FPGA, đều chứa các khối logic (cell logic) cơ bản giống nhau tạo thành dải.
56 http://dce.hut.edu.vn
LB
LB
LB
LB
LB
LB
LB
LB
LB
LB
I/O
Cell
I/O
Cell
I/O
Cell
I/O
Cell
I/O
Cell
I/O
Cell
I/O Cell I/O Cell I/O Cell
I/O Cell I/O Cell I/O Cell
Có 4 loại khối logic:
Dựa vào bảng tìm kiếm (LUT – Lookup Table) Xilinx
Dựa vào bộ ghép kênh (Multiplexers) Actel
Dựa vào PAL/PLA Altera
Transistor Pairs
![Page 57: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/57.jpg)
57 http://dce.hut.edu.vn
Mux 2x1 có thể
thực hiện được
các hàm bên S
0
1
MUX A0
A1
SA
Biểu diễn
mức
transistor
Cấu trúc cell logic ACT 1 (đơn module)
Cell ACT 1 chỉ có một module logic.
Cell ACT 2, 3 có nhiều module logic hơn và có Flip Flop riêng.
Cấu tạo Flip Flop
![Page 58: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/58.jpg)
1/3
Bảng tìm kiếm, LUT, Look-Up Table, là một SRAM có K đầu vào với 2K
bit nhớ, thực hiện được mọi hàm logic có K biến.
Thông thường, K = 4.
58 http://dce.hut.edu.vn
G3 G
Func.
Gen.
WE
G4
G2
G1
0
10 11 12 13
14 15
4 5 6 7
8 9
3 2
1 0 0 0 1 1 1 1 1 0 0 1 0 0 0 0 1
G4 G3 G2 G1
1
RAM 16bit
G3
G4
G2
G1
Tín hiệu ra của một LUT có thể quay trở lại, thành đầu vào của chính LUT đó, hoặc LUT khác.
Trong một LB, thường có 3 LUT và được gọi là bộ thực hiện hàm F, G và H.
![Page 59: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/59.jpg)
2/3
Các LUT F và G tương đương và độc lập với nhau, thực thi các hàm 4 biến và đưa kết quả tính toán ra ngoài CLB, hoặc nhớ vào FF.
Nếu phép toán có nhiều hơn 4 biến thì LUT F, G sẽ đưa kết quả tới LUT H để mở rộng thêm.
59 http://dce.hut.edu.vn
Flip-Flop đóng vai trò:
• Bit nhớ hoặc
• Chốt dữ liệu
Hai FF có thể set/reset đồng bộ/không đồng bộ, tích cực theo sườn âm/dương…
Cấu trúc cơ bản của LB dạng LUT
![Page 60: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/60.jpg)
3/3
60 http://dce.hut.edu.vn
Khối logic lập trình
được, CLB, của
XC4000 E/X
Số liệu đưa vào LB có thể được xử lý bởi các hàm 4 đầu vào, có thể được chốt ở thanh ghi, có thể được chọn kênh, hoặc bởi cả 3 thao tác trên.
![Page 61: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/61.jpg)
61 http://dce.hut.edu.vn
LE
(LB
) của A
ltera
Cyclo
ne I
I
![Page 62: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/62.jpg)
Còn được gọi là CrossPoint FPGA.
Số lượng cổng ít, ~ 4000
62 http://dce.hut.edu.vn
![Page 63: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/63.jpg)
FPGA kế thừa nhiều ý tưởng thiết kế của các sản phẩm trước sự quen thuộc trong kiến trúc.
Nhưng số chức năng, mức độ tích hợp, khả năng tính toán của từng đơn vị xử lý trong FPGA có khác nhau, gồm Coarse /kɔ:s/ , và Fine.
Coarse-grained: Đơn vị xử lý là một tập hợp của các PLD, các khối cấu hình được CLB, thực thi được hàm phức tạp, có yêu cầu tính toán lớn. Ví dụ: Actel Mux, Xilinx LUT.
Fine-grained: Đơn vị xử lý chỉ gồm các khối cấu hình được CLB nhỏ, thực thi các hàm logic đơn giản. Ví dụ Transistor Pairs.
63 http://dce.hut.edu.vn
![Page 64: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/64.jpg)
64 http://dce.hut.edu.vn
LB
LB LB
LB
LB
LB
LB LB LB
Ma trận đối xứng
Symmetrical Array LB
LB LB
LB
LB
LB LB
LB LB
LB
LB LB LB LB LB
Cấu trúc dòng
Row-based
Sea-of-Gates PLD
PLD
PLD
PLD
PLD
PLD
PLD
PLD PLD phân cấp
Hierarchical
(CPLD)
![Page 65: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/65.jpg)
1/3
Liên kết nối dài, tín hiệu clk liên thông toàn bộ dải.
Liên kết nối trực tiếp giữa 2 khối LB.
Liên kết nối đa năng gồm nhiều kết nối và các chuyển mạch.
65 http://dce.hut.edu.vn
LB
SM
LB
SM
Kết nối đa năng Kết nối trực tiếp Kết nối dài
SM Ma trận
chuyển mạch
![Page 66: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/66.jpg)
2/3
66 http://dce.hut.edu.vn
Kết nối dài
Kết nối trực tiếp Kết nối đa năng
![Page 67: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/67.jpg)
3/3
Phần lớn các kết nối tạo thành các lưới kết nối theo hàng và theo cột.
Giao cắt giữa các kết nối theo hàng và theo cột sẽ tập trung các điểm cần lập trình kết nối, tạo thành ma trận chuyển mạch (Switching Matrix), nằm phân tán trong FPGA.
67 http://dce.hut.edu.vn
SM
![Page 68: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/68.jpg)
68 http://dce.hut.edu.vn
LB LB
LB LB
LB LB
Kết nối dài
![Page 69: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/69.jpg)
69 http://dce.hut.edu.vn
Cyclone
low end
Arria
middle end
Stratix
high end
Virtex
high end
Arrix
middle end
Spartan
low end
![Page 70: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/70.jpg)
70 http://dce.hut.edu.vn
Xilinx 36%
Altera 31%
Actel 10%
Vantis 7%
Lattice 6%
Lucent 6%
QuickLogic 2% Cypress
2%
![Page 71: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/71.jpg)
Ngôn ngữ HDL phù hợp.
Bộ công cụ CAD, EDA phù hợp.
Ước lượng được số lượng các CLB cần thiết
Dự kiến số lượng các chân I/O cần thiết.
Điện áp hoạt động. Các FPGA mới sử dụng mức điện áp thấp LVTTL, LVCMOS, đòi hỏi phải chuyển đổi điện áp để tương thích với điện áp TTL, cung cấp một hoặc nhiều vùng sử dụng đồng thời đa mức điện áp.
Tốc độ FPGA.
Khả năng tài chính.
71 http://dce.hut.edu.vn
![Page 72: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/72.jpg)
Copyright (c) 10/2006 by NPB 72
1/4
Thiết kế hệ thống (System Design)
Tích hợp vào ra (I/O integration)
Đặc tả thiết kế (Design Specification)
Tổng hợp (Synthesis)
Kiểm tra thiết kế (Design Verification)
![Page 73: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/73.jpg)
Copyright (c) 10/2006 by NPB 73
2/4
Bước 1 - Thiết kế hệ thống Phần chức năng thực hiện trên FPGA
Phần chức năng này tích hợp (kết hợp) với phần còn lại của hệ thống như thế nào
Bước 2 - Tích hợp vào ra với phần còn lại của hệ thống
![Page 74: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/74.jpg)
Copyright (c) 10/2006 by NPB 74
3/4
Bước 3 - Đặc tả thiết kế
Mô tả chức năng của thiết kế bằng: Các trình soạn sơ đồ logic
Các ngôn ngữ đặc tả phần cứng
Kết hợp mô phỏng
Bước 4 - Tổng hợp logic
Giống bước Tổng hợp logic trong quy trình đầy đủ
Kết hợp tối ưu: trễ
năng lượng hao phí
![Page 75: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/75.jpg)
Copyright (c) 10/2006 by NPB 75
4/4
Bước 5 - Kiểm tra thiết kế
Thực hiện các mô phỏng, phân tích cuối cùng (RTL, thời gian…)
Xác định các thông số của ASIC đã thiết kế (tần số xung nhịp…)
Nạp chip và chạy thử trên hệ thống!
![Page 76: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/76.jpg)
1/3
76 http://dce.hut.edu.vn
Spactan II 200 Spactan II 300
PCI 32bits
RS232
Userguide.pdf
![Page 77: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/77.jpg)
2/3
77 http://dce.hut.edu.vn
ProASIC3 Evaluation Board
![Page 78: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/78.jpg)
1/2
IDE của nhà sản xuất FPGA.
Chỉ có nhà sản xuất mới thấu hiểu nguyên tắc hoạt động của FPGA của họ. chỉ có các IDE của nhà sản xuất mới routing, timing, cấu hình được cho FPGA.
EDA của bên thứ 3 chỉ xử lý mức logic, rồi gọi IDE của nhà sản xuất để đảm nhiệm mức vật lý.
78 http://dce.hut.edu.vn
Atera Xilinx Actel
![Page 79: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/79.jpg)
2/2
Một số gói chương trình của bên thứ 3: Leonardo Spectrum, CT tổng hợp của Mentor Graphics
Synplify, CT tổng hợp của Synplicity
ModelSim , CT mô phỏng của Mentor Graphics.
Active-HDL, CT thiết kế và mô phỏng của Aldec Active
79 http://dce.hut.edu.vn
![Page 80: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/80.jpg)
80 http://dce.hut.edu.vn
![Page 81: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/81.jpg)
• Tạo thực thể thiết kế bằng code mẫu, lấy từ Language Assistant.
• Tạo thực thể thiết kế, bằng giao diện Block Diagram.
• Tra cứu lỗi và xử lý “port mapping” trong quá trình thiết kế bằng Block
Diagram.
• Chạy giả lập mức logic,
• Cách đưa giá trị vào các tín hiệu để giả lập logic.
81 http://dce.hut.edu.vn
![Page 82: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/82.jpg)
Phần III:
Very high speed integrated circuit Hardware Description Language
• Giới thiệu các ngôn ngữ HDL (2)
• Cấu trúc mã nguồn VHDL (2)
• Mô hình lập trình VHDL
• Các phương pháp thiết kế
![Page 83: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/83.jpg)
1/3
Hardware Description Language, ngôn ngữ mô tả phần cứng.
C = A and B
A <= B
rising_edge(CLK)
C <= „1‟ 5V
A := B + C Module1(A);
Module(B);
A<=B;
Full
Adder Full
Adder Full
Adder
M1
M2
Mọi kết cấu phần cứng đều có thể biểu diễn dưới dạng các lệnh phần mềm, các hàm và thủ tục.
![Page 84: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/84.jpg)
2/3
Mô tả được kiến trúc xử lý tương tranh (đặc trưng riêng của phần cứng so với phần mềm).
C <= A and B;
L <= P and Q;
X <= C and L;
C
L X C <= A and B;
B <= C;
Sử dụng các lệnh tuần tự để mô phỏng xử lý song song của phần cứng dễ làm quen, dễ lập trình.
for (i=1; i<3; i++)
{
a[i]:= a[i] + b[i]
}
b b b a a a
a a a
+ thay 3
bằng J?
Xử lý tuần tự của
phần cứng biểu
diễn thế nào?
![Page 85: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/85.jpg)
3/3
Cho phép giả lập các điều kiện đầu vào để kiểm thử thiết kế phần cứng -> thực hiện test-driven, unitest.
Khi áp dụng source HDL lên 1 chip lập trình được nào đó thì các trình giả lập có thể tính toán chính xác độ trễ truyền lan, dạng sóng… tại mỗi điểm.
Gợi ý: nếu không chắc chắn về thiết kế mạch số từ các phần từ logic, có thể viết bằng VHDL rồi tham khảo phân tích RTL.
001100010
![Page 86: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/86.jpg)
Có 2 ngôn ngữ, được sử dụng rộng rãi và công nhận bởi IEEE:
VHDL
Verilog
Các ngôn ngữ khác như AHDL, JHDL, RHDL…
Ngoài HDL, còn có HVL – Hardware Verification Language như OpenVera,Superlog
86 http://dce.hut.edu.vn
![Page 87: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/87.jpg)
Là ngôn ngữ lập trình trừu tượng, đối lập với thiết kế mức logic, mức transistor.
Phù hợp với phương pháp thiết kế top-down.
Giảm thời gian thiết kế, kiểm thử, sản xuất…
Giảm chi phí kỹ thuật không lặp lại None Recurring Enginnering.
Tái sử dụng thiết kế.
Dễ debug, tính tài nguyên.
87 http://dce.hut.edu.vn
C <= A + B
chi phí
HDL
? cell ? tốc độ
? triger ? phần tử logic
![Page 88: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/88.jpg)
88 http://dce.hut.edu.vn
Mô tả phần cứng bằng HDL.
Kiểm thử nguyên lý bằng giả lập trên HDL.
Kiểm tra chi tiết bằng phân tích RTL.
Chọn IC lập trình được.
Gắn kết các chân IO của phần cứng HDL với IC.
Biên dịch phần cứng HDL theo IC.
Nạp phần cứng HDL lên IC.
![Page 89: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/89.jpg)
1/3
Very high speed integrated circuit Hardware Description Language
1980, ngôn ngữ HDL đầu tiên, VHDL được ra đời theo mệnh lệnh của bộ quốc phòng Mỹ.
VHDL dùng để ghi nhận cách hoạt động của các ASIC mà các công ty cung cấp sử dụng trong thiết bị quân sự giống đặc tả cú pháp tài liệu.
Bộ QP yêu cầu VHDL phải kế thừa cú pháp và các định nghĩa của ngôn ngữ Ada (mở rộng của Pascal) để tái sử dụng.
89 http://dce.hut.edu.vn
![Page 90: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/90.jpg)
2/3
1983, , , Intermetrics, góp kinh nghiệm về ngôn ngữ bậc cao và thiết kế top-down để phát triển VHDL.
1987, bộ QP tuyên bố: “Tất cả mạch điện tử số đều được mô tả trong VHDL”. VHDL cũng được công nhận là chuẩn IEEE 1076. Mọi hệ thống con điện tử của máy bay F-22 đều đặc tả bởi VHDL.
Lúc này, VHDL đã là một chuẩn công nghiệp, nhưng ít công cụ hỗ trợ.
90 http://dce.hut.edu.vn
![Page 91: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/91.jpg)
3/3
1996, các công cụ giả lập logic, có thể hiểu cú pháp VHDL xuất hiện nhanh chóng.
Sau đó, các công cụ tổng hợp, với đầu vào là VHDL, đầu ra là mô tả mạch phần cứng thực thi.
Chuẩn IEEE 1164 được bổ sung,với nhiều kiểu logic đa giá trị khác nhau (U, Z, X…) (Sẽ được thường xuyên sử dụng trong code VHDL)
01/2009, VHDL 4.0, còn gọi là VHDL 2008, là chuẩn IEEE 1076-2008
91 http://dce.hut.edu.vn
library IEEE;
IEEE.std_logic_1164.all;
VHDL
VHDL wiki
![Page 92: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/92.jpg)
1/2
Có tính định kiểu mạnh.
Không phân biệt chữ hoa, thường.
Cho phép tạo mảng với index tăng dần hoặc giảm dần. Ví dụ: bienx : out STD_LOGIC_VECTOR(2 downto 1)
Có thể đọc/ghi file, thường dùng để giả lập, tạo số liệu vào, và thẩm định kết quả.
Một người ít kinh nghiệm cũng có thể viết VHDL và giả lập thành công, nhưng không chắc đã tổng hợp được lên một thiết bị vật lý, hoặc vượt quá khả năng thực tế.
Người dùng có thể dùng các VHDL IDE như Altera Quatus, Xilinx ISE… để tạo sơ đồ RTL.
92 http://dce.hut.edu.vn
![Page 93: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/93.jpg)
2/2
Có thể chạy giả lập để xem dạng sóng tín hiệu với các testbench tương ứng.
Khi source VHDL được dịch dưới dạng “cổng và kết nối”, tức là đã được ánh xạ lên một thiết bị vật lý như CPLD, FPGA, thì đó chính là một phần cứng thực sự.
Phù hợp với thiết kế mức hệ thống, vì cho phép kiểm tra hành vi của hệ thống, giả lập mà không cần thông qua công cụ tổng hợp lên phần cứng.
Mô tả được tính tương tranh của phần cứng - concurrent system.
1 mã nguồn VHDL phù hợp với nhiều phần cứng.
93 http://dce.hut.edu.vn
![Page 94: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/94.jpg)
1/3
1983~1984, Phil Moorby và Prabhu Goel đã phát triển xong một ngôn ngữ HDL, và được Gateway Design Automation công bố với tên Verilog, cùng trình mô phỏng Verilog.
1985, ra mắt bản nâng cấp của ngôn ngữ và trình mô phỏng Verilog XL, có thể mô phỏng thiết kế trên 1 triệu cổng, dễ dàng debug, mô phỏng phần cứng và cả tác nhân kích thích.
1987, Verilog thỏa mãn mong đợi của các kỹ sư thiết kế và ngày càng phổ biến.
1989, mua lại Gateway.
94 http://dce.hut.edu.vn
![Page 95: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/95.jpg)
2/3
1990, Cadence chia ngôn ngữ Verilog và trình mô phỏng Verilog-XL thành các sản phẩm riêng biệt. công khai Verilog thành chuẩn mở, cạnh tranh với VHDL. Hầu hết các xưởng chế tạo ASIC đều hỗ trợ Verilog và sử dụng Verilog-XL làm trình mô phỏng.
1993, 85% thiết kế và thẩm tra ASIC dùng Verilog.
1995, trở thành chuẩn IEEE 1364, hay còn gọi là Verilog-95 Cùng lúc, Cadence phát triển Verilog-A dành cho mạch tương tự, và là một bộ phận của Verilog-AMS (Analog and Mixed-Signal)
95 http://dce.hut.edu.vn
![Page 96: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/96.jpg)
3/3
2005, là chuẩn IEEE 1634-2005, còn gọi là Verilog 2005.
SystemVerilog là tập bao quát hơn, gồm cả Verilog 2005 bên trong, với nhiều tính năng mới và khả năng hỗ trợ thẩm định thiết kế, mô hình hóa thiết kế (nhờ tích hợp Hardware Verification Language).
2009, SystemVerilog và Verilog đều được hợp nhất lại trong IEEE 1800-2009, còn gọi là SystemVerilog 2009.
96 http://dce.hut.edu.vn
![Page 97: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/97.jpg)
vs 1/4
Khả năng trừu tượng
97 http://dce.hut.edu.vn
VHDL
Verilog
System
Algorithm
RTL
Logic
Gate
Khả năng mô hình hóa
Kiểu dữ liệu • VHDL: có nhiều kiểu, hàm chuyển kiểu, người dùng tự
định nghĩa kiểu.
• Verilog: kiểu đơn giản, gần với phần cứng, người dùng không tự định nghĩa kiểu được.
![Page 98: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/98.jpg)
vs 2/4
Tái sử dụng thiết kế VHDL: các procedure và function có thể đặt trong một package và có thể được dùng lại trong thiết kế khác.
Verilog: các procedure và function phải đặt trong một module, trong các file riêng rẽ và được bao gồm bằng cách sử dụng chỉ dẫn biên dịch include.
Tính dễ học VHDL: do tính định kiểu mạnh nên có lợi cho người nhiều kinh nghiệm, và có nhiều cách để mô hình cùng một mạch số.
Verilog: tương đối dễ học với người mới bắt đầu. Tuy nhiên, các chỉ định biên dịch và ngôn ngữ PLI đính kèm lại không đơn giản.
98 http://dce.hut.edu.vn
![Page 99: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/99.jpg)
vs 3/4
Định thời Verilog cho khả năng liên kết thông tin giữa công cụ layout với công cụ tổng hợp/mô phỏng tốt hơn VHDL,nên khả năng biểu diễn định thời chính xác hơn.
Thư viện VHDL: thư viện là miền lưu trữ trong môi trường máy chủ các thực thể (entity), kiến trúc (architecture), gói (package) và cấu hình (configuration) biên dịch được.
Verilog: không tồn tại.
Tính dễ đọc VHDL: giống ngôn ngữ Ada, Pascal.
Verilog: giống ngôn ngữ C (50%C + 50%Ada)
99 http://dce.hut.edu.vn
![Page 100: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/100.jpg)
vs 4/4
Mô hình thông số hóa VHDL,Verilog đều cho phép. Ví dụ, một đối tượng tổng quát n-bit, rồi được cụ thể hóa với n = 8.
Sao chép cấu trúc VHDL: phát biểu generate sẽ tạo ra bản sao của các instance của cùng một đơn vị thiết kế hoặc một phần của thiết kế và kết nối một cách thích hợp.
Verilog: không có phát biểu tương tương.
100 http://dce.hut.edu.vn
![Page 101: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/101.jpg)
1/5
101 http://dce.hut.edu.vn
06/2011, http://blogs.mentor.com/verificationhorizons/blog/tag/vhdl/
Thiết kế
FPGA
thường dùng
VHDL.
Thiết kế
None FPGA
thường dùng
Verilog hoặc
System
Verilog
![Page 102: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/102.jpg)
2/5
102 http://dce.hut.edu.vn
06/2011, http://blogs.mentor.com/verificationhorizons/blog/tag/vhdl/
Ngoại trừ
System
Verilog, việc
sử dụng các
ngôn ngữ
HDL đang
giảm dần.
![Page 103: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/103.jpg)
3/5
103 http://dce.hut.edu.vn
06/2011, http://blogs.mentor.com/verificationhorizons/blog/tag/vhdl/
Kiểm thử
thiết kế
FPGA
thường dùng
VHDL.
Thiết kế
None FPGA
thường dùng
System
Verilog hoặc
Verilog
![Page 104: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/104.jpg)
4/5
104 http://dce.hut.edu.vn
06/2011, http://blogs.mentor.com/verificationhorizons/blog/tag/vhdl/
Duy nhất
System
Verilog đang
tăng dần
khuynh
hướng sử
dụng trong
thẩm định
thiết kế.
![Page 105: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/105.jpg)
vs 5/5
Số lượng tìm kiếm về VHDL nhiều hơn Verilog, nhưng sự khác biệt đang giảm dần.
105 http://dce.hut.edu.vn
![Page 106: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/106.jpg)
Thiết kế bằng sơ đồ sẽ được sinh tự động ra ngôn ngữ HDL, không đòi hỏi nhiều kỹ năng về HDL.
Thiết kế bằng sơ đồ mang tính trực quan hơn, khả năng tổng hợp được lên phần cứng cao hơn.
106
Viết trực tiếp mã nguồn bằng VHDL, Verilog.
Sơ đồ khối, sơ đồ cấu trúc
Sơ đồ trạng thái Kết hợp
http://dce.hut.edu.vn
![Page 107: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/107.jpg)
107 http://dce.hut.edu.vn
library IEEE;
use IEEE.STD_LOGIC_1164.all;
entity Mach_AND is
port(
a : in STD_LOGIC;
b : in STD_LOGIC;
o : out STD_LOGIC
);
end Mach_AND;
architecture Cach_Hoat_Dong_01 of Mach_AND is
begin
o <= a and b;
end Cach_Hoat_Dong_01;
![Page 108: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/108.jpg)
108 http://dce.hut.edu.vn
![Page 109: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/109.jpg)
109 http://dce.hut.edu.vn
![Page 110: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/110.jpg)
110 http://dce.hut.edu.vn
Sơ đồ trạng thái
• Thiết kế để xử lý một thuật toán, ít thực thể con.
• Thiết kế được mô tả với nhiều mệnh đề “nếu.. thì..”
• Thiết kế thực thể điều khiển, thực thể trọng tài, thực thể điều phối, phân xử.
• Phù hợp với thiết kế CU, phần xử ngắt, điều phối pipeline trong CPU.
Sơ đồ khối
• Thiết kế không có tính thuật toán, nhiều thực thể con.
• Thiết kế mang tính ”giao tiếp và phối phép” thực thể.
• Thiết kế mạch tổ hợp, thực thể xử lý tại ngõ vào/ra, schematic.
• Phù hợp với thiết kế ALU, thiết kế thanh ghi đa năng/chuyên dụng, thiết kể tổng thể toàn bộ CPU
Viết mã nguồn HDL
• Thiết kế nhỏ, dễ kiểm soát hoạt động; hoặc thuật toán, thiết kế có tính tuần tự cao.
• Giả lập môi trường hoạt động để test.
• Thiết kế tạm mức hệ thống (không có khả năng tổng hợp), sau đó được thay thể dần bằng các thiết kế khả tổng hợp, với tiếp cận top-down.
• Thiết kế FlipFlop, Mux, ALU,
![Page 111: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/111.jpg)
111 http://dce.hut.edu.vn
![Page 112: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/112.jpg)
Khai báo thư viện
Phần vỏ bên ngoài
Hoạt
động
xử
lý
library IEEE;
use IEEE.STD_LOGIC_1164.all;
entity Mach_AND is
port(
a : in STD_LOGIC;
b : in STD_LOGIC;
o : out STD_LOGIC
);
end Mach_AND;
architecture Cach_Hoat_Dong_01 of Mach_AND is
begin
o <= a and b;
end Cach_Hoat_Dong_01;
http://dce.hut.edu.vn
![Page 113: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/113.jpg)
Hoạt động xử lý void Mach_AND(…..)
{
o = a & b;
}
Khai báo thư viện #include <stdio.h>
Định nghĩa giao diện void Mach_AND(
bool a,
bool b,
bool & o
);
library IEEE;
use IEEE.STD_LOGIC_1164.all;
entity Mach_AND is
port(
a : in STD_LOGIC;
b : in STD_LOGIC;
o : out STD_LOGIC
);
end Mach_AND;
architecture Cach_Hoat_Dong_01 of Mach_AND is
begin
o <= a and b;
end Cach_Hoat_Dong_01;
http://dce.hut.edu.vn
![Page 114: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/114.jpg)
library IEEE;
use IEEE.STD_LOGIC_1164.all;
entity Mach_AND is
port(
a : in STD_LOGIC;
b : in STD_LOGIC;
o : out STD_LOGIC
);
end Mach_AND;
architecture Cach_Hoat_Dong_01 of Mach_AND is
begin
o <= a and b;
end Cach_Hoat_Dong_01;
http://dce.hut.edu.vn
![Page 115: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/115.jpg)
library IEEE;
use IEEE.STD_LOGIC_1164.all;
entity Mach_AND is
port(
a : in STD_LOGIC;
b : in STD_LOGIC;
o : out STD_LOGIC
);
end Mach_AND;
architecture Cach_Hoat_Dong_01 of Mach_AND is
begin
o <= a and b;
end Cach_Hoat_Dong_01;
architecture Cach_Hoat_Dong_02 of Mach_AND is
begin
o <= not ( (not a) or (not b) );
end Cach_Hoat_Dong_01;
Kiến trúc hoạt động thứ 1,
do công ty A phát triển.
Kiến trúc hoạt động thứ 2,
do công ty B phát triển.
Nem chua (entity):
•Thanh Hóa (archi),
•Hà Tây (archi) ,
•Lai Vung (archi),
http://dce.hut.edu.vn
![Page 116: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/116.jpg)
Package Gói
Entity Thực thể
Architecture (Dataflow)
Dạng luồng
Lệnh song song
Architecture (Behavioral)
Dạng hoạt động
Lệnh song song
Process
Lệnh tuần tự
Architecture (Structural)
Dạng cấu trúc
116 http://dce.hut.edu.vn
Generic Ports
Component
Thể hiện
Tôi mua túi
nhiều linh kiện,
trong đó có
6 con IC.
2 con IC có
14 chân vào ra
với 6 NOT TTL,
và 4 con IC có
8 chân vào ra
với
3 NOT CMOS.
Định nghĩa Entity
Định nghĩa Architecture, kiểu
Định nghĩa Process
![Page 117: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/117.jpg)
117 http://dce.hut.edu.vn
![Page 118: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/118.jpg)
2.1. Các đơn vị cơ bản của VHDL
Mã lệnh VHDL gồm 3 phần cơ bản sau: Khai báo LIBRARY (thư viện): gồm danh sách các thư viện sử dụng trong thiết kế (VD: ieee, std, work, …)
ENTITY (thực thể): mô tả các chân vào-ra của mạch
ARCHITECTURE (kiến trúc): mô tả hoạt động của mạch
LIBRARY: Tập hợp các đoạn lệnh thường được sử dụng
Cho phép sử dụng lại các đoạn mã lệnh và chia sẻ với các ứng dụng khác
Mã lệnh được viết theo khuôn dạng của các FUNCTION, PROCEDURE hay COMPONENT và được đặt bên trong các PACKAGE.
Copyright (c) 10/2006 by NPB 118
![Page 119: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/119.jpg)
Các đơn vị cơ bản của VHDL (tiếp)
Copyright (c) 10/2006 by NPB 119
![Page 120: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/120.jpg)
Nội dung chương 2
2.1. Các đơn vị cơ bản của VHDL
2.2. Khai báo thư viện (Library)
2.3. Thực thể (Entity) và thể hiện (Component)
2.4. Kiến trúc (Architecture)
2.5. Các ví dụ
Copyright (c) 10/2006 by NPB 120
![Page 121: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/121.jpg)
2.2. Khai báo thư viện (Library)
Cú pháp: LIBRARY library_name;
USE library_name.package_name.package_parts;
Thường sử dụng các thư viện sau: LIBRARY ieee;
USE ieee.std_logic_1164.all;
LIBRARY std;
USE std.standard.all;
LIBRARY work;
USE work.all;
Copyright (c) 10/2006 by NPB 121
![Page 122: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/122.jpg)
Khai báo thư viện (tiếp)
Các thư viện std và work ngầm định có sẵn, không cần khai báo.
Sử dụng thư viện ieee khi dùng các kiểu dữ liệu STD_LOGIC, STD_ULOGIC, …
Thư viện ieee gồm các gói (package): std_logic_1164: các mức logic STD_LOGIC và STD_ULOGIC
std_logic_arith:
Các kiểu dữ liệu SIGNED và UNSIGNED
Các thuật toán xử lý dữ liệu và các phép toán so sánh
Các hàm chuyển đổi dữ liệu
std_logic_signed: cho phép xử lý dữ liệu STD_LOGIC_VECTOR như là dữ liệu kiểu SIGNED
std_logic_unsigned: cho phép xử lý dữ liệu STD_LOGIC_VECTOR như là dữ liệu kiểu UNSIGNED
Copyright (c) 10/2006 by NPB 122
![Page 123: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/123.jpg)
Nội dung chương 2
2.1. Các đơn vị cơ bản của VHDL
2.2. Khai báo thư viện (Library)
2.3. Thực thể (Entity) và thể hiện (Component)
2.4. Kiến trúc (Architecture)
2.5. Các ví dụ
Copyright (c) 10/2006 by NPB 123
![Page 124: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/124.jpg)
2.3. Thực thể (Entity)
Các thành phần đặc trưng của VHDL
Thực thể là một khai báo, đặc tả giao diện của đối tượng thiết kế, qua đó, thực thế này trao đổi với thực thế khác trong cùng môi trường.
Thực thể ổ cứng, máy bay, điện thoại di động …
![Page 125: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/125.jpg)
2.3. Thực thể (Entity)
Giống định nghĩa giao diện của class trong C++ class Mach_And { int a; int CachHoatDong(int); };
Copyright (c) 10/2006 by NPB 125
![Page 126: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/126.jpg)
2.3. Thực thể (Entity)
Mỗi thực thể bao gồm hai thành phần Các thuộc tính, thông số (parameters)
Các đường kết nối vào, ra với bên ngoài
![Page 127: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/127.jpg)
Thực thể (Entity)
Cú pháp: ENTITY entity_name IS
GENERIC ( --
generic_name : generic_type := <Giá trị mặc định>;
... );
PORT (
port_name : signal_mode signal_type;
port_name : signal_mode signal_type;
...);
END entity_name;
Trong đó:
Signal mode: IN, OUT, INOUT, BUFFER
Signal type: BIT, STD_LOGIC, INTEGER, …
generic type: integer, time… Copyright (c) 10/2006 by NPB 127
![Page 128: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/128.jpg)
Ví dụ 1
Copyright (c) 10/2006 by NPB 128
![Page 129: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/129.jpg)
Ví dụ 2: Dùng khai báo generic
entity Eight_bit_register is
generic (
LENGTH : integer := 8 -- Giá trị mặc định
Fmax: integer := 50 -- Đơn vị MHz
);
port(
CLK : in STD_LOGIC;
DIN : in STD_LOGIC_VECTOR(LENGTH downto 0);
DOUT : out STD_LOGIC_VECTOR(LENGTH downto 0)
);
end Eight_bit_register;
![Page 130: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/130.jpg)
Ví dụ 2: (tiếp)
130
-- Nếu tạo component từ entity với độ
-- rộng bus mặc định, 8 bit.
U1 : eight_bit_register
port map( CLK => NET2342 );
-- Nếu tạo component từ entity với độ
-- rộng bus 5 bit.
U1 : eight_bit_register
generic map ( LENGTH => 5 )
port map( CLK => NET2342);
![Page 131: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/131.jpg)
Thể hiện (Component)
Thể hiện là một thực thể vật lý được đem vào sử dụng, được nhúng vào một kiến trúc của một thực thể khác.
Giống như khái niệm thể hiện trong class của C++ { Mach_And U1, Mach_And U2; U1(a,b,tmp); U2(tmp,c,o); return o; }
Ví dụ: U1 : Mach_And generic map ( LENGTH => 5 ) port map( CLK => NET2342);
Copyright (c) 10/2006 by NPB 131
![Page 132: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/132.jpg)
Nội dung chương 2
2.1. Các đơn vị cơ bản của VHDL
2.2. Khai báo thư viện (Library)
2.3. Thực thể (Entity) và thể hiện (Component)
2.4. Kiến trúc (Architecture)
2.5. Các ví dụ
Copyright (c) 10/2006 by NPB 132
![Page 133: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/133.jpg)
2.4. Kiến trúc (Architecture)
Kiến trúc của một thực thể cho biết cách hoạt động của thực thể đó.
Giống như lập trình cho các method trong class của C++. void Mach_And.CachHoatDong(bool a, bool b, bool &o) { o = a & b; }
Mỗi thực thể phải đi kèm với ít nhất 1 kiến trúc.
Mỗi thực thể có thể có nhiều kiến trúc, giống như hàm ảo trong các class của C++. Việc kiến trúc nào được dùng, sẽ tùy vào cấu hình lúc sử dụng của người phát triển.
Copyright (c) 10/2006 by NPB 133
Các thành phần đặc trưng của VHDL
![Page 134: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/134.jpg)
2.4. Kiến trúc (Architecture) (tiếp)
Cú pháp: ARCHITECTURE architecture_name OF entity_name IS
[declarations]
BEGIN
(code)
END architecture_name;
Ví dụ: ARCHITECTURE myarch1 OF nand_gate IS
BEGIN
x <= a NAND b;
END myarch1;
ARCHITECTURE myarch2 OF nand_gate IS
BEGIN
x <= NOT ( (NOT a) OR(NOT b) );
END myarch2;
Copyright (c) 10/2006 by NPB 134
![Page 135: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/135.jpg)
Các kiểu mô tả kiến trúc
Mô hình cấu trúc (Structural Style): gồm các thành phần (component) được liên kết với nhau.
Mô hình luồng dữ liệu (Dataflow Style): gồm các lệnh gán được thực hiện đồng thời.
Mô hình hoạt động (Behavioral Style): gồm các lệnh gán được thực hiện tuần tự.
Dạng kết hợp của 3 kiểu mô hình trên.
Mô hình cấu trúc và luồng dữ liệu gần với hoạt động thực tế của phần cứng hơn. Mô hình hoạt động dễ học, dễ quen hơn vì giống phần mềm.
Copyright (c) 10/2006 by NPB 135
Các thành phần đặc trưng của VHDL
![Page 136: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/136.jpg)
Nội dung chương 2
2.1. Các đơn vị cơ bản của VHDL
2.2. Khai báo thư viện (Library)
2.3. Thực thể (Entity)
2.4. Kiến trúc (Architecture)
2.5. Các ví dụ
Copyright (c) 10/2006 by NPB 136
![Page 137: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/137.jpg)
Ví dụ 1
Trigger D xúc phát sườn dương có tín hiệu Reset tích cực mức cao.
Nếu rst = 1 thì q = 0
Ngược lại: Nếu clk chuyển từ 0 lên 1 thì q = d
Còn lại thì hệ giữ nguyên trạng thái.
Copyright (c) 10/2006 by NPB 137
![Page 138: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/138.jpg)
Ví dụ 1 (tiếp)
1 ---------------------------------------
2 LIBRARY ieee;
3 USE ieee.std_logic_1164.all;
4 ---------------------------------------
5 ENTITY dff IS
6 PORT (d, clk, rst: IN STD_LOGIC;
7 q: OUT STD_LOGIC);
8 END dff;
9 ---------------------------------------
10 ARCHITECTURE behavior OF dff IS
11 BEGIN
12 PROCESS (rst, clk)
13 BEGIN
14 IF (rst='1') THEN
15 q <= '0';
16 ELSIF (clk'EVENT AND clk='1') THEN
17 q <= d;
18 END IF;
19 END PROCESS;
20 END behavior;
21 ---------------------------------------
Copyright (c) 10/2006 by NPB 138
![Page 139: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/139.jpg)
Ví dụ 2
Trigger D xúc phát sườn dương có đầu vào D là đầu ra của 1 cổng NAND 2 đầu vào.
Copyright (c) 10/2006 by NPB 139
![Page 140: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/140.jpg)
Ví dụ 2 (tiếp)
1 ---------------------------------------
2 ENTITY example IS
3 PORT ( a, b, clk: IN BIT;
4 q:OUT BIT);
5 END example;
6 ---------------------------------------
7 ARCHITECTURE example OF example IS
8 SIGNAL temp : BIT;
9 BEGIN
10 temp <= a NAND b;
11 PROCESS (clk)
12 BEGIN
13 IF (clk'EVENT AND clk='1') THEN q<=temp;
14 END IF;
15 END PROCESS;
16 END example;
17 ---------------------------------------
18 -- Có thể thay dòng 8 và 10 bằng q <= a NAND b ở dòng 13
Copyright (c) 10/2006 by NPB 140
![Page 141: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/141.jpg)
141 http://dce.hut.edu.vn
![Page 142: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/142.jpg)
Nội dung chương 3
3.1. Khái niệm chung về tín hiệu
3.2. Phân loại tín hiệu
3.3. Khai báo tín hiệu và phạm vi sử dụng
![Page 143: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/143.jpg)
3.1. Khái niệm chung về tín hiệu
Truyền thông là quá trình truyền thông tin từ đầu phát đến đầu thu
Có nhiều phương thức để truyền thông tin nhưng đều có một thành phần chung là
tín hiệu (Signal)
![Page 144: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/144.jpg)
Ví dụ tín hiệu
![Page 145: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/145.jpg)
Tín hiệu (Signal)
Tín hiệu trong các thiết bị điện tử là tín hiệu điện
![Page 146: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/146.jpg)
Tín hiệu (Signal)
Tầm quan trọng của tín hiệu điện (electrical signal)
Tín hiệu điện đóng vai trò rất quan trọng trong hoạt động của các thiết bị điện tử
-> VHDL: tín hiệu đóng vai trò rất quan trọng trong việc mô tả quá trình trao đổi dữ liệu giữa các mạch, các khối chức năng với nhau
![Page 147: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/147.jpg)
3.2. Phân loại tín hiệu
Phân loại theo số đường tín hiệu Đơn tín hiệu (single signal)
Đa tín hiệu (multiple signal)
Phân loại theo chức năng của tín hiệu Tín hiệu ghép nối với bên ngoài (External signal)
Tín hiệu bên trong thiết bị (Internal signal)
![Page 148: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/148.jpg)
Đơn tín hiệu & Đa tín hiệu
Đơn tín hiệu: một đường kết nối -> bit
Đa tín hiệu (bus, vector): nhiều đường kết nối -> bit_vector
![Page 149: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/149.jpg)
Độ rộng bus và trật tự các bit
bit_vector(0 to 7) bit_vector(7 downto 0)
![Page 150: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/150.jpg)
Tín hiệu trong & ngoài
Tín hiệu ngoài (External Signal): kết nối hệ thống với thế giới bên ngoài
Tín hiệu trong (Internal Signal): kết nối các thành phần bên trong hệ thống
![Page 151: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/151.jpg)
Tín hiệu trong & ngoài
External Signals: DATA, RESULT, EXTBUS, a, b, c…
Internal Signals: x, y, INTBUS
![Page 152: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/152.jpg)
3.3. Khai báo tín hiệu
ENTITY
ARCHITECTURE
External Signals
Internal Signals
Vị trí khai báo
![Page 153: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/153.jpg)
Khai báo External Signals
Port_name: Mode Port_Type
![Page 154: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/154.jpg)
Khai báo Internal Signals
Signal_name: Signal_Type
![Page 155: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/155.jpg)
Phạm vi sử dụng
Các tín hiệu khai báo trong một package có thể sử dụng trong tất cả các đối tượng sử dụng package đó
Các tín hiệu của interface (external signals) có thể sử dụng trong tất cả các architecture của interface đó
Các tín hiệu khai báo bên trong một architecture thì chỉ có thể sử dụng trong architecture đó
![Page 156: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/156.jpg)
Ví dụ
MUX5-1
![Page 157: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/157.jpg)
Ví dụ
entity mux5_1 is
port(u, v, w, x, y: IN std_logic_vector(2 downto 0);
s: IN std_logic_vector(2 downto 0);
m: OUT std_logic_vector(2 downto 0));
end mux5_1;
architecture structure1 of mux5_1 is
signal out1, out2, out3: std_logic_vector(2 downto 0);
begin
--Khai bao va noi chan cac component voi nhau
mux21_1: entity work.mux2_1(behavior)
port map(u, v, out1, s(0));
mux21_2: entity work.mux2_1(behavior)
port map(w, x, out2, s(0));
mux21_3: entity work.mux2_1(behavior)
port map(out1, out2, out3, s(1));
mux21_4: entity work.mux2_1(behavior)
port map(out3, Y, m, s(2));
end structure1;
![Page 158: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/158.jpg)
1/3
Trễ truyền lan của tín hiệu là khoảng thời gian cần thiết để tín hiệu đi từ đầu vào tới đầu ra và có trạng thái ổn định và hợp lệ.
158 http://dce.hut.edu.vn
out
t
in
out
ổn định
2ns
Trễ truyền lan tăng khi nhiệt độ môi trường hoạt động, điện áp nguồn cấp, kéo tải đầu ra tăng.
![Page 159: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/159.jpg)
2/3
Dây dẫn dài 6 inch, có trễ truyền lan khoảng 1ns.
Cổng logic, tùy công nghệ chế tạo, trễ khoảng 10ns~1ps.
159 http://dce.hut.edu.vn
Trễ trên một đường dẫn bằng tổng độ trễ của từng thành phần trên đường dẫn đó. T = Σ ti
Độ trễ của một IC được tính bằng độ trễ lớn nhất trong các đường dẫn giữa đầu vào và đầu ra.
15,2cm, trễ ~1 ns
Trễ trên đường dẫn AiCi+1 lớn nhất
![Page 160: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/160.jpg)
3/3
Độ trễ lớn nhất của một IC chính bằng chu kì hoạt động của IC đó quyết định tần số làm việc tối đa Fmax.
Độ trễ thay đổi theo từng cách tối ưu hóa thiết kế, IC vật lý (FGPA, CPLD, etc).
Độ trễ xác định được cụ thể trong quá trình tổng hợp lên phần cứng, không xác định được nếu chỉ tổng hợp mức logic.
160 http://dce.hut.edu.vn
Trễ trên đường dẫn AiCi+1 lớn nhất
![Page 161: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/161.jpg)
161 http://dce.hut.edu.vn
![Page 162: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/162.jpg)
Nội dung chương 4
4.1. Khai báo thực thể (entity)
4.2. Khai báo cổng (ports)
4.3. Khai báo thuộc tính, thông số(generic)
162 Copyright (c) 10/2006 by NPB
![Page 163: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/163.jpg)
4.1. Khai báo thực thể (entity)
Nên khai báo tên gợi nhớ
VHDL không phân biệt chữ hoa, thường
Đặt tên của thực thể phải tuân theo các quy tắc: Khai báo trên một dòng duy nhất
Phải bắt đầu bằng chữ cái
Chỉ có thể bao gồm chữ cái, chữ số và dấu gạch dưới
Dấu gạch dưới (underscores) không được sử dụng ở đầu, ở cuối hoặc sử dụng hai dấu liên tiếp nhau
Không cho phép sử dụng khoảng trắng
Không được sử dụng các từ khóa
163 Copyright (c) 10/2006 by NPB
![Page 164: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/164.jpg)
Kết thúc khai báo thực thể
Sử dụng câu lệnh end Cách 1: end entity;
Cách 2: end entity_name; (end ExampleEnt;)
Cách 3: end entity entity_name; -> Nên dùng
Cách 4: end; -> Không nên dùng
Copyright (c) 10/2006 by NPB 164
![Page 165: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/165.jpg)
Chú thích trong VHDL
Bắt đầu bằng hai dấu gạch ngang “- -”
Kết thúc ở cuối dòng
Copyright (c) 10/2006 by NPB 165
![Page 166: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/166.jpg)
4.2. Khai báo cổng (ports)
Mỗi cổng được khai báo sử dụng từ khóa port và các thành phần sau:
Từ khóa signal (optional)
Tên cổng, theo sau là dấu hai chấm “:”
Chế độ hoạt động của cổng (IN, OUT, INOUT…)
Loại cổng (Kiểu dữ liệu)
Khởi tạo giá trị cho cổng (optional)
Copyright (c) 10/2006 by NPB 166
![Page 167: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/167.jpg)
Ví dụ khai báo cổng (ports)
Copyright (c) 10/2006 by NPB 167
![Page 168: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/168.jpg)
Chế độ hoạt động của cổng (Port mode)
Chế độ hoạt động của cổng (Port mode) xác định chiều dữ liệu trên cổng đó
Các chế độ cổng thường sử dụng In: chế độ vào, cho phép đọc tín hiệu
Out: chế độ ra, cho phép xuất tín hiệu
Inout: chế độ hai chiều, cả vào và ra
Copyright (c) 10/2006 by NPB 168
![Page 169: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/169.jpg)
4.3. Khai báo generic
Phải khai báo trong khai báo thực thể (entity)
Là hằng số, được sử dụng để mô tả một thông số của hệ thống
Kích thước của hệ thống (độ rộng bus, …)
Tần số hoạt động
…
Khai báo generic: name: type :=value; Tên của thông số, theo sau là dấu hai chấm “:”
Kiểu dữ liệu
Giá trị mặc định (optional)
Copyright (c) 10/2006 by NPB 169
![Page 170: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/170.jpg)
Ví dụ khai báo generic
Copyright (c) 10/2006 by NPB 170
![Page 171: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/171.jpg)
171 http://dce.hut.edu.vn/
![Page 172: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/172.jpg)
Nội dung chương 3
3.1. Các kiểu dữ liệu có sẵn
3.2. Các kiểu dữ liệu do người dùng định nghĩa
3.3. Các kiểu dữ liệu dẫn xuất
3.4. Kiểu dữ liệu mảng
3.5. Kiểu dữ liệu bản ghi
3.6. Các kiểu dữ liệu có dấu và không dấu
3.7. Chuyển đổi kiểu dữ liệu
3.8. Các ví dụ
Copyright (c) 10/2006 by NPB 172
![Page 173: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/173.jpg)
Các kiểu dữ liệu của VHDL
VHDL cung cấp: Một số kiểu dữ liệu cơ sở (kiểu dữ liệu vô hướng – scalar)
Cách tạo nên các kiểu dữ liệu tổng hợp (composite)
Các kiểu dữ liệu vô hướng: Các kiểu số, các đại lượng vật lý, các kiểu liệt kê
Có rất nhiều kiểu dữ liệu cơ sở chuẩn đã được định nghĩa trước.
Ví dụ: enumeration, integer, physical(*), floating point(*). (*) = không tổng hợp được.
Các kiểu dữ liệu tổng hợp: Kiểu mảng (array)
Kiểu bản ghi (record)
Ngoài ra VHDL còn cung cấp cả kiểu access (pointer) và kiểu file (ta không nghiên cứu).
Copyright (c) 10/2006 by NPB 173
![Page 174: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/174.jpg)
• Cú pháp type type_name is type_definition; Trong đó type_definition có thể thuộc kiểu scalar, composite, access, file.
Ví dụ: type Sreg0_type is (S1, S2, S3, S4); type small is range 0 to 23;
174 http://dce.hut.edu.vn/
![Page 175: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/175.jpg)
5.1. Các kiểu dữ liệu có sẵn
Gói standard của thư viện std: kiểu BIT, BOOLEAN, INTEGER và REAL
Gói std_logic_1164 của thư viện ieee: kiểu STD_LOGIC và STD_ULOGIC
Gói std_logic_arith của thư viện ieee: định nghĩa kiểu SIGNED và UNSIGNED, cộng thêm nhiều hàm chuyển đổi dữ liệu, VD: conv_integer(p), conv_unsigned(p, b), conv_signed(p, b), conv_std_logic_vector(p, b) …
Gói std_logic_signed và std_logic_unsigned của thư viện ieee: chứa các hàm cho phép họat động với dữ liệu STD_LOGIC_VECTOR được thực hiện khi mà kiểu dữ liệu là SIGNED hoặc UNSIGNED
Copyright (c) 10/2006 by NPB 175
![Page 176: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/176.jpg)
Kiểu BIT và BIT_VECTOR
Kiểu BIT và BIT_VECTOR: 2 mức logic '0' và '1'
Ví dụ: SIGNAL x: BIT;
-- x được khai báo như một tín hiệu số kiểu BIT
SIGNAL y: BIT_VECTOR (3 DOWNTO 0);
-- y là một vector 4 bit, với bit trái nhất là MSB
SIGNAL w: BIT_VECTOR (0 TO 7);
-- w là một vector 8 bit, với bit phải nhất là MSB
Các phép gán tín hiệu (dùng toán tử <= ) sau là hợp lệ: x <= '1';
-- ' ' dùng cho 1 bit còn " " dùng cho vector
y <= "0111";
-- y là tín hiệu 4 bit có giá trị là "0111" (MSB = '0')
w <= "01110001";
-- w là tín hiệu 8 bit có giá trị là "01110001" (MSB = '1')
Copyright (c) 10/2006 by NPB 176
![Page 177: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/177.jpg)
Kiểu STD_LOGIC
Kiểu STD_LOGIC và STD_LOGIC_VECTOR gồm 8 giá trị sau:
'X' : không xác định
'0' : mức thấp
'1' : mức cao
'Z' : trở kháng cao
'W' : không xác định yếu
'L' : mức thấp (yếu)
'H' : mức cao (yếu)
Copyright (c) 10/2006 by NPB 177
![Page 178: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/178.jpg)
Kiểu STD_ULOGIC
Hệ thống logic 9 mức được giới thiệu trong chuẩn IEEE 1164 („U‟, „X‟, „0‟, „1‟, „Z‟, „W‟, „L‟, „H‟, „–‟)
STD_LOGIC là subtype của STD_ULOGIC (có thêm giá trị logic 'U' – Unresolved)
Copyright (c) 10/2006 by NPB 178
![Page 179: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/179.jpg)
Các kiểu dữ liệu có sẵn (tiếp)
Kiểu BOOLEAN: True và False
Kiểu INTEGER: số nguyên 32 bit (từ -2.147.483.647 đến +2.147.483.647)
Kiểu NATURAL: số tự nhiên (từ 0 đến +2.147.483.647)
Kiểu REAL: số thực (từ -1.0E38 đến +1.0E38)
Copyright (c) 10/2006 by NPB 179
![Page 180: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/180.jpg)
Các kiểu dữ liệu có sẵn (tiếp)
Kiểu dữ liệu vật lý: Biểu thị một đại lượng vật lý nào đó, chẳng hạn như là khối lượng, độ dài, thời gian hoặc điện áp.
Cú pháp khai báo một kiểu dữ liệu vật lý như sau: physical_type_definition ::= range_constraint
units
base_unit_declaration
{ secondary_unit_declaration }
end units
base_unit_declaration ::= identifier ;
secondary_unit_declaration ::= identifier =
physical_literal ;
physical_literal ::= [ abstract_literal ]
unit_name
Copyright (c) 10/2006 by NPB 180
![Page 181: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/181.jpg)
181 Copyright (c) 10/2006 by NPB
type CAPACITY is range 0 to 1E8
units
pF; -- picofarad
nF = 1000 pF; -- nanofarad
uF = 1000 nF; -- microfarad
mF = 1000 uF; -- milifarad
F = 1000 mF; -- farad
end units CAPACITY;
type DISTANCE is range 0 to 1E5
units
um; -- micrometer
mm = 1000 um; -- millimeter
in_a = 25400 um; -- inch
end units DISTANCE;
variable Dis1, Dis2 : DISTANCE;
Dis1 := 28 mm;
Dis2 := 2 in_a - 1 mm;
if Dis1 < Dis2 then ...
variable SomeVar : CAPACITY;
SomeVar := 1mF + 23pF;
Kiểu vật l lý không thể tổng hợp lên mạch cứng được.
![Page 182: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/182.jpg)
Copyright (c) 10/2006 by NPB 182
Các kí tự được biểu diễn ở trong cặp dấu nháy đơn, ví dụ: 'A' '*' ''' ' '
Nội dung của một xâu kí tự được biểu diễn trong cặp dấu nháy kép, ví dụ:
"A string"
"" – xâu rỗng
"A string in a string: ""A string"". " – xâu có chứa ký tự "
![Page 183: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/183.jpg)
183 Copyright (c) 10/2006 by NPB
x0 <= '0';
• -- bit, std_logic, or
std_ulogic value '0'
x1 <= "00011111";
• bit_vector,
std_logic_vector,
std_ulogic_vector, signed,
or unsigned
x3 <= "101111";
• -- Biểu diễn dạng nhị phân
x4 <= B"101111";
• Biểu diễn dạng nhị phân
x5 <= O"57";
• Số 57 theo hệ cơ số 8.
x6 <= X"2F";
•Số 2F theo hệ cơ số
16.
n <= 1200;
•Số nguyên.
m <= 1_200;
•Số nguyên, được phép
có dấu gạch dưới
y <= 1.2E-5;
•Số thực
q <= d after 10 ns;
•physical
![Page 184: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/184.jpg)
Copyright (c) 10/2006 by NPB 184
SIGNAL a: BIT;
SIGNAL b: BIT_VECTOR(7 DOWNTO 0);
SIGNAL c: STD_LOGIC;
SIGNAL d: STD_LOGIC_VECTOR(7 DOWNTO 0);
SIGNAL e: INTEGER RANGE 0 TO 255;
a <= b(5);
• Hợp lệ (cùng kiểu BIT)
b(0) <= a;
• Hợp lệ (cùng kiểu BIT)
c <= d(5);
• Hợp lệ (cùng kiểu STD_LOGIC)
d(0) <= c;
• Hợp lệ (cùng kiểu STD_LOGIC)
a <= c;
•Không hợp lệ (khác kiểu BIT &
STD_LOGIC)
b <= d;
•Không hợp lệ (khác kiểu BIT_VECTOR
& STD_LOGIC_VECTOR)
e <= b;
•Không hợp lệ (khác kiểu INTEGER &
BIT_VECTOR)
e <= d;
•Không hợp lệ (khác kiểu INTEGER &
STD_LOGIC_VECTOR)
![Page 185: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/185.jpg)
5.2. Các kiểu dữ liệu người dùng đn
Có 2 dạng dữ liệu người dùng có thể định nghĩa: integer (kiểu số nguyên)
enumerated (kiểu liệt kê)
Copyright (c) 10/2006 by NPB 185
![Page 186: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/186.jpg)
Kiểu số nguyên do NSD định nghĩa
Cú pháp: integer_type_definition ::= range_constraint
range_constraint ::= range range
range ::= simple_expression direction
simple_expression
direction ::= to | downto
Ví dụ: type byte_int is range 0 to 255;
type signed_word_int is range –32768 to 32767;
type bit_index is range 31 downto 0;
type my_integer is range -32 to 32;
type student_grade is range 0 to 100;
Copyright (c) 10/2006 by NPB 186
![Page 187: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/187.jpg)
Kiểu liệt kê do NSD định nghĩa
Cú pháp: enumeration_type_definition ::= ( enumeration_literal
{ , enumeration_literal } )
enumeration_literal ::= identifier | character_literal
Ví dụ: type logic_level is (unknown, low, undriven, high);
type alu_function is (disable, pass, add, subtract,
multiply, divide);
type octal_digit is ('0', '1', '2', '3', '4', '5',
'6', '7');
Copyright (c) 10/2006 by NPB 187
![Page 188: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/188.jpg)
Kiểu dữ liệu liệt kê (tiếp)
Kiểu character: chứa cả tên và ký tự type character is (
NUL, SOH, STX, ETX, EOT, ENQ, ACK, BEL,
BS, HT, LF, VT, FF, CR, SO, SI,
DLE, DC1, DC2, DC3, DC4, NAK, SYN, ETB,
CAN, EM, SUB, ESC, FSP, GSP, RSP, USP,
' ', '!', '"', '#', '$', '%', '&', ''',
'(', ')', '*', '+', ',', '-', '.', '/',
'0', '1', '2', '3', '4', '5', '6', '7',
'8', '9', ':', ';', '<', '=', '>', '?',
'@', 'A', 'B', 'C', 'D', 'E', 'F', 'G',
'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O',
'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',
'X', 'Y', 'Z', '[', '\', ']', '^', '_',
'`', 'a', 'b', 'c', 'd', 'e', 'f', 'g',
'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o',
'p', 'q', 'r', 's', 't', 'u', 'v', 'w',
'x', 'y', 'z', '{', '|', '}', '~', DEL);
Copyright (c) 10/2006 by NPB 188
![Page 189: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/189.jpg)
5.3. Các kiểu dữ liệu dẫn xuất
VD 1: các kiểu Subtype được dẫn xuất từ các kiểu dữ liệu ở các phần trước
SUBTYPE natural IS INTEGER RANGE 0 TO INTEGER'HIGH;
SUBTYPE my_logic IS STD_LOGIC RANGE '0' TO 'Z';
-- Có STD_LOGIC = ('X','0','1','Z','W','L','H','-')
-- Suy ra my_logic = ('0','1','Z')
SUBTYPE small_integer IS INTEGER RANGE -32 TO 32;
Copyright (c) 10/2006 by NPB 189
![Page 190: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/190.jpg)
Các kiểu dữ liệu dẫn xuất (tiếp)
VD 2: Các phép gán giữa Types và Subtypes SUBTYPE my_logic IS STD_LOGIC RANGE '0' TO '1';
SIGNAL a: BIT;
SIGNAL b: STD_LOGIC;
SIGNAL c: my_logic;
...
b <= a; --khong hop le ( BIT vs STD_LOGIC)
b <= c; --hop le (cung kieu STD_LOGIC)
c <= b; --hop le (cung kieu STD_LOGIC)
Copyright (c) 10/2006 by NPB 190
![Page 191: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/191.jpg)
5.4. Kiểu dữ liệu mảng
Mảng (Array) là tập hợp các phần tử có cùng kiểu.
Mảng có thể là mảng 1 chiều (1D), 2 chiều (2D) hoặc là mảng 1 chiều của mảng 1 chiều (1Dx1D)
Copyright (c) 10/2006 by NPB 191
![Page 192: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/192.jpg)
Kiểu mảng (tiếp)
Định nghĩa mảng: TYPE type_name IS ARRAY (specification) OF data_type;
Sử dụng mảng: SIGNAL signal_name: type_name [:= initial_value];
SIGNAL cũng có thể là CONSTANT hoặc VARIABLE
Ứng dụng: để mô hình các cấu trúc tuyến tính như RAM, ROM, etc.
Copyright (c) 10/2006 by NPB 192
![Page 193: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/193.jpg)
Ví dụ về khai báo mảng
Mảng 1Dx1D: TYPE row IS ARRAY (7 DOWNTO 0) OF STD_LOGIC;
TYPE matrix IS ARRAY (0 TO 3) OF row;
SIGNAL x: matrix;
TYPE matrix IS ARRAY (0 TO 3) OF STD_LOGIC_VECTOR(7 DOWNTO
0);
Mảng 2D: TYPE matrix2D IS ARRAY (0 TO 3, 7 DOWNTO 0) OF STD_LOGIC;
Khởi tạo mảng: ... :="0001"; -- mảng 1D
... :=('0','0','0','1') -- mảng 1D
... :=(('0','1','1','1'), ('1','1','1','0')); -- 1Dx1D / 2D
Copyright (c) 10/2006 by NPB 193
![Page 194: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/194.jpg)
Ví dụ về sử dụng mảng
TYPE row IS ARRAY (7 DOWNTO 0) OF STD_LOGIC;
TYPE array1 IS ARRAY (0 TO 3) OF row;
TYPE array2 IS ARRAY (0 TO 3) OF STD_LOGIC_VECTOR(7 DOWNTO 0);
TYPE array3 IS ARRAY (0 TO 3, 7 DOWNTO 0) OF STD_LOGIC;
SIGNAL x: row;
SIGNAL y: array1;
SIGNAL v: array2;
SIGNAL w: array3;
x(0) <= y(1)(2); x(1) <= v(2)(3); x(2) <= w(2,1);
y(1)(1) <= x(6); y(2)(0) <= v(0)(0); y(0)(0) <= w(3,3);
w(1,1) <= x(7); w(3,0) <= v(0)(3);
x <= y(0); x <= v(1); x <= w(2); x <= w(2,2 DOWNTO 0);
v(0) <= w(2,2 DOWNTO 0); v(0) <= w(2);
y(1) <= v(3);
y(1)(7 DOWNTO 3) <= x(4 DOWNTO 0);
v(1)(7 DOWNTO 3) <= v(2)(4 DOWNTO 0);
w(1,5 DOWNTO 1) <= v(2)(4 DOWNTO 0);
-- Lệnh tô đậm là các phép gán sai
Copyright (c) 10/2006 by NPB 194
![Page 195: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/195.jpg)
Ví dụ về gán mảng
Giả sử có một mảng được khai báo là: type a is array (1 to 4) of character;
Để gán giá trị cho các phần tử của mảng theo thứ tự 'f', 'o', 'o', 'd' ta có thể dùng cách viết như sau:
a := ('f', 'o', 'o', 'd');
a := (1 => 'f', 3 => 'o', 4 => 'd', 2 => 'o');
a := ('f', 4 => 'd', others => 'o');
Copyright (c) 10/2006 by NPB 195
![Page 196: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/196.jpg)
Ví dụ về mảng các cổng vào-ra
Không có kiểu dữ liệu có sẵn nhiều chiều
Một cách mô tả các chân vào-ra của mạch trong khai báo ENTITY là dùng mảng các vector
Không được phép dùng TYPE trong khai báo ENTITY.
=> Định nghĩa kiểu dữ liệu mới trong 1 PACKAGE
Copyright (c) 10/2006 by NPB 196
![Page 197: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/197.jpg)
Ví dụ mảng các cổng (tiếp)
------- Package: ---------------------------
LIBRARY ieee;
USE ieee.std_logic_1164.all;
PACKAGE my_data_types IS
CONSTANT b: INTEGER := 7;
TYPE vector_array IS ARRAY (NATURAL RANGE <>) OF
STD_LOGIC_VECTOR(b DOWNTO 0);
END my_data_types;
------- Main code: -------------------------
LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE work.my_data_types.all; -- user-defined package
---------------------------
ENTITY mux IS
PORT (inp: IN VECTOR_ARRAY (0 TO 3);
... );
END mux;
... ;
-------------------------------------------- Copyright (c) 10/2006 by NPB 197
![Page 198: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/198.jpg)
5.5. Kiểu dữ liệu bản ghi
Bản ghi (Record) là kiểu dữ liệu gồm các phần tử có kiểu khác nhau nhưng có liên kết với nhau.
Cú pháp khai báo kiểu bản ghi: record_type_definition ::=
record
element_declaration
{ element_declaration }
end record
element_declaration ::= identifier_list :
element_subtype_definition ;
identifier_list ::= identifier { , identifier )
element_subtype_definition ::= subtype_indication
Ứng dụng: để mô hình các gói dữ liệu.
Copyright (c) 10/2006 by NPB 198
![Page 199: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/199.jpg)
Ví dụ về kiểu bản ghi
Ví dụ 1: TYPE birthday IS RECORD
day: INTEGER RANGE 1 TO 31;
month: month_name;
END RECORD;
Ví dụ 2: type instruction is
record
op_code : processor_op;
address_mode : mode;
operand1, operand2: integer range 0 to 15;
end record;
Để truy cập vào trường f của bản ghi r, ta sử dụng cách viết r.f
Copyright (c) 10/2006 by NPB 199
![Page 200: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/200.jpg)
5.6. Kiểu dữ liệu có dấu và không dấu
Các kiểu SIGNED và UNSIGNED được định nghĩa trong gói std_logic_arith của thư viện ieee.
Ví dụ: SIGNAL x: SIGNED (7 DOWNTO 0);
SIGNAL y: UNSIGNED (0 TO 3);
UNSIGNED: "0101" biểu diễn số 5, "1101" biểu diễn số
13
SIGNED: "0101" biểu diễn số 5, "1101" biểu diễn số -3
Dùng với các phép toán số học, không dùng được với các phép toán logic.
Copyright (c) 10/2006 by NPB 200
![Page 201: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/201.jpg)
Ví dụ 1
LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE ieee.std_logic_arith.all;
...
SIGNAL a: IN SIGNED (7 DOWNTO 0);
SIGNAL b: IN SIGNED (7 DOWNTO 0);
SIGNAL x: OUT SIGNED (7 DOWNTO 0);
...
v <= a + b;
w <= a AND b;
Copyright (c) 10/2006 by NPB 201
![Page 202: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/202.jpg)
Ví dụ 2
LIBRARY ieee;
USE ieee.std_logic_1164.all;
...
SIGNAL a: IN STD_LOGIC_VECTOR (7 DOWNTO 0);
SIGNAL b: IN STD_LOGIC_VECTOR (7 DOWNTO 0);
SIGNAL x: OUT STD_LOGIC_VECTOR (7 DOWNTO 0);
...
v <= a + b;
w <= a AND b;
Copyright (c) 10/2006 by NPB 202
![Page 203: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/203.jpg)
Ví dụ 3
LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE ieee.std_logic_unsigned.all;
...
SIGNAL a: IN STD_LOGIC_VECTOR (7 DOWNTO 0);
SIGNAL b: IN STD_LOGIC_VECTOR (7 DOWNTO 0);
SIGNAL x: OUT STD_LOGIC_VECTOR (7 DOWNTO 0);
...
v <= a + b;
w <= a AND b;
Copyright (c) 10/2006 by NPB 203
![Page 204: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/204.jpg)
5.7. Chuyển đổi kiểu dữ liệu
VHDL không cho phép các phép toán trực tiếp ( số học, logic, …) tác động lên các dữ liệu khác kiểu nhau.
Gói std_logic_1164 của thư viện ieee cung cấp các hàm chuyển đổi kiểu dữ liệu.
Copyright (c) 10/2006 by NPB 204
![Page 205: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/205.jpg)
Các hàm chuyển đổi
conv_integer(p): chuyển đổi p thuộc kiểu INTEGER, UNSIGNED, SIGNED, hoặc STD_ULOGIC thành một giá trị INTEGER.
conv_unsigned(p, b): chuyển đổi p thuộc kiểu INTEGER, UNSIGNED, SIGNED, hoặc STD_ULOGIC thành một giá trị UNSIGNED với kích thước là b bit.
conv_signed(p, b): chuyển đổi p của kiểu INTEGER, UNSIGNED, SIGNED, hoặc STD_ULOGIC thành một giá trị SIGNED với kích thước là b bit.
conv_std_logic_vector(p, b): chuyển đổi p thuộc kiểu dữ liệu INTEGER, UNSIGNED, SIGNED, hoặc STD_LOGIC thành một giá trị STD_LOGIC_VECTOR với kích thước b bit.
Copyright (c) 10/2006 by NPB 205
![Page 206: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/206.jpg)
Ví dụ 1
TYPE long IS INTEGER RANGE -100 TO 100;
TYPE short IS INTEGER RANGE -10 TO 10;
SIGNAL x : short;
SIGNAL y : long;
...
y <= 2*x + 5;
y <= long(2*x + 5);
Copyright (c) 10/2006 by NPB 206
![Page 207: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/207.jpg)
Ví dụ 2
LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE ieee.std_logic_arith.all;
...
SIGNAL a: IN UNSIGNED (7 DOWNTO 0);
SIGNAL b: IN UNSIGNED (7 DOWNTO 0);
SIGNAL y: OUT STD_LOGIC_VECTOR (7 DOWNTO 0);
...
y <= CONV_STD_LOGIC_VECTOR ((a+b), 8);
Phép toán hợp lệ: a+b được chuyển đổi từ UNSIGNED thành một giá trị 8-bit STD_LOGIC_VECTOR, sau đó gán cho y.
Copyright (c) 10/2006 by NPB 207
![Page 208: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/208.jpg)
5.8. Các ví dụ
Ví dụ 1: cho các khai báo sau TYPE byte IS ARRAY (7 DOWNTO 0) OF STD_LOGIC;
TYPE mem1 IS ARRAY (0 TO 3, 7 DOWNTO 0) OF STD_LOGIC;
TYPE mem2 IS ARRAY (0 TO 3) OF byte;
TYPE mem3 IS ARRAY (0 TO 3) OF STD_LOGIC_VECTOR(0 TO 7);
SIGNAL a: STD_LOGIC;
SIGNAL b: BIT;
SIGNAL x: byte;
SIGNAL y: STD_LOGIC_VECTOR (7 DOWNTO 0);
SIGNAL v: BIT_VECTOR (3 DOWNTO 0);
SIGNAL z: STD_LOGIC_VECTOR (x'HIGH DOWNTO 0);
SIGNAL w1: mem1;
SIGNAL w2: mem2;
SIGNAL w3: mem3;
Copyright (c) 10/2006 by NPB 208
![Page 209: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/209.jpg)
Ví dụ 1 (tiếp)
Xét tính hợp lệ của các phép gán sau: x(2) <= a;
y(0) <= x(0);
z(7) <= x(5);
b <= v(3);
w1(0,0) <= x(3);
w1(2,5) <= y(7);
w2(0)(0) <= x(2);
w2(2)(5) <= y(7);
w1(2,5) <= w2(3)(7);
b <= a;
w1(0)(2) <= x(2);
w2(2,0) <= a;
Copyright (c) 10/2006 by NPB 209
![Page 210: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/210.jpg)
Ví dụ 1 (tiếp)
Xét tính hợp lệ của các phép gán sau: x <= "11111110";
x <= (OTHERS => '1');
x <= y;
y <= ('1','1','1','1','1','1','0','Z');
y <= (7 =>'0', 1 =>'0', OTHERS => '1');
y(2 DOWNTO 0) <= z(6 DOWNTO 4);
y(5 TO 7) <= z(6 DOWNTO 0);
z <= "11111" & "000";
z <= y;
z <= w3(1);
z(5 DOWNTO 0) <= w3(1)(2 TO 7);
Copyright (c) 10/2006 by NPB 210
![Page 211: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/211.jpg)
Ví dụ 1 (tiếp)
Xét tính hợp lệ của các phép gán sau: w1 <= ((OTHERS=>'Z'), "11110000" ,"11110000",
(OTHERS=>'0'));
w1 <= (OTHERS => '1');
w1(0, 7 DOWNTO 0) <="11111111";
w2 <= (OTHERS => 'Z');
w2(0, 7 DOWNTO 0) <= "11110000";
w2(0)(7 DOWNTO 0) <= "11110000";
w2 <= ((OTHERS=>'0'), (OTHERS=>'0'), (OTHERS=>'0'), (OTHERS=>'0'));
w3(2) <= y;
w3(1) <= "00000000";
w3(1) <= (OTHERS => '0');
w3 <= ("11111100", ('0','0','0','0','Z','Z','Z','Z',), (OTHERS=>'0'), (OTHERS=>'0'));
Copyright (c) 10/2006 by NPB 211
![Page 212: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/212.jpg)
Ví dụ 2
Copyright (c) 10/2006 by NPB 212
![Page 213: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/213.jpg)
Ví dụ 2 (tiếp)
Copyright (c) 10/2006 by NPB 213
![Page 214: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/214.jpg)
214 Copyright (c) 10/2006 by NPB
![Page 215: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/215.jpg)
Nội dung chương 6
6.1. Các toán tử
6.2. Các thuộc tính
6.3. Các thuộc tính do người dùng định nghĩa
6.4. Chồng toán tử
6.5. GENERIC
Copyright (c) 10/2006 by NPB 215
![Page 216: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/216.jpg)
6.1. Toán tử
VHDL cung cấp một số loại toán tử sau: Toán tử gán
Toán tử logic
Toán tử số học
Toán tử so sánh
Toán tử dịch
Copyright (c) 10/2006 by NPB 216
![Page 217: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/217.jpg)
Các toán tử gán
<= dùng gán giá trị cho SIGNAL
:= dùng gán giá trị cho VARIABLE, CONSTANT, GENERIC
=> dùng gán giá trị cho từng phần tử của kiểu vector hoặc dùng với từ khóa OTHERS
Copyright (c) 10/2006 by NPB 217
![Page 218: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/218.jpg)
VD về toán tử gán
SIGNAL x : STD_LOGIC;
VARIABLE y : STD_LOGIC_VECTOR(3 DOWNTO 0);
SIGNAL w : STD_LOGIC_VECTOR(0 TO 7);
x <= '1';
y := "0000";
w <= "10000000";
w <= (0 =>'1', OTHERS =>'0');
Copyright (c) 10/2006 by NPB 218
![Page 219: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/219.jpg)
Các toán tử logic
VHDL định nghĩa các toán tử logic sau: NOT, AND, OR, NAND, NOR, XOR, XNOR
Dữ liệu cho các toán tử này phải là kiểu: BIT, STD_LOGIC, STD_ULOGIC, BIT_VECTOR, STD_LOGIC_VECTOR, STD_ULOGIC_VECTOR.
Ví dụ: y <= NOT (a AND b);
y <= a NAND b;
Copyright (c) 10/2006 by NPB 219
![Page 220: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/220.jpg)
Các toán tử số học
Dùng cho các kiểu dữ liệu số như là:INTEGER, SIGNED, UNSIGNED, REAL.
Bao gồm: + Toán tử cộng
- Toán tử trừ
* Toán tử nhân
/ Toán tử chia
** Toán tử lấy mũ
MOD Phép chia lấy phần nguyên (Y MOD X có dấu của X)
REM Phép chia lấy phần dư (Y REM X có dấu của Y)
ABS Phép lấy giá trị tuyệt đối
Copyright (c) 10/2006 by NPB 220
![Page 221: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/221.jpg)
Toán tử so sánh
Có các toán tử so sánh sau: = So sánh bằng
/= So sánh khác nhau
< So sánh nhỏ hơn
> So sánh lớn hơn
<= So sánh nhỏ hơn hoặc bằng
>= So sánh lớn hơn hoặc bằng
Chỉ tác động lên 2 toán hạng có cùng kiểu
Kết quả là một giá trị Boolean
Các toán hạng ứng với phép so sánh bằng và khác (= và /=) có thể có kiểu bất kì. Với các kiểu có cấu trúc, 2 giá trị được coi là bằng nhau nếu tất cả các thành phần tương ứng của chúng là như nhau.
Các toán tử so sánh còn lại phải có toán hạng là kiểu vô hướng hoặc kiểu mảng 1 chiều của các kiểu rời rạc.
Copyright (c) 10/2006 by NPB 221
![Page 222: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/222.jpg)
Toán tử dịch
Cú pháp sử dụng toán tử dịch là:
<left operand> <shift operation> <right operand>
Trong đó: <left operand> : kiểu là BIT_VECTOR
<right operand> : kiểu là INTEGER
Có hai toán tử dịch: Sll Toán tử dịch trái
Rll Toán tử dịch phải
Ví dụ: signal x: bit_vector(bus_width-1 downto 0); x<= x sll 2;
Copyright (c) 10/2006 by NPB 222
![Page 223: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/223.jpg)
Toán tử ghép nối
Toán tử ghép nối (&) tác động lên các mảng 1 chiều để cho ra một mảng mới với nội dung của toán hạng bên phải được ghép nối theo sau nội dung của toán hạng bên trái.
Nó cũng được sử dụng để thêm 1 phần tử vào mảng hoặc hình thành 1 mảng từ 2 phần tử.
Toán tử này thường được sử dụng với kiểu xâu kí tự.
Copyright (c) 10/2006 by NPB 223
![Page 224: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/224.jpg)
Thứ tự ưu tiên của các toán tử
Thự tự ưu tiên giảm dần từ trên xuống: ** abs not
* / mod rem
+ (sign) – (sign)
+ – &
= /= < <= > >=
and or nand nor xor
Copyright (c) 10/2006 by NPB 224
![Page 225: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/225.jpg)
6.2. Các thuộc tính
Thuộc tính dữ liệu: d‟LOW Trả về giá trị nhỏ nhất của chỉ số mảng
d‟HIGH Trả về chỉ số lớn nhất của chỉ số mảng
d‟LEFT Trả về chỉ số bên trái nhất của mảng
d‟RIGHT Trả về chỉ số bên phải nhất của mảng
d‟LENGTH Trả về kích thước của vector
d‟RANGE Trả về khoảng chỉ số của vector
d‟REVERSE_RANGE Trả về khoảng chỉ số của vector theo thứ tự đảo ngược
Copyright (c) 10/2006 by NPB 225
![Page 226: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/226.jpg)
Ví dụ
Giả sử d là một vector được khai báo như sau: SIGNAL d : STD_LOGIC_VECTOR(0 TO 7)
Ta sẽ có: d'LOW = 0, d'HIGH = 7, d'LEFT = 0, d'RIGHT = 7, d'LENGTH = 8,
d'RANGE = (0 to 7), d'REVERSE_RANGE = (7 downto 0)
Các thuộc tính này có thể dùng trong các vòng lặp: FOR i IN RANGE (0 TO 7) LOOP ...
FOR i IN d'RANGE LOOP ...
FOR i IN RANGE (d'LOW TO d'HIGH) LOOP ...
FOR i IN RANGE (0 TO d'LENGTH-1) LOOP ...
Nếu tín hiệu có kiểu liệt kê thì: d’VAL(pos) Trả về giá trị phần tử tại vị trí pos
d’POS(val) Trả về vị trí phần tử có giá trị là val
d’LEFTOF(value) Trả về giá trị phần tử liền bên trái của value
d’RIGHTOF(value) Trả về giá trị phần tử liền bên phải của value
d'PRED(value) Trả về giá trị của phần tử có vị trí nhỏ hơn vị trí của value 1 đơn vị
d'SUCC(value) Trả về giá trị của phần tử có vị trí lớn hơn vị trí của value 1 đơn vị
d’VAL(row,colum) Trả về giá trị ở một vị trí đặc biệt Copyright (c) 10/2006 by NPB 226
![Page 227: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/227.jpg)
Các thuộc tính (tiếp)
Thuộc tính tín hiệu: Giả sử s là một SIGNAL thì ta có :
s‟EVENT : Trả về True khi một sự kiện xảy ra đối với s
s‟STABLE: Trả về True nếu không có sự kiện nào xảy ra đối với s
s‟ACTIVE: Trả về True khi s = 1
s‟QUIET <time>: Trả về True khi trong khoảng thời gian time không có sự kiện nào xảy ra
s‟LAST_EVENT: Trả về thời gian đã trôi qua kể từ sự kiện cuối cùng
s‟LAST_ACTIVE: Trả về thời gian đã qua kể từ lần s = 1 cuối cùng
s‟LAST_VALUE: Trả về giá trị của s ở sự kiện trước
Copyright (c) 10/2006 by NPB 227
![Page 228: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/228.jpg)
Ví dụ
4 câu lệnh sau kiểm tra sự kiện xuất hiện sườn dương của xung clk:
IF (clk'EVENT AND clk='1')...
IF (NOT clk'STABLE AND clk='1')...
WAIT UNTIL (clk'EVENT AND clk='1');
IF RISING_EDGE(clk)...
Copyright (c) 10/2006 by NPB 228
![Page 229: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/229.jpg)
Các thuộc tính do NSD định nghĩa
NSD có thể định nghĩa ra 1 thuộc tính mới theo cú pháp:
Khai báo thuộc tính: ATTRIBUTE attribute_name: attribute_type;
Mô tả thuộc tính: ATTRIBUTE attribute_name OF target_name: class IS value;
Trong đó: attribute_type: kiểu dữ liệu bất kỳ (BIT, INTEGER, STD_LOGIC_VECTOR, ...)
class: TYPE, SIGNAL, FUNCTION, ...
value: '0', 27, "00 11 10 01", ...
Copyright (c) 10/2006 by NPB 229
![Page 230: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/230.jpg)
Ví dụ 1
ATTRIBUTE number_of_inputs: INTEGER;
ATTRIBUTE number_of_inputs OF nand3: SIGNAL IS 3;
...
inputs <= nand3'number_of_pins; -- kết quả = 3
Copyright (c) 10/2006 by NPB 230
![Page 231: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/231.jpg)
Ví dụ 2
Mã hóa kiểu liệt kê: TYPE color IS (red, green, blue, white);
Ngầm định thì red = "00", green = "01", blue = "10", white = "11". Để thay đổi lại ta có thể dùng:
ATTRIBUTE enum_encoding OF color: TYPE IS "11 00 10 01";
Thuộc tính do người dùng định nghĩa có thể khai báo ở bất cứ vị trí nào, ngoại trừ trong thân của PACKAGE.
Copyright (c) 10/2006 by NPB 231
![Page 232: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/232.jpg)
6.4. Chồng toán tử
NSD có thể định nghĩa 1 toán tử mới có trùng tên với 1 toán tử đã được định nghĩa sẵn.
VD: Định nghĩa phép + giữa 1 số INTEGER và 1 BIT. FUNCTION "+" (a: INTEGER, b: BIT) RETURN INTEGER IS
BEGIN
IF (b='1') THEN RETURN a+1;
ELSE RETURN a;
END IF;
END "+";
Sử dụng: SIGNAL inp1, outp: INTEGER RANGE 0 TO 15;
SIGNAL inp2: BIT;
(...)
outp <= 3 + inp1 + inp2;
(...)
Copyright (c) 10/2006 by NPB 232
![Page 233: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/233.jpg)
6.5. GENERIC
GENERIC là cách tạo ra 1 tham số tĩnh dùng chung cho toàn bộ thiết kế.
=> Làm cho chương trình mềm dẻo hơn và tăng tính sử dụng lại.
GENERIC phải được khai báo trong ENTITY với cú pháp như sau:
GENERIC (parameter_name : parameter_type := parameter_value);
Copyright (c) 10/2006 by NPB 233
![Page 234: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/234.jpg)
Ví dụ
Tham số n sau đây luôn có giá trị ngầm định là 8: ENTITY my_entity IS
GENERIC (n : INTEGER := 8);
PORT (...);
END my_entity;
ARCHITECTURE my_architecture OF my_entity IS
...
END my_architecture;
Có thể khai báo nhiều hơn 1 tham số GENERIC trong 1 ENTITY.
GENERIC (n: INTEGER := 8; vector: BIT_VECTOR := "00001111");
Copyright (c) 10/2006 by NPB 234
![Page 235: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/235.jpg)
1/2
235 Copyright (c) 10/2006 by NPB
counter = 0
Init
/01/
Stop
/00/
Reset='1'
counter := 0counter := 0
Button='1' and
counter < Threshold
counter := counter + 1counter := counter + 1
counter >= Threshold
Go
/10/
StopLamp <='0'
GoLamp<='0'
StopLamp <='0'
GoLamp<='0'
counter:=counter -1
GoLamp <= '1'
counter:=counter -1
GoLamp <= '1'
StopLamp<='1'StopLamp<='1'
counter := counter * 2counter := counter * 2
architecture FSM_ARCH of entity_name is
attribute enum_encoding: string;
-- Khai báo các trạng thái
type Sreg_type is (
Stop, Init, Go
);
-- Nếu cần, chỉ định rõ giá trị binary của từng trạng thái
attribute enum_encoding of Sreg_type: type is
"00 " & -- Stop
"01 " & -- Init
"10" ; -- Go
-- Biến chỉ trạng thái hiện tại
signal Sreg: Sreg_type;
begin
process (CLK)
if CLK'event and CLK = '1' then
….. -- xem slide tiếp theo
end if;
end process;
end architecture FSM_ARCH
![Page 236: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/236.jpg)
Không có lệnh chuyển
trạng thái?
-- Quá trình biến đổi trạng thái
case Sreg is
-- Biến đổi từ State1 thành ??
when State1 =>
State Action
if (condition) then
Sreg <= State2;
Transition Action;
else if (condition) then
Transition Action;
else
Sreg <= Default State
end if
-- Biến đổi từ State2 thành ??
when State2 =>
-- Biến đổi từ trạng thái còn lại
when others =>
Sreg <= Init State; // or null;
end case
1/2
236 Copyright (c) 10/2006 by NPB
counter = 0
Init
/01/
Stop
/00/
Reset='1'
counter := 0counter := 0
Button='1' and
counter < Threshold
counter := counter + 1counter := counter + 1
counter >= Threshold
Go
/10/
StopLamp <='0'
GoLamp<='0'
StopLamp <='0'
GoLamp<='0'
counter:=counter -1
GoLamp <= '1'
counter:=counter -1
GoLamp <= '1'
StopLamp<='1'StopLamp<='1'
counter := counter * 2counter := counter * 2
giữ nguyên trạng thái
![Page 237: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/237.jpg)
Phần IV:
• Bộ dồn kênh / phân kênh
• ALU
• RAM/Thanh ghi đa năng
• Bộ nhớ chương trình
• Truy cập bộ nhớ chính
• Bộ định thời
• Thanh ghi chuyên dụng
• Bộ giải mã lệnh tuần tự
• Bộ giải mã lệnh rẽ nhánh
![Page 238: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/238.jpg)
238 http://dce.hut.edu.vn/
I0
I1
I2
I3 S
Process (I,S)
Begin
If (S='1') Then
O <= I(1);
Else
O <=I(0);
End If;
End Process;
Phần mềm: Lệnh rẽ nhánh If ~
Phần cứng: Mux/Demux
![Page 239: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/239.jpg)
239 http://dce.hut.edu.vn/
O0
O1
O2
S O3
Process (I,S)
Begin
If (S='1') Then
O(0) <= I;
Else
O(1) <=I;
End If;
End Process;
Phần mềm: Lệnh rẽ nhánh If ~
Phần cứng: Mux/Demux
![Page 240: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/240.jpg)
Các câu lệnh phần mềm chỉ có 2 dạng là:
Tuần tự Ins 0; Ins 1; Ins 2;
Rẽ nhánh If .. Then… Else
Tương ứng với phần cứng là:
Máy trạng thái FSM
Bộ ghép kênh
240 http://dce.hut.edu.vn/
Đồng thiết kế phần cứng, phần mềm. Vừa thiết kế phần cứng, vừa thiết kế trình biên dịch, mô phỏng tương ứng. Code VHDL tương đồng code C.
Khai thác ưu thế phần cứng: song song, etc.
![Page 241: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/241.jpg)
241 http://dce.hut.edu.vn
Xác định mục tiêu trước Thực hiện sau Thực hiện trước
Lựa chọn kết quả sau
Software:
lệnh 1;
lệnh 2;
if (S) then
lệnh 3
else
lệnh 4
end if
Hardware:
mạch 3 mạch 4
mạch 1
mạch 2
![Page 242: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/242.jpg)
1/3
242 http://dce.hut.edu.vn
Mô tả entity, biểu tượng Mô tả architecture
architecture adder_arch of adder is
signal TEMP_RESULT : std_logic_vector(7 downto 0);
signal TEMP_RESULT2 : std_logic_vector(1 downto 0);
begin
TEMP_RESULT <= ('0' & A(6 downto 0)) + ('0' & B(6 downto 0)) + CI;
TEMP_RESULT2 <= ('0' & A(7)) + ('0' & B(7)) + TEMP_RESULT(7);
Q <= TEMP_RESULT2(0) & TEMP_RESULT(6 downto 0);
CO <= TEMP_RESULT2(1);
OV <= TEMP_RESULT2(1) xor TEMP_RESULT(7);
end architecture;
A
B
Q
CO
OV
CI
![Page 243: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/243.jpg)
2/3
243 http://dce.hut.edu.vn
Phép trừ bằng cách dùng số bù 2 cần 2 lần thực hiện phép cộng trễ lớn.
Phép trừ bằng cách dùng số bù 1 chi cần 1 phép cộng trễ giảm ~ ½.
A - B = - ( ( - A ) + B )
= - ( A + 1 + B )
= - ( A + B ) - 1
= A + B + 1 - 1
= A + B
B
Q
CO
OV
CI
0
1
ADD/SUB
0
1
A
![Page 244: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/244.jpg)
3/3
Phép cộng/trừ 1 đơn vị được sử dụng nhiều.
244 http://dce.hut.edu.vn
Q
CO
OV
CI
0
1
ADD/SUB
0
1
A
Thêm một bộ ghép kênh để chọn giá trị cố định “1” cho toán hạng thứ 2.
B 0
1
ADD/INC
“1”
![Page 245: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/245.jpg)
DO = DI1 and DI2
245 http://dce.hut.edu.vn/
architecture and_arch of ander is
signal tmp: std_logic_vector(7 downto 0);
begin
tmp <= DI1 and DI2; -- Trung gian để tính cờ Zero
DO <= tmp;
ZF <= „1' when tmp = 0 else „0'; -- Tính cờ Zero
end architecture;
DO = DI architecture move_arch of mover is
Begin
DO <= DI;
end architecture;
![Page 246: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/246.jpg)
DO = DI1 shr 1
246 http://dce.hut.edu.vn/
architecture shr_arch of shr is
begin
DO <= '0' & DI(7 downto 1) ;
CF <= DI(0);
end architecture;
architecture rr_arch of rr is
begin
DO <= DI(6 downto 0) & D(7);
CF <= DI(7);
end architecture;
MSB LSB
C0
„0‟
DI(7)
DI(6)
DI(5)
DI(4)
DI(3)
DI(2)
DI(1)
DI(0)
DO(7)
DO(6)
DO(5)
DO(4)
DO(3)
DO(2)
DO(1)
DO(0)
CF
MSB LSB
C
DO = DI1 rr 1
![Page 247: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/247.jpg)
1/4
ALU thường là mạch tổ hợp với 2 thành phần: Các mạch thực hiện phép toán.
Các bộ ghép kênh.
Sơ đồ nguyên lý
247 http://dce.hut.edu.vn
0
1
2
3
+ -
<< >>
x
cls
opcode
a
b
opcode ALU
00x a x b
010 a + b
011 a –b
10x clear a
110 a << b
111 a >> b
![Page 248: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/248.jpg)
2/4
Ngoài ra, các bộ ghép kênh còn được sử dụng để phối ghép trạng thái cờ từ các phép toán, theo cách tương tự.
Nhận xét: cho dù mã lệnh chỉ yêu cầu thực hiện 1 phép toán, nhưng tất cả các mạch phép toán đều hoạt động.
Có thể tiết kiệm năng lượng bằng cách ngắt các mạch tính toán vô ích khỏi nguồn cấp.
Dùng chính opcode để điều khiển cấp nguồn điện.
Điều này về cơ bản không ảnh hưởng tới tốc độ tính toán, vì mọi mach phép toán đều thực hiện song song.
248
![Page 249: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/249.jpg)
3/4
Opcode dùng để chọn mạch tính toán trên ALU, chính là opcode của tập lệnh CPU, có thể với một chút thay đổi nhỏ.
Thiết lập bộ mã cho opcode (ví dụ phép + ứng với mã 010) có ảnh hưởng tới hiệu năng của ALU, vì sẽ làm tăng/giảm hiệu quả giải mã opcode.
Lưu ý thiết kế ALU: Một số mạch phép toán có thể thực hiện nhiều phép toán (ví dụ bộ cộng/trừ). Khi đó opcode cho các phép toán này cần sai khác bit càng ít càng tốt dễ tối thiểu hóa.
249 http://dce.hut.edu.vn/
![Page 250: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/250.jpg)
4/4
Ví dụ về 2 cách mã opcode khác nhau. Cách thứ 2 gây khó khăn cho việc tổ chức bộ cộng.
250 http://dce.hut.edu.vn/
opcode ALU
00x a x b
010 a + b
011 clear a
10x a –b
110 a << b
111 a >> b
opcode ALU
00x a x b
010 a + b
011 a –b
10x clear a
110 a << b
111 a >> b
Cách 1 Cách 2
![Page 251: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/251.jpg)
ALU nhằm thực hiện phép toán
PreALU nhằm cung cấp các toán hạng vào cho ALU
Toán hạng vào có thể lấy từ tập thanh ghi, bộ nhớ chính, etc.
251 http://dce.hut.edu.vn/
0
1
2
3
Thanh ghi AX
Thanh ghi BX
Bộ nhớ chính
Toán hạng 1
0
1
2
3
Toán hạng 2
![Page 252: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/252.jpg)
1/2
Thanh ghi dùng để lưu trữ thông tin bên trong CPU, có tốc độ cao nhất trong phân cấp bộ nhớ.
Có thể chứa cả dữ liệu và địa chỉ.
252 http://dce.hut.edu.vn/
Chỉ gồm bit nhớ, không có phần cứng đặc thù kèm theo.
CLK
DOUTDIN
RESETCE
U1
DFF
CLK
DOUTDIN
RESETCE
U2
DFF
DOUT(2:0)
CLK
Reset
DIN(7:0)
DIN
(7)
DO
UT
(7)
DIN
(6)
DO
UT
(6)
CLK
DOUTDIN
RESETCE
U3
DFF
DIN
(5)
DO
UT
(5)
CLK
DOUTDIN
RESETCE
U4
DFF
DIN
(4)
DO
UT
(4)
CLK
DOUTDIN
RESETCE
U5
DFF
CLK
DOUTDIN
RESETCE
U6
DFF
DIN
(3)
DO
UT
(3)
DIN
(2)
DO
UT
(2)
CLK
DOUTDIN
RESETCE
U7
DFF
DIN
(1)
DO
UT
(1)
CLK
DOUTDIN
RESETCE
U8
DFF
DIN
(0)
DO
UT
(0)
DIN(7:0)
DOUT(7:0)
CE
![Page 253: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/253.jpg)
2/2
253 http://dce.hut.edu.vn/
entity IPCore_GPR is
port (
CLR : in std_logic; -- xóa dữ liệu
CLK : in std_logic; -- đồng hồ
CE : in std_logic; -- cho phép hoạt động
--! cổng vào dữ liệu, nội dung cần nhớ
DATA : in std_logic_vector(7 downto 0);
--! cổng ra dữ liệu ~ nội dung đã nhớ
Q : out std_logic_vector(7 downto 0)
);
end entity;
architecture GPR_arch of IPCore_GPR is
begin
process (CLK)
begin
--! tại sườn dương của đồng hồ
if rising_edge(CLK) then
--! Nếu được phép hoạt động
if CE = '1' then
--! xóa dữ liệu đồng bộ
if CLR = '1' then
Q <= (others => '0');
else --! hoặc chốt dữ liệu
Q <= DATA;
end if; -- CLR
end if; -- CE
end if; -- clk
end process;
end GPR_arch;
![Page 254: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/254.jpg)
1/2
254 http://dce.hut.edu.vn/
0
1
2
3
Đơn vị nhớ
Dữ
liệu
ra
Địa chỉ
![Page 255: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/255.jpg)
2/2
255 http://dce.hut.edu.vn/
entity IPCore_rom is
port (
OE : in std_logic; -- cho phép dữ liệu
-- đường địa chỉ
ADDRESS : in std_logic_vector(2 downto 0);
-- đường đữ liệu
Q : out std_logic_vector(7 downto 0)
);
end entity;
architecture rom_arch of IPCore_rom is
begin
process(ADDRESS, OE)
variable ADDR_TEMP: std_logic_vector(1
downto 0);
begin
ADDR_TEMP := ADDRESS(1 downto 0);
if (OE = '1') then
if (ADDRESS(2) = '0') then
case (ADDR_TEMP) is
when "00" => Q <= "01100001";
when "01" => Q <= "01100010";
when "10" => Q <= "00110100";
when others => Q <= "00000000";
end case;
else
– mọi giá trị còn lại trong ROM = 0
Q <= "00000000";
end if;
else – nếu OE = „0‟
Q <= "ZZZZZZZZ"; -- trở kháng cao
end if;
end process;
end architecture;
![Page 256: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/256.jpg)
1/2
Có nhiều kiểu thiết kế khác nhau: đơn/đa cổng, chung/riêng đường địa chỉ/dữ liệu.
256 http://dce.hut.edu.vn/
0
1
2
3
Đơn vị nhớ
Dữ
liệu
ra
Địa chỉ
giải
mã
địa
chỉ
CE0
CE1
CE2
CE3
Dữ liệu vào
![Page 257: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/257.jpg)
2/2
257 http://dce.hut.edu.vn/
entity IPCore_ram is
port (
WE : in std_logic;
CLK : in std_logic;
ADDR : in std_logic_vector(3 downto 0);
DATA : in std_logic_vector(7 downto 0);
Q : out std_logic_vector(7 downto 0)
);
end entity;
architecture ram_arch of IPCore_ram is type IPCore_ram_mem_type is array (15 downto 0)
of std_logic_vector(7 downto 0);
signal IPCore_ram_mem: IPCore_ram_mem_type;
begin
process (CLK)
begin
if rising_edge(CLK) then
if (WE = '1') then
IPCore_ram_mem(CONV_INTEGER(ADDR))
<= DATA;
end if;
end if;
end process;
Q <=
IPCore_ram_mem(CONV_INTEGER(ADDR));
end architecture;
![Page 258: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/258.jpg)
Thanh ghi lệnh IR, Instruction Register, chứa mã lệnh đang được giải mã.
Đặc trưng phần cứng: đường dữ liệu vào được nối trực tiếp với bộ nhớ chương trình, và dữ liệu đầu ra đưa tới bộ giải mã lệnh.
258 http://dce.hut.edu.vn/
ROM
Thanh ghi lệnh
Giải mã
lệnh
![Page 259: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/259.jpg)
1/5
Thanh ghi bộ đếm chương trình PC, Program Counter hoặc Instruction Pointer, chứa địa chỉ của lệnh sẽ được thực hiện.
Phần lớn các lệnh trong chương trình là tuần tự địa chỉ của lệnh kế tiếp = địa chỉ của lệnh hiện tại + độ lệch địa chỉ giữa 2 lệnh đó. dữ liệu vào. Với bộ xử lý RISC, độ lệch này là không đổi. Thiết kế PC sẽ bao gồm một bộ cộng.
Với lệnh rẽ nhánh, PC phải ghi nhớ địa chỉ mới (địa chỉ nhảy tới) bất kỳ. dữ liệu vào.
Ngắt xảy ra rẽ nhánh tới 1 chương trình con phục vụ ngắt ở địa chỉ nào đó dữ liệu vào.
259 http://dce.hut.edu.vn/
![Page 260: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/260.jpg)
2/5
Rẽ nhánh do trở về từ chương trình con địa chỉ trở về sẽ được đưa vào PC từ Stack dữ liệu vào.
Do có nhiều nguồn dữ liệu vào nên thiết kế PC phải bao gồm một bộ ghép kênh.
260 http://dce.hut.edu.vn/
ROM
Thanh ghi PC
Địa chỉ
Mu
x
Nguyên nhân rẽ nhánh
+
Địa chỉ trở về từ Stack
Địa chỉ c.trình con ngắt
Địa chỉ do lệnh rẽ nhánh
Địa chỉ lệnh hiện tại
Độ lệch địa chỉ
Phân
xử
logic
![Page 261: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/261.jpg)
3/5
Bộ phân xử nhằm phân tích: opcode của mã lệnh hiện tại (chứa trong thanh ghi IR)
một số ngữ cảnh hiện tại như có ngắt không, kết quả giải mã lệnh hiện tại, etc.
Để ra quyết định điều khiển các thành phần còn lại.
261 http://dce.hut.edu.vn/
![Page 262: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/262.jpg)
4/5
262 http://dce.hut.edu.vn/
CCE
C E
C (1 0:0 )
C L K
D (1 0:0 )
P R E SE T
P R L
U1
BUC11CPPC
PR
CLK
Reset
C E
Q (1 0:0 )C L K
D (1 0:0 )
STACK1
REG11CNN
C E
Q (1 0:0 )C L K
D (1 0:0 )
STACK2
REG11CNN
CLK
CEST2
CEST1
INS(8:0)IB0(8:0)
STR(7:6)IB0(10:9)
PWRDN
PRPC
Tin hieu tich cuc khi dung hoat dong, tiet kiem nang luong
PRC(10:0)
C C E
C L K C E S T1
C E S T2
P W R D N
R e se t P C M S(1 :0 )
R E T
C A L L
P R P C
A ctInt P re Lo ad
PC_Logic
pclogic
Tin hieu tich cuc tai cuoi chu ki
thu nhat cua lenh re nhanh de den
chu ki thu 2 cho phep Buc nap gia
tri moi
IB0(INSNUM:0)
ST(10:0)
Reset
Reset se sua xoa SP1,SP2(khong nho ctc nua)
va reset lai bo dem
Reset
= not PWRDN
IB0(8 dow...
Convert
RET
CALL
CEST1
CEST2
CLK
INS(8:0)
S E L(1 :0 ) O B (IN S NU M :0 )
InterruptVectorTable
VectorTable
IB3(INSNUM:0)IntSel(1:0)
S E L(1 :0 )
IB 2 (IN SN U M:0 )
IB 1 (IN SN U M:0 )
IB 0 (IN SN U M:0 )
O B (IN S NU M :0 )
IB 3 (IN SN U M:0 )
U2
MUX11X04
ActInt
![Page 263: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/263.jpg)
5/5
Lưu ý: Tín hiệu reset giá trị trong thanh ghi PC sẽ đưa địa chỉ khởi động hệ thống.
263 http://dce.hut.edu.vn/
![Page 264: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/264.jpg)
1/2
Bộ đếm thời gian, Time Counter, đếm số chu kỳ xung nhịp.
Ứng dụng: tạo xung nhịp cố định với chu kỳ là số nguyên lần xung nhịp hệ thống, tạo hàm delay()
Thiết kế: Một bộ cộng để đếm số chu kỳ xung nhịp hệ thống.
Thanh ghi lưu trữ kết quả đếm hiện tại của bộ cộng.
Thanh ghi lưu trữ giá trị khởi tạo của bộ cộng.
Xác định thời điểm tràn bộ cộng.
264 http://dce.hut.edu.vn/
xung nhip hệ thống
system clock
Cờ tràn của bộ
đếm thời gian
![Page 265: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/265.jpg)
2/2
Lưu ý: Thanh ghi định thời là một thành phần của tập thanh ghi, nhận giá trị từ ALU.
Ngắt định thời sẽ được chuyển tới bộ giải mã xử lý, để gọi chương trình con phục vụ ngắt tương ứng.
265 http://dce.hut.edu.vn/
+ 1
Bộ cộng
Giá trị
hiện thời
Giá trị
nạp
0
1
AND /
OR Xác định
tràn
Cờ tràn Ngắt định thời
Thanh ghi
định thời
![Page 266: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/266.jpg)
1/2
Các tín hiệu ở ngõ vào của phần tử nhớ thay đổi thì cũng không ảnh hưởng tới tín hiệu ra của phần tử nhớ.
266 http://dce.hut.edu.vn/
Regs
CE
5V
0V t
2.5V 2.5V
5V
0V t
quá độ xác lập
vai trò
cách ly
lệnh n+1 lệnh n
![Page 267: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/267.jpg)
2/2
267 http://dce.hut.edu.vn/
out
t
in
out
chốt dữ liệu
2ns
R
Pipeline: thêm thanh
ghi để ngăn quá trình
quá độ của lệnh mới
với giá ổn định của
lệnh cũ.
→ vị trí đặt thanh ghi
? chốt dữ liệu
1.2ns
t
Rout
t
Rout
t
out
0.8ns
![Page 268: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/268.jpg)
1/2
268 http://dce.hut.edu.vn/
Công đoạn
Lệnh 1
Lệnh 2
Mạch số trước khi có pipeline
Mạch 1 nối tiếp mạch 2, … nối tiếp mạch 5
Mạch số khi đã tiến hành pipeline hóa
Mạch 3 Mạch 2 Mạch 1 Mạch 5 Mạch 4 R R R R
![Page 269: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/269.jpg)
2/2
269 http://dce.hut.edu.vn/
Bộ cộng
Bộ cộng
sau pipeline
với
3 công đoạn
![Page 270: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/270.jpg)
1/4
Mỗi bộ xử lý có một tập lệnh xác định.
Tập lệnh thường có hàng chục đến hàng trăm lệnh.
Mỗi lệnh là một chuỗi số nhị phân mà bộ xử lý hiểu được để thực hiện một thao tác xác định.
Các lệnh được mô tả bằng các ký hiệu gợi nhớ dạng text chính là các lệnh của hợp ngữ.
270 http://dce.hut.edu.vn/
![Page 271: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/271.jpg)
2/4
271 http://dce.hut.edu.vn/
MIPS 150
http://inst.eecs.berkeley.edu/~cs15
0/sp11/checkpoint_1/#block-ram-
generation
hoặc xem offline
![Page 272: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/272.jpg)
3/4
272 http://dce.hut.edu.vn/
PicoBlaze
http://bleyer.org/pacoblaze/picoblaze.pdf
hoặc xem offline
![Page 273: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/273.jpg)
4/4
273 http://dce.hut.edu.vn/
Có nhiều lệnh tương đồng với nhau về ý nghĩa của nhóm các bit nhị phân. MIPS 150 rt = temporary reg, rs = source reg, rd = destination reg, shamt = shift amount
Dạng lệnh: <opcode><operand>n
Các phân chia nhóm bít như vậy gọi là khuôn dạng lệnh.
Ví dụ: lệnh c = a + b, c = a - b thường cùng khuôn dạng lệnh.
Ví dụ: lệnh c = a + b và c = a + 1 thường khác khuôn dạng lênh.
![Page 274: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/274.jpg)
1/8
Bộ giải mã lệnh nhằm để biến đổi các opcode đầu vào thành các tín hiệu điều khiển chọn toán tử và chọn toán hạng đầu ra.
Tín hiệu điều khiển chọn toán tử thường là chân Select của các bộ ALU Mux, để cho biết phép toán cần thực hiện là gì.
Tín hiệu điều khiển chọn toán hạng là chân Chip Enable của các thanh ghi và bộ nhớ để cho biết kết quả phép toán sẽ được lưu trữ vào đâu.
274 http://dce.hut.edu.vn/
opcode
Giải mã
lệnh CE của Reg A
CE của Reg B
CE của bộ nhớ chính
Chọn toán tử của ALU
![Page 275: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/275.jpg)
2/8
275 http://dce.hut.edu.vn/
Opcode của tập lệnh thường bao gồm: các sub opcode chọn toán tử của ALU.
và các opcode cho các lệnh không dùng tới ALU như rẽ nhánh, etc.
Nhiều lệnh trong tập lệnh có thể chỉ tương ứng với một toán tử duy nhất trong ALU. Ví dụ, phép rd = rs + 10 và phép rd = rs + rt với ALU là như nhau. phải biến đổi opcode của lệnh một chút, trước khi gửi tới chân chọn toán tử của ALU
opcode Giải mã
khuôn dạng ALU
Khuôn dạng 1?
Khuôn dạng 2?
Khuôn dạng 3?
![Page 276: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/276.jpg)
Opcode(31:0)
Opcode(31)
Opcode(30)
Opcode(29)
Opcode(28)
Opcode(27)
Opcode(26)
R_type
Opcode(31)
Opcode(30) Load_Store
Opcode(31)
Opcode(30)
Opcode(29)I_type
Xu ly truong hop lenh JR va JALR
Jump_Branch
Opcode(5)
Opcode(4)
Opcode(3)
Opcode(2)
Opcode(1)
Lenh JR / JALR
3/8
Giải mã khuôn dạng lệnh MIPS
276 http://dce.hut.edu.vn/
![Page 277: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/277.jpg)
4/8
Trong một khuôn dạng, ý nghĩa và kích thước của các nhóm bit là giống nhau. chung cách giải mã dùng chung module giải mã.
Các lệnh cùng khuôn dạng thì thường chung đặc tính điều khiển như thay đổi cờ, rẽ nhánh, etc.
277 http://dce.hut.edu.vn/
3 bit 1 bit 2 bit 2 bit Khuôn dạng 1
3 bit 2 bit 3 bit Khuôn dạng 2
3 bit 4 bit Khuôn dạng 3 1 bit
![Page 278: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/278.jpg)
5/8
Trong mã lệnh, chuỗi bit chứa thông tin về toán hạng nguồn sẽ được gửi tới các bộ mux để chọn toán hạng đầu vào cho ALU.
278 http://dce.hut.edu.vn/
0
1
2
3
Thanh ghi AX
Thanh ghi BX
Bộ nhớ chính
Toán hạng 1
0
1
2
3
Toán hạng 2
Opcode cũng có thể là chứa luôn toán hạng theo phương pháp địa chỉ tức thì. Ví dụ c = a + 112.
Với toán hạng ngầm định thì cần tiến hành giải mã theo qui tắc ngầm định đã được đặc tả.
112 opcode
![Page 279: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/279.jpg)
6/8
Bộ giải mã lệnh còn thực hiện các công việc: Điều khiển các quá trình song song bên trong bộ xử lý.
Điều khiển các ngắt (Vì ngắt cũng chỉ là một lệnh rẽ nhánh đặc biệt)
Điều khiển rẽ nhánh.
279 http://dce.hut.edu.vn/
![Page 280: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/280.jpg)
7/8
Lệnh rẽ nhánh cần được xử lý trong 2 chu kỳ xung nhịp.
Các vấn đề phát sinh: 1. Lệnh rẽ nhánh không sử dụng tới ALU. Vậy ALU làm
gì trong lúc lệnh rẽ nhánh thực hiện?
2. Trong lúc rẽ nhánh, các lệnh đang tồn tại dở trong ống lệnh pipeline sẽ phải xử trí thế nào?
3. Ống lệnh có 5 công đoạn. Vậy khi lệnh đầu tiên sau rẽ nhánh mới chỉ nằm ở công đoạn đầu tiên, các công đoạn sau sẽ làm gì?
280 http://dce.hut.edu.vn/
![Page 281: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/281.jpg)
8/8
Nguyên tắc xử lý rẽ nhánh: Đánh dấu các chu kỳ rẽ nhánh để có thể nhận biết được CPU đang ở giai đoạn nào của lệnh rẽ nhánh.
Nếu một thành phần nào đó của CPU không được dùng đến, (ví dụ ALU, cá công đoạn sau) thì phải chèn lệnh NOP vào các thành phần đó (ví dụ NOP là lệnh trung tính).
Với ALU: bộ giải mã phải đưa tín hiệu chọn toán tử NOP tới ALU.
Với điều khiển công đoạn: bộ giải mã đẩy giá trị NOP vào các thanh ghi điều khiển công đoạn, bằng cách reset các thanh ghi này.
Bộ giải mã phải tính toán số lượng lệnh NOP được đưa vào ALU và các công đoạn sao cho phù hợp với số công đoạn bị thiếu trong ống khi rẽ nhánh. Giải pháp: sử dụng thanh ghi dịch.
281 http://dce.hut.edu.vn/
![Page 282: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/282.jpg)
Phụ lục:
![Page 283: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/283.jpg)
1/2
Transparent Latch: Mạch chốt không đồng bộ.
Không đồng bộ là gì?
283 http://dce.hut.edu.vn
74HC573
RS Latch
Signal
CLK 1
CLK 2
![Page 284: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/284.jpg)
1/2
Transparent Latch: xuất hiện trạng thái đầu ra không chịu ảnh hưởng của tín hiệu vào. gán không hoàn toàn.
Khi tổng hợp mạch trên các thiết bị của Altera, Xilinx,… đều xuất hiện dị thường có thông báo warning.
Nên thay Transparent Latch bằng FlipFlop kích hoạt theo sườn.
284 http://dce.hut.edu.vn
-- ! @brief Transparent Latch
library ieee;
use ieee.std_logic_1164.all;
entity tran_latch is
port (vi : in std_logic;
en : std_logic;
vo : out std_logic;
end entity tran_latch ;
architecture RTL of tran_latch is
begin
process(vi, en)
begin
if en = '1' then
vo <= vi;
end if;
-- Oh!. Khi en=‘0’ thi sao??
end process;
end architecture RTL;
thay bằng
CLK
![Page 285: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/285.jpg)
Một số lệnh chỉ được sử dụng trong các testbench, không thể được tổng hợp lên một phần cứng cụ thể.
Hoặc các lệnh chỉ sử dụng ở thiết kế mức logic. Nếu muốn tổng hợp được, phải chuyển đổi thành dạng khác.
285 http://dce.hut.edu.vn
process
begin
CLK <= '1'; wait for 10 ns;
CLK <= '0'; wait for 10 ns;
end process;
![Page 286: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/286.jpg)
process (a, b) khác với process (a)
286 http://dce.hut.edu.vn
architecture processa of processa is
begin
process(a, b) -- c = a or b
begin
if (a = '1') or (b='1') then
c <= '1';
else
c <= '0';
end if;
end process;
end processa;
architecture processa of processa is
begin
process(a)
begin
if (a = '1') or (b='1') then
c <= '1';
else
c <= '0';
end if;
end process;
end processa;
![Page 287: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/287.jpg)
Tùy theo kiến trúc, có thể có những thanh ghi được đánh địa chỉ truy cập nhưng:
Không tồn tại thực tế về vật lý.
Nằm bên ngoài bộ xử lý.
Ví dụ: Qui định giá trị đặc biệt „0‟ hoặc „1‟ chính là thanh ghi, nhằm hợp nhất phép toán a+b và a+1 (bằng cách coi 1 chính là thanh ghi đặc biệt).
Ví dụ: thanh ghi giá trị trong cache. Thanh ghi này đã nằm trong khối cache rồi, không cần phải tạo lại trong tập thanh ghi nữa.
287 http://dce.hut.edu.vn
![Page 288: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/288.jpg)
Phần V:
• Thiết kế mức đỉnh
• Thiết kế mức thành phần
• Tổng hợp và mô phỏng
• Đặt thiết kế lên FPGA
![Page 289: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/289.jpg)
Bộ xử lý 8 bit, mã nguồn mở
Phiên bản nâng cấp pT-BDC 8x có thiết kế dạng Block Diagram trực quan.
![Page 290: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/290.jpg)
Kiến trúc Harvard. Độ rộng bus dữ liệu, địa chỉ: 8 bit.
Độ rộng bus lệnh: 13 bit.
Lệnh chứa 1 địa chỉ toán hạng.
Có chế độ giảm tiêu thụ năng lượng
Giao tiếp RS232, ngắt
Hệ thống pipeline 4 công đoạn
Thiết kế chi tiết mức phần tử logic cơ bản
290 http://dce.hut.edu.vn/
![Page 291: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/291.jpg)
1/2
Là kiến trúc máy tính mà trong đó phân biệt rõ ràng bộ nhớ dữ liệu và bộ nhớ chương trình.
291 http://dce.hut.edu.vn/
Von Neumann
![Page 292: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/292.jpg)
2/2
Ngày nay, CPU tốc độ cao ngày này thường kết hợp hai kiến trúc Harvard và Von Neumann.
Bộ nhớ cache trên chip được phân thành cache chương trình và cache dữ liệu. Kiến trúc Harvard được dùng khi CPU truy cập vào cache.
Trong trường hợp không có cache, dữ liệu được lấy từ bộ nhớ chính, mà bộ nhớ chính không được chia thành vùng nhớ chương trình và vùng nhớ dữ liệu. Kiến trúc Von Neumann dùng ở mức truy cập bộ nhớ chính.
292 http://dce.hut.edu.vn/
![Page 293: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/293.jpg)
Bộ môn kỹ thuật máy tính
text
text
UART
Ngắt
Đếm/
Định
thời
Bộ giải mã
PC IR
text RF
Dồn kênh
ALU
Điều khiển
Bộ nhớ
Thao tác với số liệu
ROM RAM
Ngoại vi
Architecture – Kiến trúc Entity – thực thế
CLK OE
Reset RD
ExT WR
Int Standby
IP0 OP0
IP1 OP1
ExDB ExAB
RxD TxD
ROM InsAdr
PP
Ghép nối
![Page 294: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/294.jpg)
Bộ môn kỹ thuật máy tính
Hệ thống
Bộ nhớ RAM/ROM Vi xử lý
Điều khiển Thao tác với số liệu
PC IR
Bộ giải mã
Dồn kênh
ALU
Thanh ghi
Ngoại vi
Ngắt
Đếm/Định thời
UART
Hệ thống
Kiến trúc ngoài
Kiến trúc trong
Ghép nối
CLK OE
Reset RD
ExT WR
Int Standby
IP0 OP0
IP1 OP1
ExDB ExAB
RxD TxD
ROM InsAdr
PP
![Page 295: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/295.jpg)
Bộ môn kỹ thuật máy tính
Tập thao tác gồm 27 phép thao tác, mã hoá bởi 5 bit, điều khiển ALU.
Tập lệnh gồm 50 lệnh với 4 nhóm: lệnh số học, lệnh logic, lệnh chuyển dữ liệu, lệnh điều khiển .
Sử dụng 4 phương pháp địa chỉ toán hạng: tức thì, địa chỉ trực tiếp, địa chỉ thanh ghi, địa chỉ gián tiếp qua thanh ghi.
Thiết kế tập lệnh có vai trò quyết định tới hiệu quả xử lý.
![Page 296: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/296.jpg)
296 http://dce.hut.edu.vn/
Opcode Tên lệnh ALU ALF Số chu kì
00000 0000 0000 NOP PASN 00000 1
00000 0000 0001 PWRDN PASN 00000 1
00000 0000 0011 RET PASN 00000 2
00011 1TDR RRRR CMP CMP 00111 1
01100 0PDR RRRR CAZP CAZP 11000 1
10000 VVVR RRRR CLRB CLRB 11000 1
10001 VVVR RRRR SETB SETB 11001 1
1011V VVVV VVVV JC PASN 00000 1(2)
11000 VVVV VVVV MOVI PASN 00000 1
11011 VVVV VVVV XORI XOR 01111 1
1110V VVVV VVVV CALL PASN 00000 2
![Page 297: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/297.jpg)
Bộ môn kỹ thuật máy tính
Tập thanh ghi không lập trình được: SSR, LSR, STACK…
Tập thanh ghi lập trình được: SBUF, Acc…
Tập lệnh không có bit phân biệt địa chỉ thanh ghi và địa chỉ ô nhớ qui định soi gương.
PCON
TCON
ACC IP 0,1
OP 0,1
0x00
0x01
0x02
0x03
0x04
0x05
0x06
0x07
INDIRECT
TEMPLATE
IMODE
TLOAD
PP
INDEX
SBUF
STATUS
0x08.
......
0x0F
0x10.
......
0x1F
Vùng bộ
nhớ
không
soi gương
Vùng bộ
nhớ
không
soi gương
0x30.
......
0x3F
Vùng bộ
nhớ không
soi gương
0xF0.
......
0xFF
Vùng bộ
nhớ không
soi gương
.........
Vùng bộ nhớ
soi gương
về bank 0
0x20~0x2F
0x00~0x0F
.........
.........
.........
.........
.........
.........
.........
.........
.........
.........
Vùng bộ nhớ
soi gương
về bank 0
0xE0~0xEF
0xF0~0x0F
Vùng 0 Vùng 1 Vùng 7
Thanh ghi
ngầm định Địa chỉ
![Page 298: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/298.jpg)
Tập lệnh không có bit phân biệt địa chỉ thanh ghi và địa chỉ ô nhớ. Ví dụ: lệnh yêu cầu thao tác với địa chỉ 0xEF, là địa chỉ thanh ghi hay bộ nhớ?
Qui định mọi địa chỉ có dạng xx0x.xxxx đều qui về địa chỉ 0000.xxxx Qui tắc soi gương, giải mã lệnh nhanh trong 1 chu kỳ lệnh, tốn không gian địa chỉ.
Qui định duy nhất địa 0000.xxxx là địa chỉ thanh ghi tiết kiêm không gian địa chỉ, khó giải mã, có thể tốn nhiều chu kỳ đồng hồ mới xác định được địa chỉ.
Địa chỉ cuối cùng = thông tin trên mã lệnh (DI) [ kết hợp giá trị trong thanh ghi địa chỉ (WO) ]
Tập lệnh chỉ là qui định mã bit, nhưng có vai trò hết sức quan trọng trong kiến trúc và hiệu năng của bộ xử lý.
298 http://dce.hut.edu.vn
![Page 299: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/299.jpg)
Bộ môn kỹ thuật máy tính
PC ROM IR Giải mã SSR
LSR
ALU
Bộ
nhớ
(1)
Cờ
Địa chỉ lệnh
Lệnh Cờ
Chốt
Chọn
toán
hạng
Mã thao tác
Kết quảToán hạng
nguồn
Địa chỉ gián tiếp
qua thanh ghi
Điều khiển rẽ nhánh
Điều
khiển
ngắt
Đếm/Định thời
UART
Thanh ghi
(2)
Ngắt ngoài
Đếm/Định thời
ngoài
TxD
RxD
![Page 300: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/300.jpg)
Bộ môn kỹ thuật máy tính
Nhận lệnh: PC, IR
Giải mã lệnh:tuần tự, rẽ nhánh, ngắt.
Thực hiện lệnh: nhận toán hạng, thực hiện.
Cất toán hạng: tín hiệu cho phép chốt từ bộ giải mã lệnh.
Lệnh 1
Lệnh 2
Lệnh 3
Lệnh 4
Lệnh 5
Lệnh 6
Lệnh 7
Lệnh 11
Lệnh 12
FI DI EI WO
FI DI EI WO
FI DI EI WO
FI DI
FI DI EI WO
FI DI
FI
FI DI EI WO
FI DI EI WO
1 2 3 4 5 6 7 8 9 10 11 12
![Page 301: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/301.jpg)
Bộ môn kỹ thuật máy tính
OP0(7:0)CE
Q(7:0)CLK
D(7:0)
PR
OP0Reg
reg_cpn
CE
DOUT(7:0)
CLK
PTOUT(7:0)DIN(7:0)
PTIN(7:0)
PT0Reg
portsreg
PTIN(7:0)PTOUT(7:0)
InsAdr(10:0)
MCLK
CE
Q(7:0)CLK
D(7:0)
ACCReg
reg08cnn
MCLK
MCLK
IB0(7:0)
OB(7:0)
IB1(7:0)
IB2(7:0)
IB3(7:0)
IB4(7:0)
SEL(2:0)
SEL_FirstOpr
mux08x05
PR
C(1
0:0
)
Standby
Res et
Res et
ALF(4:0)
ExAB(7:0)
MCLK
MCLK
MCLK
Res et
External ROM ROM External ROM
PWRDN
PRC(10:0)
CLK
INS(8:0)
PWRDN
Reset
STR(7:6)
CALL
RET
PRPC
IntSel (1:0)
ActInt
PCReg
pccntr
Chon kenh 4 loai so lieu toi ALU
INS(12:0)
ROM(12:0)
ALU(7:0)STATUS(7:0)
CE
CLK
Reset
STA(2:0)
ReF(2:0)
RetI
Status_Reg
statusreg
MCLK
STATUS(7:0)
STATUS(7:6)MCLK
Res et
EndCy c
LnWERAM
PWRDN
LALF(4:0)
STATUS(7:0)
PWRDN
INS(8:0)
LCEACC
LCESTA
CEACC
CESTA
CEPT0
LCETL
LCEPT0
STATUS(3:0)
CE
Q(7:0)CLK
D(7:0)
Index_Reg
CEIDX
MCLKINDEX(7:0)
INDEX(7:0)
From ALU(7:0)
LCESB
LCEIDX
LCETMP
EndCy c
ALU(7:0)
STA(2:0)
ALF(4:0)
DI(7:0)
CI
SeOpr(7:0)
ZI
PI
INS(7:5)
PO
PL
ArithmeticLogicUnit
alu
INS2(7:0)
AB(2:0)
AB(2:0)
From ALU(7:0)
MCLK
CETMPCE
Q(7:0)CLK
D(7:0)
TemplateReg
IB0(7:0)OB(7:0)
IB1(7:0)
S
SEL_SecondOpr
mux08x02
From Ac c (7:0)
From Tem plate(7:0)
SelSeOpr
LSelSeOpr
STATUS(0)
STATUS(1)
ST
AT
US
(7:6
)
Co trang thai moiSTA(2:0)
PRPC
STA(2:0)
CALLINS
PRPC
RETINS
CALLINS
RETINSCE
Q(12:0)CLK
D(12:0)
RST
IRReg
REG13CRN
LCEACC
LCESTA
LCEPT0
LCEIDX
LCETMP
CEACC
CESTA
CEPT0
CEIDX
CETMP
Reset
CLK
LOSEnaOSEna
LCESB
LCEIM
CESB
CEIMLCETM
LCEPMCETM
CEPM
LCETLCETL
latchsignalreg
LSR
CEACC
CESTA
CETL
CEPT0
CESB
CEIDX
CETMP
MCLK
Res et_INS
AB(2:0)LAB(2:0)
LSelSeOpr
LALF(4:0)
SEL(2:0)LSEL(2:0)
SelSeOpr
ALF(4:0)
ResetCLK
INS(7:0)INS2(7:0)
selsignalreg
SSR
LAB(7:0)
LSEL(2:0)SelSeOpr
ALF(4:0)
c learMCLK
Reset
CLK
ExtReset
InReset
resetsyn
Res etRes et_INS
ExReset
INS2(7:0)INS(7:0)
SEL(2:0)
IP_DB(7:0)
Reset_syn
PTOUT(7:0)
IB6(7:0)
LOSEnaOSEna
Out Space
STATUS(2)
IB1(7:0)
OB(7:0)IB2(7:0)
IB3(7:0)
IB4(7:0)
IB5(7:0)
IB6(7:0)
IB7(7:0)
SEL(2:0)
Sel_SpecialRegs
MUX08X07
IB6(7:0)
MCLK
From ALU(7:0)
CESB
LCEIMCEIM
IM(7:0)
ADR(7:0)
ALF(4:0)
CLK
PWRDN
IDX(7:0)
Reset
INS(12:0)
Sel (2:0)
CEACC
CESTA
CEPT0
CEIDX
CETMP
EndCyc
SelSeOpr
Flag(2:0)
CALLINS
PRPC
RETINS
OSEna
ActInt
CEIM
CESB
CePM
CeTM
RetI
JumpEna
nRERAM
nWERAM
CETL
DeM
decoder
CETL
INS2(7:5)
STATUS(3)
STATUS(3:0)
SelSeOpr
OP1(7:0)CE
Q(7:0)CLK
D(7:0)
PR
OP1Reg
reg_cpn
MCLK
Res et
CeOp1
CeOP0
CLKQ(7:0)
D(7:0)
IP1Reg
reg_nnn
IP1(7:0)
MCLK
IP1DB(7:0)
In Space
IB0(7:0) OB(7:0)
IB1(7:0)
S(2:0)
IOmux
Mux08x08CLKQ(7:0)
D(7:0)
IP0Reg
reg_nnn
IP0(7:0)
MCLKIP0DB(7:0)
IP_DB(7:0)
INS2(2:0)
I O0
S(2:0) O1
IODemux
Demux08x01
OSEna
INS2(2:0)
CeOp0
CEOp1
PTOUT(7:0)
From ALU(7:0)
CE
Q(7:0)CLK
D(7:0)
PR
PCONReg
reg_cpn
PM(7:0)
Res et
MCLK
CePM
Dieu k hien c he do I/Oc ua c ong Paral le l
Cac tham ghi ngam dinh, chi docde dieu khien ngat, cong....
CLK ActInt
IntSource(1:0)
Reset
IM(7:0)
RetI AfterInt
JumpEna
AssertInterrupt
assint
IM(7:0)
MCLK
Res et
Ac tInt
Ac tInt
IntSourc e(1:0)
IntSourc e(1:0)
Ac tInt
LCeTM
LCePM
RetI
RetI
IM(7:0)
CeIM
MCLK
INT
Res et
ALU(6:0) IM(7:0)
ActInt
CLK
CeIM
ExInt
IntSource(1:0)
Reset
RxDReadly
T_CF
TxDReadly
IModeReg
intreg
Res et
RetI
ReF(2:0)
AfterIntc lear
c lear
T_CF
ExTC
InCLK
LoadD(7:0)
Reset
FCLK
TCON(5:0)
TimerCounter
tcmodule
T_CF
ExTMCLK
Res et
TLoad(7:0)
TLoad(7:0)
CLKMCLK
CLK inCLK
exCLK
ClockGen
clockdiv
RawCLK
RawCLK
CE
Q(7:0)CLK
D(7:0)
R
TCONReg
MCLK
CeTM
Res et
TCTL(7:0) TCTL(5:0)CETM
CEPM
M( M(6:0)From ALU(7:0)
J um pEna
J um pEna
EMCLK
LnRERAM
ASet
CLK
D1
D2
Q1
Q2
AD(7:0)
AQ(7:0)
ALU(7:0)
Din(7:0)
Dout(7:0)
RR(7:0)
emctrl
LnWERAM
LnRERAM
MCLK
EMCLK
CLK16x
Dout(7:0)
Din(7:0)
Reset
Rx Tx
WS
MCLK
RxInt
TxInt
UART
RxDTxD
RxInt
TxInt
Res et
T_CF
LExAB(7:0)
CE Q(2:0)
CLK
D(2:0)
FStore
SaveFlags
ReF(2:0)AfterInt
MCLK
STA(2:0)
Advance Module
LAB(2:0)LAB(7:0)
Res et
CE Q(7:0)
D(7:0)
RST
CLK
TLoadReg
MCLK
RAM(7:0)
LnRD
LnWRnRD
nWR
From ALU(7:0)Dout(7:0)
LDout(7:0)
RAM(7:0)
Din(7:0)
EMCLK
nOE
CE
Q(7:0)CLK
D(7:0)
PR
OP0Reg
reg_cpn
![Page 302: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/302.jpg)
Bộ môn kỹ thuật máy tính
INS(12:0)
IDX(7:0)
ADR(7:0)
Sel(2:0)
ALF(4:0)
INS(12:5)
IMPLICIT
STANDARD
IMMEDIATE
BITWISE
subgroup
Phan_nhom_lenh
INS(12:5)
IMPLICITIMPLICIT
CLK
INS(4:0)
PWRDN
Reset
ReadP
WriteP
ModPModT
SxC
SxP
SxZ
RetI
Retx
implicit_decode
Giai_ma_IMPLICIT
PW RDN
Reset
CLK
INS(4:0)
INS
(12:0
)IN
S(1
2:0
)
LPWRDN
INDEX(7:0)
ADR(7:0)INS(4:0)
addressdecoder
Tao d ia ch i cho thanh ghi Nguon va Dich
INS(4:0) LADR(7:0)
IMMEDIATE
MOVA Sel(2:0)
ISEna
OSEna
Impl icit
Standard
nReRAM
BitWise
nZeroHighAdr
selmux
IMMEDIATE
CESTA
CEACC
nW ERAM
CETL
CEPT0
CEIDX
CESB
CETMP
PWRDNENDCYC
CLK
JumpEnable
PRPCSkipNext
ActIntend_of_ins
IP_PC
EndCyc
CLK
INS_5
STANDARD
IMMEDIATE
CESTA
CEACC
WERAM
ADR(2:0)
CEPT0
CEIDX
CETMP
ISEna
BITWISE
CESB
CEIM
CETL
nZerohighAdr
LatchReg
INS(5)
STANDARD
IMMEDIATE
CESTA
CEACC
WERAM
CETL
CEPT0
CEIDX
CESB
CETMP
ALF(4:0)
IMMEDIATE
INS(11:7)
STANDARD
BITWISE
Giai_ma_toan_tu
alu_function
IMMEDIATE
STANDARD
INS(11:7)
CLK CLK
INS(12:0)
IMMEDIATE
STANDARD
Chon
so lieu In
SelSeOprINS(6)
Flag(2:0)
Flag(2:0)
PRPC
5 nhom lenh: + IMD,IMP, STD + BRANCH
Chon toan tu cho ALU
Bo phan kenh
tin hieu chot ket qua phep toan cho ALU
M OVA<= ST ANDARD and
(not INS(11)and not INS(10)
and not INS(9) and not INS(8
and not INS(7));
Operand1_is_Acc
INS(12:7)
INS(12:9)
PWRDN
Flag(2:0)
JumpEnableRET
CALL
SC
SP
SZ
INS0
SkipNext
ActInt
Giai_ma_BRA_IMP
specialins
CALLINS
Dieu khien
re nhanh
RETINSLRETx
Dia_chi_thanh_ghi
Chon_kieu_toan_hang1
IMMEDIATE
Lenh IMMEDIATE luonco toan hang thu hai la Acc
ReadP
WriteP
ReadP
OSEnaWritePOut Space Enable
ReadP
WriteP
CEIMCEIM
INS(12:9)
INS(0)
BITWISE
BITWISE
BITWISE
MOVA
ActInt
ActIn t
Cong dieu khien
ngam dinh,writeonly
CePMModP
CeTMModT
RetIRetI
Dieu khien phuc hoi co
Z,C,P va trang thai ngat trong thanh ghi IM
ActIn t
Impl icit
JumpEnaJumpEnable
JumpEnable
Standard
nRERAM
nZeroHighAdr
nZeroHighAdr
BitWise
Giải mã địa
chỉ
Phân loại
lệnh
Giải mã tín hiệu
chốt
Giải mã tín hiệu
đ/k chọn t/h
Giải mã rẽ
nhánh
Điều khiển
rẽ nhánh
Giải mã mã thao
tác
Giải mã
đ/k khác
![Page 303: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/303.jpg)
Bộ môn kỹ thuật máy tính
SECHALF
ENDCYC
JumpEnable
FirstCyc
CLK
SkipNext
C LK
QD
DFF
ActInt
ActIn t
ENDCYC
PWRDN PRPC
Lệnh SecHalf EndCyc FirstCyc PC IR
Lệnh tuần tự 0 1 0 Cộng 1 Chốt lệnh
Lệnh rẽ nhánh
hoặc ngắt
CK1 0 0 1 Chốt địa chỉ Không chốt
CK2 1 1 0 Cộng 1 Chốt lệnh
![Page 304: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/304.jpg)
Bộ môn kỹ thuật máy tính
Bộ
dồn kênh
22 đường
8 bit
Hàm logic 0
Hàm logic 1
Hàm logic 3, 4,
5, 6, 10, 11
Bộ cộng
Hàm logic 27
Hàm logic 25
Toán hạng nguồn…………...
…………...
Giải mã
bộ cộng
Mã thao tác
Toán hạng đích
Xác định
trạng thái
Xác định
thao tác thay
đổi trạng thái
Bộ
dồn kênh
2 đường
1 bit
Cờ
Cờ trạng
thái trước
C‟‟
C‟,Z‟,P‟
CE, ZE, PEC, Z, P
![Page 305: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/305.jpg)
Bộ môn kỹ thuật máy tính
Đếm/định thời: dùng nguồn xung định thời bên trong hoặc nguồn xung đếm ngoài
Module UART: phục vụ truyền, nhận tiếp, tốc độ boud thay đổi được, khung truyền cố định
Ngắt: 3 vector ngắt
4 cờ ngắt: ngắt ngoài, ngắt đếm/định thời, ngắt truyền và nhận nối tiếp
Cờ ngắt ngoài và đếm/đinh thời xoá bằng phần cứng, cờ nối tiếp xoá bằng phần mềm
Chống xung đột điều khiển với lệnh rẽ nhánh
![Page 306: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/306.jpg)
Bộ môn kỹ thuật máy tính
IM(7:0)
IntSource(1:0)
CLK
Reset
ActInt
IM(4)
IM(1)
IM(5)
IM(2)
IM(6)
IM(3)IM(7)
IM(7
:0)
IM(0)
Co mot ngat duoc goi
Cho phep ngat
LProcessingInt
SPro
TPro
EPro
IntSource(1)
IntSource(0)Reset
CLKQ
D
Reset Set
U8
CLK
CLK
RetI
Reset
CLK Q
D
AfterActInt
CLK AfterInt
RetICLK Q
D
CLK
S0
S1
Cal lIn t
CLK PSynLevel
PEdge
DetectPEdge
PEdge2Level
JumpEna
CLK
S0
S1
LActInt
TxF RxF TF EF SE TE EE IE
Co ngat Cho phep ngat
Cho phep ngat toan cuc
7 6 5 4 3 2 1 0
IM
Phân xử ngắt
Cho phép ngắt
Xử lý xung đột điều khiển
Điều khiển ngắt
![Page 307: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/307.jpg)
Bộ môn kỹ thuật máy tính
D1
D2
CLK
Q1
Q2
ASet
C L K Q
D
RDLatch
DFF
C L K Q
D
U2
DFF
AD(7:0)
AQ(7:0)
C E
Q (7 :0 )C L K
D (7 :0 )
ExABLatch
reg08cnn
CLK
C L K Q
D
WRLatch
DFF
C E
Q (7 :0 )C L K
D (7 :0 )
FWMReg
reg08cnn
CLK
ALU(7:0)
Dout(7:0)
Din(7:0)
DelR
IB 0 (7:0 )
O B (7:0 )
IB 1 (7:0 )
S
MUX08X02
RR(7:0)
LDout(7:0)
![Page 308: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/308.jpg)
Bộ môn kỹ thuật máy tính
Yêu cầu tài nguyên
FPGA Cổng IO LUT Flip Flop Fmax
XC2S100-5PQ208 89 / 144 62% 712 / 2400 29% 320 / 2400 13% 26 MHz
XC2S30-5PQ208 89 / 136 75% 612 / 864 70% 316 / 864 36% 26 MHz
XC2S50E-7TQ144 89 / 102 82% 711 / 1536 46% 318 / 1536 20% 34 MHz
XC2S100E-6PQ208 89 / 146 61% 712 / 2400 29% 318 / 2400 13% 31 MHz
XC2S300E-6FG456 89 / 329 27% 764 / 6144 12% 329 / 6144 5% 31 MHz
Sử dụng FPGA: XC2S100-5PQ208
LUT: Look-Up Table
![Page 309: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/309.jpg)
Bộ môn kỹ thuật máy tính
Cấu hình FPGA để hoạt động theo thiết kế thông qua cổng JTAG
Kiểm tra quá trình cấu hình FPGA
Ghép nối chip với bộ nhớ ngoài
Thiết kế các jumper tương ứng với các chân vào ra
Xây dựng sẵn một số thiết bị vào ra cơ bản để kiểm tra hoạt động của phần mềm như DIP, Led…
Bo mạch phát triển đã thực hiện tất cả các ghép nối phần cứng cơ bản.
Người sử dụng chỉ cần nạp chương trình vào ROM để sử dụng chip
![Page 310: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/310.jpg)
Bộ môn kỹ thuật máy tính
Đồng thiết kế phần cứng - phần mềm: việc thiết kế phần cứng và phần mềm diễn ra song song
Sử dụng phần mềm để kiểm thử hoạt động của chip
Các giai đoạn phát triển phần mềm Viết chương trình từng bit một.
Sử dụng chương trình dịch pT-BDC Compiler
![Page 311: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/311.jpg)
Bộ môn kỹ thuật máy tính
Chương trình
kiểm tra xử lý
ngắt ngoài
![Page 312: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/312.jpg)
Bộ xử lý mã nguồn mở
312 http://dce.hut.edu.vn/
![Page 313: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/313.jpg)
PicoBlaze http://www.xilinx.com/products/intellectual-property/picoblaze.htm
100% code VHDL.
PicoBlaze
Userguide
![Page 314: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/314.jpg)
Vi điều khiển nhúng 8 bit có cấu trúc RISC.
Được tối ưu phát triển cho các họ FPGA của Xillinx như Spartan 3, Virtex II và Virtex II Pro.
Vi điều khiển PicoBlaze được tối ưu về mặt hiệu suất và chi phí phát triển thấp.
Mã nguồn mở VHDL, lõi mềm.
PicoBlaze FPC được hỗ trợ bởi các công cụ assembler và IDE lập trình, giả lập, etc , và bởi các công cụ của Xilinx như System Generator hay ISE.
314 http://dce.hut.edu.vn
![Page 315: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/315.jpg)
16 thanh ghi dữ liệu chức năng chung có độ rộng 8 bit.
Lưu trữ được 1K lệnh trong chương trình có thể lâp trình được trong chip và tự động nạp khi cấu hình FPGA hay khi khởi động FPGA.
ALU với các cờ CARRY và ZERO.
Một bảng RAM 64 byte.
256 đầu vào và 256 đầu ra dễ dàng có thể mở rộng thêm.
Stack cho phép gọi lồng 31 lần CALL/RETURN.
315 http://dce.hut.edu.vn
![Page 316: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/316.jpg)
Predictable performance, luôn luôn dùng 2 xung nhịp hệ thống cho một câu lệnh, có thể đạt tới 200 MHz hoặc 100 MIPS trong Virtex – II Pro FPGA.
Đáp ứng ngắt nhanh; worst-case 5 clock cycles.
Được tối ưu cho cấu truc Spartan – 3, Virtex II, và Virtex II Pro FPGA của Xilinx chỉ chiếm 96 slices và 0.5 tới 1 block RAM.
Hỗ trợ mô phỏng tệp lệnh assembler.
316 http://dce.hut.edu.vn
![Page 317: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/317.jpg)
317 http://dce.hut.edu.vn
Điều
khiển ngắt
8
OUT_PORT
Đ/k
luồng
ctrình
CỜ
ZERO &
CARRY
ALU
Bộ nhớ
lưu cờ
ngắt
Thanh
ghi PC
Stack
của PC
8
8
8
8
8 PORT_ID Điều
khiển địa
chỉ cổng READ_STROBE
WRITE_STROBE
NGẮT
10 10
ĐỊA CHỈ
10 Điều khiển
hoạt động &
Giải mã lệnh
RESET
CLK
18 LỆNH
8
8
8
8
IN_PORT
DỮ LiỆU HẰNG
Từ 16 tới 32
thanh ghi 8bit
Bộ nhớ
chương trình
ROM/RAM
1024 words
10
ĐỊA CHỈ
![Page 318: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/318.jpg)
1/3
Chức năng chuyển mạch ở Front panel và chức năng hiện thị trên Set Top Box.
Link layer trong IEEE 1394 Interface.
Bộ vi điều khiển trong Compact Flash Programming engine.
DECT Radio/Repeater.
318 http://dce.hut.edu.vn
![Page 319: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/319.jpg)
2/3
Điều khiển lập trình cho PCI board.
Điều khiển truyền thông.
Thực hiện tiền xử lý cho các bộ xử lý network.
Bộ điều khiển động cơ.
Điều khiển các nguồn cấp lập trình được.
Là một thành phần của Media Access Controller
Vi điều khiển trong các thiết bị broadcast video.
319 http://dce.hut.edu.vn
![Page 320: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/320.jpg)
3/3
320 http://dce.hut.edu.vn
http://youtu.be/hbtsz3m1wgQ http://youtu.be/3hMara9qc-E http://youtu.be/88FPBOOwSIg
![Page 321: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/321.jpg)
Một số kit tại CSLab.
Hướng dẫn phát tín hiệu VGA bằng FPGA. http://www.fpga4fun.com/PongGame.html
FPGA Based VGA driver and Arcade game. http://static.armandas.lt/res/fpga_based_vga_driver_and_arcade_game.pdf
Hướng dẫn sử dụng Altera Quatus
Hướng dẫn sử dụng Altera Quatus, Xillinx ISE, Actel Libero
Hướng dẫn sử dụng kit Spartan II LC VN
321 http://dce.hut.edu.vn
![Page 322: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/322.jpg)
Group project for our FPGA class. We took 80 phototransistors which sent signals out to the DE2 board via 8-bit parallel-to-serial registers (165) and then sent the signals out to an 8x10 array of LEDs via 8-bit serial-to-parallel shift registers (595).
http://youtu.be/LCIjWp7LDl8
Guild to build.
http://youtu.be/no2_M_b059g
http://www.elektroda.pl/rtvforum/topic944484.html
322 http://dce.hut.edu.vn
![Page 323: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/323.jpg)
Create your own 8x8x8 LED Cube 3-dimensional display. Guide to build.
http://youtu.be/6mXM-oGggrM
http://youtu.be/ea8aG2aQ5FY
http://www.instructables.com/id/Led-Cube-8x8x8/?ALLSTEPS
323 http://dce.hut.edu.vn
![Page 324: Thietke ic baigiang.v1.0](https://reader033.vdocuments.pub/reader033/viewer/2022052323/55860c94d8b42a3d6b8b4dc5/html5/thumbnails/324.jpg)
Bộ môn Kỹ thuật Máy tính Viện Công nghệ thông tin và Truyền thông, ĐHBKHN
Msc. Nguyễn Đức Tiến
+84-91-313-7399
The End