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

Bài Giảng BỘ NHỚ HÀM PLD

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 (959.69 KB, 13 trang )

Bài giảng thiết kế hệ thống số

Chương 3 : BỘ NHỚ HÀM PLD

3.1.

Giới thiệu.

3.2.

Cấu trúc và phân loại.

3.3.

Thiết kế hệ tổ hợp dùng PLD

3.4.

Thiết kế hệ tuần tự dùng PLD

GV: TS Võ Đình Tùng

Chương 3: Bộ nhớ hàm


Bài giảng thiết kế hệ thống số

3.1.

Chương 3: Bộ nhớ hàm


GIỚI THIỆU
PLD: Programmable Logic Device - Thiết bị logic lập trình được
PLD là tên gọi tổng quát của một IC số mà người dùng có thể lập trình được nó

để thực hiện các hàm logic khác nhau.
Một PLD là một IC nó chứa 1 số lượng lớn các cổng, FF và thanh ghi mà chúng
được kết nối qua lại với nhau bên trong chip. Tuy nhiên, có nhiều kết nối là các liên
kết có thể nóng chảy được”.
Khi xuất xưởng, các IC được tích hợp sẵn với những chức năng riêng biệt, khi
đó người sử dụng phải chọn lựa linh kiện sao cho việc thiết kế mạch hiệu quả nhất.
Nhưng do độ tích hợp của IC cũng có giới hạn, và để linh hoạt hơn trong việc thực
hiện những chức năng của người thiết kế, cũng như mối quan hệ mật thiết giữa nhà sản
xuất và người sử dụng , cụ thể là tối ưu hóa khả năng ứng dụng của IC, nhà sản xuất đã
cho ra một loại linh kiện đặc biệt mà chức năng của nó sẽ được người thiết kế quy
định chứ không phải là nhà sản xuất nữa. Linh kiện đó được gọi chung là PLD .
Để thực hiện được việc thiết kế những ứng dụng trên IC PLD đòi hỏi người sử
dụng phải kết hợp kiến thức cả về kỹ thuật số lẫn các ngôn ngữ lập trình cho thiết bị.
Để IC PLD thực hiện một chức năng logic bằng các ngơn ngữ lập trình, trình
biên dịch của ngơn ngữ đó sẽ rút gọn biểu thức sao cho tối ưu nhất, và thiết lập mảng
cầu chì phù hợp với chức năng logic trên bằng cách hủy hoặc giữ một số cầu chì trong
mảng cầu chì.
3.2.

PHÂN LOẠI PLD
-

SPLD : Small PLD - CPLD : Complex PLD
+ PLA : Programmable Logic Array
+ PAL : Programmable Array Logic
+ GAL : Generic Array Logic

+ PEEL : Programmable Electronic Erasable Logic

Để lập trình cho các IC SPLD-CPLD ta dùng ngơn ngữ lập trình ABEL và trình
biên dịch ABEL (Advanced Boolean Equation Language).
-

FPGA : field-programmable gate array

GV: TS Võ Đình Tùng


Bài giảng thiết kế hệ thống số

Chương 3: Bộ nhớ hàm

Để lập trình các IC này ta dùng ngơn ngữ lập trình VHDL, Vielog, trình biên
dịch Maxplus, hoặc Xillinx
3.3.

CẤU TRÚC CÁC LOẠI PLD

3.3.1. Ý tưởng cơ sở
Xét hình vẽ sau:
A

B

A

A


B

B

And array
A B

A B

A B

A B

A B

A B

A B

Product
lines

A B

Input
lines

Or
array

O1

O1

O1

O1

Sum of product outputs

Ý tưởng thiết kế PLD
Mạch gồm 1 mảng (array) các cổng AND và 1 mảng các cổng OR có thể được
kết nối qua lại để tạo ra 4 ngõ ra. Mỗi 1 ngõ ra có thể là 1 hàm bất kỳ nào của 2 biến
ngõ vào A và B.
Mỗi ngõ vào được đưa đến cổng đệm đảo và cổng đệm khơng đảo, để cho ra
chính nó và đảo của nó. Các đường vào này được đưa tới dàn cổng AND. “Mỗi 1 cổng
AND được nối với 2 đường vào khác nhau sao cho tạo ra duy nhất 1 tích các biến
vào”. Các ngõ ra của cổng AND được gọi là các đường tích (product).
Mỗi đường tích được nối đến 1 trong 4 ngõ vào của mỗi cổng OR có 4 ngõ vào.
Qua liên kết cầu chì ( fuse link). Ban đầu tất cả các liên kết này là nguyên vẹn và ngõ
ra của mỗi cổng OR là hằng số (1)



 



VD: O1  AB  AB  AB  AB  A B  B  A B  B  A  A  1
Các ngõ ra O1, O2, O3, O4 có thể được lập trình cho bất kỳ 1 hàm nào của 2 biến

