1 Tổng quan về kiến trúc FPGA
1.2 Khái niệm 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,
hay nói một cách khác là người kỹ sư lập trình IC có thể dễ dàng hiện
thực hóa thiết kế của mình sử dụng FPGA mà không lệ thuộc vào một
quy trình sản xuất hay cấu trúc phần cứng phức tạp nào trong nhà
máy bán dẫn. Đây chính là một đặc điểm làm FPGA trở thành một
công nghệ PLD được phát triển và nghiên cứu nhiều nhất hiện nay.
81 trang |
Chia sẻ: hoang10 | Lượt xem: 867 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Điện điện tử - Chương IV: Thiết kế vi mạch số trên FPGA, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Chương III -Thiết kế vi mạch số trên FPGA 1
Chương IV: Thiết kế vi mạch số
trên FPGA
1 Tổng quan về kiến trúc FPGA
1.2 Khái niệm 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,
hay nói một cách khác là người kỹ sư lập trình IC có thể dễ dàng hiện
thực hóa thiết kế của mình sử dụng FPGA mà không lệ thuộc vào một
quy trình sản xuất hay cấu trúc phần cứng phức tạp nào trong nhà
máy bán dẫn. Đây chính là một đặc điểm làm FPGA trở thành một
công nghệ PLD được phát triển và nghiên cứu nhiều nhất hiện nay.
Để có được khả năng đó, FPGA ra đời hoàn toàn là một công nghệ
mới chứ không phải là một dạng mở rộng của các chip khả trình kiểu
như PAL, PLA. Sự khác biệt đó thứ nhất nằm ở cơ chế tái cấu trúc
FPGA, toàn bộ cấu hình của FPGA thường được lưu trong một bộ nhớ
động (thông thường SRAM), quá trình tái cấu trúc được thực hiện
bằng cách đọc thông tin từ RAM để lập trình lại các kết nối logic trong
IC. Nói một cách khác cơ chế đó làm việc giống như phần mềm máy
tính cũng được lưu trữ trong RAM và khi thực thi sẽ được đọc lần
lượt nạp vào vi xử l{. Cũng như vậy việc lập trình lại cho FPGA cũng
dễ dàng như lập trình lại phần mềm trên máy tính.
Như vậy về mặt nguyên tắc thì quá trình khởi động của FPGA không
diễn ra tức thì mà cấu hình từ SRAM phải được đọc sau đó mới diễn
ra quá trình tái cấu trúc theo thông tin chứa trong SRAM. SRAM chỉ
lưu trữ được trong trạng thái làm việc, nghĩa là có nguồn cấp, chính vì
vậy để lưu giữ cấu hình cho FPGA thường phải dùng thêm một ROM
ngoại vi. Đến những dòng sản phẩm FPGA gần đây thì các ROM ngoại
vi này dần được thay thế bằng các ROM tích hợp sẵn, việc tích hợp
này làm FPGA nạp cấu hình nhanh hơn nhưng cơ chế thực hiện vẫn
phải thông qua một bộ nhớ SRAM như cũ.
Ngoài khả năng đó điểm thứ hai làm FPGA khác biệt với các PLD thế
hệ trước là FPGA có khả năng tích hợp logic với mật độ cao hơn hẳn,
với số cổng logic tương đương lên tới hàng trăm nghìn, hàng triệu
Chương III -Thiết kế vi mạch số trên FPGA 2
cổng. Khả năng đó có được nhờ sự đột phá trong kiến trúc của FPGA.
Nếu hướng mở rộng của CPLD tích hợp nhiều mảng PAL, PLA lên một
chip đơn, trong khi bản thân các mảng này có kích thước lớn và cấu
trúc không đơn giản nên số lượng mảng tích hợp nhanh chóng bị hạn
chế, dung lượng của CPLD nhiều nhất cũng chỉ đạt được con số trăm
nghìn cổng tương đương. Đối với FPGA thì phần tử logic cơ bản
không còn là mảng PAL, PLA mà thường là các khối logic lập trình
được cho 4 bit đầu vào và 1 đầu ra ( thường được gọi là LUT). Việc
chia nhỏ đơn vị logic cho phép tạo một cấu trúc khả trình linh hoạt
hơn và tích hợp được nhiều hơn số lượng cổng logic trên một chíp
bán dẫn. Bên cạnh đó hiệu quả làm việc và tốc độ làm việc của FPGA
cũng vượt trội so với các IC khả trình trước đó. Vì có mật độ tích hợp
lớn và tốc độ làm việc cao nên FPGA có thể được ứng dụng cho lớp
những bài toán số phức tạp đòi hỏi không những tốc độ cao mà còn
nhiều tài nguyên logic.
Hiện nay công nghệ FPGA đang được phát triển rộng rãi bởi nhiều
công ty bán dẫn khác nhau. Dẫn đầu là Xilinx với các dòng sản phẩm
như Virtex 3,4,5,6 và Spartan, Altera với Stratix, Cyclone, Arria, Bên
cạnh đó còn có sản phẩm của Lattice Semiconductor Company, Actel,
Achronix, BlueSilicon Tecnology
Khái niệm FPGA board, hay FPGA KIT là khái niệm chỉ một bo mạch in
trên đó có gắn chíp FPGA và các phần tử khác như cổng giao tiếp,
màn hình, led, nút bấm và bao giờ cũng có phần giao tiếp với máy
tính để nạp cấu hình cho FPGA. Ngoài ra board còn chứa các thiết bị
ngoại vi được liên kết với các cổng vào ra của FPGA nhằm mục đích
thử nghiệm.
Tài nguyên logic của FPGA được thể hiện ở bảng so sánh sau:
IC Transitor count Process Manufacture
Pentium 2 7 500 000 0.35um Intel
Pentium 4 42 000 000 180nm Intel
Core 2 Duo 291 000 000 65nm Intel
Six core Xenon 1 900 000 000 45nm Intel
AMD K8 106 000 000 130nm AMD
Virtex 4 1 000 000 000 90nm Xilinx
Virtex 5 1 100 000 000 65nm Xilinx
Chương III -Thiết kế vi mạch số trên FPGA 3
Starix IV 2 500 000 000 40nm Altera
Virtex 6 ~2 600 000 000 65 nm Xilinx
Theo bảng so sánh trên có thể thấy khả năng tích hợp của FPGA là rất
lớn, những FPGA mới nhất hiện nay có khả năng tích hợp lớn tương
đương như các chíp chuyên dụng cho server như Xenon 6 nhân. Còn
bản thân các chip cỡ nhỏ như Pentium hay thậm chí Core duo nếu so
sánh về mức độ tích hợp thì chúng có thể được “nạp” hoàn toàn vào
một FPGA. Khả năng này của FPGA mở ra một hướng mới cho ứng
dụng FPGA đó là sử dụng FPGA như một phương tiện để kiểm tra
thiết kế ASIC (ASIC prototyping with FPGA). Kế thừa của phương pháp
này là công nghệ có tên gọi “Hard-copy” là công nghệ cho phép sao
chép toàn bộ các thiết kế đã được nạp vào FPGA thành một IC ASIC
độc lập. Tính tối ưu của thiết kế này không cao nhưng đơn giản và
giảm đáng kể chi phí nếu so sánh với semi-custom ASIC.
1.2 Ứng dụng của FPGA trong xử lý tín hiệu số
Do khả năng tái cấu trúc đơn giản và sở hữu một khối tài nguyên logic
lớn FPGA có thể được ứng dụng cho nhiều các lớp bài toán xử lý tín hiệu số cỡ
lớn mà các công nghệ trước đó không làm được hoặc làm được nhưng với tốc
độ và hiệu suất thấp. Các lớp ứng dụng đó là:
- Các ứng dụng chung về xử lý số như lọc tín hiệu, tìm kiếm, phân tích, giải mã,
điều chế tín hiệu, trộn tín hiệu
- Các ứng dụng về mã hóa, giải mã giọng nói, nhận dạng giọng nói, tổng hợp
giọng nói. Xử lý tín hiệu âm thanh bao gồm lọc nhiễu , trộn, mã hóa, giải mã,
nén, tổng hợp âm thanh
- Ứng dụng trong xử lý ảnh số, nén và giải nén, các thao tác biến đổi, soạn
thảo, nhận dạng ảnh số
- Ứng dụng trong các hệ thống thông tin như các hệ thống Voice IP, Voice mail.
Modem, điện thoại di động, mã hóa và giải mã truyền thông trong mạng LAN,
WIFI trong truyền hình, radio
-Ứng dụng trong điều khiển các thiết bị điện tử: ổ cứng, máy in, máy công
nghiệp , dẫn đường, định vị, robots.
Chương III -Thiết kế vi mạch số trên FPGA 4
1.3 Công nghệ tái cấu trúc FPGA
Trong lĩnh vực công nghệ tái cấu trúc IC hiện nay có tất cả 5 công nghệ fuse,
EPROM, EEPROM, SRAM based, Antifuse trong đó SRAM-based là công
nghệ phổ biến được sử dụng cho FPGA.
SRAM-based
Hình 3.1 SRAM-based FPGA
Cấu hình của FPGA bản chất là mô tả các điểm kết nối giữa các thành phần
có chứa trong IC, có hai dạng kết nối cơ bản là kết nối giữa các đường kết
nối dẫn bằng ma trận chuyển mạch (switch matrix), và kết nối nội bộ trong
các khối logic. Kết nối trong switch matrix là kết nối giữa hai kênh dẫn được
thực hiện thông qua các pass-transitor, hay gọi là transitor dẫn. 1 bit thông
tin từ bộ nhớ SRAM được sử dụng để đóng hoặc mở pass-transitor này,
tương ứng sẽ ngắt hay kết nối giữa hai kênh dẫn.
Kiểu cấu trúc thứ hai phổ biến trong các khối logic là lập trình thông qua
khối dẫn kênh Multiplexer. Thông tin điều khiển từ SRAM cho phép
Multiplexer chọn một trong số các đầu vào để đưa ra. Nếu khối lượng đầu
vào là 2n, thì yêu cầu số bit điều khiển từ SRAM là n-bit.
Kiểu cấu trúc thứ 3 được gọi là Look_Up Table (LUT), mỗi một LUT có thể
được lập trình để thực hiện bất kz một hàm logic bất kz nào của đầu ra phụ
thuộc các đầu vào. Cơ chế làm việc của LUT có thể tóm tắt như sau, giả sử
cần thực hiện một hàm m đầu vào và n đầu ra thì cần một bộ nhớ 2mx(n),
chứa thông tin về n đầu ra đối với tất cả các khả năng đầu vào. Khi làm việc
thì m-bit đầu vào đóng vai trò như địa chỉ để truy cập (Look-up) lên bộ nhớ
Chương III -Thiết kế vi mạch số trên FPGA 5
(Table). Về bản chất cấu trúc này cũng giống như khối chọn kênh
(Multiplexer) cỡ lớn. Trong FPGA điển hình sử dụng các LUT có 4 bit đầu vào
và 1 bit đầu ra.
Như vậy tính khả trình của FPGA được thực hiện nhờ tính khả trình của
các khối logic và tính khả trình của hệ thống kênh kết nối, ngoài ra là tính khả
trình của các khối điều khiển cổng vào ra. Sau đây ta sẽ đi vào nghiên cứu cấu
trúc cụ thể của họ FPGA Spartan 3E của Xilinx, về cơ bản, cấu trúc của các họ
Xilinx FPGA khác tương tự như cấu trúc này.
1.4 Kiến trúc tổng quan
Hình 3.2 trình bày cấu trúc tổng quan nhất cho các loại FPGA hiện nay.
Cấu trúc chi tiết và tên gọi của các thành phần có thể thay đôi tùy theo các
hãng sản xuất khác nhau nhưng về cơ bản FPGA được cấu thành từ các Khối
Logic (Logic Block) số lượng của các khối khối này thay đổi từ vài trăm (Xilinx
Spartan) đến vài chục nghìn (Xilinx Virtex6) đượ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 khả trình. Hệ
thống này còn có nhiệm vụ kết nối với các cổng giao tiếp vào ra (IO_PAD) của
FPGA. Số lượng các chân vào ra thay đổi từ vài trăm đến cỡ hơn một nghìn.
Bên cạnh các thành phần chính đó, những FPGA cỡ lớn còn được tích hợp
những khối thiết kế sẵn mà thuật ngữ gọi là IP cores, các IP cores này có thể là
các bộ nhớ RAM, ROM, khối thực hiện phép nhân, khối thực hiện phép nhân
cộng (DSP)...
Chương III -Thiết kế vi mạch số trên FPGA 6
LOGIC BLOCK
LOGIC BLOCK
LOGIC BLOCK..
LOGIC BLOCK LOGIC BLOCK LOGIC BLOCK..
LOGIC BLOCK LOGIC BLOCK
LOGIC BLOCK..
IO_PAD
IO_PAD
IO_PAD
IO
_
P
A
D
IO
_
P
A
D
IO_PAD IO_PAD
IO_PAD
IO
_
P
A
D
IO
_
P
A
D
IO
_
P
A
D
..
..
.
.
IO
_
P
A
D
IP_COREs, RAM,
ROM...
Interconnect
wires
Hình3.2. Kiến trúc tổng quan của FPGA
2. Kiến trúc chi tiết Xilinx FPGA Spartan-3E.
Để hiểu chi tiết về cấu trúc của FPGA phần dưới đây ta sẽ đi nghiên cứu
một cấu trúc cụ thể của FPGA Spartan 3E, tài liệu gốc có thể tìm thấy trên trang
web của Xilinx, người đọc nên tham khảo thêm để hiểu kỹ hơn vấn đề.
Hình vẽ dưới đây thể hiện cấu trúc tổng quan của họ FPGA này.
Chương III -Thiết kế vi mạch số trên FPGA 7
Hình 3.3. Kiến trúc tổng quan của Spartan 3E FPGA
FPGA Spartan 3E được cấu trúc từ các thành phần sau:
CLBs (Configurable Logic Blocks) Là các khối logic lập trình được chứa các
LUTs và các phần tử nhớ flip-flop có thể được cấu trúc thực hiện các hàm khác
nhau.
IOBs (Input/Output Blocks) là các khối điều khiển giao tiếp giữa các chân
vào của FPGA với các khối logic bên trong, hỗ trợ được nhiều dạng tín hiệu
khác nhau. Các khối IO được phân bố xung quanh mảng các CLB.
Block RAM các khối RAM 18Kbit hỗ trợ các cổng đọc ghi độc lập, với các
FPGA họ Spartan 3 block RAM thường phân bố ở hai cột, mỗi cột chứa một vài
module RAM 18Kbit, mỗi khối RAM được nối trực tiếp với một khối nhân 18
bit.
Dedicated Multiplier: Các khối thực hiện phép nhân với đầu vào là các số
18 bit.
DCM (Digital Clock Manager) Các khối làm nhiệm vụ điều chỉnh, phân
phối tín hiệu đồng bộ tới tất cảc các khối khác. DCM thường được phân bố ở
giữa, với hai khối ở trên và hai khối ở dưới. Ở một số đời FPGA Spartan 3E
DCM còn được bố trí ở giữa.
Chương III -Thiết kế vi mạch số trên FPGA 8
Interconnect: Các kết nối khả trình và ma trận chuyển dùng để liên kết
các phần tử chức năng của FPGA với nhau.
2.1 Khối logic khả trình
Khối logic khả trình của FPGA Xilinx có tên gọi đầy đủ là Configurable
Logic Blocks (CLBs). CLBs là phần tử cơ bản cấu thành FPGA, là nguồn tài
nguyên logic chính tạo nên các mạch logic đồng bộ lẫn không đồng bộ.
Mỗi CLB được cấu thành từ 4 Slices, mỗi Slice lại được cấu thành từ 2
LUTs (Look Up Tables). Phân bố của các CLB thể hiện ở hình 3.4:
Hình 3.4. Phân bố của các CLB trong FPGA
Các CLB được phân bố theo hàng và theo cột, mỗi một CLB được xác
định bằng một tọa độ X và Y trong ma trận, đối với Spartan 3E số lượng hàng
thay đổi từ 22 đến 76, số lượng cột từ 16 đến 56 tùy thuộc vào các gói cụ thể.
2.1.1. SLICE
Mỗi CLB được cấu tạo thành từ 4 slices và 4 slices này chia làm hai nhóm
trái và phải. Nhóm 2 slices bên trái có khả năng thực hiện các chức năng logic
và làm việc như phần tử nhớ nên được gọi là SLICEM. Nhóm 2 silces bên phải
chỉ thực hiện được các chức năng logic nên được gọi là SLICEL. Thiết kế như
vây xuất phát từ thực tế là nhu cầu thực hiện logic thường lớn hơn so với nhu
cầu lưu trữ dữ liệu do vậy việc hỗ trợ một nửa làm việc như phần tử nhớ làm
Chương III -Thiết kế vi mạch số trên FPGA 9
giảm kích thước và chi phí cho FPGA, mặt khác làm tăng tốc độ làm việc cho
toàn khối.
Hình 3.5 Bố trí slice bên trong 1 CLB
SLICEL chỉ thực hiện chức năng logic nên chỉ chứa các thành phần gồm
LUT, chuỗi bít nhớ (Carry Chain), chuỗi số học (Arithmetic chain), các bộ chọn
kênh mở rộng (wide multiplexer) F5MUX và F5MUX, 2 Flip-flop. Còn đối với
SLICEM thì ngoài các thành phần trên LUT còn có thể được cấu hình để làm
việc như một thanh ghi dịch 16 bit Shift-Register(SRL16), hoặc RAM phân tán
16x1bit (Distributed RAM), như trình bày trên hình 3.6.
Chương III -Thiết kế vi mạch số trên FPGA 10
Hình 3.6 Phân bố tài nguyên trong SLICEM và SLICEL
Cấu trúc chi tiết của một Slices được thể hiện ở hình dưới đây:
Hình 3.7. Cấu trúc chi tiết của Slice
Chương III -Thiết kế vi mạch số trên FPGA 11
Những đường gạch đứt thể hiện những kết nối tới các tài nguyên mà chỉ
SLICEM mới có, những đường gạch liền chỉ những kết nối mà cả hai dạng
SLICEs đều có.
Mỗi một slice chia làm hai phần với cấu trúc gần như nhau là phần trên
và phần dưới, mỗi phần chứa các thành phần giống nhau nhưng được ký hiệu
khác nhau, ví dụ G-LUT chỉ LUT ở phần trên, F-LUT chỉ LUT ở phần dưới . Tín
hiệu đồng bộ CLK, tín hiệu cho phép của xung nhịp CE (Clock Enable), tín hiệu
cho phép ghi dữ liệu vào SLICEM SLICEWE1 và tín hiệu RS (Reset/Set) là các tín
hiệu dùng chung cho cả phần trên và phần dưới của SLICE.
Các đường dữ liệu cơ bản trong Slices là các đường bắt đầu từ các đầu vào
F[4:1] và G[4:1] thẳng tới F-LUT và G-LUT tương ứng, tại đây sẽ thực hiện hàm
logic tổ hợp theo yêu cầu và gửi ra ở các đầu ra D. Từ đây đầu ra D được gửi ra
các cổng ra của SLICE thông qua các đường sau:
Kết thúc trực tiếp tại các đầu ra X, Y và nối ra ngoài với ma trận kết nối.
Thông qua FMUX (GMUX) rồi DMUX làm đầu vào cho phần tử nhớ FFX
(FFY) sau đó gửi ra thông qua các đầu ra QX (QY) tương ứng của các
phần tử nhớ.
Điều khiển CYMUXF (CYMUXG) của chuỗi bit nhớ (chi tiết về Carry chain
dưới đây).
Gửi tới cổng XORF (XORF) để tính tổng hoặc tích riêng trong chuỗi nhớ.
Làm đầu vào cho F5MUX (FIMUX) trong trường hợp thiết kế các khối
logic, các chuỗi nhớ, thanh ghi dịch, RAM mở rộng.
Bên cạnh các đường dữ liệu cơ bản trên thì trong Slice tồn tại các đường dữ
liệu “tắt” bắt đầu từ các đầu vào BX, BY và kết thúc qua một trong những
đường sau:
Bỏ qua cả LUT lẫn phần tử nhớ và kết thúc ở các đầu ra BXOUT, BYOUT
rồi ra ma trận kết nối.
Bỏ qua LUT nhưng làm đầu vào cho các phần tử nhớ và kết thúc ở các
đầu ra QX, QY.
Điều khiển F5MUX hoặc FiMUX.
Thông qua các multiplexers, tham gia như một đầu vào của chuỗi bit
nhớ.
Chương III -Thiết kế vi mạch số trên FPGA 12
Làm việc như đầu vào DI của LUT (khi LUT làm việc ở chế độ Distributed
RAM hay Shift Register).
BY có thể đóng vai trò của tín hiệu REV cho phần tử nhớ (xem chi tiết về
REV tại mô tả về phần tử nhớ)
2.1.2. Bảng tham chiếu
Hình 3.8: Phân bố các LUT trên một Slice
Bảng tham chiếu (Look-Up Table) gọi tắt là các LUT được phân bố ở góc
trên trái và góc dưới phải của Slice vvà được gọi tên tương ứng là F-LUT và G-
LUT. Phần tử nhớ đóng vai trò là đầu ra của các LUT được gọi tương ứng là FFX
và FFY. LUT là đơn vị logic và là tài nguyên logic cơ bản của FPGA, LUT có khả
năng được cấu trúc để thực hiện một hàm logic bất kz với 4 đầu vào. Cấu trúc
của LUT được thể hiện ở hình sau:
Hình 3.9 Cấu trúc của LUT
LUT bản chất là một bộ chọn kênh 16 đầu vào (Multiplexer), các đầu vào
của LUT A*3:0+ đóng vai trò tín hiệu chọn kênh, đầu ra của LUT là đầu ra của
Multiplexer. Khi cần thực hiện một hàm logic bất kz nào đó, một bảng nhớ
Chương III -Thiết kế vi mạch số trên FPGA 13
SRAM 16 bit được tạo để lưu trữ kết quả bảng chân lý của hàm, tổ hợp 16 giá
trị của hàm tương ứng sẽ là các kênh chọn của Multiplexer. khi làm việc tùy
vào giá trị của A*3:0+ đầu ra sẽ nhận một trong số 16 giá trị lưu trữ tương ứng
trong SRAM.
2 LUTs có trong SLICEM có thể được cấu trúc để làm việc như 16x1 RAM
gọi là Distributed RAM hoặc được cấu trúc để làm việc như một thanh ghi dịch
16-bit SHL16. Cấu trúc của các phần tử này sẽ được nghiên cứu kỹ hơn ở phần
1.3.2.6 và 1.3.2.7.
Các LUT có thể được kết hợp với nhau để thực hiện các hàm logic tùy
biến có số lượng đầu vào lớn hơn 4 thông qua các bộ chọn kênh mở rộng wide-
multiplexers.
2.1.3. Phần tử nhớ
Phần tử nhớ (Storage elements) có trong CLB FFX, FFY có thể được cấu
hình là các D flip-flop hoặc là Latch, làm việc với các tín hiệu điều khiển đồng
bộ hoặc không đồng bộ vì vậy cấu trúc của phần tử nhớ trong FPGA phức tạp
hơn so với cấu trúc của D-flipflop thông thường. Các đầu ra QX, QY của phần
tử nhớ cũng là các đầu ra của Slices. Trong phần lớn các ứng dụng thường gặp
phần tử nhớ được cấu trúc để làm việc như D-flipflop đồng bộ.
Các cổng giao tiếp của một phần tử nhớ bao gồm:
D, Q là các cổng dữ liệu vào và ra tương ứng.
C là cổng vào xung nhịp đồng bộ.
GE (Gate Enable) cổng cho phép xung nhịp C khi làm việc ở chế độ latch
CE (Clock Enable) cổng cho phép xung nhịp C khi làm việc ở chế độ flip-
flop
S, R là các cổng Set và Reset đồng bộ cho Flip-flop.
PRE, CLR Cổng Set và Clear không đồng bộ
RS Cổng vào của CLB cho S, R, PRE, hay CLR.
REV Cổng vào pha nghịch so với RS, thường có đầu vào từ BY, có tác
dụng ngược với RS. Khi cả hai cổng này kích hoạt thì giá trị đầu ra của
phần tử nhớ bằng 0.
Chương III -Thiết kế vi mạch số trên FPGA 14
2.1.4. Bộ chọn kênh mở rộng
Trong cấu trúc của Slice có chứa hai bộ chọn kênh Multiplexer đặc biệt
gọi là Bộ chọn kênh mở rộng (Wide-multipexer) F5MUX và FiMUX.
Hình 3.9: FiMUX và F5MUX
Mỗi một LUT được thiết kế để có thể thực hiện được mọi hàm logic 4
đầu vào. Mục đích của các bộ chọn kênh này là tăng tính linh động của FPGA
bằng cách kết hợp các phần tử logic chức năng như LUT, Carry chain, Shift-
register, Distributed RAM ở các Slices, CLBs khác nhau để tạo ra các hàm tùy
biến với nhiều đầu vào hơn. Ví dụ ở bảng sau thể hiện cách sử dụng 2 LUT 4
đầu vào và 1 F5MUX để tạo ra một hàm logic tùy biến 5 đầu vào.
X5 X4 X3 X2 X1 Y
0 0 0 0 0 1
0 0 0 0 1 0
0 0 0 1 0 1
0 0 0 1 1 0
0 0 1 0 0 0
0 0 1 0 1 1
0 0 1 1 0 0
0 0 1 1 1 1
0 1 0 0 0 1
0 1 0 0 1 0
0 1 0 1 0 1
0 1 0 1 1 1
0 1 1 0 0 0
0 1 1 0 1 1
0 1 1 1 0 1
0 1 1 1 1 0
1 0 0 0 0 1
1 0 0 0 1 0
1 0 0 1 0 1
1 0 0 1 1 1
1 0 1 0 0 0
1 0 1 0 1 1
1 0 1 1 0 1
1 0 1 1 1 1
1 1 0 0 0 1
1 1 0 0 1 0
1 1 0 1 0 1
LUT0
LUT1
OUT0
OUT1
OUT
Chương III -Thiết kế vi mạch số trên FPGA 15
1 1 0 1 1 1
1 1 1 0 0 0
1 1 1 0 1 1
1 1 1 1 0 1
1 1 1 1 1 0
Hình 3.10 Nguyên lý làm việc vủa F5MUX
Đầu tiên đối với hàm 5 biến OUT = F(X1, X2, X3, X4, X5) bất kz ta thành
lập bảng chân l{ tương ứng, bảng này được chia làm hai phần, phần trên
với tất cả các giá trị của X5 bằng 0, ta gọi hàm này có tên là:
OUT0 = F(X1, X2, X3,X4,0) = F0(X1, X2, X3, X4);
phần dưới với tất cả các giá trị của X5 bằng 1, ta gọi hàm này có tên là:
OUT1 = F(X1, X2, X3, X4,1). = F1(X1, X2, X3, X4);
Hai hàm F1, F2 là các hàm 4 đầu vào được thực hiện ở tương ứng bởi
LUT1, LUT2. Tín hiệu X5 được sử dụng làm tín hiệu chọn kênh cho
F5MUX chọn 1 trong hai giá trị đầu ra của LUT1, LUT2, đầu ra của F5MUX
chính là kết quả của hàm 5 biến cần thực hiện.
OUT = F0(X1, X2, X3, X4) nếu X5 = 0
= F1(X1, X2, X3, X4) nếu X5 = 1;
Hình 3.11 Cấu tạo của F5MUX
F5MUX được thiết kế dựa trên nguyên l{ trên nhưng trên FPGA thực tê
ngoài cổng ra thông thường O theo đó kết quả gửi ra phần tử nhớ củ