Tải bản đầy đủ (.pdf) (93 trang)

Nghiên cứu thiết kế modul thực hành FPGA

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.29 MB, 93 trang )

-1-

Lời cam đoan

Tôi xin cam đoan bản luận văn này là kết quả nghiên cứu của bản thân
dưới sự hướng dẫn của TS. Đặng Văn Chuyết. Nếu có gì sai phạm, tôi xin chịu
hoàn toàn trách nhiệm.

Người làm cam đoan

Nguyễn ViÕt TuyÕn

NguyÔn ViÕt TuyÕn XLTT – TT 2003


-2-

Mục lục
Trang
Lời cam đoan.............................................................................................. 1
Mục lục ......................................................................................................... 2
Danh mục các ký hiệu, các chữ viết tắt .................................... 5
Danh mục các hình vẽ .......................................................................... 6
Lời nói đầu .................................................................................................. 7
Chương 1:Tổng quan về mạch logic lập trình được ............... 9
1.1. LịCH Sử PHáT TRIểN CủA VI MạCH Số LậP TRìNH . ................... 9
1.2. CÊu tróc cđa thiÕt bÞ logic cã thĨ lËp trình được
(Programmable Logic Architecture: PLA) .............................. 12
1.3. Những ưu thế của thiết kế được trợ giúp của máy
tính và logic cã thĨ lËp tr×nh (Computer-Aided Design
and Programmable Logic) ............................................................... 15


1.4. DÃy các cổng logic lập trình được theo trường
(FPGA: Field Programmable Gate Array) ................................. 18
1.4.1. Giíi thiƯu ....................................................................................... 18
1.4.2. CÊu trúc của FPGA. ....................................................................... 18
1.4.3. Các kênh kết nối ............................................................................ 28
1.4.4. Mạng kết nối tổng thể và các bộ đệm ........................................... 31
Chương 2: Ngôn ngữ mô tả phần cứng VHDL (Very High
Speed

Intergrated

Circuit

Hardware

Description

Language) ................................................................................................. 33
2.1. Mở đầu .................................................................................................. 33
2.1.1. Giới thiệu ....................................................................................... 33
2.1.2 Các thuật ngữ của VHDL ............................................................... 36
2.2. Cấu trúc của một chương trình VHDL ............................... 37
2.3. Các đơn vÞ thiÕt kÕ trong VHDL ............................................. 38
Ngun ViÕt Tun XLTT – TT 2003


-3-

2.3.1.Gãi (Package) ................................................................................. 38
2.3.2. Thùc thĨ (Entity) ........................................................................... 40

2.3.3.KiÕn tróc (Architecture) ................................................................. 40
2.3.4.Cấu hình (Configuration) ............................................................... 42
2.4. Các kiểu dữ liệu trong VHDL ................................................... 43
2.4.1. Các đối tượng dữ liệu..................................................................... 43
2.4.2. Các kiểu dữ liệu ............................................................................. 45
2.5. Toán tử và biĨu thøc .................................................................... 45
2.5.1. C¸c to¸n tư. .................................................................................... 46
2.5.2. C¸c toán hạng ................................................................................ 46
2.6. Các lệnh tuần tự trong VHDL ................................................. 47
2.6.1.Câu lệnh gán biến. .......................................................................... 47
2.6.2.Câu lệnh gán tín hiƯu. ..................................................................... 47
2.6.3. C©u lƯnh if ..................................................................................... 48
2.6.4. C©u lƯnh Case ................................................................................ 48
2.6.5. Các lệnh vòng lặp .......................................................................... 49
2.6.6. Câu lƯnh Null ................................................................................. 50
2.7. C¸c lƯnh song song trong VHDL ........................................... 51
2.7.1. Các quá trình Process. ................................................................... 51
2.7.2. Các phép g¸n tÝn hiƯu song song ................................................... 52
2.7.3. PhÐp g¸n tÝn hiệu có điều kiện ...................................................... 53
2.7.4. Phép gán theo lựa chọn .................................................................. 55
2.7.5. Khối ............................................................................................... 56
2.7.6. Gọi chương trình con song song .................................................... 57
2.7. Chương trình con .......................................................................... 58
Chương 3: ThiÕt kÕ modul Thùc hµnh FPGA sư dơng FPGA
XC2S100-5PQ144C cđa Xilinx................................................................ 60
3.1. Tr×nh tù thiÕt kÕ víi FPGA ......................................................... 60
3.2. Thiết kế modul thực hành FPGA ............................................ 61
3.2.1. Mục đích và yêu cầu của modul .................................................... 61
3.2.2. Sơ đồ khối và đặc điểm của các khối ............................................ 62
Nguyễn Viết Tuyến XLTT – TT 2003



-4-

3.2.3. Những công cụ sử dụng khi thiết kế modul. ................................ 64
3.2.4. Thiết kế các khối chức năng của modul ........................................ 65
3.3.Thiết kế mẫu mạch giải mà bàn phím chạy thử trên
modul. ......................................................................................................... 73
3.3.1. Thiết kế chương trình VHDL ........................................................ 74
3.3.2.Tổng hợp thiết kế ............................................................................ 89
3.3.3. Đặt chân cho FPGA ....................................................................... 90
3.3.4.Tạo chuỗi bit ................................................................................... 90
3.3.5. Nạp FPGA và chạy thử .................................................................. 91
Kết luận ..................................................................................................... 92
Tài liệu tham khảo ............................................................................... 93
Phụ lục 1: Chương trình nguồn khối tạo tín hiệu đầu vào
Phụ lục 2: Chương trình VHDL mô tả bộ ®Õm

NguyÔn ViÕt TuyÕn XLTT – TT 2003