A và B bằng cách phá bỏ 1 cách chọn lựa các cầu chì. Các PLD được thiết kế sao cho
khi 1 ngõ vào của cổng OR bị phá huỷ cầu chì thì hoạt động như là logic 0. Ví dụ với
cổng OR ta phá huỷ cầu chì 1 và 4, ngõ ra O1 trở thành:
GV: TS Võ Đình Tùng


Bài giảng thiết kế hệ thống số

Chương 3: Bộ nhớ hàm

O1  0  AB  AB  0  AB  AB

Có thể lập trình mỗi ngõ ra cổng OR thành 1 hàm mong muốn bằng cách thức
vừa làm. Một khi tất cả các ngõ ra đã được lập trình, thiết bị tạo ra vĩnh viễn các hàm
ra được chọn.
Khi số ngõ vào của 1 PLD tăng lên thì sơ đồ mạch trở nên rối rắm. Vì lý do này
các nhà chế tạo PLD có 1 ký hiệu tượng trưng đã được đơn giản để thể hiện mạch bên
trong các thiết bị này.

Ký hiệu tượng trưng cho PLD
Các sự kết nối từ các đường biến vào đến cổng AND được chỉ ra bởi dấu X
hoặc dấu chấm (dot). Trong đó X thể hiện 1 cầu chì cịn ngun, dấu chấm thể hiện 1
kết nối cứng ( không thể thay đổi).
Chẳng hạn ở hình vẽ trên ngõ vào A và B được nối tới cổng AND để cho 1 tích
AB . Các ngõ vào A và B không được nối tới cổng AND cho nên không ảnh hưởng

đến ngõ ra cổng AND.
Điều quan trọng để hiểu ký hiệu tượng trưng này là cổng AND có 4 ngõ vào
khác nhau ngay cả khi chỉ có 1 đường được chỉ ra. Ngõ vào thật sự được kết nối với
cổng AND được ký hiệu bởi X hoặc dấu chấm.

 Một số ưu điểm khi dùng PLD
• Tăng khả năng tích hợp: Giảm khối lượng về mạch thiết kế trong khi vẫn có
thể tăng chức năng cho mạch
• Cơng suất thấp: CMOS và một số ít hơn các mạch kết hợp sẽ làm giảm đáng
kể cơng suất nguồn cung cấp
• Tăng độ tin cậy: Nguồn cung cấp thấp và việc giảm tối đa các mạch liên kết ở
ngoài làm cho việc truyền giữa các khối đáng tin cậy hơn
• Giá thành thấp.

GV: TS Võ Đình Tùng


Bài giảng thiết kế hệ thống số

Chương 3: Bộ nhớ hàm

• Dễ sử dụng: Dù tin hay khơng, thì sau khi trải qua thời gian ban đầu nghiên
cứu về PLD, sẽ thấy PLD rất dễ sử dụng hơn các hàm logic riêng rẽ.
• Dễ dàng thay đổi: Khi bạn cần có sự thay đổi trong thiết kế, khơng cần phải
thay đổi các “dây nối”, tất cả là thay đổi bên trong của PLD và có thể thực hiện các
thay đổi đó một cách nhanh chóng.
3.3.2. PAL ( Programmable Array Logic)
PAL có mảng cổng AND và mảng cổng OR, nhưng ở PAL các ngõ vào cho
cổng OR được buộc cố định. Điều này có nghĩa là 1 cổng AND có thể được lập trình
để tạo ra bất kỳ 1 tích nào mong muốn của các biến ngõ vào và Đảo của nó.

Cấu trúc của PAL

f1  X 1 X 2 X 3  X 1 X 2 X 3 ; f 2  X 1 X 2  X 1 X 2 X 3
3.3.3. PLA ( Programmable Logic Array)

PLA gồm một mảng cổng OR có thể lập trình và một mảng cổng AND có thể
lập trình để thực hiện bất cứ một biểu thức logic nào ( dạng tổng của các tích)
Một PLA với m ngõ vào, n ngõ ra và p biểu thức nhân thì có 2n ngõ vào cho
mỗi cổng AND, m.p ngõ vào cho mỗi cổng OR.
Để thực hiện việc lập trình, các dấu nối bên trong được đánh dấu bởi dấu 'x' hay
cịn gọi là cầu chì nối, việc lập trình để thực hiện một chức năng logic bằng cách thành
lập những mối cầu chì thực sự cần thiết. Số nối cầu chì trong một n.m PLA là 2.n.p
cho chuỗi AND và m.p cho chuỗi OR.

GV: TS Võ Đình Tùng


Bài giảng thiết kế hệ thống số

Chương 3: Bộ nhớ hàm

Cấu trúc của PLA

