1. Trang chủ
  2. » Công Nghệ Thông Tin

THIẾT KẾ LOGIC SỐ

403 5,3K 13

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 403
Dung lượng 8,71 MB

Nội dung

MỘT QUYỂN SÁCH GIÚP SINH VIÊN HIỂU ĐƯỢC CÔNG NGHỆ THIẾT KẾ LOGIC SỐ

Trang 1

THIẾT KẾ LOGIC SỐ

2010

Bộ môn Kỹ thuật xung số, vi xử lý Khoa VTĐT – HV Kỹ thuật Quân sự

Trang 2

DRAFT VERSION ONLY

Trang 3

Mục lục

Mục lục 3Chương mở đầu 10

1.Các khái niệm chung Error! Bookmark not defined 1.1 Transitor Error! Bookmark not defined 1.2 Vi mạch số tích hợp Error! Bookmark not defined 1.3 Cổng logic Error! Bookmark not defined 1.4 Phần tử nhớ Error! Bookmark not defined 1.5 Mạch logic tổ hợp Error! Bookmark not defined 1.6 Mạch logic tuần tự Error! Bookmark not defined 1.7 Các phương pháp thể hiện thiết kế Error! Bookmark not defined.

2 Yêu cầu đối với một thiết kế logic Error! Bookmark not defined.

3 Các công nghệ thiết kế mạch logic số Error! Bookmark not defined.

4 Kiến trúc của các IC khả trình Error! Bookmark not defined 4.1 Kiến trúc PROM, PAL, PLA, GAL Error! Bookmark not defined 4.2 Kiến trúc CPLD, FPGA Error! Bookmark not defined Câu hỏi ôn tập chương I Error! Bookmark not defined Chương II: Ngôn ngữ mô tả phần cứng VHDL Error! Bookmark not defined.

1 Giới thiệu về VHDL Error! Bookmark not defined.

2 Cấu trúc của chương trình mô tả bằng VHDL Error! Bookmark not defined 2.1 Khai báo thư viện Error! Bookmark not defined 2.2 Mô tả thực thể Error! Bookmark not defined 2.2 Mô tả kiến trúc Error! Bookmark not defined 2.3 Khai báo cấu hình Error! Bookmark not defined.

3 Chương trình con và gói Error! Bookmark not defined 3.1 Thủ tục Error! Bookmark not defined 3.2 Hàm Error! Bookmark not defined.

Trang 4

3.3 Gói Error! Bookmark not defined.

4 Đối tượng dữ liệu, kiểu dữ liệu Error! Bookmark not defined 4.1 Đối tượng dữ liệu Error! Bookmark not defined 4.2 Kiểu dữ liệu Error! Bookmark not defined.

5 Toán tử và biểu thức Error! Bookmark not defined 5.1 Toán tử logic Error! Bookmark not defined 5.2 Các phép toán quan hệ Error! Bookmark not defined 5.3 Các phép toán dịch Error! Bookmark not defined 5.4 Các phép toán cộng trừ và hợp Error! Bookmark not defined 5.5 Các phép dấu Error! Bookmark not defined 5.6 Các phép toán nhân chia, lấy dư Error! Bookmark not defined 5.6 Các phép toán khác Error! Bookmark not defined.

6 Phát biểu tuần tự Error! Bookmark not defined 6.1 Phát biểu đợi Error! Bookmark not defined 6.2 Phát biểu xác nhận và báo cáo Error! Bookmark not defined 6.3 Phát biểu gán biến Error! Bookmark not defined 6.4 Phát biểu gán tín hiệu Error! Bookmark not defined 6.5 Lệnh rẽ nhánh và lệnh lặp Error! Bookmark not defined.

7 Phát biểu đồng thời Error! Bookmark not defined 7.1 Phát biểu khối Error! Bookmark not defined 7.2 Phát biểu quá trình Error! Bookmark not defined 7.3 Phát biểu gán tín hiệu đồng thời Error! Bookmark not defined 7.4 Phát biểu generate Error! Bookmark not defined 7.5 Phát biểu cài đặt module con Error! Bookmark not defined.

8 Phân loại mã nguồn VHDL Error! Bookmark not defined.

9 Kiểm tra thiết kế bằng VHDL Error! Bookmark not defined.

Trang 5

9.1.1 Kiểm tra nhanh Error! Bookmark not defined 9.1.1 Kiểm tra tự động nhiều tổ hợp đầu vào Error! Bookmark not defined Bài tập chương II Error! Bookmark not defined.

1 Bài tập cơ sở Error! Bookmark not defined.

2 Bài tập nâng cao Error! Bookmark not defined Câu hỏi ôn tập lý thuyết Error! Bookmark not defined Chương III: Thiết kế các khối logic tổ hợp và tuần tự thông dụngError! Bookmark not defined.

1 Khối cộng/trừ Error! Bookmark not defined 1.1 Khối cộng đơn giản Error! Bookmark not defined 1.2 Khối trừ Error! Bookmark not defined 1.3 Khối cộng thấy nhớ trước Error! Bookmark not defined.

2 Thanh ghi Error! Bookmark not defined.

3 Bộ cộng tích lũy Error! Bookmark not defined.

4 Bộ đếm Error! Bookmark not defined.

6 Bộ dịch và thanh ghi dịch Error! Bookmark not defined 6.1 Bộ dịch Error! Bookmark not defined 6.1 Thanh ghi dịch Error! Bookmark not defined.

7 Khối nhân số nguyên Error! Bookmark not defined 7.1 Nhân số nguyên không dấu dùng phương pháp cộng dịchError! Bookmark not defined.

7.2 Nhân số nguyên có dấu Error! Bookmark not defined 7.3 Khối nhân dùng mã hóa Booth cơ số 4 Error! Bookmark not defined.

8 Khối chia số nguyên Error! Bookmark not defined 8.1 Khối chia dùng sơ đồ khôi phục phần dư Error! Bookmark not defined 8.2 Khối chia dùng sơ đồ không khôi phục phần dư Error! Bookmark not defined 8.3 Khối chia số nguyên có dấu Error! Bookmark not defined.

Trang 6

9 Bộ nhớ Error! Bookmark not defined 9.1 Bộ nhớ RAM Error! Bookmark not defined 9.2 Bộ nhớ ROM Error! Bookmark not defined 9.3 Bộ nhớ FIFO Error! Bookmark not defined 9.4 Bộ nhớ LIFO Error! Bookmark not defined.

10 Máy trạng thái hữu hạn Error! Bookmark not defined.

11 Các khối làm việc với số thực Error! Bookmark not defined 11.1 Số thực dấu phẩy tĩnh Error! Bookmark not defined 11.2 Số thực dấu phẩy động Error! Bookmark not defined 11.3 Chế độ làm tròn trong số thực dấu phẩy động Error! Bookmark not defined 11.3 Phép cộng số thực dấu phẩy động Error! Bookmark not defined 11.5 Phép nhân số thực dấu phẩy động Error! Bookmark not defined 11.6 Phép chia số thực dấu phẩy động Error! Bookmark not defined.