-5-

Danh mục các ký hiệu, các chữ viết tắt
Ký hiệu viÕt t¾t
IFL
MSI
PCB
AMD
ASIC

AMAZE
CPLD
CPLD
CAD
CLBs
ERASIC
FPGA
GAL
GSR
HDL
IOBs
LCA
PAL
PLA
PML
SPLD
SSI
CUPL
VHDL

Ngun ViÕt Tun XLTT – TT 2003

TiÕng Anh
Intergrated Fuse Logic
Medium Scale Integrated
Printed Circuit Board
Advance Micro Devices
Application Specific Integrated Circuit
Automated Map and Zap Equations
Complex Programmable Logic Devices

Complex Programmable Logic Devices
Computer Aided Design
Configurable Logic Blocks
Erasable Application Specific IC
Field Programmable Gate Array
Generic Array Logic
Global Initialization Signal
Hardware Description Languages
Input/Output Blocks
Logic Call Array
Programmable Array Logic
Programmable Logic Device
Programmable Macro Logic
Simple Programmable Logic Devices
Small Scale Integrated
Universal Compiler for Programmable
B
0

Very High Speed Intergrated Circuit
Hardware Description Language


-6-

Danh mục các hình vẽ
Hình

Tên hình


Hình1.1
Hình1.2
Hình1.3
Hình1.4
Hình1.5
Hình1.6
Hình1.7
Hình1.8
Hình1.9
Hình1.10
Hình1.11
Hình1.12
Hình 2.1
Hình 2.2
Hình 3.1
Hình 3.2
Hình 3.3
H×nh 3.4
H×nh 3.5
H×nh 3.6
H×nh 3.7
H×nh 3.8
H×nh 3.9
H×nh 3.10
H×nh 3.11
H×nh 3.12
H×nh 3.13
Hình 3.14

Mạch PLA

Mạch PAL
Mạch SPLD
Bảng LUT 4 đầu vào
Qui trình thiết kế xây dựng một mạch số.
Cấu trúc chung của FPGA
Một CLB điển hình của FPGA dòng Spartan
Bộ tạo hàm 5 đầu vào
Sơ đồ khối chức năng của Flip-Flop trong CLB
Ghép nối các tín hịêu điều khiển
Sơ đồ khối của IOB
Sơ đồ khối chức năng IOB.
Cấu trúc chung của chương trình VHDL
Quan hệ giữa các đơn vị thiết kế
Trình tự thiết kế với FPGA
Sơ đồ khối của modul
Kit XSA- 100
Giao tiếp giữa FPGA và máy tính thông qua cổng LPT
Giao diện chương trình tạo tín hiệu đầu vào cho mạch tổ hợp
Giao diện chương trình tạo tín hiệu cho khối giải mà bàn phím
Giao diện chương trình tạo tín hiệu điều khiển bộ đếm
Sơ đồ nguyên lý khối nguồn
Sơ đồ nguyên lý của nodul
Hình ảnh thật của modul
Sơ đồ khối mạch giải mà bàn phím
Tổng hợp logic
Sơ đồ nguyên lý bộ chọn tần số
Đặt chân cho FPGA

Nguyễn Viết Tuyến XLTT – TT 2003



-7-

Lời nói đầu

Trong những năm gần đây công nghệ điện tử đà và đang phát triển nhảy
vọt. Các loại IC LSI, VLSI với khả năng tích hợp tới hàng triệu Transistor đÃ
ra đời với nhiều ứng dụng khác nhau trong Công nghệ thông tin, Điện tử viễn
thông, Tự động hoá...không ngừng đáp ứng các nhu cầu của xà hội. Một trong
những công nghệ mới được ra đời, có thể thay thế cho các hệ thống số trước
đây đòi hỏi rất nhiều thời gian và chi phí cho nghiên cứu và chế tạo, đó là
công nghệ ASIC (Application Specific Integrated Circuit). Dẫn đầu trong lĩnh
vực này là sản phẩm FPGA (Field Programmable Gate Array) vµ CPLD
(Complex Programmable Logic Devices). Sư dơng FPGA hoặc CPLD có thể
tối thiểu hóa được nhiều công đoạn thiết kế, lắp ráp vì hầu hết được thực hiện
trên máy tính. Các ngôn ngữ mô phỏng phần cứng (HDL: Hardware
Description Languages) nh­ ABEL, VHDL, Verilog, Schematic...cho phÐp
thiÕt kÕ và mô phỏng hoạt động của mạch bằng chương trình. Các chương
trình mô phỏng cho phép xác định lỗi thiết kế một cách dễ dàng và kết quả
thực hiện của chương trình là một file bit cấu hình (bitstream) để nạp
(download) vào FPGA và CPLD để nó hoạt động giống như một mạch logic.
Các FPGA và CPLD với khả năng tích hợp cao tới hàng triệu gate và cấu trúc
mạch tối ưu hoá mật độ tích hợp, hiệu suất cao cho phép xử lý nhanh số liệu,
độ tin cậy và chất lượng cao, dễ sử dụng do đó được ứng dụng rất đa dạng
trong nhiều loại thiết bị điện tử hiện nay.
Trong khuôn khổ luận văn tốt nghiệp được sự hướng dẫn, giúp đỡ của
Tiến sỹ Đặng Văn Chuyết, tôi mạnh dạn tìm hiểu và nghiên cứu công nghệ

Nguyễn Viết TuyÕn XLTT – TT 2003



-8-