f1  X 1 X 2  X 1 X 3  X 1 X 2 X 3 ; f 2  X 1 X 2  X 1 X 2 X 3  X 1 X 3
Khi cả mảng cổng AND và mảng cổng OR có thể lập trình làm cho PLA trở nên
đa năng nhất trong các loại PLD.
Một PLA có sẵn là TIFPLA840. Nó là 1 PLA 14  32  6. Có 14 biến vào, 32
cổng AND để tạo ra các tích của 14 biến và 6 cổng OR để có thể kết hợp bất kỳ 32 ngõ
ra AND.
3.3.4. PLD tuần tự (Sequential PLD)
Phần lớn các thiết kế số cần các flipflop, do đó người ta thiết kế thêm các PLD
có chứa các flipflop. Các PLD như vậy thường được gọi là PLD có thanh ghi
(registered PLD) hay PLD tuần tự (sequential PLD), thường thì thanh ghi được ra

từ các D flipflop.


Cấu trúc PLD tuần tự
3.3.5. GAL (Generic Array Logic)
Giống như PAL có mảng cổng AND và mảng cổng OR các ngõ vào cho cổng
OR được buộc cố định, GAL cho phép xóa và lập trình lại nhiều lần.
Một số các GAL thơng dụng: GAL16V8, 22V10.
GV: TS Võ Đình Tùng


Bài giảng thiết kế hệ thống số

Chương 3: Bộ nhớ hàm

Cấu trúc GAL16V

OLMC (Output Logic Macro Cell) Cho phép người dùng cấu hình ngõ ra.

Nó có thể được cấu hình cho cả mạch tổ hợp hoặc là mạch tuần tự

Cấu trúc OLMC
Tám số hạng tích tạo thành mảng AND có thể lập trình được được đưa tới
cổng OR để thực hiện logic tổ hợp
Một số hạng tích dùng để điều khiển xóa khơng đồng bộ của thanh ghi nội

GV: TS Võ Đình Tùng


Bài giảng thiết kế hệ thống số

Chương 3: Bộ nhớ hàm


Một số hạng tích nữa dùng để thực hiện cho phép ngõ ra hoặc chọn xung
đồng hồ (Output Enable/Clock select)
Các ngõ vào cho mảng cổng AND lập trình được gồm: Các ngõ vào và đảo
của các ngõ vào, hồi tiếp từ các chân I/O được cấu hình như ngõ vào, hồi tiếp từ
các ngõ ra của Marcocell.
Ngõ ra của cổng OR 8 ngõ vào được đưa đến cổng XOR. Ngõ vào cịn lại
của cổng XOR được nối đến bit có khả năng lập trình để cho. Cổng XOR được
dùng để thực hiện ngõ ra tích cực mức thấp hay mức cao.
Một OLMC cung cấp 3 kiểu cấu hình ngõ ra.
-

Simple Mode

Cấu hình của mode này được xem như ngõ vào hoặc ngõ ra tổ hợp .Tất cả các
ngõ ra có tới 8 biểu thức nhân được nối đến, hai MRC (chân 15,16) đơn thuần chỉ là
ngõ ra khơng có đường hồi tiếp . Chân 1, 11 luôn là ngõ cho tín hiệu vào mảng AND.

OLMC ở Single Mode
-

Complex Mode

Ở mode này cấu hình của MRC được tạo như ngõ ra hoặc ngõ vào/ra I/O.
Trong mode này thì chỉ có sáu ngõ vào ra I/O , 2 MRC còn lại chỉ thực hiện chức năng
của ngõ ra ( chân số 12 , 19), khơng có ngõ hồi tiếp như các MRC khác. Nếu yêu cầu
thiết kế cần dùng đến 8 ngõ ra I/O ta nên nghĩ đến việc dùng mode thanh ghi.
Có 7 biểu thức nhân được nối đến ngõ ra của một MRC, biểu thức nhân còn lại
được dùng vào việc lập trình cho phép xuất giá trị ngõ ra. Chân 1, 11 đóng vai trị là
chân đưa dữ liệu vào mảng lập trình AND.

GV: TS Võ Đình Tùng


Bài giảng thiết kế hệ thống số

Chương 3: Bộ nhớ hàm

OLMC ở Complex Mode
-

Regsitered Mode

Trong mode này cấu hình của mỗi MACROCELL (MRC) được xem như ngõ ra
thanh ghi hoặc ngõ vào/ra I/O , vậy ta có đến 8 thanh ghi hoặc 8 ngõ vào ra I/O tương
ứng với các MRC trong linh kiện. Mỗi ngõ ra I/O có 8 biểu thức nhân (hay là đường
tích - product term) . Tất cả các MRC này được nối chung với tín hiệu CLOCK (chân
số 1) ,tín hiệu OUTPUT ENABLE (chân số 11) , các bit định vị mode này có giá trị
như hình sau.

