Phân loại các công nghệ thiết bịChúng ta cần phải hiểu rõ sự khác biệt giữa 2 công nghệ ASIC Application Specific Integrated Circuit và non-ASIC.Chúng ta có thể chia các công nghệ ra thà
Trang 1KHOA ĐIỆN ĐIỆN TỬ
-
-THIẾT KẾ VI MẠCH SỐ VỚI HDL
Biên soạn: Đỗ Hoàng Thắng
Sinh viên khóa K21
Trang 2Như vậy con chip này có sức chứa 16 transistor (kích thước)
Do số lượng transistor trong một con chip đơn đã tăng theo số hàm mũ Một con chip
Si ngày nay chứa tới hàng trăm ngàn hay hàng trăm triệu con transistor bây giờ lên tới hàng
tỉ con transistor
Trong quá khứ, chức năng chính của phần cứng số là các hệ thống tính toán.Khi mà, con chip nhỏ hơn, nhanh hơn, rẻ hơn và nhiều khả năng hơn,…Nhiều hệthống điện tử, điều khiển, truyền thông và hệ thống cơ điện tử đã được số hóa bên trong, sửdụng các mạch điện số lưu trữ dữ liệu, xử lý dữ liệu hoặc truyền thông tin
Khi mà ứng dụng trở nên lớn hơn phức tạp hơn, thì các công việc thiết kế mạch số trởnên khó hơn Phát triển và sản suất 1 mạch số là quá trình là rất phức tạp
2 Các công nghệ thiết bị
Nếu chúng ta muốn xây dựng hệ thống số theo yêu cầu của khách hàng thì có rấtnhiều dạng công nghệ khác nhau để mà lựa chọn
Không có công nghệ nào tốt nhất
Chúng ta phải xem xét mối tương quan giữa các hệ số khác nhau, các hệ số đó baogồm: tài nguyên, tốc độ, khả năng và giá thành của con chip
2.1 Chế tạo vi mạch
Một con vi mạch được tạo ra bởi nhiều lớp: Si pha tạp, tinh thể Si, kim loại và oxit Si,được xây dựng trên lớp đầu, trên wafer Si mỏng
Trang 3Một vài lớp dùng để tạo nên transistor, và những lớp còn lại người ta dùng làm dâydẫn kết nối.
2.2 Phân loại các công nghệ thiết bị
Chúng ta cần phải hiểu rõ sự khác biệt giữa 2 công nghệ ASIC (Application SpecificIntegrated Circuit) và non-ASIC
Chúng ta có thể chia các công nghệ ra thành các dạng như sau:
Full-custom ASIC (Công nghệ ASIC đặt chế hoàn toàn)
Standard-cell ASIC (Công nghệ ASIC tế bào chuẩn)
Gate array ASIC (Công nghệ ASIC mảng, cổng, chuỗi)
Complex field-programmable logic device (Các thiết bị logic có thể lập trìnhtheo trường phức tạp)
Simple field-programmable logic device (Các thiết bị logic có thể lập trìnhtheo trường đơn giản)
Trang 42.2.1 Full-custom ASIC
Chúng ta phải đều khiển toàn bộ mạch điện và thạm chí cách bố trí thủ công vị trí củatừng con transistor để mà nó có thể tương thích với các yêu cầu về hiệu suất hoặc yêu cầu vềtài nguyên đặt biệt
Mạch sau khi thiết kế thì được tối ưu hoàn toàn và có một hiệu suất tốt nhất có thể.Thật không may, thiết kế một cái mạch điện ở cấp độ trans cực kỳ phức tạp và nó chỉphù hợp với mạch điện có kích cỡ nhỏ
Sẽ không thực tế nếu chúng ta sử dụng cái phương pháp thiết kế này để đi thiết kếtoàn bộ hệ thống, mà hệ thống ngày nay có thể chứa lên đến 10 hoặc 100 triệu trans.Một CPU năm 1971 chỉ có 2.300 trans thì hiện nay (2016) đã có tới 7.2 tỉ trans với 22nhân nhờ quá trình sản xuất 14nm (dòng 22-core Xeon Broadwell-E5)
Ứng dụng chính: dùng để thiết kế ra các thành phần logic cơ bản (cổng AND, OR,
NOT) Chúng có thể sử dụng như là các khối xây dựng của một hệ thống lớn
Ứng dụng khác: thiết kế các mạch điện dạng bit như là mạch nhớ 1-bit, mạch cộng
1-bit
2.2.2 Standard-cell ASIC
Một mạch điện được xây dựng bằng cách sử dụng một chuỗi hoặc là tập hợp cácthành phần logic đã được xác định trước, và được gọi là các tế bào chuẩn
Trang 5Các tế bào này đã được thiết kế trước và bố trí của chúng đã có hiệu lực và đã kiểmtra rồi.
Công nghệ này cho phép chúng ta làm việc ở cấp độ cổng hơn là cấp độ dùng trans và
do đó nó làm đơn giản đi một cách đáng kể cái quá trình thiết kế
Các nhà thiết kế thiết bị thường cung cấp các thư viện của tế bào chuẩn như là cáckhối xây dựng cơ bản
Các thư viện đó thường chứa các cổng logic cơ bản:
Các thành phần kết hợp đơn giản, chẳng hạn như:
Cổng AND, OR, NOT
Trong công nghệ này mạch điện được tạo ra từ các tế bào
Các loại tế bào và kết nối bên trong thì phụ thuộc vào các ứng dụng độc lập.Trong khi bố trí của tế bào đã được xác định, thì bố trí của toàn bộ mạch điện là duynhất và do đó việc chế tạo 1 chip theo công nghệ tế bào chuẩn gần giống như là chế tạo chipcủa full-custom ASIC, và tất cả lớp được chúng ta tùy chỉnh hết
2.2.3 Gate array ASIC
Trong công nghệ này, một mạch được xây dựng từ một mảng các ô được xác định
Trang 6Chip mảng cổng chỉ bao gồm một loại tế bào, được gọi là tế bào cơ bản
Tế bào cơ bản khá đơn giản, giống như một cổng logic
Các tế bào cơ bản này được sắp xếp trước và đặt ở những vị trí cố định, được cănchỉnh dưới dạng mảng một hoặc hai chiều
Vì vị trí và loại được xác định trước, nên các tế bào cơ bản có thể được chế tạo sẵn.Việc tùy chỉnh mạch được thực hiện bằng cách chỉ định kết nối giữa các tế bào này.Các nhà chế tạo của công nghệ này cũng cung cấp những thư viện của các thành phần
đã được thiết kế, như là các tế bào macro
Chúng được xây dựng từ các tế bào cơ bản
Các tế bào macro sẽ có những kết nối bên trong được xác định và cung cấp cho ngườithiết kế nhiều khối logic phức tạp hơn
So sánh công nghệ tế bào chuẩn:
Việc chế tạo thiết bị mảng cổng đơn giản hơn nhiều do cấu trúc mảng cố địnhcủa nó
Vì mảng là chung cho tất cả các ứng dụng nên tế bào có thể được chế tạo trước
Trong quá trình xây dựng chip, chỉ các lớp mặt nạ ngoài kim loại, chỉ định kếtnối, là duy nhất cho một ứng dụng và do đó phải được tùy chỉnh
Điều này làm giảm số lớp tùy chỉnh từ 10-15 lớp xuống còn 3-5 lớp và đơn giảnhóa đáng kể quy trình chế tạo
2.2.4 Complex field-programmable logic device
Bây giờ chúng tôi kiểm tra một số công nghệ không phải ASIC
Công nghệ không phải ASIC linh hoạt nhất là thiết bị lập trình trường phức tạp(CFPD) Trong công nghệ này, một thiết bị bao gồm một dãy các tế bào logic tổng quát vàcấu trúc kết nối tổng quát Mặc dù các tế bào logic và cấu trúc kết nối được đúc sẵn nhưng cảhai đều có thể lập trình được
Khả năng lập trình có được bằng cách sử dụng "cầu chì" hoặc "công tắc" bán dẫn
mà có thể được thiết lập là hở mạch hoặc ngắn mạch
Trang 7Việc tùy chỉnh được thực hiện bằng cách định cấu hình thiết bị với mẫu cầu chì cụthể Quá trình này có thể được thực hiện bởi một lập trình viên thiết bị đơn giản, rẻ tiền.Các cấu trúc cơ bản của mảng cổng ASIC và CFPD có phần giống nhau.
Tuy nhiên, cấu trúc kết nối của CFPD được xác định trước và do đó có nhiều ràngbuộc hơn đối với định tuyến tín hiệu Để giảm số lượng kết nối, nhiều chức năng hơn đượctích hợp vào các tế bào logic của CFPD, làm cho tế bào logic phức tạp hơn nhiều so với tếbào cơ bản hoặc tế bào tiêu chuẩn của ASIC Theo độ phức tạp và cấu trúc của các tế bàologic, CFPD có thể được chia thành hai loại chính: CPLD (Complex programmable logicdevice), FPGA (Field programmable gate array)
2.2.4.1 Công nghệ CPLD (có trước FPGA)
Các tế bào logic của các thiết bị CPLD khá phức tạp so với FPGA
Nó thường chứa 1 loại flip-flop D và 1 đơn vị giống như PAL với cấu hình các thànhphần tích Cấu trúc nối dây của thiết bị CPLD có khuynh hướng tập trung hơn, với nhiềunhóm dây định tuyến tập trung
Trang 82.2.4.2 Công nghệ FPGA (có sau CPLD)
Ngược lại với CPLD, thì tế bào logic của thiết bị FPGA thường nhỏ hơn
Nó cũng chứa 1 flip-flop D và 1 bảng tra nhỏ hoặc là tập hợp các mạch đa hợp Cấutrúc nối dây bên trong giữa các tế bào có khuynh hướng phân tán và linh hoạt hơn Do tínhchất phân phối của nó, FPGA phù hợp hơn với các thiết bị lập trình trường phức tạp lớn,công suất cao
2.2.5 Simple field-programmable logic device (có trước CN4)
SFPLD là các thiết bị với cấu trúc bên trong khá đơn giản
Các thiết bị này thường được gọi là các thiết bị logic có thể lập trình (PLD).SFPD thường được xây dựng như là mảng 2 cấp, với mảng cổng AND và OR.Nối dây bên trong của 1 hoặc 2 mảng có thể lập trình được để tạo ra một hàm logicđược biểu diễn dưới dạng tổng của các tích
Trang 9Các thiết bị này bao gồm:
Programmable read only memory (PROM), với mảng cổng OR cho phép chúng
ta lập trình
Programmable array logic (PAL), với cổng AND có phép chúng ta lập trình
Programmable logic array (PLA), cho phép cả 2 mảng đều có thể lập trình
Không giống như thiết bị FPGA và CPLD.
SFPLD không có cấu trúc nối dây bên trong tổng quát, do đó chức năng của nó bị hạnchế một cách đáng kể ROM, PAL và PLA ngày nay được xem như là các thành phần bêntrong của các thiết bị ASIC hoặc CPLD hơn là sử dụng nó một cách độc lập
2.2.6 Off-the-shelf small and medium-scaled IC (SSI/MSI) components.
Trước khi xuất hiện các thiết bị có thể lập trình theo vùng, chỉ có một giải pháp duynhất là dùng các thành phần vi mạch tích hợp cỡ nhỏ/cỡ trung để đi thiết kế mạch Các thànhphần này là các mạch điện nhỏ các phần nhỏ, với chức năng giới hạn và cố định
Ví dụ về họ TTL 7400
Khi chúng ta thiết kế một hệ thống số phải thiết kế từ dưới lên, chúng ta sẽ xây dựngmạch điện dần từ các thành phần nhỏ hơn
Nhược điểm chính của phương pháp này là hầu hết các nguồn tài nguyên như là:
công suất, chuyển tiếp chuyển bo, giá thành sản suất,…được tính bởi một gói và nó khôngphải là thành phần Si Xa hơn nữa, không có phần mềm tổng hợp nào mà có thể thiết kếmạch sử dụng công nghệ cỡ nhỏ/cỡ trung như thế này, và như thế chúng ta không thể tựđộng Khi các thiết bị có thể lập trình trở nên nhiều chức năng hơn và giá thành thấp hơn, thìviệc thiết kế một hệ thống số theo yêu cầu của khách hàng và chính vì thế nó không đượcxem xét trong tài liệu này
Trang 10CHƯƠNG 2: TỔNG QUAN VỀ NGÔN NGỮ HDL (3)
1 Ngôn ngữ mô tả phần cứng
1.1 Hạn chế của ngôn ngữ lập trình truyền thống
Có nhiều loại ngôn ngữ lập trình máy tính, từ Fortran đến C đến Java Thật khôngmay, chúng không đủ để mô hình hóa phần cứng kỹ thuật số Hầu hết các ngôn ngữ lập trìnhmục đích chung truyền thống, chẳng hạn như C, được mô hình hóa sau một quy trình tuần tự.Trong quá trình này, các thao tác được thực hiện theo thứ tự tuần tự, mỗi lần một thao tác
Mặt khác, đặc điểm của phần cứng kỹ thuật số rất khác so với mô hình tuần tự.Một hệ thống kỹ thuật số điển hình thường được xây dựng bởi các bộ phận nhỏ hơn,với hệ thống dây tùy chỉnh kết nối các cổng đầu vào và đầu ra của các bộ phận này
Khi tín hiệu thay đổi, các bộ phận được kết nối với tín hiệu sẽ được kích hoạt và mộtloạt các hoạt động mới được bắt đầu tương ứng Các thao tác này được thực hiện đồng thời
và mỗi thao tác sẽ mất một khoảng thời gian cụ thể, thể hiện độ trễ lan truyền của một bộphận cụ thể, để hoàn thành Sau khi hoàn thành, mỗi phần cập nhật giá trị của cổng xuấttương ứng
1.2 Sử dụng chương trình HDL
Mô hình tuần tự được sử dụng trong các ngôn ngữ lập trình truyền thống không thểnắm bắt được các đặc tính song song của phần cứng số Cần có các ngôn ngữ đặc biệt (nghĩa
là HDL) được thiết kế để mô hình hóa phần cứng kỹ thuật số
VHDL và Verilog là hai HDL được sử dụng rộng rãi nhất
Trang 11VHDL là viết tắt của VHSIC (Very High Speed Integrated Circuit) HDL.
Sự phát triển của VHDL ban đầu được tài trợ bởi Bộ Quốc phòng Hoa Kỳ như mộttiêu chuẩn tài liệu phần cứng vào đầu những năm 1980
2 Khái niệm VHDL cơ bản thông qua ví dụ
Ví dụ: Mạch phát hiện chẵn lẻ.
Có một đầu ra, chẵn và ba đầu vào, a(2), a(1) và a(0), được nhóm thành một bus
2.1 Mô tả tổng quát
Mã bao gồm hai đơn vị chính: entity declaration và architecture body.
Entity declaration: (Khai báo tín hiệu vào ra của mạch điện đang mô tả)
Trang 12 Architecture body: Phần thân kiến trúc chỉ định hoạt động bên trong hoặc tổ
chức của một mạch
Dòng tiếp theo là khai báo tín hiệu:
Khối xây dựng cơ bản bên trong thân kiến trúc là một lệnh đồng thời
Trang 13Ví dụ: chúng ta có thể sắp xếp lại mã như sau
Cách khác: sử dụng thao tác xor và biểu thức có thể được viết là
Sơ đồ khái niệm:
2.2 Mô tả cấu trúc
Trong cách mô tả cấu trúc, một mạch được xây dựng từ các bộ phận nhỏ hơn
Mô tả chỉ định loại bộ phận nào được sử dụng và cách các bộ phận này đượckết nối
Mô tả về cơ bản là một sơ đồ, đại diện cho một sơ đồ khối hoặc sơ đồ mạchđiện
Trang 20 Package declaration (khai báo gói)
Package body (thân gói)
Configuration (cấu hình)
Một gói VHDL thường chứa một tập hợp các mục thường được sử dụng, chẳng hạnnhư kiểu dữ liệu, chương trình con và các thành phần, cần thiết cho nhiều chương trìnhVHDL
Như tên gợi ý, một khai báo gói bao gồm khai báo các mục này
Phần thân gói thường chứa phần triển khai và mã của các chương trình con.Trong VHDL, nhiều thân kiến trúc có thể được liên kết với một khai báo entity.Một cấu hình chỉ định phần thân kiến trúc nào sẽ được liên kết với phần khai báoentity
Nhận xét chỉ dành cho mục đích tài liệu và không ảnh hưởng đến mã
VD: chúng tôi đã thêm nhận xét vào mã VHDL trước đó:
Đặt tên:
Định danh là tên của một đối tượng trong VHDL
Các quy tắc cơ bản để tạo thành một định danh là:
Trang 21 Mã định danh chỉ có thể chứa các chữ cái, chữ số thập phân và dấu gạchdưới.
Ký tự đầu tiên phải là một chữ cái
Ký tự cuối cùng không được là dấu gạch dưới
Hai dấu gạch dưới liên tiếp không được phép
VD: các số nhận dạng sau là hợp lệ:
A10, next_state, NextState, mem_addr_enable
Mặt khác, các định danh sau vi phạm một trong các quy tắc và sẽ gây ra lỗi cú pháp:
Sig#3, -X10, 7segment, X10_, hi_there
Vì VHDL không phân biệt chữ hoa chữ thường nên các mã định danh sau đây như là1:
Nextstate, NextState, NEXTSTATE, nEXTsTATE
Số, ký tự và chuỗi:
VD: 45 có thể được biểu diễn dưới dạng 2#101101# và 16#2D# trong cơ số 2 và cơ số
16 tương ứng
Chúng tôi cũng có thể thêm một dấu gạch dưới để tăng cường khả năng đọc
VD: 12_3456 giống với 123456 và 2#0011_1010_1101# giống với
Cú pháp khai báo tín hiệu được đơn giản hóa là
VD: dòng sau khai báo các tín hiệu a, b và c với kiểu dữ liệu std_logic:
Theo định nghĩa của VHDL, chúng ta có thể chỉ định một giá trị ban đầu tùy chọntrong phần khai báo tín hiệu VD: chúng ta có thể gán giá trị ban đầu là '0' cho các tín hiệutrước đó:
Trang 22Biến là một khái niệm được tìm thấy trong ngôn ngữ lập trình truyền thống Nó có thểđược coi là một "vị trí bộ nhớ tượng trưng" nơi một giá trị có thể được lưu trữ và sửa đổi.Không có ánh xạ trực tiếp giữa một biến và một phần cứng Một biến chỉ có thể được khaibáo và sử dụng trong một quy trình và là cục bộ của quy trình đó
Ứng dụng chính của một biến là mô tả hành vi trừu tượng của một hệ thống.
Cú pháp khai báo biến tương tự như khai báo tín hiệu:
Cú pháp đơn giản hóa của phép gán biến là
5 Các loại dữ liệu và các toán tử
5.1 Các kiểu dữ liệu của VHDL
Trong VHDL, mỗi đối tượng có một kiểu dữ liệu
Một kiểu dữ liệu được xác định bởi:
Một tập hợp các giá trị mà một đối tượng có thể đảm nhận
Một tập hợp các hoạt động có thể được thực hiện trên các đối tượng của kiểu
dữ liệu này
Integer:
VHDL không xác định phạm vi chính xác của kiểu số nguyên nhưng xácđịnh rằng phạm vi tối thiểu là từ (-2 ) đến (2 -1), tương ứng với 32 bit.31 31
Boolean: được định nghĩa là (sai, đúng)
Bit: được định nghĩa là (‘0’, ‘1’)
Bit_vector: được định nghĩa là mảng một chiều với các phần tử thuộc kiểu dữliệu bit
Trang 23Ord Operator Description Data type of
operand a
Data type ofoperand b
Data type ofoperandresult
bit_vector
Boolean, bit,bit_vector
12 a & b Concatenation 1-D array,
elememt
1-D array,elememt
1-D array,elememt
13 a sll b Shift-left logical bit_vector Integer bit_vector
14 a srl b Shift-right logical
15 a sla b Shift-left arithmetic
16 a sra b Shift-right arithmetic
17 a rol b Rotate-left
18 a ror b Rotate-right
20 a /= b Not euqal to Scalar or 1-D Same as a Boolean