FPGA và thiết kế modul thực hành FPGA để phục vụ công tác giảng dạy tại
trường Cao đẳng Công nghiệp Hà nội
Nội dung của luận văn bao gồm 3 chương, trong đó:
Chương 1: Tổng quan về mạch logic lập trình được và công nghệ FPGA
Chương 2: Ngôn ngữ mô tả phần cứng VHDL
Chương 3: Thiết kế modul thực hành FPGA sử dụng FPGA XC2S100
của Xilinx.
Cuối luận văn là 2 phụ lục:
Phụ lục 1: Chương trình nguồn bộ tạo tín hiệu đầu vào được viết bằng
Visual Basic 6.0.
Phụ lục 2: Chương trình VHDL mô tả bộ đếm.
Do thời gian và khả năng có hạn nên luận văn này chắc còn thiếu sót, tác
giả rất mong nhận được những ý kiến đóng góp của các thầy giáo, cô giáo.
Hà nội, ngày 25 tháng 10 năm 2005
Người viết luận văn

Nguyễn Viết Tuyến

Nguyễn Viết TuyÕn XLTT – TT 2003


-9-

Chương1
Tổng quan về mạch logic lập trình được
và công nghệ FPGA
1.1. LịCH Sử PHáT TRIểN CủA VI MạCH Số LậP TRìNH .

Trước thời kỳ vi mạch số lập trình PLD (Programmable Logic Device) ra
®êi, thiÕt kÕ logic sè trun thèng thì bao gồm nhiều vi mạch TTL(Transistor
Transistor Logic) loại MSI (Medium Scale Integrated) và SSI (Small Scale
Integrated) kết hợp lại để tạo ra các hàm logic mong muốn. Những nhà thiết
kế dựa vào những sách tra cứu các vi mạch số để tìm hiểu các thông số kỹ
thuật, sau đó mới quyết định sử dụng các vi mạch số cần thiết cho yêu cầu
thiết kế của họ. Điều bất lợi cđa viƯc thiÕt kÕ nµy lµ trong mét board sư dụng
nhiều vi mạch, do đó khi sửa chữa gặp nhiều khó khăn.
Vào năm 1975, công ty SIGNETICS đà giới thiệu vi mạch số lập trình
không có bộ nhớ đầu tiên 82S100 (hiện nay là PLS100) gọi là mảng logic lập
trình trường (Field-Programmable Logic Array) và Napoleon Cavlan được coi
là cha đẻ của mạch logic lập trình, lúc bấy giờ là nhà quản lý những ứng dụng
PLA của Signetics đà thực sự hiểu rằng sử dụng PLA là phương pháp tốt hơn
để thiết kế và thay đổi hệ thống số. Trong khi đó, công ty Harris đà sớm giới
thiệu PROM, họ trình bày triển vọng của PROM và đà ứng dụng vào trong
một số mạch logic.
Công ty National Semiconductor đà chế tạo mặt nạ lập trình cho PLA
(Programmable Logic Array), cấu tạo của nó gồm một mảng AND lập trình
kèm với mảng OR lập trình, cho phép thực hiện tổ hợp tỉng c¸c tÝch sè cđa
Ngun ViÕt Tun XLTT – TT 2003


-10-

hàm logic tiêu chuẩn. Bằng cách kết hợp công nghệ PROM sử dụng nguyên
tắc cầu chì với khái niệm PLA, Cavian đà thuyết phục được các nhà quản lý
công ty Signetics để đưa dự án PLAvào sản xuất.
Vi mạch PLA đầu tiên 82S100, là thành viên đầu tiên của họ vi mạch IFL
(Intergrated Fuse Logic) có hình dạng 28 chân. Cấu trúc của PLA gồm một
mảng AND lập trình và một mảng OR lập trình, nó cho phép thực hiện tổ hợp

logic tổng của các tích số đơn giản .
Vào năm 1977 Signetics giới thiệu họ vi mạch FPGA (Field
Programmable Gate Array) 82S103. Họ FPGA có cấu tạo một mảng AND ở
mức đơn với ngõ vào lập trình được và cùc tÝnh ngâ ra cịng vËy cho phÐp thùc
hiƯn c¸c hàm logic cơ bản (AND, OR, NAND, NOR, INVERT), cấu trúc của
họ FPLS có chức các FlipFlop để thực hiện các trạng thái của hàm tuần tự.
Đồng thời Signetics cũng giới thiệu AMAZE (Automated Map and Zap
Equations) là chương trình biên dịch để hổ trợ cho những vi mạch của họ.
Tương tự, những công ty chế tạo PLD khác đà lần lược giới thiệu những phần
mềm hỗ trợ của họ.
Tuy thế, kĩ thuật logic lập trình tiếp tục cải tiến và những vi mạch phát
triển ở giai đoạn thứ hai được giới thiệu vào năm 1983. Công ty AMD
(Advance Micro Devices) đà giới thiệu PAL22V10 với những đặc điểm đặc
biệt là sự linh động của những cổng PLD ở 10 ngõ vào. Mỗi cổng PLD có khả
năng tổ hợp hoặc với thanh ghi ở ngõ ra hoặc một ngõ vào. Cổng đệm ngõ ra
ba trạng thái được điều khiển bởi một tích số riêng cho phép vận hành hai
chiều. Tất cả thanh ghi đều được reset tự động trong quá trình tắt hay mở và
mỗi thanh ghi có khả năng đặt trước, đó là đặc điểm đặc biệt cho việc kiểm
tra sau này.
Với những vi mạch mới, được giới thiệu thường xuyên trên thị trường đÃ
dẫn đến việc cần thiết phải có một phần mềm hỗ trợ trong quá trình sử dụng
PLD để đạt hiệu quả cao. Vào tháng 9/1983, Công ty Assisted Technology đÃ
Nguyễn Viết Tuyến XLTT TT 2003


-11-