OLMC ở Registered Mode
GV: TS Võ Đình Tùng


Bài giảng thiết kế hệ thống số

Chương 3: Bộ nhớ hàm

3.3.6. FPGA (Field-programmable gate array)
Field-programmable gate array (FPGA) là vi mạch dùng cấu trúc mảng phần
tử logic mà người dùng có thể lập trình được

FPGA cũng được xem như một loại vi mạch bán dẫn chuyên dụng ASIC, và
khác biệt quan trọng nhất là kiến trúc của FPGA cho phép nó có khả năng chứa khối
lượng lớn cổng logic, so với các vi mạch bán dẫn lập trình được có trước nó.
Thiết kế hay lập trình cho FPGA được thực hiện chủ yếu bằng các ngôn ngữ mô
tả phần cứng HDL như VHDL, Verilog, …, các hãng sản xuất FPGA lớn
như Xilinx, Altera thường cung cấp các gói phần mềm và thiết bị phụ trợ cho quá trình
thiết kế.
Cấu trúc tổng thể của một FPGA được minh họa ở hình sau:


Các khối logic cơ bản lập trình được (logic block)



Hệ thống mạch liên kết lập trình được



Khối vào/ra (IO Pads)



Phần tử thiết kế sẵn khác như RAM, ROM, nhân vi xử lý...

Kiến trúc tổng quan FPGA
1. Khối logic cơ bản lập trình được
GV: TS Võ Đình Tùng


Bài giảng thiết kế hệ thống số


Chương 3: Bộ nhớ hàm

Khối logic FPGA
Phần tử chính của FPGA là các khối logic (logic block). Khối logic được cấu
thành từ LUT (Look up table) và một phần tử nhớ đồng bộ flip-flop, LUT là khối logic
có thể thực hiện bất kỳ hàm logic nào từ 4 đầu vào, kết quả của hàm này tùy vào mục
đích mà gửi ra ngồi khối logic trực tiếp hay thông qua phần tử nhớ flip-flop.
Slice: 4 khối logic tạo thành slice. Số lượng các Slices thay đổi từ vài nghìn đến
vài chục nghìn tùy theo loại FPGA.
2. Hệ thống mạch liên kết lập trình được

Hệ thống mạch liên kết lập trình được
Mạng liên kết trong FPGA được cấu thành từ các đường kết nối theo hai
phương ngang và đứng, tùy theo từng loại FPGA mà các đường kết nối được chia
thành các nhóm khác nhau. Các đường kết nối được nối với nhau thông qua các khối
chuyển mạch lập trình được (programmable switch), trong một khối chuyển mạch
chứa một số lượng nút chuyển lập trình được đảm bảo cho các dạng liên kết phức tạp
khác nhau.
3. Các phần tử tích hợp sẵn
GV: TS Võ Đình Tùng


Bài giảng thiết kế hệ thống số

Chương 3: Bộ nhớ hàm

Ngoài các khối logic tùy theo các loại FPGA khác nhau mà có các phần tử tích
hợp thêm khác nhau, ví dụ PowerPC, tích hợp nhân AVR…, hay cho những ứng dụng
xử lý tín hiệu số DSP trong FPGA được tích hợp các DSP Slide là bộ nhân cộng tốc độ

cao, thực hiện hàm A*B+C.
Ngoài ra những FPGA của Xilinx cịn có block RAM, có thể mường tượng như
là bộ nhớ nhỏ nằm trong FPGA. Những FPGA này tuy nhỏ (khoảng vài chục kí lơ bit
cho đến vài triệu bit tùy theo loại FPGA) nhưng có thể dùng để tạo một bộ nhớ nhỏ
như ROM,
 Ứng dụng FPGA
Ứng dụng của FPGA bao gồm: xử lý tín hiệu số DSP, các hệ thống hàng khơng,
vũ trụ, quốc phịng, các hệ thống điều khiển trực quan, phân tích nhận dạng ảnh, nhận
dạng tiếng nói, mơ hình phần cứng máy tính.
Do tính linh động cao trong quá trình thiết kế cho phép FPGA giải quyết lớp
những bài toán phức tạp mà trước kia chỉ thực hiện nhờ phần mềm máy tính, ngồi ra
nhờ mật độ cổng logic lớn FPGA được ứng dụng cho những bài tốn địi hỏi khối
lượng tính tốn lớn và dùng trong các hệ thống làm việc theo thời gian thực.

GV: TS Võ Đình Tùng


Bài giảng thiết kế hệ thống số

3.4.

THIẾT KẾ HỆ TỔ HỢP DÙNG PLD

2.4.

THIẾT KẾ MẠCH TUẦN TỰ DÙNG PLD

GV: TS Võ Đình Tùng

Chương 3: Bộ nhớ hàm




×