12 Thiết kế một vi xử l{ đơn giản Error! Bookmark not defined 12.1 Mô hình của một bộ vi xử l{ đơn giản Error! Bookmark not defined 12.2 Tập lệnh của vi xử lý Error! Bookmark not defined 12.3 Sơ đồ khối thiết kế Error! Bookmark not defined Bài tập chương III Error! Bookmark not defined Bài tập Error! Bookmark not defined Câu hỏi ôn tập lý thuyết Error! Bookmark not defined Chương IV: Thiết kế vi mạch số trên FPGA Error! Bookmark not defined.

1 Tổng quan về kiến trúc FPGA Error! Bookmark not defined 1.2 Khái niệm FPGA Error! Bookmark not defined 1.2 Ứng dụng của FPGA trong xử lý tín hiệu số Error! Bookmark not defined 1.3 Công nghệ tái cấu trúc FPGA Error! Bookmark not defined 1.4 Kiến trúc tổng quan Error! Bookmark not defined.

Trang 7

2 Kiến trúc chi tiết Xilinx FPGA Spartan-3E Error! Bookmark not defined 2.1 Khối logic khả trình Error! Bookmark not defined 2.2 Khối điều khiển vào ra Error! Bookmark not defined 2.3 Hệ thống kết nối khả trình Error! Bookmark not defined 2.4 Các phần tử khác của FPGA Error! Bookmark not defined.

3 Quy trình thiết kế FPGA bằng ISE Error! Bookmark not defined 3.1 Mô tả thiết kế Error! Bookmark not defined 3.2 Tổng hợp thiết kế Error! Bookmark not defined 3.3 Hiện thực hóa thiết kế Error! Bookmark not defined 3.4 Cấu hình FPGA Error! Bookmark not defined 3.5 Kiểm tra thiêt kế trên FPGA Error! Bookmark not defined.

4 Một số ví dụ thiết kế trên FPGA bằng ISE Error! Bookmark not defined 4.1 Thiết kế khối nhận thông tin qua cổng COM Error! Bookmark not defined 4.2 Thiết kế khối điều khiển PS/2 cho Keyboard, MouseError! Bookmark not defined.

4.3 Thiết kế khối tổng hợp dao động số NCO Error! Bookmark not defined 4.4 Thiết kế khối điều khiển LCD1602A Error! Bookmark not defined 4.5 Thiết kế điều khiển VGA trên FPGA Error! Bookmark not defined.

5 Thiết kế hệ nhúng trên FPGA bằng Xilinx EDK Error! Bookmark not defined 5.1 Khái niệm hệ nhúng trên FPGA Error! Bookmark not defined 5.2 Giới thiệu về Xilinx EDK Error! Bookmark not defined 5.2.1 Giới thiệu về Xilinx EDK Error! Bookmark not defined 5.3 Một số ví dụ về thiết kế hệ nhúng trên Xilinx EDKError! Bookmark not defined.

6 Thiết kế trên FPGA bằng System Generator Error! Bookmark not defined Bài tập chương IV Error! Bookmark not defined.

1 Bài tập cơ sở Error! Bookmark not defined.

Trang 8

2 Bài tập nâng cao Error! Bookmark not defined.

3 Câu hỏi ôn tập lý thuyết Error! Bookmark not defined.

Tài liệu tham khảo 401

Trang 10

Chương mở đầu

Chương mở đầu có nhiệm vụ cung cấp cho người học những kiến thức, khái niệm cơ bản về các thiết kế số, trong đó có những kiến thức thuộc dạng căn bản, có những kiến thức được nhắc lại với những bổ xung phù hợp với mục đích môn học Chương này cũng giới thiệu qua về sự phát triển của một lớp các IC khả trình phần cứng từ PROM cho tới FPGA Mục đích của phần này giúp cho người học có một cái nhìn tổng quan về lịch sử của thiết kế số trước khi tập trung vào các vấn đề kiến thức trọng tập ở các chương sau là ngôn ngữ thiết kế phần cứng và công nghệ FPGA

Trang 11

1.Các khái niệm chung

1.1 Transitor

Là linh kiện bán dẫn có khả năng làm việc như một công tắc bật tắt hoặc dùng

để khuếch đại tín hiệu Transitor là phần tử cơ bản của mọi vi mạch số tích hợp, từ các cổng logic đơn giản AND, OR, NOT đến các loại phức tạp như các mạch điều khiển ngoại vi, vi điều khiển, vi xử l{…

Transitor được làm từ vật liệu bán dẫn (sermiconductor), là vật liệu vừa có khả

năng dẫn điện vừa có khả năng làm việc như những vật liệu cách điện, khả năng này thay đổi tùy theo kích thích từ bên ngoài như nhiệt độ, ánh sáng, trường điện từ, dòng điện… Chất bán dẫn dùng để cấu tạo transitor thường là Germany (Ge) hoặc Silicon (Si) được kích tạp một lượng nhỏ Photpho(P) hoặc Boron (B) với mục đích tăng mật độ electron (kiểu N) tự do hoặc tăng mật độ lỗ trống (kiểu P) tương ứng trong tinh thể bán dẫn Cấu trúc nguyên l{ của các dạng transitor được trình bày ở hình dưới đây:

Hình 1.1: Cấu trúc transitor lưỡng cực BJTS, đơn cực FETs, diode

Transitor lưỡng cực BJT (Bipolar Junction Transitor) sử dụng nhiều trong thập

kỷ 80s, đặc điểm của BJT là tốc độ chuyển mạch nhanh nhưng nhược điểm là mức tiêu thụ năng lượng lớn ngay cả trong trạng thái nghỉ và chiếm nhiều diện tích

Sau đó BJTs dần được thay thế bằng transitor đơn cực FETs(Field Effect

Transitors) làm việc trên hiệu ứng trường và kênh dẫn chỉ dùng một loại bán

dẫn loại p hoặc n MOSFETs (Metal-oxide-sermiconductor

Field-Effect-Transitors) là transitor FETs nhưng dùng cực Cổng metal (về sau lớp metal được

Trang 12

thay bằng polysilicon) phủ trên một lớp oxide cách điện và lớp này phủ trên vật liệu bán dẫn, tùy theo loại vật liệu bán dẫn mà transitor này có tên gọi là NMOS (kênh dẫn n) và PMOS (kênh dẫn p)

CMOS (Complementary-Symmetry Metal-Oxide Sermiconductor) là transitor tạo

thành từ việc ghép cặp bù PMOS và NMOS, có nhiều ưu điểm so với các dòng transitor cũ như hiệu điện thế làm việc thấp, độ chống nhiễu cao, tiêu tốn ít năng lượng và cho phép tích hợp trong IC số với mật độ cao CMOS là công nghệ transitor được sử dụng rộng rãi nhất hiện nay

1.2 Vi mạch số tích hợp

Còn được gọi là IC – Intergrated Circuits, chip, là cấu trúc mạch điện được thu nhỏ bằng cách tích hợp chủ yếu từ các transitor với mật độ cao, ngoài ra còn có thể có các linh kiện điện thụ động khác trên một khối bán dẫn mỏng

Các vi mạch tích hợp đều có một số lượng tín hiệu đầu vào và đầu ra để thực hiện một chức năng cụ thể nào đó Trong khuôn khổ giáo trình này chủ yếu nghiên cứu về

vi IC số, tức là dạng IC chỉ làm việc với các tín hiệu số

b) Vi mạch tích hợp thực tế

Vi mạch tích hợp ra đời từ những năm 1960s và được ứng dụng rộng rãi trong thực tế, đã và đang tạo ra cuộc cách mạng trong lĩnh vực điện tử Ví dụ về vi mạch

tích hợp như các IC đa dụng (general purposes IC) họ 7400, 4000, các dòng vi xử l{

80x86 dùng trong máy vi tính, chíp xử l{ dùng cho điện thoại di động, máy ảnh kỹ thuật số, các vi điều khiển dùng trong các thiết bị dân dụng, ti vi, máy giặt, lò vi sóng… Các vi mạch này có mật độ tích hợp từ hàng vài chục đến hàng trăm triệu, và hiện nay

đã đến hàng tỷ transitor trong một miếng bán dẫn có kích thước xấp xỉ kích thước

đồng xu Mật độ tích hợp được định nghĩa là tổng số những phần tử tích cực

Trang 13

(transitor hoặc cổng logic) chứa trên một đơn vị diện tích của khối tinh thể bán dẫn Theo mật độ tích hợp chia ra các loại vi mạch sau:

- Vi mạch cỡ nhỏ SSI (Small scale integration), có hàng chục transitor trong một vi mạch

- Vi mạch cỡ vừa MSI (Medium scale integration), có hàng trăm transitor trong một vi mạch

- Vi mạch cỡ lớn LSI (Large scale integration), có hàng ngàn đến hàng chục ngàn transitor trong một vi mạch

- Vi mạch cực lớn VLSI (Very large scale integration), có hàng vạn, hàng triệu, hàng chục triệu transitor và lớn hơn trong một vi mạch, tới thời điểm hiện nay đã xuất hiện nhưng vi mạch có độ tích hợp đến hàng tỷ transitor

- Vi mạch siêu lớn (ULSI – Ultra large scale intergration), vi mạch có độ tích hợp với mức độ hàng triệu transitor trở lên

- WSI (Wafer-scale-Intergration) là giải pháp tích hợp nhiều vi mạch chức năng trên một tấm silicon (wafer) để tăng hiệu suất cũng như giảm giá thành sản phẩm, ví

dụ hệ vi xử l{ nhiều nhân được tích hợp bằng WSI

- SoC (System-on-a-Chip) Khái niệm chỉ một hệ tính toán, xử l{ mà tất cả các khối chức năng số và cả tương tự được thiết kế để tích hợp vào trong một chip đơn

Trong khuôn khổ chương trình này sẽ dành thời lượng chính cho việc nghiên cứu

cơ bản về công nghệ, phương pháp, quá trình thiết kế các vi mạch cỡ LSI, VLSI

1.3 Cổng logic

Cổng logic hay logic gate là cấu trúc mạch điện (sơ đồ khối hình ) được lắp ráp

từ các linh kiện điện tử để thực hiện chức năng của các hàm logic cơ bản y = f(xn, x

n-1, , x1, x0) Trong đó các tín hiệu vào xn-1, xn-2, , x1, x0 của mạch tương ứng với các biến logic xn-1, xn-2, , x1, x0 của hàm Tín hiệu ra y của mạch tương ứng với hàm logic

y Với các cổng cơ bản thường giá trị n ≤ 4

-Hình 1.3: Mô hình cổng logic cơ bản

Trang 14

Giá trị của các tín hiệu vào và ra chỉ có hai mức là mức thấp (Low - L) và mức cao (High - H) tương ứng với với hai giá trị 0 và 1 của các biến logic và hàm logic

Ví dụ: Một cổng NOT loại CMOS (hình 1.4) tương ứng hàm NOT hai biến Q = not A

Hình 1.4: Mạch điện cổng NOT

Trên sơ đồ dễ nhận thấy rằng, chỉ khi A có mức tích cực cao thì transitor trên đóng còn transitor dưới mở, Q có mức tích cực thấp, khi A có mức tích cực thấp thì transitor trên mở và dưới đóng nên Q có mực tích cực cao, như vậy mạch điện với sơ

đồ trên thực hiên vai trò của cổng NOT

Các mạch logic đều được biểu diễn bằng các hệ hàm logic và do đó có thể phát biểu là: Mọi mạch logic đều có thể xây dựng từ các cổng logic cơ bản

Đối với các cổng logic cơ bản đó thì có hai tham số thời gian cơ bản:

Hình 1.5: Tham số thời gian của cổng NOT

Thời gian trễ lan truyền Tpd (Propagation delay) là thời gian tối thiểu kể từ thời

điểm bắt đầu xảy ra sự thay đổi từ đầu vào X cho tới khi sự thay đổi này tạo ra ra thay đổi xác định tại đầu ra Y, hay nói một cách khác cho tới khi đầu ra Y ổn định giá trị

Trang 15

Tcd (Contamination delay) là khoảng thời gian kể từ thời điểm xuất hiện sự thay

đổi của đầu vào X cho tới khi đầu ra Y bắt đầu xảy ra sự mất ổn định Sau giai đoạn mất ổn định hay còn gọi là giai đoạn chuyển tiếp tín hiệu tại đầu ra sẽ thiết lập trạng thái xác định vững bền

Như vậy Tpd > Tcd và khi nhắc đến độ trễ của cổng thì là chỉ tới giá trị Tpd

1.4 Phần tử nhớ

1.4.1 D-Latch và D flip-flop

Latch và Flip-Flop là các phần tử nhớ quan trọng trong thiết kế VLSI, sơ đồ cấu

tạo chi tiết và mô tả đã được trình bày kỹ trong phần Kỹ thuật số Ở phần này chỉ

nhắc lại những tính chất cơ bản nhất của các Flip-Flop và bổ xung thêm các tham số thời gian thực của các phần tử này

Rising edge 1 1 x 0 X Qprev

Non-rising x Qprev D-Latch là phần tử nhớ làm việc theo mức xung, cụ thể khi tín hiệu Clock bằng 1 thì giá trị Q đầu ra bằng giá trị đầu vào, khi tín hiệu Clock = 0 thì giá trị đầu ra không đổi Nói một cách khác D-latch làm việc như một cửa đóng mở giữa tín hiệu Q và D tương ứng với mức điện áp của xung Clock

D-flip-flop là phần tử nhớ làm việc theo sườn xung, có hai dạng sườn là sườn lên (rising edge) khi xung thay đổi từ 0->1 và sườn xuống (falling edge) khi xung thay đổi từ 1->0 Khi không có yêu cầu gì đặc biệt thì Flip-flop làm việc với sườn xung lên thường được sử dụng Khác với D-latch giá trị đầu ra của Flip-Flop chỉ thay vào thời điểm sườn xung Với cách làm việc như vậy giá trị đầu ra sẽ không thay đổi trong suốt thời gian một chu kz xung nhịp dù cho tín hiệu đầu vào thay đổi D Flip-flop rất hay được dùng trong mạch có nhớ vì vậy đôi khi nói đến phần tử nhớ thường ngầm hiểu là D Flip-flop

Trang 16

Hình 1.6: Đồ thị thời gian của D Flip-flop và D Latch

Đối với D-flip-flop và D-latch nhớ thì có hai tham số thời gian hết sức quan trọng là Tsetup, và Thold. Đây là tham số thời gian đối với dữ liệu đầu vào cổng Din

để đảm bảo việc truyền dữ liệu sang cổng ra Qout là chính xác, cụ thể như sau

của xung nhịp Clock

Thold: Là khoảng thời gian tối thiểu cần giữ ổn định dữ liệu đầu vào sau sườn tích cực của xung nhịp Clock

Hình 1.7: Setup time và Hold time của D-Flip-Flop

Trang 17

thì, còn đối với RS flip-flop đồng bộ thì tín hiệu Q chỉ thay đổi tại thời điểm sườn xung Clock

Trạng thái khí R= 1, S= 1 là trạng thái cấm vì khí đó đầu ra nhận giá trị không xác định, thực chất sẽ xảy ra sự thay quá trình “chạy đua” hay tự dao động giá trị Q

từ 0 đến 1 và ngược lại với chu kz bằng độ trễ chuyển mạch của flip-flop

Mạch logic tổ hợp (Combinational logic circuit) là mạch mà tổ hợp giá trị tín

hiệu ra chỉ phụ thuộc vào giá trị tổ hợp tín hiệu vào Hiểu một cách khác mạch tổ hợp

Trang 18

chỉ có 1 trạng thái không chứa các phần tử nhớ mà chỉ chứa các phần tử thực hiện logic chức năng như AND, OR, NOT …

Đối với mạch tổ hợp tham số thời gian trễ Tdelay là khoảng thời gian lớn nhất kể

từ thời điểm xác định các giá trị đầu vào cho tới thời điểm các kết quả ở đầu ra bắt đầu ổn định Trên thực tế việc tìm tham số độ trễ của mạch được thực hiện bằng cách liệt kê tất cả các đường biến đổi tín hiệu có thể từ tất cả các đầu vào tới tất cả đầu ra sau đó dựa trên thông số về thời gian của các cổng và độ trễ đường truyền có thể tính được độ trễ của các đường này và tìm ra đường có độ trễ lớn nhất, giá trị đó chính là

Tdelay

Hình 1.8: Độ trễ của mạch tổ hợp

Minh họa cho độ trễ trong mạch tổ hợp như ở hình 1.8 Về lý thuyết để xác định độ trễ của mạch cần liệt kê tất cả các đường tín hiệu từ 4 đầu vào In1, In2, In3, In4 đến 2 đầu ra Out1, Out2 Đối với mỗi cặp đầu ra đầu vào (In, Out) tồn tại nhiều đường truyền khác nhau vì vậy tổng số lượng các đường truyền này thường rất lớn Chính vì thế đối với những mạch tổ hợp lớn thì việc xác định độ trễ đều phải thực hiện bằng sự hỗ trợ của máy tính

Ví dụ để xác định độ trễ của hai đường truyền 1 và 2 trên hình vẽ: đường 1 lần lượt đi qua các cổng NOT, AND_4, NOR, AND_3, OR Đường 2 lần lượt đi qua cổng NOT, AND, OR_4, AND_4, OR_4 Độ trễ của các đường truyền này tính bằng độ trễ của các cổng nó đi qua cộng với độ trễ dây dẫn (TWrite)

T1 = TNOT + TAND_4 + TNOR + TAND_3 + T AND_3 + TWire1

T2 = TNOT + TAND + TOR_4 + TAND_4 + T OR_4 + TWire2

Trang 19

Do độ trễ của cổng nhiều đầu vào lớn hơn độ trễ của cổng ít đầu vào nên mặc

dù số cổng đi qua trên đường truyền như nhau nhưng đường truyền 2 sẽ có độ trễ

lớn hơn đường 1 Các đường truyền có độ trễ lớn nhất được gọi là Critical paths Các

đường truyền này cần đặc biệt quan tâm trong quá trình tối ưu hóa độ trễ của vi mạch

1.6 Mạch logic tuần tự

Mạch logic dãy (Sequential logic circuits) còn được gọi là mạch logic tuần tự là

vi mạch số mà tín hiệu ra tại một thời điểm không những phụ thuộc vào tổ hợp tín hiệu đầu vào tại thời điểm đó mà còn phụ thuộc vào tín hiệu vào tại các thời điểm trước đó Hiểu một cách khác mạch dãy ngoài các phần tử tổ hợp có chứa các phần

tử nhớ và nó lưu trữ lớn hơn 1 trạng thái của mạch

Tham số thời gian của mạch tuần tự được tính khác với mạch tổ hợp, sự khác biệt đó có quan hệ mật thiết với đặc điểm của tín hiệu đồng bộ Clock Ví dụ với một mạch tuần tự điển hình dưới đây Mạch tạo từ hai lớp thanh ghi sử dụng Flip-flop A

và B, trước giữa và sau thanh ghi là ba khối logic tổ hợp Combinational logic 1, 2, 3, các tham số thời gian cụ thể như sau:

Td1, Td2, Td3 Là thời gian trễ tương ứng của 3 khối mạch tổ hợp 1, 2, 3

Tsa, Tsb là thời gian thiết lập (Tsetup) của hai Flipflop A, B tương ứng

điểm kích hoạt của sườn Clock

Tskew Đối với mạch đồng bộ thì sẽ là l{ tưởng nếu như điểm kích hoạt (sườn lên hoặc sườn xuống) của xung nhịp Clock tới các Flip-flop cùng một thời điểm Tuy vậy trên thực tế bao giờ cũng tồn tại độ trễ giữa hai xung Clock đến hai Flip-flop khác nhau Tskew là độ trễ lớn nhất của xung nhịp Clock đến hai Flip-flop khác nhau trong mạch Thời gian chênh lệch lớn nhất giữa tín hiệu xung nhịp , thời gian trễ này sinh ra

do độ trễ trên đường truyền của xung Clock từ A đến B Trên thực tế Tskew giữa hai Flip-flop liên tiếp có giá trị rất bé so với các giá trị độ trễ khác và có thể bỏ qua, nhưng đối với những mạch cỡ lớn khi số lượng Flip-flop nhiều hơn và phân bố xa nhau thì giá trị Tskew có giá trị tương đối lớn

Trang 20

Combinational logic2

Combinational logic3

Td1 Tsa Tclk-q Td2 Tsb

T skew

Tclk-q Td3Hình 1.9: Tham số thời gian của mạch tuần tự

Những tham số trên cho phép tính toán các đặc trưng thời gian của mạch tuần tự

- Từ đó tính được xung nhịp tối đa của vi mạch là

Fmax = 1/ Tclk_min = 1/( Tclk-q + Td2 + Tsb + Tskew)

1.7 Các phương pháp thể hiện thiết kế

Có hai phương pháp cơ bản được sử dụng để mô tả vi mạch số là mô tả bằng

sơ đồ logic (schematic) và mô tả bằng ngôn ngữ mô tả phần cứng HDL (Hardware

Description Language)

Mô tả bằng sơ đồ: vi mạch được mô tả trực quan bằng cách ghép nối các phần

tử logic khác nhau một cách trực tiếp giống như hình vẽ dưới đây Thông thường các phần tử không đơn thuần là các đối tượng đồ họa mà còn có các đặc tính vật lý gồm chức năng logic, tải vào ra, thời gian trễ… Những thông tin này được lưu trữ trong thư

Trang 21

viện logic thiết kế Mạch vẽ ra có thể được mô phỏng để kiểm tra chức năng và phát hiện và sửa lỗi một cách trực tiếp

Hình 1.10: Mô tả Schematic

Ưu điểm của phương pháp này là cho ra sơ đồ các khối logic rõ ràng thuận tiện cho việc phân tích mạch, tuy vậy phương pháp này chỉ được sử dụng để thiết kế những mạch cỡ nhỏ, độ phức tạp không cao Đối với những mạch cỡ lớn hàng trăm ngàn cổng logic thì việc mô tả đồ họa là gần như không thể và nếu có thể cũng tốn rất nhiều thời gian, chưa kể những khó khăn trong công việc kiểm tra lỗi trên mạch sau

đó

Mô tả bằng HDL: HDL cho phép mô tả vi mạch bằng các cú pháp tương tự như

cú pháp của ngôn ngữ lập trình Có ba ngôn ngữ mô tả phần cứng phổ biến hiện nay là:

Verilog: Ra đời năm 1983, do hai kỹ sư Phil Moorby và Prabhu Goel làm việc tại

Automated Integrated Design Systems (sau này thuộc sở hữu của Cadence) Verilog được IEEE chính thức tiêu chuẩn hóa vào năm 1995 và sau đó là các phiên bản năm

2001, 2005 Đây là một ngôn ngữ mô tả phần cứng có cấu trúc và cú pháp gần giống với ngôn ngữ lập trình C, ngoài khả năng hỗ trợ thiết kế thì Verilog rất mạnh trong việc hỗ trợ cho quá trình kiểm tra thiết kế

Trang 22

VHDL: VHDL viết tắt của Very-high-speed intergrated circuits Hardware Description Language, hay ngôn ngữ mô tả cho các mạch tích hợp tốc độ cao VHDL

lần đầu tiên được phát triển bởi Bộ Quốc Phòng Mỹ nhằm hỗ trợ cho việc thiết kế những vi mạch tích hợp chuyên dụng (ASICs) VHDL cũng được IEEE chuẩn hóa vào các năm 1987, 1991, 2002, và 2006(Draft) VHDL được phát triển dựa trên cấu trúc của ngôn ngữ lập trình Ada Cấu trúc của mô tả VHDL tuy phức tạp hơn Verilog nhưng mang tính logic chặt chẽ và gần với phần cứng hơn

AHDL: Altera HDL được phát triển bởi công ty bán dẫn Altera với mục đích dùng

thiết kế cho các sản phẩm FPGA và CPLD của Altera AHDL có cấu trúc hết sức chặt chẽ và là ngôn ngữ rất khó học so với 2 ngôn ngữ trên Bù lại AHDL cho phép mô tả thực thể logic chi tiết và chính xác hơn Ngôn ngữ này ít phổ biến tuy vậy nó cũng được rất nhiều chương trình mô phỏng hỗ trợ biên dịch

Bên cạnh các ngôn ngữ trên thì một loạt các ngôn ngữ khác đã và đang phát triển cũng hỗ trợ khả năng mô tả phần cứng, đáng chú { là System Verilog là phiên bản mở rộng của Verilog hướng của C++ như hỗ trợ các kiểu dữ liệu khác nhau, sử dụng Class và nhiều hàm hệ thống bậc cao

SystemC không phải là một HDL nhưng là một dạng mở rộng của C++ cho phép

hỗ trợ kiểm tra các thiết kế bằng VHDL hay Verilog

2 Yêu cầu đối với một thiết kế logic

Yêu cầu đối với một thiết kế IC bao gồm:

 Yêu cầu chức năng: mạch gồm có các đầu vào đầu ra như thế nào, thực hiện nhiệm vụ gì…

 Yêu cầu về mặt công nghệ: Mạch thiết kế sử dụng nền công nghệ bán dẫn nào PLD, ASIC, FPGA…

 Yêu cầu về mặt tài nguyên: Giới hạn về số lượng cổng, số lượng transitors, về diện tích quy đổi chuẩn, về kích thước của IC thiết kế

 Yêu cầu về mặt khả năng làm việc: là yêu cầu về các tham số thời gian của mạch bao gồm độ trễ cổng vào, độ trễ cổng ra, độ trễ logic với mạch tổ hợp, các xung nhịp làm việc, số lượng xung nhịp cho một chu trình xử lý dữ liệu

Yêu cầu về mức tiêu hao năng lượng (power consumtion)

Yêu cầu về chi phí cho quá trình thiết kế và chế tạo (design cost)

Trang 23

Các yêu cầu kể trên có quan hệ mật thiết với nhau và thông thường chúng không thể đồng thời đạt được tối ưu Ví dụ năng lượng tiêu thụ của mạch muốn nhỏ thì số lượng cổng sử dụng hạn chế và sẽ hạn chế tốc độ làm việc, hoặc việc sử dụng các công nghệ rẻ tiền hơn hoặc dùng các cổng công xuất thấp cũng là nhân tố giảm hiệu năng làm việc của mạch

Trong thực tế Các IC phục vụ các mục đích khác nhau thì có yêu cầu khác nhau

và người lập kế hoạch thiết kế chế tạo IC cần phải cân đối giữa các tiêu chí để có một phương án tối ưu nhất Ví dụ cùng là vi xử l{ nhưng nếu dùng thì không có yêu cầu đặc biệt về mặt tiêu hao năng lượng do nguồn cấp là cố định, khi đó Chip phải được thiết kế để có hiệu suất làm việc tối đa Trong khi vi xử lý cho máy tính xách tay thì cần phải thiết kế để có mức tiêu thụ năng lượng thấp nhất có thể hoặc để có thể hoạt động ở nhiều mức tiêu thụ năng lượng khác nhau nhằm kéo dài thời gian sử dụng Chip điều khiển cho các thiết bị di động thì cần phải tối ưu hết mức mức tiêu tốn năng lượng bằng cách thu gọn thiết kế, giảm thiểu những tập lệnh không cần thiết và sử dụng các phần tử tiết kiệm năng lượng nhất

3 Các công nghệ thiết kế mạch logic số

Vi mạch số có thể được thiết kế bằng tay (Manual IC design), hoặc bằng sự trợ giúp của các chương trình trợ giúp thiết kế trên máy tính (Design Automation)

Manual design: Vi mạch số có thể được thiết kế bởi cách ghép nối các linh kiện bán

dẫn rời rạc Sự ra đời các IC đa dụng họ 7400 hay 4000 cho phép người sử dụng có thể tự thiết kế những mạch số cỡ nhỏ và cỡ vừa bằng cách ghép nối trên một bản mạch in Nhờ có cấu trúc chuẩn hóa, có thể dễ dàng ghép nối, tạo những mạch chức năng khác nhau, thực tế những mạch dạng này đã và vẫn đang được ứng dụng rộng rãi Điểm hạn chế duy nhất của những thiết kế dạng này là chúng chỉ phù hợp cho những thiết kế SSI đơn giản do giới hạn về mật độ tích hợp và tốc độ làm việc thấp

Trang 24

IC Design

Manual Design

Programable Device Based

Design Automation

7400 Series

(TTL)

4000 Series (CMOS)

(FPGA) CPLD

Full-custom ASIC

Semi-custom ASIC

PROM (EPROM,

Discrete components

Hình 1.11: Phân loại thiết kế vi mạch số.

Design Automation Máy tính là một sản phẩm đặc trưng nhất của nền công nghiệp

sản xuất chế tạo bán dẫn nhưng ngay sau khi ra đời đã trở thành công cụ đắc lực cho việc thiết kế mô phỏng IC Tự động hóa thiết kế không những giúp đơn giản hóa và rút ngắn đáng kể thời gian thiết kế sản phẩm mà còn đem lại những khả năng quá trình thiết kế bởi con người không làm được đó là:

 Khả năng làm việc với những thiết kế phức tạp tới cỡ hàng nghìn đến hàng tỷ transitor

 Khả năng xử lý những bài toán tối ưu với nhiều tiêu chí và nhiều điều kiện ràng buộc phức tạp

 Khả năng tự động tổng hợp thiết kế từ các mức trừu tượng cao xuống các mức trừu tượng thấp hơn một cách chính xác, nhanh chóng

 Đơn giản hóa việc lưu trữ và trao đổi dữ liệu thiết kế

Các phần mềm hỗ trợ thiết kế gọi chung là CAD Tools, trong lĩnh vực thiết kế IC có

3 hệ thống phần mềm phổ biến của Cadence®, Synopsys®, Magma® Design Automation Inc

Trang 25

Trong tự động hóa thiết kế IC thường phân biệt thành những quy trình như sau:

Full-custom ASIC: là quy trình thiết kế IC có mức độ chi tiết cao nhất nhằm thu

được sản phẩm có hiệu quả làm việc cao nhất trong khi vẫn đạt tối ưu về mặt tài nguyên trên nền một công nghệ bán dẫn nhất định Để đạt được mục đích đó thiết kế không những được tối ưu ở những mức cao mà còn được tối ưu ở mức độ bố trí transitor và kết nối giữa chúng, ví dụng hai khối logic cùng thực hiện hàm OR nhưng phân bố ở hai vị trí khác nhau thì được cấu trúc bằng các mạch transitor khác nhau, phụ thuộc vào các thông số khác như tải đầu vào đầu ra, vị trí, ảnh hưởng các khối

liền kề…Chính vì thế Full-custom ASIC đôi khi còn được gọi là random-logic gate

networks nghĩa là mạch tạo bởi những cổng không đồng nhất

Semi-custom ASIC design: Phân biệt với Full-custom ASIC design, khái niệm này

chỉ quy trình thiết kế mà mức độ chi tiết không đạt đến tối đa, thông thường thiết kế

đạt chi tiết đến mức cổng logic hoặc cao hơn Do Full-custom ASIC có độ phức tạp cao

nên không những chi phí cho quá trình thiết kế rất lớn mặt khác thời gian dành cho thiết kế có thể kéo dài hàng vài năm trở lên, trong thời gian đó có thể đã có những công nghệ mới ra đời, mỗi một thay đổi nhỏ kéo theo việc phải làm lại gần như toàn

bộ thiết kế và phát sinh thêm chi phí rất nhiều do vậy lợi nhuận sản phẩm bán ra thấp

hay thậm chí thua lỗ Semi-custom ASIC cân bằng giữa chi phí thiết kế và lợi nhuận

thu được sản phẩm bằng cách đẩy nhanh và giảm thiểu chi phí cho quá trình thiết kế,

dĩ nhiên bù lại sản phẩm làm ra không đạt được mức tối ưu l{ thuyết như Full-custom

design Có nhiều dạng Semi-custom design nhưng một trong những kiểu cơ bản mà

thường được sử dụng là thiết kế trên cơ sở thư viện cổng chuẩn (Standard Cell Library), thư viện này là tập hợp của các cổng logic như AND, OR, XOR, thanh ghi… và

vì chúng có cùng kích thước chiều cao nên được gọi là cổng chuẩn Chi tiết về

Semi-custom ASIC sẽ được tìm hiểu kỹ trong chương IV

ASIC based on Programmable Device: Thiết kế ASIC trên cơ sở IC khả trình Chíp

khả trình (Programmable device) được hiểu là IC chứa những phần tử logic có thể

được lập trình can thiệp để tái cấu trúc nhằm thực hiện một chức năng nào đó Quá trình tái cấu trúc thực hiện thông qua ngôn ngữ mô tả phần cứng nên thường được gọi ngắn gọn là lập trình

Chíp khả trình được chia thành các dạng sau:

SPLD (Simple Programmable Logic Device) Nhóm những IC khả trình PROM,

PAL, PLA, GAL Đặc điểm chung của nhóm này là chứa một số lượng cổng tương

Trang 26

đương từ vài chục (PROM) đến vài trăm (PAL, GAL) cổng, nhóm này sử dụng cấu trúc

của bộ nhớ ROM để lưu cấu hình IC, (vì vậy nhóm này còn gọi là Memory-based PLD),

cấu trúc này bao gồm một mảng ma trân AND và một mảng ma trận OR có thể cấu trúc được Trong các chip dạng này lại chia làm hai, thứ nhất là loại chỉ lập trình một lần, và loại có khả năng tái lập trình dùng các công nghệ như EEPROM hay EPROM Cấu trúc cụ thể và nguyên lý làm việc của PROM, PAL, PLA, GAL, FPGA, CPLD sẽ được lần lượt được trình bày chi tiết ở phần tiếp theo

CPLD (Complex Programmable Logic Device) CPLD là IC lập trình phức tạp

thường được ghép từ nhiều các SPLD trên một chip đơn Số cổng tương đương của CPLD đạt từ hàng nghìn đến hàng chục nghìn cổng

FPGA (Field-Programmable Gate Array) là IC khả trình cấu trúc từ mảng các

khối logic lập trình được Nếu như đối với các PLD khác việc tái cấu trúc IC được thực hiện trong điều kiện của nhà máy sản xuất bán dẫn, quá trình này cần những mặt nạ cho quang khắc nên sử dụng lớp những PLD này được gọi chung bằng thuật ngữ

Mask-Programmable Device FPGA phân biệt chính với các loại trên ở khả năng tái

cấu trúc IC bởi người dùng cuối hay chính là người lập trình IC

4 Kiến trúc của các IC khả trình

Trong Kỹ thuật số ta đã chỉ ra mọi hàm logic tổ hợp đều có thể biểu diển dưới dạng chuẩn tắc tuyển tức là dưới dạng tổng của các tích đầy đủ, hoặc chuẩn tắc hội, tức là dạng tích của các tổng đầy đủ Hai cách biểu diễn này là hoàn toàn tương đương

Nguyên lý này cho phép hiện thực hóa hệ hàm logic tổ hợp bằng cách ghép hai mảng ma trận nhân (AND) và ma trận cộng (OR) Nếu một trong các mảng này có tính khả trình thì IC sẽ có tính khả trình Ta sẽ lần lượt nghiên cứu cấu trúc của một số loại

IC hoạt động trên nguyên lý này

4.1 Kiến trúc PROM, PAL, PLA, GAL

4.1.1 PROM

PROM (Programmable Read-Only Memory) được phát minh bởi Wen Tsing

Chow năm 1956 khi làm việc tại Arma Division của công ty American Bosch Arma tại Garden, New York PROM được chế tạo theo đơn đặt hàng từ lực lượng không quân của Mỹ lúc bấy giờ với mục đích có được một thiết bị lưu trữ các tham số về mục tiêu

Trang 27

một các an toàn và linh động Thiết bị này dùng trong máy tính của hệ thống phóng tên lửa Atlas E/F và được giữ bí mật trong vòng vài năm trước khi Atlas E/F trở nên phổ biến PROM là vi mạch lập trình đầu tiên và đơn giản nhất trong nhóm các vi

mạch bán dẫn lập trình được (Programmable Logic Device)

PROM có số đầu vào hạn chế, thông thường đến 16 đến 32 đầu vào, vì vậy chỉ thực hiện được những hàm đơn giản Cấu trúc của PROM tạo bởi ma trận tạo bởi mảng cố định các phần tử AND nối với mảng các phần tử OR lập trình được

x x x x

x x

Trang 28

nối trên đường đứng và gửi ra các đầu ra X, Y, Z, Tương ứng với mỗi đầu ra như vậy thu được hàm dưới dạng tổng của các nhân tử, ví dụ tương ứng với đầu ra Y:

và theo một chiều vì PROM không thể tái lập trình được

Những IC dạng PROM có khả năng tái lập trình là UEPROM

(Ultraviolet-Eraseable PROM) sử dụng tia cực tím và EEPROM (Electric-(Ultraviolet-Eraseable PROM) sử dụng

hiệu điện thế ngưỡng cao để thiết lập lại các kết nối trong ma trận lập trình

4.1.2 PAL

x

x x

x x

x

x x x

Trang 29

PAL(Programmable Array Logic) ra đời cuối những năm 1970s Cấu trúc của PAL

kế thừa cấu trúc của PROM, sử dụng hai mảng logic nhưng nếu như ở PROM mảng OR

là mảng lập trình được thì ở PAL mảng AND lập trình được còn mảng OR được gắn cứng, nghĩa là các thành phần tích có thể thay đổi nhưng tổ hợp của chúng sẽ cố định, cải tiến này tạo sự linh hoạt hơn trong việc thực hiện các hàm khác nhau

Ngoài ra cấu trúc cổng ra của PAL còn phân biệt với PROM ở mỗi đầu ra của

mảng OR lập trình được được dẫn bởi khối logic gọi là Macrocell Hình dưới đây minh họa cho cấu trúc của macrocell Mỗi macrocell chứa 1 Flip-Flop Register, hai bộ dồn

kênh (Multiplexers) 2 và 4 đầu vào Mux2, Mux4 Đầu ra của Mux2 thông qua một

cổng 3 trạng thái trả lại mảng AND, thiết kế này cho kết quả đầu ra có thể sử dụng như một tham số đầu vào, tất nhiên trong trường hợp đó thì kết quả đầu ra buộc phải đi qua Flip-flop trước

Mux4 0 1

3 2

IO

programmable S0 S1

Hình 1.14: Cấu trúc Macrocell

Đầu ra của macrocell cũng thông qua cổng 3 trạng thái có thể lập trình được để nối với cổng giao tiếp của PAL Tín hiệu điều khiển của Mux4 có thể được lập trình để cho phép dẫn tín hiệu lần lượt qua các đầu vào 0,1,2,3 của Mux4 và gửi ra ngoài cổng giao tiếp IO, tùy thuộc vào cấu hình này mà tín hiệu tại IO có thể bị chặn (không gửi ra), dẫn trực tiếp từ mảng OR, thông qua thanh ghi Register Nhờ cấu trúc macrocell PAL có thể được sử dụng không những để thực hiện các hàm logic tổ hợp mà cả các hàm logic tuần tự

4.1.3 PLA

PLA (Programable Logic Array) ra đời năm 1975 và là chíp lập trình thứ hai sau

PROM Cấu trúc của PLA không khác nhiều so với cấu trúc của PAL, ngoại trừ khả năng

Trang 30

lập trình ở cả hai ma trận AND và OR Nhờ cấu trúc đó PLA có khả năng lập trình linh động hơn, bù lại tốc độ của PLA thấp hơn nhiều so với PROM và PAL và các sản phẩm cùng loại khác Thực tế PLA được ứng dụng không nhiều và nhanh chóng bị thay thế

bởi những công nghệ mới hơn như PAL, GAL, CPLD…

x

x x x

GAL (Generic Array Logic) được phát triển bởi Lattice Semiconductor company

vào năm 1983, cấu trúc của GAL không khác biệt PAL nhưng thay vì lập trình sử dụng

công nghệ antifuse thì ở GAL dùng CMOS electrically erasable PROM, chính vì vậy đôi

khi tên gọi GAL ít được sử dụng thay vì đó GAL được hiểu như một dạng PAL được cải

tiến

4.2 Kiến trúc CPLD, FPGA

4.2.1 CPLD

Tất cả các chip khả trình PROM, PAL, GAL, thuộc nhóm SPLD (Simple

Programmable Logic Devices) những IC này có ưu điểm là thiết kế đơn giản, chi phí

thấp cho sản xuất cũng như thiết kế, có thể chuyển dễ dàng từ công nghệ này sang

Trang 31

công nghệ khác tuy vậy nhược điểm là tốc độ làm việc thấp, số cổng logic tương đương nhỏ do đó không đáp ứng được những thiết kế phức tạp đòi hỏi nhiều về tài nguyên và tốc độ

CPLD (Complex Programmable Logic Devices) được Altera tiên phong nghiên

cứu chế tạo đầu tiên nhằm tạo ra những IC khả trình dung lượng lớn MAX5000, MAX7000, MAX9000 là họ những CPLD tiêu biểu của hãng này Sau sự thành công của Altera một loạt các hãng khác cũng bắt tay vào nghiên cứu chế tạo CPLD, Xilinx với các sản phẩm XC95xx series, Lattice với isp Mach 4000 serise, ispMarch XO…

Một cách đơn giản nhất có thể hiểu CPLD được cấu trúc bằng cách ghép nhiều các chíp SPLD lại, thông thường là PAL Tuy vậy về bản chất độ phức tạp của CPLD vượt xa so với các IC nhóm SPLD và cấu trúc của các CPLD cũng rất đa dạng, phụ thuộc vào từng hãng sản xuất cụ thể Dưới đây sẽ trình bày nguyên lý chung nhất của các chip họ này

CPLD được tạo từ hai thành thành phần cơ bản là nhóm các khối logic (Logic

block) và một ma trận kết nối khả trình PIM (Programmable Interconnect Matrix)

Logic block là các SPLD được cải tiến thường chứa từ 8 đên 16 macrocells Tất cả các Logic block giống nhau về mặt cấu trúc PIM là ma trận chứa các kết nối khả trình, nhiệm vụ của ma trận này là thực hiện kết nối giữa các LB và các cổng vào ra IO của CPLD Về mặt lý thuyết thì ma trận này có thể thực hiện kết nối giữa hai điểm bất kz

Programmable Interconnect matrix

Trang 32

CPLD thông thường sử dụng các công nghệ lập trình của EEPROM, điểm khác biệt là đối với CPLD thường không thể dùng những programmer đơn giản cho PAL, PLA… vì số chân giao tiếp của CPLD rất lớn Để thực hiện cấu hình cho CPLD mỗi một công ty phát triển riêng cho mình một bộ công cụ và giao thức, thông thường các chip này được gắn trên một bo mạch in và dữ liệu thiết kế được tải vào từ máy vi tính Tuy

vậy các quy trình nạp trên đang dần bị thay thế bởi giao thức chuẩn JTAG (Join Test

Action Group) chuẩn, đây cũng là giao thức dùng để cấu trúc cho FPGA mà ta sẽ

nghiên cứu kỹ hơn ở chương kế tiếp

Nhờ kế thừa cấu trúc của SPLD nên CPLD không cần sử dụng bộ nhớ ROM ngoài

để lưu cấu hình của IC, đây là một đặc điểm cơ bản nhất phân biệt CPLD với các IC khả trình cỡ lớn khác như FPGA

4.2.2 FPGA

Cấu trúc tổng quan của FPGA (Field-Programmable Gate Array) được thể hiện ở

hình sau

Interconnect wires

Trang 33

Hình 1.17: Kiến trúc tổng quan của FPGA

Về cấu trúc chi tiết và cơ chế làm việc của FPGA sẽ được dành riêng giới thiệu trong chương sau Ở đây chỉ giới thiệu kiến trúc tổng quan nhất của IC dạng này FPGA được cấu thành từ các Logic Block được bố trí dưới dạng ma trận, chúng được nối với nhau thông qua hệ thống các kênh kết nối lập trình được Hệ thống này còn có nhiệm vụ kết nối với các cổng giao tiếp IO_PAD của FPGA

FPGA là công nghệ IC lập trình mới nhất và tiên tiến nhất hiện nay Thuật ngữ

Field-Programmable chỉ quá trình tái cấu trúc IC có thể được thực hiện bởi người dùng cuối, trong điều kiện bình thường Ngoài khả năng đó FPGA có mật độ tích hợp logic lớn nhất trong số các IC khả trình với số cổng tương đương lên tới hàng trăm nghìn, hàng triệu cổng FPGA không dùng các mảng lập trình giống như trong cấu trúc của PAL, PLA mà dùng ma trận các khối logic Điểm khác biệt cơ bản thứ ba của FPGA

so với các IC kể trên là ở cơ chế tái cấu trúc, toàn bộ cấu hình của FPGA thường được lưu trong một bộ nhớ động (RAM), chính vì thế mà khi ứng dụng FPGA thường phải kèm theo một ROM ngoại vi để nạp cấu hình cho FPGA mỗi lần làm việc Kiến trúc và cách thức làm việc của FPGA sẽ được nghiên cứu cụ thể ở chương thứ 3 của giáo trình này

Trang 34

Câu hỏi ôn tập chương I

1 Transitor khái niệm, phân loại

2 Khái niệm, phân loại vi mạch số tích hợp

3 Cổng logic cơ bản, tham số thời gian của cổng logic tổ hợp

4 Các loại Flip-flop cơ bản, tham số thời gian của Flip-flop

5 Khái niệm mạch logic tổ hợp, cách xác định độ trễ trên mạch tổ hợp, khái niệm critical paths

6 Khái niệm mạch dãy, cách tính thời gian trễ trên mạch dãy, khái niệm RTL, phương pháp tăng hiệu suất mạch dãy

7 Các yêu cầu chung đối với thiết kế mạch logic số

8 Các phương pháp thể hiện thiết kế mạch logic số

9 Các công nghệ thiết kế mạch logic số, khái niệm, phân loại

10 Trình bày sơ lược về các công nghệ thiết kế IC số trên chip khả trình

11 Nguyên lý hiện thực hóa các hàm logic trên các IC khả trình dạng PROM, PAL, PLA, GAL

12 Khái niệm thiết kế ASIC, các dạng thiết kế ASIC

13 Khái niệm FPGA, đặc điểm FPGA

Trang 36

Chương II: Ngôn ngữ mô tả phần cứng VHDL

Chương II tập trung vào giới thiệu về ngôn ngữ mô tả phần cứng VHDL, đây là một ngôn ngữ mô tả phần cứng rất mạnh nhưng cũng rất khó học Nội dung kiến thức trình bày trong chương này theo định hướng như một tài liệu tra cứu hơn là bài giảng Người học không nhất thiết phải theo đúng trình tự kiến thức trình bày mà có thể tham khảo tất cả các mục một cách độc lập, bên cạnh đó là tra cứu bằng các tài liệu khác cũng như tài liệu gốc bằng tiếng Anh Các ví dụ có trong giáo trình đều cố gắng trình bày là các ví dụ đầy đủ có thể biên dịch và mô phỏng được ngay vì vậy khuyến khích người học tích cực thực hành song song với nghiên cứu lý thuyết

Kết thúc nội dung của chương này yêu cầu người học phải có kỹ năng sử dụng VHDL ở cấp độ cơ bản, có khả năng thiết kế các khối số vừa và nhỏ như Flip-flop, chọn kênh, phân kênh, cộng, dịch… đã biết trong Điện tử số, đó cũng là các khối nền tảng cho các thiết kế lớn hơn ở chương tiếp theo

Trang 37

1 Giới thiệu về VHDL

VHDL viết tắt của VHSIC HDL (Very-high-speed-intergrated-circuit Hardware

Description Language) hay ngôn ngữ mô tả phần cứng cho các mạch tích hợp tốc độ

cao.Lịch sử phát triển của VHDL trải qua các mốc chính như sau:

1981: Phát triển bởi Bộ Quốc phòng Mỹ nhằm tạo ra một công cụ thiết kế phần cứng tiện dụng có khả năng độc lập với công nghệ và giảm thiểu thời gian cũng như chi phí cho thiết kế

1983-1985: Được phát triển thành một ngôn ngữ chính thống bởi 3 công ty Intermetrics, IBM and TI

1986: Chuyển giao toàn bộ bản quyền cho Viện Kỹ thuật Điện và Điện tử (IEEE) 1987: Công bố thành một chuẩn ngôn ngữ IEEE-1076 1987

1994: Công bố chuẩn VHDL IEEE-1076 1993

2000: Công bố chuẩn VHDL IEEE-1076 2000

2002: Công bố chuẩn VHDL IEEE-1076 2002

2007: công bố chuẩn ngôn ngữ Giao diện ứng dụng theo thủ tục VHDL 1076c 2007

IEEE-2009: Công bố chuẩn VHDL IEEE-1076 2002

VHDL ra đời trên yêu cầu của bài toán thiết kế phần cứng lúc bấy giờ, nhờ sử dụng ngôn ngữ này mà thời gian thiết kế của sản phẩm bán dẫn giảm đi đáng kể, đồng thời với giảm thiểu chi phí cho quá trình này do đặc tính độc lập với công nghệ, với các công cụ mô phỏng và khả năng tái sử dụng các khối đơn lẻ Các ưu điểm chính của VHDL có thể liệt kê ra là:

- Tính công cộng: VHDL là ngôn ngữ được chuẩn hóa chính thức của IEEE do đó được

sự hỗ trợ của nhiều nhà sản xuất thiết bị cũng như nhiều nhà cung cấp công cụ thiết

kế mô phỏng hệ thống, hầu như tất cả các công cụ thiết kế của các hãng phần mềm lớn nhỏ đều hỗ trợ biên dịch VHDL

- Được hỗ trợ bởi nhiều công nghệ: VHDL có thể sử dụng mô tả nhiều loại vi mạch

khác nhau trên những công nghệ khác nhau từ các thư viện rời rạc, CPLD, FPGA, tới thư viện cổng chuẩn cho thiết kế ASIC

Trang 38

- Tính độc lập với công nghệ: VHDL hoàn toàn độc lập với công nghệ chế tạo phần

cứng Một mô tả hệ thống chức năng dùng VHDL thiết kế ở mức thanh ghi truyền tải RTL có thể được tổng hợp thành các mạch trên các công nghệ bán dẫn khác nhau Nói một cách khác khi một công nghệ phần cứng mới ra đời nó có thể được áp dụng ngay cho các hệ thống đã thiết kế bằng cách tổng hợp các thiết kế đó trên thư viện phần cứng mới

- Khả năng mô tả mở rộng: VHDL cho phép mô tả hoạt động của phần cứng từ mức thanh ghi truyền tải (RTL–Register tranfer level) cho đến mức cổng (Netlist) Hiểu một

cách khác VHDL có một cấu trúc mô tả phần cứng chặt chẽ có thể sử dụng ở lớp mô

tả chức năng cũng như mô tả cổng trên một thư viện công nghệ cụ thể nào đó

- Khả năng trao đổi kết quả, tái sử dụng: Việc VHDL được chuẩn hóa giúp cho việc

trao đổi các thiết kế giữa các nhà thiết kế độc lập trở nên hết sức dễ dàng Bản thiết

kế VHDL được mô phỏng và kiểm tra có thể được tái sử dụng trong các thiết kế khác

mà không phải lặp lại các quá trình trên Giống như phần mềm thì các mô tả HDL cũng

có một cộng đồng mã nguồn mở cung cấp, trao đổi miễn phí các thiết kế chuẩn có thể ứng dụng ở nhiều hệ thống khác nhau

2 Cấu trúc của chương trình mô tả bằng VHDL

Để thống nhất ta quy ước dùng thuật ngữ “module VHDL” chỉ tới khối mã nguồn của một mô tả thiết kế thiết kế logic độc lập Cấu trúc tổng thể của một module VHDL gồm ba phần, phần khai báo thư viện, phần mô tả thực thể và phần mô

tả kiến trúc

Trang 39

Khai báo thư việnLIBRARY declaration

Mô tả thực thểENTITY Declaration

Hành vi Behavioral

Luồng dữ liệu DataFlow

Cấu trúc Structure

Mô tả kiến trúcARCHITECTURE

Hình 2.1: Cấu trúc của một thiết kế VHDL

2.1 Khai báo thư viện

Khai báo thư viện phải được đặt đầu tiên trong mỗi module VHDL, lưu { rằng nếu ta sử dụng một file để chứa nhiều module khác nhau thì mỗi một module đều phải yêu cầu có khai báo thư viện đầu tiên, nếu không khi biên dịch sẽ phát sinh ra lỗi

Ví dụ về khai báo thư viện

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

Khai báo thư viện bắt đầu bằng từ khóa Library Tên thư viện (chú ý là VHDL

không phân biệt chữ hoa chữ thường) Sau đó trên từng dòng kế tiếp sẽ khai báo các gói thư viện con mà thiết kế sẽ sử dụng, mỗi dòng phải kết thúc bằng dấu “;”

Tương tự như đối với các ngôn ngữ lập trình khác, người thiết kế có thể khai báo sử dụng các thư viện chuẩn hoặc thư viện người dùng.Thư viện IEEE gồm nhiều gói thư viện con khác nhau trong đó đáng chú { có các thư viện sau:

- Gói IEEE.std_logic_1164 cung cấp các kiểu dữ liệu std_ulogic, std_logic, std_ulogic_vector, std_logic_vector, các hàm logic and, or, not, nor, xor…

Trang 40

các hàm chuyển đổi giữa các kiểu dữ liệu trên Std_logic, std_ulogic hỗ trợ kiểu logic với 9 mức giá trị (xem 4.2)

- Gói STD.TEXTIO.all chứa các hàm vào ra READ/WRITE để đọc ghi dữ liệu

từ FILE, STD_INPUT, STD_OUTPUT

- Gói IEEE.std_logic_arith.all định nghĩa các kiểu dữ liệu số nguyên SIGNED, UNSIGNED, INTEGER, cung cấp các hàm số học bao gồm “+”, “-”,

“*”, “/”, so sánh “<”, “>”, “<=”, “>=”, các hàm dịch trái, dịch phải SHL, SHR, các hàm chuyển đổi từ kiểu vector sang các kiểu số nguyên và ngược lại

- Gói IEEE.math_real.all; IEEE.math_complex.all; cung cấp các hàm làm việc với số thực và số phức như SIN, COS, SQRT… hàm làm tròn, CIEL, FLOOR, hàm tạo số ngẫu nhiên SRAND, UNIFORM… và nhiều các hàm tính toán số thực khác

- Gói IEEE.numeric_std.all; và IEEE.numeric_bit.all cung cấp các hàm tính toán và biến đổi với các dữ liệu kiểu số có dấu, không dấu, chuỗi bit và chuỗi dữ liệu kiểu std_logic

Cụ thể và chi tiết hơn về các thư viện chuẩn của IEEE có thể tham khảo thêm

trong tài liệu của IEEE (VHDL Standard Language reference), hoặc các nguồn

tham khảo khác trên Internet

- identifier là tên của module

- khai báo generic là khai báo các tham số tĩnh của thực thể, khai báo này rất hay sử dụng cho những module có những tham số thay đổi như độ rộng kênh, kích thước ô nhớ, tham số bộ đếm… ví dụ chúng ta có thể thiết kế bộ cộng cho các hạng tử có độ dài bit thay đổi, số bit được thể hiện là hằng số

trong khai báo generic (xem ví dụ dưới đây)

Ngày đăng: 16/05/2014, 10:27

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
24. 16COM / 40SEG DRIVER &amp; CONTROLLER FOR DOT MATRIX LCD (ks0066u.pdf) 25. http://www.csee.umbc.edu/portal/help/VHDL/ Link
1. Kỹ thuật số - Tập 1- Lê Xuân Bằng NXB Khoa học kỹ thuật 2008 Khác
2. Thiết kế logic mạch số - Nguyễn Thúy Vân, NXB Khoa học kỹ thuật 2005 Khác
3. Thiết kế mạch bằng máy tính – Nguyễn Linh Giang NXB Khoa học kỹ thuật 2005 Khác
4. Kỹ thuật Vi xử lý và lập trình Assembly – Đỗ Xuân Tiến – NXB Khoa học kỹ thuật 2002 Khác
5. Complete digital design - Mark Balch - 2003 Khác
6. The Definitive Guide to How Computers Do Math - Maxfield, Brawn, 2005, Wiley Publisher Khác
7. Digital design principles and practices. Wakerly J.F 1999 Khác
8. Computer Arithmetic - Algorithms and Hardware Designs – Behrooz Parhami 2000 Khác
9. IEEE Standard for Binary Floating-Point Arithmetic. ANSI/IEEE Standard No Khác
10. Digital Arithmetic Milos D. Ercegovac and Tomas Lang-San Francisco, Morgan Kaufmann Publishers, 2004. -709 tr Khác
11. VHDL standard reference IEEE 2002 Khác
12. Synopsys User Guide Design Compiler from Synopsys Khác
13. Advanced ASIC Chip Synthesis Using Synopsys Design Compiler Physical Compiler And Primetime - Himanshu Bhatnagar, 2002 Kluwer Academic Publishers Khác
16. Computer Organization and Design,Third Edition - David A. Paterson, John L. Hennessy, 2005 Khác
17. VHDL Programming by Example 4th Ed -Douglas L Perry, 2002 18. Digital Design with VHDL -S. S. Limaye Khác
19. Microprocessor Design. Principles and Practices with VHDL - Enoch O. Hwang, 2004 Khác
20. Spartan-3 Generation FPGA User Guide (ug331.pdf) 21. Spartan-3E FPGA Family Datasheet (ds312.pdf) Khác
22. Mips Instruction Set Reference Vol I Khác
23. Spartan 3A/3AN Starter Kit User Guide (ug334.pdf) Khác

HÌNH ẢNH LIÊN QUAN

Hình 1.10: Mô tả Schematic - THIẾT KẾ LOGIC SỐ
Hình 1.10 Mô tả Schematic (Trang 21)
Hình 3.5: Sơ đồ khối chuỗi bit nhớ dùng CLA - THIẾT KẾ LOGIC SỐ
Hình 3.5 Sơ đồ khối chuỗi bit nhớ dùng CLA (Trang 122)
Hình 3.6: Sơ đồ khối và giản đồ sóng của thanh ghi - THIẾT KẾ LOGIC SỐ
Hình 3.6 Sơ đồ khối và giản đồ sóng của thanh ghi (Trang 123)
Sơ đồ hiện thực trên phần cứng của thuật toán nhân dùng mã hóa Booth cơ số - THIẾT KẾ LOGIC SỐ
Sơ đồ hi ện thực trên phần cứng của thuật toán nhân dùng mã hóa Booth cơ số (Trang 143)
Hình 3.20 Sơ đồ khối chia có khôi phục phần dư - THIẾT KẾ LOGIC SỐ
Hình 3.20 Sơ đồ khối chia có khôi phục phần dư (Trang 147)
Hình 3.22 Sơ đồ khối chia có dấu - THIẾT KẾ LOGIC SỐ
Hình 3.22 Sơ đồ khối chia có dấu (Trang 152)
Hình 3.27 Sơ đồ khối FIFO sử dụng Dual-port RAM - THIẾT KẾ LOGIC SỐ
Hình 3.27 Sơ đồ khối FIFO sử dụng Dual-port RAM (Trang 158)
Hình 3.34 :Làm tròn hướng tới -∞ - THIẾT KẾ LOGIC SỐ
Hình 3.34 Làm tròn hướng tới -∞ (Trang 169)
Hình 3.37 :Sơ đồ khối cộng số thực dấu phẩy động - THIẾT KẾ LOGIC SỐ
Hình 3.37 Sơ đồ khối cộng số thực dấu phẩy động (Trang 172)
Hình 3.38 :Sơ đồ khối nhân số thực dấu phẩy động - THIẾT KẾ LOGIC SỐ
Hình 3.38 Sơ đồ khối nhân số thực dấu phẩy động (Trang 176)
Hình 4.2. Kiến trúc tổng quan của FPGA - THIẾT KẾ LOGIC SỐ
Hình 4.2. Kiến trúc tổng quan của FPGA (Trang 189)
Hình 4.3. Kiến trúc tổng quan của Spartan 3E FPGA - THIẾT KẾ LOGIC SỐ
Hình 4.3. Kiến trúc tổng quan của Spartan 3E FPGA (Trang 190)
Hình 4.7. Cấu trúc chi tiết của Slice - THIẾT KẾ LOGIC SỐ
Hình 4.7. Cấu trúc chi tiết của Slice (Trang 193)
Hình 4.10: FiMUX và F5MUX - THIẾT KẾ LOGIC SỐ
Hình 4.10 FiMUX và F5MUX (Trang 197)
Hình 4.16: Cách tính tổng các tích riêng trong phép nhân - THIẾT KẾ LOGIC SỐ
Hình 4.16 Cách tính tổng các tích riêng trong phép nhân (Trang 203)
Hình 4.23. Sử dụng thanh ghi dịch ở chế độ không địa chỉ - THIẾT KẾ LOGIC SỐ
Hình 4.23. Sử dụng thanh ghi dịch ở chế độ không địa chỉ (Trang 208)
Hình 4.24 Sơ đồ nguyên lý của IO block - THIẾT KẾ LOGIC SỐ
Hình 4.24 Sơ đồ nguyên lý của IO block (Trang 209)
Hình 4.27. Double Data Rate transmission - THIẾT KẾ LOGIC SỐ
Hình 4.27. Double Data Rate transmission (Trang 211)
Hình 4.34 Block RAM location - THIẾT KẾ LOGIC SỐ
Hình 4.34 Block RAM location (Trang 216)
Hình Sơ đồ khối DCM - THIẾT KẾ LOGIC SỐ
nh Sơ đồ khối DCM (Trang 221)
Hình 4.40. Quy trình thiết kế trên FPGA - THIẾT KẾ LOGIC SỐ
Hình 4.40. Quy trình thiết kế trên FPGA (Trang 226)
Hình 4.53: Sơ đồ bố trí cổng vào ra trên FPGA - THIẾT KẾ LOGIC SỐ
Hình 4.53 Sơ đồ bố trí cổng vào ra trên FPGA (Trang 253)
Hình 4.65: Khởi tạo LCD1602A cho chế độ 8-bit - THIẾT KẾ LOGIC SỐ
Hình 4.65 Khởi tạo LCD1602A cho chế độ 8-bit (Trang 273)
Hình 4.66: Sơ đồ khối LCD DRIVER trên FPGA - THIẾT KẾ LOGIC SỐ
Hình 4.66 Sơ đồ khối LCD DRIVER trên FPGA (Trang 274)
Hình 4.69: Mạch giao tiếp VGA đơn giản - THIẾT KẾ LOGIC SỐ
Hình 4.69 Mạch giao tiếp VGA đơn giản (Trang 281)
Hình 2.8: Sơ đồ khối bộ cộng trừ đơn giản - THIẾT KẾ LOGIC SỐ
Hình 2.8 Sơ đồ khối bộ cộng trừ đơn giản (Trang 313)
Hình 3.49. Thêm file mô tả VHDL - THIẾT KẾ LOGIC SỐ
Hình 3.49. Thêm file mô tả VHDL (Trang 341)
Hình 3.50. Project sumary - THIẾT KẾ LOGIC SỐ
Hình 3.50. Project sumary (Trang 342)
Sơ đồ công nghệ và sơ đồ RTL có thể thu được bằng cách chọn tương ứng View - THIẾT KẾ LOGIC SỐ
Sơ đồ c ông nghệ và sơ đồ RTL có thể thu được bằng cách chọn tương ứng View (Trang 350)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w