đưa ra phiên bản 1.01a của chương trình biên dịch PLD có tên là CUPL(
Universal Compiler for Programmable). Chương trình này hỗ trợ cho 29 loại
vi mạch, sự ra đời của CUPL đà gây được sự chú ý của nhiều công ty chế tạo.

Công ty Data I/O, nhà chế tạo các vi mạch lập trình lớn nhất trên thế giới
(EPROM, PROM, PLD), đà quyết định phát triển phần mềm hỗ trợ cho riêng
họ. Năm 1984, Data I/O giới thiệu ABEL (Advanced Boolean Expression
Language), đó là chương trình biên dịch PLD có đặc điểm tương tự như CUPL
nhưng nó được đầu tư tiếp thị nên được các nhà thiết kế chấp nhận. Vì vậy,
ABEL đà sớm theo kịp CUPL trên thị trường.
Tháng 7/1984, công ty Altera giới thiệu EP300. Đó là vi mạch sử dụng
công nghệ CMOS của EPROM, nó có đặc tính là công suất tiêu thụ thấp, có
thể xóa được (dùng tia cực tím) cùng một số đặc tính mở rộng khác.Năm
1985, một họ PLD mới được công ty Lattice Semiconductor giíi thiƯu lµ
GAL (Generic Array Logic). Lattice dïng công nghệ CMOS của EEPROM,
có các đặc tính kỹ thuật như công suất thấp, có thể lập trình nhiều lần ( xóa
bằng điện áp với thời gian xóa khoảng vài giây). Vi mạch đầu tiên của họ
GAL được kí hiệu là GAL16V8 có khả năng thay thế hoạt động của PAL (đối
với vi mạch cùng loại).
Vào năm 1985, công ty Xilinx tạo ra một họ mới là LCA (Logic Call
Array). Cấu trúc của LCA có 3 đoạn: một ma trận của khối logic được bao
quanh là khối vào ra và một mạng đường dữ liệu nối gián tiếp. Đặc biệt của
LCA là PLD đầu tiên sử dụng tế bào RAM động cho chức năng logic. Ưu
điểm của cấu trúc này là khách hàng có thể kiểm tra được chương trình của vi
mạch, do bản chất dễ xóa của LCA, nên cần phải lưu trữ cấu hình của LCA ở
bộ nhớ ngoài. Vì vậy, LCA không được sử dụng ở những trường hợp đòi hỏi
sự hoạt động ngay lập tức khi khởi động máy. Đi kèm với LCA là chương
trình soạn thảo XACT và bộ mô phỏng giúp cho việc sửa lỗi cho những thiết
kế trên LCA được thuận tiện.
Nguyễn Viết TuyÕn XLTT – TT 2003


-12-


Năm 1985, công ty Signetics với một khái niệm mới là PML
(Programmable Macro Logic). Vi mạch PML đầu tiên của Signetics PMLS
501, vi mạch này sử dụng công nghệ lưỡng cực, và được đóng vỏ 52 chân .
Vào năm 1986, c«ng ty ExMicroelectronic giíi thiƯu hä ERASIC
(Erasable Application Specific 7C) sử dụng công nghệ EEPROM CMOS. Vi
mạch đầu tiên là XL78C00 có dạng 24 chân và điều đặc biệt là XL78C00 có
thể thay thế chức năng cho PAL và EPLA cùng loại (không tính đến tốc độ),
đi kèm là một phần mềm hỗ trợ ERASIC.
Vào năm 1986, công ty Signetics quyết định thay đổi họ IFL thành họ
PLS (Programmable Logic From Signetics). VÝ dơ nh­ tõ 82S100 thµnh
PLS100, tõ 82S157 thành PLS157. Sau đó 2 năm, công ty Actel đà cải tiến
khuyết điểm họ LCA là vi mạch có thể hoạt động không nhất thiết phải có bộ
nhớ ngoài. Đồng thời công ty Gazelle Microcircuit đà công bố phát minh công
nghệ GaAs (Gallium Arsenide). Đặc điểm của công nghệ này là cải tiến tốc
độ , công suất của các vi mạch trên nền tảng là công nghệ silicon, cho phép vi
mạch làm việc với tốc độ nhanh hơn công suất tiêu tán khi ở mức trung bình.
1.2. Cấu trúc của thiết bị logic có thể lập trình được
(Programmable Logic Architecture: PLA)
CÊu tróc cđa mét thiÕt bÞ logic cã thĨ lËp trình được PLA như (hình 1.1),
bao gồm những cụm cổng AND (AND gates), cổng OR (OR gates) và các bộ
đảo (Inverters) được kết nối bên trong thông qua các chuyển mạch có thể lập
trình được (Programable Switch Arrays). Trong PLA các đầu vào và đảo của
nó được dẫn đến một dÃy AND (AND array) bằng các dây nối ngang. Các dây
nối dọc trong dÃy AND là các đầu vào đến 1 dÃy cổng AND. Các cổng AND
nhận tín hiệu vào bởi các dây ngang và dọc qua các điểm nối trong dÃy AND.
Như vậy cổng AND bên trái nhận giá trị A và C, cổng AND bên phải nhận giá
trị AB
NguyÔn ViÕt TuyÕn XLTT – TT 2003



-13-

DÃy OR có chức năng tương tự với dÃy AND.
A
B

AND arrays

C
D

AC+CD

OR arrays

ABD+AB

Hình 1.1 : Mạch PLA
Các dây nối ngang của dÃy OR chứa kết quả từ các cổng AND đưa vào
dÃy OR. Chúng được nối với các dây dọc là đầu ra cuả các cổng AND và đưa
vào đầu vào của các cổng OR. Kết quả là tổng các tích có thể được tạo ra tại
từng đầu ra của PLA.

A

Các nhà thiết kế

B

cũng đà đưa ra một cấu


C

trúc đơn giản hơn gọi là

D

AND
arrays

logic dÃy có thể lập trình
(PAL:

Programmable

Array Logic). Cấu trúc
PAL như hình 1.2.
Các mảng OR được
cố định bởi các cổng

Feedback Terms

Hình 1.2: Mạch PAL

AND gate và OR cổng, do đó có thể lập chương trình để tạo thành bất cứ sản
phẩm logic tổ hợp nào muốn. Thêm vào đó đầu ra hồi tiếp của PAL về đầu vào
dÃy AND được sử dụng để xây dựng các hàm logic.
Các mạch PLA và PAL rất tốt cho logic tổ hợp. Nhưng không thể dùng
cho logic tuần tự nếu không cộng thêm các Flip-Flops bên ngoài. Khi các
Nguyễn Viết Tuyến XLTT TT 2003



-14-

Flip-Flops được ghép vào PAL thì mạch được gọi là thiết bị logic giản đơn lập
trình được (SPLD: Simple Programmable Logic Devices) nh­ h×nh vÏ 1.3.
A
B

AND array

C
D

D
Q

D
Q

Flip - Flops
Multiplexers

H×nh 1.3: Mạch SPLD
Trong hình vẽ này các bộ dồn kênh (Multiplexer) được cộng với từng đầu
ra để chọn đầu ra hoặc Flip-Flop hoặc tổ hợp. Các Flip-Flop, Multiplexer,
cổng AND, cổng OR điều khiển từng đầu ra được hiểu như một tế bào lớn
(macrocell). Các model SPLD có nhiều kiểu cấu trúc mạch có thể lập trình
được với nhiều phương án (option) có thể lựa chọn nhằm làm tăng lợi ích của
chip.

Các mạch PLA, PAL, SPLD lắp đặt trên 1 bảng mạch in (PCB) và kết
nối giữa chúng với nhau và các linh kiện khác. Nếu một lỗi nhỏ xuất hiện với
bảng mạch thì các thiết bị logic lập trình được trên bảng mạch có thể phải thay
thế cùng với các thiết bị lập trình lại được. Tuy nhiên các lỗi lớn chỉ có thể
được khắc phục bằng cách thay đổi từng bước kiểu kết nối các chíp với nhau.
Từ vấn đề đó các nhà thiết kế đà kết hợp vài SPLD vào trong một IC đơn để
tạo ra các thiết bị logic phức hợp lập trình được (CPLD: Complex
Programmable Logic Devices). .

NguyÔn ViÕt TuyÕn XLTT – TT 2003


-15-

Trong FPGA, khối xây
dựng cơ bản của FPGA là
bảng

tìm

kiếm

(LUT:

Lookup Table). Bảng LUT
giống như một bảng AND có
thể lập trình được. Khi nạp
vào đầu vào các tổ hợp nhị
phân, các bít nhớ chứa trong
bộ nhớ sẽ đưa ra kết quả. Kết

quả sẽ là 1 khi tất cả các đầu
vào của LUT là 1.
Một bảng LUT điển

A=0
B=1
C=1
D=0

0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111

hình có chỉ 4 đầu vào và một
bộ nhớ nhỏ chứa 16 bit. Tổ

Các bít nhớ

(Memorybits)

Output = 0

Hình 1.4: Một bảng LUT 4 đầu vào

hợp nhị phân đầu vào (ví dụ
0101) sẽ hợp với địa chỉ của 1 bit nhớ riêng và tạo ra giá trị đầu ra của nó là 0
như hình vẽ 1.4.
Bất cứ hàm logic 4 đầu vào nào đều có thể xây dựng bằng cách lập trình
bộ nhớ LUT với các bit thích hợp.
1.3 Những ưu thế của thiết kế được trợ giúp của máy
tính và logic có thể lập trình (Computer-Aided
Design and Programmable Logic)
Chúng ta có thể xây dựng các mạch số tới vài trăm cổng logic dùng các
mạch tổ hợp cỡ nhỏ (SSI: Small-Scale-Integrated) và các mạch tổ hợp cỡ vừa
(MSI: Medium-Scale-Integrated). Tuy nhiên các IC (Integrated Circuit) được
gắn lên các bảng chân cắm và dùng các dây nối với nhau hoặc sử dụng các
bảng mạch mạch in (PCB: Printed Circuit Board) để thực hiện yêu cầu của
Nguyễn Viết Tuyến XLTT – TT 2003


-16-

thiết kế. Trong nhiều trường hợp có những sai sót xảy ra hoặc một số khó
khăn xảy ra như:
Tốn nhiều thời gian thiết kế, lắp ráp, cắt, nối dây, xử lý các sai sót do
thiết kế, lắp ráp có thể xảy ra.
Các loại IC yêu cầu cũng không phải khi nào cũng có sẵn hoặc đắt tiền.
Khả năng mở rộng, thay đổi thiết kế khó và phức tạp vì phải thay đổi lại

từ đầu quy trình thiết kế.
Thêm vào đó còn có một số vấn đề liên quan đến các dụng cụ, thiết bị...
cũng sẽ ảnh hưởng đến thiết kế và thực hiện.
Để xây dựng được các mạch số phải bắt đầu với bảng chân lý dựa vào
các yêu cầu kỹ thuật đưa ra... và cuối cùng xác định hiệu quả của mạch logic.
Quy trình thiết kế một mạch số bao gồm các bước như hình 1.5:

1.

Đưa ra các yêu cầu kỹ thuật

2.

Xác định các đầu vào, đầu ra

3. Lập bảng chân lý (Truth Table)
4. Chuyển thành phương trình Boolean
5.

Thiết kế dùng các cổng

Tự động
6.

Mô phỏng các cổng

7.

Xây dựng mạch số


8.

Gỡ rối mạch số

Hình 1.5: Qui trình thiết kế xây dựng một mạch số.
Đối với các mạch tổ hợp phải bắt đầu với bảng chân lý, kiểm tra xem xét,
hoặc tối thiểu hoá để chuyển hoá thành một mạch logic có hiệu quả. Đối với
Nguyễn Viết Tuyến XLTT TT 2003


-17-

các mạch tuần tự còn bao gồm các thông tin trạng thái trong. Chúng ta phải
làm các bước để tạo ra bảng chuyển đổi trạng thái, thực hiện gán trạng thái.
Đây là điểm dễ gây ra lỗi khi thực hiện tất cả các công việc công việc một
cách thủ công. Các động tác mô phỏng hoạt động của mạch lại thường không
đầy đủ vì vậy có có thể có lỗi xuất hiện (có thể trầm trọng) và kết quả là mạch
hoạt động không hoàn thiện.
Các nhà thiết kế đà đưa ra một thủ tục hoàn toàn khác khi thiết kế và xây
dựng mạch. Họ cũng sẽ bắt đầu với việc mô tả bằng bảng chân lý hoặc sơ đồ
chuyển đổi trạng thái của một mạch logic. Nhưng sau đó các chi tiết cần thiết
của mạch logic để xác định bảng chân lý được thực hiện bởi mootj chương
trình tổng hợp logic (logic-synthesis program). Hoạt động của mạch logic này
được kiểm tra bằng chương trình mô phỏng. Nếu mạch mô phỏng chính xác
thì các cổng, các dây nối được vẽ vào trong mét IC cã c¸c d·y cỉng logic cã
thĨ lËp trình . Các chương trình phần mềm (Software Program) quyết định làm
thế nào để các cổng trong thiết bị có thể được kết nối và xây dựng mạch logic
mong muốn.
Hiện nay các máy tính không cần đắt tiền và phần mềm cho phép chúng
ta thực hiện thiết kế các mạch số sử dụng các chương trình thiết kế trợ giúp

bởi máy tính (CAD), loại bỏ công việc vất vả cực nhọc từ việc thiết kế các
mạch số. Điều này cho phép chúng ta tập trung hơn, quan tâm hoàn toàn đến
việc tạo ra các linh kiện cho thiết kế logic. Chúng ta có thể viết các chương
trình logic trong ngôn ngữ mô tả phần cứng (HDL) sử dụng một bộ soạn thảo
văn bản Text Editor hoặc bộ vẽ mạch sử dùng Schematic Editor. HDL hoặc
Schematic được dịch bởi chương trình CAD để tạo ra các mạch logic chi tiết
nhằm thực hiện các hoạt động đà được xác định trong chương trình. Một
chương trình trong PC mô phỏng mạch, bảo đảm cho mạch hoạt động chính
xác. Sau đó bản thiết kế được nạp vào vi mạch số lập trình được.
Như vậy sử dụng các chương trình CAD và thiết bị lập trình được cho
phép:

Nguyễn Viết Tuyến XLTT TT 2003


-18-

Xây dựng thiết kế nhanh hơn bởi vì đà tối thiểu hóa các công việc như
nối dây...
Tránh được các lỗi lắp đặt.
Các bản thiết kế được lưu giữ dưới dạng Electronics files và có thể gọi ra
khi nào cần.
Có thể thí nghiệm trên nhiều loại chips mà không cần sự có mặt của
chúng bởi một thư viện đầy đủ sẵn có.
Tránh hoặc dễ dàng sửa lỗi thiết kế nếu có.
Dành nhiều thời gian để thiết kế các dự án lớn hơn bởi nhiều thủ tục trình
tự dài dòng được thực hiện tự động, như bước 4 đến bước 7 hình 1.5.
1.4. DÃy các cổng logic lập trình được theo trường
(FPGA: Field Programmable Gate Array)
1.4.1. Giới thiệu

FPGA đà trở thành một phần then chốt trong thiết kế hệ thống số. Nhiều
nhà cung cấp đà đưa ra nhiều cấu trúc và quy trình thiết kế khác nhau. FPGA
ngoài cấu trúc tương tự như một PAL hay các linh kiện lập trình được khác,
chúng được cấu trúc rất giống với một gate ASIC, điều này làm cho FPGA rất
thích hợp để làm prototype cho ASIC, hay ở những nơi mà ASIC được sử
dụng. Ví dụ, FPGA có thể được dùng trong một thiết kế cần đưa ra thị trường
nhanh chóng không cần quan tâm tới chi phí. Sau đó ASIC có thể thay cho
FPGA khi lượng sản phẩm tăng, kéo theo chi phí giảm.
1.4.2. Cấu trúc của FPGA.
Mỗi nhà cung cấp FPGA có cấu trúc FPGA riêng, nhưng tổng quát chúng
là biến thể cđa cÊu tróc nh­ h×nh 1.6.

Ngun ViÕt Tun XLTT – TT 2003


-19-

Block

Block

Configurable
Logic
Blocks

I/O
Blocks

Block
RAMs


Hình 1.6: Cấu trúc chung của FPGA
Để cho thuận tiện, các phần sau được trình bày dựa trên sản phẩm dòng
Spartan của Xilinx
FPGA có hai loại phần tử lập trình được là static RAM và Anti- fuse.
1.4.2.1. Mô tả chức năng logic (Logic Functional Description)
FPGA bao gồm 1 mảng các CLB được đặt trong một ma trận của các
kênh kết nối. Đầu vào và đầu ra của các tín hiệu nhận được thông qua một sự
thiết lập của các khối IOB xung quanh CLB và các kênh kết nối.
CLBs cung cấp giao diện giữa các chân và các đường dây tín hiệu bên
trong.
Các kênh kết nối cung cấp các đường đi để kết nối giữa các đầu vào và
đầu ra của các CLB và các IOB.
Chức năng của mỗi khối logic được thực hiện theo yêu cẩu khi đặt cấu
hình bởi chương trình các tế bào nhớ tĩnh bên trong. Các giá trị lưu trữ trong
các tế bào nhớ đó xác định các chức năng logic và kết nối với nhau thực hiện
trong FPGA.
1.4.2.2.Các khối logic có thể cấu hình ®­ỵc (CLBs: Configurable Logic
Blocks)

Ngun ViÕt Tun XLTT – TT 2003


-20-

Các CLB được sử dụng để thực hiện hầu hết các chức năng logic trong
FPGA. Nguyên tắc hoạt động của các bộ phận của CLB được trình bày trong
sơ đồ hình 1.7. Có ba bảng Look-up (LUT), được dùng làm các bộ tạo hàm,
hai flip-flop và hai nhóm của tín hiệu điều khiển các bộ chọn kênh.


G4

G4

G2

Logic
G3 Function
Of
G2 G1-G4

G1

G1

G3

F1

Y

Logic
H1 Function
Of H
F,H,H1

F

DIN


F2

YQ

EC

G

H1

F3

Q

CK

F - LUT

SR

F4

SR
D

F4

Logic
Function
F3

Of
F1-F4

F2

D

SR

Q

XQ

CK
EC

F1

F - LUT

X

K
EC

Hình 1.7: Một CLB điển hình của FPGA dòng Spartan II
Các bộ tạo hàm
Hai bộ nhớ 16x1 của các bảng look-up (F-LUT và G-LUT) được dùng
để làm các bộ tạo hàm 4 đầu vào, không hạn chế việc thực hiện các chức năng
logic của một vài hàm Boole, độc lập với 4 tín hiệu đầu vào (F1-F4 hoặc G1G4). Sử dụng bộ nhớ LUT độ trễ truyền dẫn không phụ thuộc và chức năng

mà nó thực hiện.
Một bộ tạo hàm thứ 3 (H-LUT) 3 đầu vào có thể thực hiện và chức năng
hàm Boole của 3 đầu vào. Hai trong 3 đầu vào được điều khiển bởi các bộ
chọn kênh lập trình được. Các đầu vào đó có thể được nối từ các đầu ra của FLUT hoặc G-LUT hoặc từ các đầu vào của CLB. Đầu vào thứ 3 luôn được đưa
Nguyễn Viết Tuyến XLTT – TT 2003


-21-

tới từ một đầu vào của CLB. Do đó, CLB chắc chắn thực hiện các chức năng
của tổ hợp 9 đầu vào, ví dụ như bộ kiểm tra chẵn lẻ. Ba bộ LUT trong CLB
cũng có thể được kết hợp để làm vài định nghĩa hàm Boole riêng của 5 đầu
vào( hình 1.8)
LUT
ROM
RAM

A4
A3

D

A2
A1

WS

DI

F5

0

F4

A4

F3

A3

F2

A2

F1

A1

BX

WS

F5
GXOR
G

1

DI
D


X

LUT
ROM
RAM

nBX
BX
1
0

Hình 1.8: Bộ tạo hàm 5 đầu vào
Các Flip-flop
Mỗi CLB chứa 2 flip-flop, 2 flip-flop đó có thể dùng làm thanh ghi (lưu
trữ) các đầu ra của bộ tạo hàm. Các flip-flop và các bộ tạo hàm có thể được sử
dụng độc lập như hình 1.9.
SR

GND
GSR
D

D

SD

Q

Q


CK
RD

EC
VCC

Hình 1.9: Sơ đồ khối chức năng của Flip-Flop trong CLB
Nguyễn Viết Tuyến XLTT – TT 2003


-22-

Đầu vào DIN của CLB có thể được dùng như một đầu vào trực tiếp của
một trong hai flip-flop. H1 cũng có thể được đưa tới một trong hai flip-flop
thông qua H-LUT với một độ trễ nhỏ cộng thêm.
Hai flip-flop cã chung tÝn hiƯu xung nhÞp (CK), tÝn hiƯu xung nhịp cho
phép (EC) và các đầu vào Set/Reset (SR). Ruột của cả 2 flip-flop cũng bị điều
khiển bởi một tín hiệu GSR (Global Initialization Signal).
Các mạch chốt (Latchs).
Các thành phần ®­ỵc chøa trong CLB cđa Spartan II cịng cã thĨ được đặt
cấu hình như một bộ chốt. Hai bộ chốt có chung xung nhịp (K) và các đầu vào
tín hiệu đầu vào xung nhịp cho phép EC.
Đầu vào xung nhịp.
Mỗi flip-flop có thể được kích bởi sườn dương hoặc sườn âm của xung
nhịp. Đường xung nhịp trong CLB được dùng chung cho cả hai flip-flop. Tuy
vậy, xung nhịp có thể đảo riêng cho mỗi flip-flop. Trong thiết kế tự động đệm
vào một vài bộ đảo trên đường xung nhịp.
Xung nhịp cho phép (enable clock).
Đường xung nhịp cho phép (EC) có mức tích cực cao. Đường EC được

dùng chung cho cả 2 flip-flop trong mét CLB. NÕu mét trong 2 flip-flop bị
huỷ kết nối, tín hiệu EC cấp cho EC mặc định ở trạng thái tích cực, EC không
thể đảo trong CLB. Xung nhịp cho phép EC được đồng bộ với xung nhịp và
phải thoả mÃn sự thiết lập và giữ định thời cho thiết bị.
Set/Reset.
Đường Set/Reset (SR) là đường tín hiƯu cËn ®ång bé møc tÝch cùc cao
®iỊu khiĨn flip-flop. SR có thể đặt cấu hình như set và reset ở mỗi flip-flop.
Cấu hình tuỳ chọn này xác định trạng thái của flip-flop. Nó cũng xác định tác
dụng của xung GSR trong trạng thái hoạt động bình thường và tác dụng của
xung trên đường SR của CLB. Đường SR được dïng chung cho c¶ 2 flip –
Ngun ViÕt Tun XLTT – TT 2003


-23-

flop. Nếu SR không dùng riêng cho một flip-flop thì Set/Reset của flip-flop sẽ
mặc định ở trạng thái không tích cực. Bên trong CLB, SR không thể bị đảo.
Kiểm soát luồng tín hiệu ở CLB.
Ngoài các đầu vào H-LUT điều khiển các bộ chọn kênh còn có tín hiệu
kiểm soát luồng các bộ chọn kênh, các tín hiệu được chọn là các tín hiệu đưa
tới các đầu vào của flip-flop và kết hợp các đầu ra CLB (X và Y).
Các tín hiệu điều khiển.
Có 4 tín hiệu điều khiển các bộ chọn kênh trên đầu vào của CLB. Các bộ
chọn kênh đó cho phép các tín hiệu điều khiển bên trong CLB (H1, DIN, SR
và EC ) được đưa tới từ một vài tín hiệu điều khiển điều khiển chung của 4
đầu vào (C1ữC4) trong CLB.

DIN

H1

C1
C2
C3

SR

C4

EC

Hình 1.10: Ghép nối các tín hịêu điều khiển.
Có 4 tín hiệu điều khiển bên trong là:
EC (Enable Clock).
SR (Asyschronous Set/Reset) hoặc bộ tạo hàm H đầu vào 0.
DIN (Direct Input) hoặc bộ tạo hàm H đầu vào 2.
Nguyễn Viết Tuyến XLTT TT 2003


-24-

H1 bộ phát hàm H đầu vào 1.
1.4.2.3. Các khối vµo ra (Input/Output Blocks : IOB)
Ng­êi sư dơng cã thĨ đặt cấu hình các khối vào ra IOB để tạo giao diện
giữa các chân đóng vỏ bên ngoài với chức năng logic bên trong. Mỗi IOB điều
khiển một chân đóng vỏ và có thể đặt cấu hình cho đầu vào, ra hoặc các tín
hiệu hai chiều. Hình 1.11 minh hoạ một chức năng đơn giản của IOB.
Đường dẫn tín hiệu vào IOB:
Tín hiệu vào IOB có thể được đưa vào trực tiếp từ các kênh kết nối (thông
qua I1, I2 ở hình 1.12) hoặc từ đầu vào của thanh ghi. Đầu vào thanh ghi có
thể lập trình như một sườn kích flip-flop hoặc một mức chốt nhạy. Sơ đồ khối

đơn giản của thanh ghi có thể xem ở hình 1.12.
GTS
T

O
OK

D

Q

OUTPUT DRIVER
Programmable Slew Rate
Programmable TTL/CMOS Driver

CLK
EC

Package
Pad

l1
INPUT BUFFER

l2

Delay
D

IK


CLK

EC

EC

Q

Programable
Pull-Up/
Pull Down
Networt

Hình 1.11: Sơ đồ khối của IOB
Vị trí thanh ghi phải được đặt phï hỵp víi ký hiƯu trong th­ viƯn. VÝ dơ,
IFD là đầu vào cơ bản của flip-flop (sườn dương) và ILD là chốt đầu vào cơ
bản. Các mức biến đổi với các xung nhịp đảo cũng có thể sử dụng. Tín hiệu
xung nhịp đảo cũng được trình bày trong hình 1.12 trên đường tín hiệu CK.

Nguyễn Viết Tuyến XLTT TT 2003


-25-

Để cho thanh ghi thời gian thiết lập đầu vào ngắn hơn, với việc định thời
dương, gắn một bộ NODELAY hoặc đặc tính cho flip-flop.

GSR


SD

D

D

Q

Q

CK
RD
EC

VCC

Hình 1.12: Sơ đồ khối chức năng IOB.
Các đầu vào của Spartan II tương thích với loại TTL và loại CMOS 3, 3
V. Các I/O của Spartan II hoàn toàn ở mức 3,3V.
Chốt đầu vào "bắt "gi÷ nhanh".
IOB cđa Spartan II cã mét t chän bỉ sung chốt ở đầu vào. Tính năng
chốt này được khoá bởi xung nhịp, được sử dụng khi đầu ra flip-flop sớm hơn
xung nhịp đầu vào. Do đó, hai xung nhịp khác nhau có thể được sử dụng để
làm xung nhịp cho hai thành phần đầu vào lưu trữ. Tính năng chốt cho phép
bắt giữ nhanh dữ liệu vào sau đó đồng bộ với xung nhịp bên trong bởi flip-flop
trong IOB hoặc các mạch bộ chốt.
Đường dẫn tín hiệu ra IOB.
Các tín hiệu ra có thể bị đảo tuỳ ý bên trong IOB và có thể trực tiếp đi
qua bộ đệm ra hoặc được lưu trữ ở một xung kích dương của flip-flop và đưa
tới bộ đệm ra.

Ghim Vcc ở Spartan II.

NguyÔn ViÕt TuyÕn XLTT – TT 2003


×