Cấu trúccủa PAL kế thừa cấu trúc của PROM, sử dụng hai mảng logic nhưng nếu như ở các 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
Trang 1TRƯỜNG CAO ĐẲNG CÔNG NGHIỆP VÀ THƯƠNG MẠI
GIÁO TRÌNH
Tên mô đun: Vi mạch số lập trình
NGHỀ: ĐIỆN TỬ CÔNG NGHIỆP
TRÌNH ĐỘ TRUNG CẤP/CAO ĐẲNG NGHỀ
Ban hành kèm theo Quyết định số: /QĐ-CĐCNPY, ngày tháng năm 2018
của Hiệu trưởng trường Cao đẳng Công nghiệp và Thương mại
Vĩnh Phúc, năm 2018
Trang 2Trang
CHƯƠNG TRÌNH MÔ ĐUN 2
BÀI 1: ĐẠI CƯƠNG VỀ LẬP TRÌNH CỠ NHỎ 4
1.1.Tổng quan về điều khiển lập trình: 4
1.1.1 Điều khiển nối cứng và điều khiển lập trình 4
1.1.2.Cấu trúc của một bộ lậpi tình cỡ nhỏ 5
1.2.Thiết bị điều khiển lập trình 11
1.2.1 Địa chỉ các ngõ vào/ ra 11
1.2.2 Phần chữ chỉ vị trí và kích thước của ô nhớ 13
1.2.3 Ma trận Fast CONNECT Switch 14
1.2.4 Cấu trúc bộ nhớ 15
1.3 Xử lí chương trình 16
1.3.1 Vòng quét chương trình 16
1.3.2 Cấu trúc chương trình 16
1.3.3 Phương pháp lập trình 21
1.4 Cài đặt sử dụng phần mềm 22
1.4.1 Những yêu cầu với máy tính PC 22
1.4.2 Cài đặt phần mềm lập trình ứng dụng 24
BÀI 2: CÁC TỆP LỆNH CỦA DỮ LIỆU 26
2.1 Các liên kết logic 26
2.1.1 Các lệnh vào/ra và các lệnh tiếp điểm đặc biệt 26
2.1.2 Các lệnh liên kết logic cơ bản 28
2.1.3 Liên kết các cổng logic cơ bản 31
2.2.4 Bài tập ứng dụng 34
2.2 Các lệnh ghi/xóa giá trị cho tiếp điểm 34
2.2.1 Lệnh Set(s) và Reset(r) 34
2.2.2 Các ví dụ 35
2.3.Timer 40
2.3.1 On - Delay Timer (TON) 40
2.3.2 Retentive On - Delay Timer (TONR) 53
2.4 Couter (Bộ đếm) 55
2.4.1 Bộ đếm lên (Counter up) 55
Trang 32.4.2 Bộ đếm lên/ xuống (Counter up - down) 56
BÀI 3: CÁC PHÉP TOÁN SỐ CỦA BỘ LẬP TRÌNH CỠ NHỎ 61
3.1.Chức năng truyền dẫn 61
3.1.1 Truyền Byte, Word, Doubleword 61
Tạo Project trên ISE 69
3.2 Chức năng so sánh 74
3.2.1 Chức năng dịch chuyển 74
3.3 Đồng hồ thời gian 104
BÀI 4:LẮP ĐẶT MÔ HÌNH ĐIỀU KHIỂN BẰNG LẬP TRÌNH CỠ NHỎ 107
4.1 Giới thiệu 107
Cách nối dây 107
4.3 Các mô hình và bài tập ứng dụng 108
4.3.1 Điều khiển van điện từ 2 cuộn dây 108
4.3.3 Điều khiển hệ thống cung cấp thuỷ lực 114
4.3.4 Điều khiển hệ thống thông gió 116
4.3.5 Điều khiển động cơ thuận nghịch 119
Trang 4CHƯƠNG TRÌNH MÔ ĐUN
Tên mô đun: VI MẠCH SỐ LẬP TRÌNH (FPGA)
Mã mô đun:
Thời gian thực hiện mô đun: 75 giờ (Lý thuyết: 15 giờ; Thực hành: 57 giờ; KT: 3
giờ)
I Vị trí, tính chất của mô đun:
- Vị trí: Trước khi học mô đun này cần hoàn thành các môn học cơ sở nghề và một
số mô đun chuyên môn nghề như: PLC cơ bản, Kỹ thuật Vi điều khiển
- Tính chất: Là mô đun tự chọn trong chương trình đào tạo ngành/ nghề Điện tửcông nghiệp
- Về kiến thức:
nhỏ
- Về kỹ năng:
vi
hiện được một số bài toán ứng dụng đơn giản trong công nghiệp
- Về năng lực tự chủ và trách nhiệm:
1 Nội dung tổng quát và phân phối thời gian:
Thời gian
Tổng số
Lý thuyết
Thực hành, thí nghiệm, thảo luận, bài tập
Kiểm tra
Trang 51 Bài 1: Đại cương về điều khiển lập trình
cỡ nhỏ
1.1 Tổng quát về điều khiển lập trình
1.2 Thiết bị điều khiển lập trình
Trang 6BÀI 1: ĐẠI CƯƠNG VỀ LẬP TRÌNH CỠ NHỎ
Mục tiêu:
- Trình bày được cấu trúc và nhiệm vụ các khối chức năng của bộ lập trình
cỡ nhỏ
- Thực hiện được sự kết nối giữa bộ lập trình cỡ nhỏ và các thiết bị ngoại vi
- Mô tả được cấu trúc của chương trình bộ lập trình cỡ nhỏ
- Chủ động, sáng tạo và đảm bảo an toàn trong quá trình học tập
Nội dung chính:
1.1.Tổng quan về điều khiển lập trình:
1.1.1 Điều khiển nối cứng và điều khiển lập trình
Vi mạch khả trình gồm các dạng sau:
v SPLD (Simple Programmable Logic Device) bao gồm các loại IC khả
trình PROM, PAL, PLA, GAL Đặc điểm chung của nhóm IC này làchứa số lượng cổng tương đương vài chục (PROM) đến vài trăm(PAL, GAL) cổng
v CPLD (Complex Programmable Logic Device) là IC khả trình phứctạp thường được ghép từ nhiều SPLD trên một chip đơn Số lượngcổng tương đương của CPLD đạt từ hàng nghìn đến hàng chục nghìncổng
v FPGA (Field – Programmable Gate Array) là IC khả trình được cấutrúc từ mảng các khối logic lập trình được
PROM (Programmable Read – Only Memory) được phát minh bởi WenTsing Chow năm 1956 khi làm việc tại Arma Division của công ty AmericanBosch 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 Mỹ lúc bấy giờ với mục đích có được một thiết bị lưutrữ các tham số về mục tiêu một cách an toàn và linh động Thiết bị này dùngtrong máy tính của hệ thống phóng tên lửa Atlas E/F và được giữ bí mật trongvòng vài năm trước khi Atlas E/F trở nên phổ biến PROM là vi mạch lậptrình đầu tiên và đơn giản nhất trong nhóm các vi mạch bán dẫn có thể lậptrình được (PLD – Programmable Logic Device)
PAL (Programmable Array Logic) ra đời cuối những năm 1970 Cấu trúccủa PAL kế thừa cấu trúc của PROM, sử dụng hai mảng logic nhưng nếu như
ở các 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
Trang 7việc thực hiện các hàm khác nhau Ngoài ra cấu trúc PAL còn phân biệt vớiPROM là ở mỗi đầu ra của mảng OR lập trình được được dẫn bởi khối logicgọi là Macrocell.
PLA (Programmable Logic Array) ra đời năm 1975, và là chip lập trìnhthứ hai sau PROM Cấu trúc của PLA không khác nhiều so với cấu trúc củaPAL, ngoại trừ khả năng lập trình ở cả hai ma trận AND và OR Nhờ cấu trúc
đó mà PLA có khả năng lập trình linh động hơn, nhưng bù lại tốc độ của PLAthấp hơn nhiều so với PROM và PAL và các sản phẩm cùng loại Thực tếPLA được ứng dụng không nhiều và nhanh chóng bị thay thế bởi những côngnghệ mới hơn như GAL, CPLD,…
GAL (Generic Array Logic) được phát triển bởi công ty LatticeSecmiconductor vào năm 1983 Cấu trúc của GAL không khác biệt PALnhưng thay vì lập trình sử dụng công nghệ cầu chì nghịch thì GAL dùng côngnghệ PROM CMOS xóa bằng điện, chính vì vậy mà đôi khi tên gọi GAL ítđược sử dụng, mà còn gọi là PAL được cải tiến
Tất cả các chip khả trình PROM, PAL, GAL có khuyết đ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 công nghệ khác Tuy nhiên, nhược điểm của nó là tốc
độ làm việc thấp, số lượng 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 tài nguyên và tốc độ cao hơn,chính vì vậy mà CPLD (Complex Programmable Logic Devices) ra đời
CPLD được Altera tiên phong nghiên cứu và chế tạo đầu tiên, nhằm tạo
ra những IC khả trình dung lượng lớn như MAX5000, MAX7000 Sau sựthành công của hãng Altera, thì một loạt các hãng khác cũng bắt tay vàonghiên cứu chế tạo CPLD như Xilinx với các dòng sản phẩm như họ CPLDXC95xx, Lattice với họ ISP Mach 4000, ISP March XO,…
Số lượng cổng của CPLD ngày càng trở nên nhỏ cho những ứng dụnglớn và phức tạp hơn Năm 1985, công ty Xilinx đưa ra ý tưởng hoàn toànmới, đó là kết hợp thời gian hoàn thành sản phẩm và khả năng điều khiểnđược của PLD với mật độ và ưu thế về chi phí của Gate Array để tạo ra FPGA(Field Programmable Gate Array) Hiện nay, Xilinx vẫn là nhà sản xuất chipFPGA số một trên thế giới FPGA có cấu trúc và hoạt động phức tạp hơnCPLD
1.1.2.Cấu trúc của một bộ lậpi tình cỡ nhỏ
Trong phần này trình bày cấu trúc của một số loại IC khả trình thuộcdòng SPLD như PAL, GAL, PLA
PAL:
Trang 8PAL được cấu trúc từ các mảng AND lập trình được và các mảng ORđược gắn cứng, đồng thời mỗi đầu ra của mảng OR lập trình được dẫn bởikhối logic gọi là Macrocell như trong hình 1.1.
Hình 1.1 – Cấu trúc PAL
Hình 1.2 minh họa cho ta thấy một macrocell (MC) Mỗi macrocell chứamột flip–flop, bộ mux2 và mux8 và cổng logic ba trạng thái Tín hiệu điềukhiển của mux4 có thể được lập trình để cho phép dẫn tín hiệu lần lượt quacác đầu vào 0, 1, 2, 3 của bộ mux4 và gửi ra ngoài cổng giao tiếp IO Tùythuộc vào cấu hình này mà tín hiệu có thể được gửi ra ngoài IO hay không
Trang 10Như đã trình bày ở phần 1.1, thì 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ệ cầu chì nghịch thì GAL sử dụngcông nghệ PROM CMOS xóa bằng điện, do đó GAL cho phép lập trình lạigiống như EEPROM
Trang 11Hình 1.4 – Cấu trúc họ vi mạch GAL Cấu trúc cơ bản của CPLD:
Mục tiêu: trình bày cho người học hiểu rõ cấu trúc cơ bản của họ vi mạch khả trình CPLD.
Hình 1.5 – Cấu trúc cơ bản của CPLD
Thiết bị khả trình phức tạp CPLD (Complex PLD) có mật độ logic caohơn so với các PLD đơn giản đã xem xét ở phần trên CPLD bao gồm nhiềumạch logic, mỗi mạch có thể coi là một SPLD Trong một mạch đơn chỉ thựchiện các chức năng logic đơn giản Các chức năng logic phức tạp cần sốlượng khối nhiều hơn, sử dụng ma trận liên kết chung giữa các khổi để tạo kếtnối CPLD thường dùng để điều khiển ghép cổng phức tạp ở tốc độ rất cao(5ns, tương đương với 200MHz) Cấu trúc cơ bản của CPLD được minh họatrong hình 1.5
CPLD có cấu trúc đồng nhất gồm nhiều khối chức năng "Function Block" được kết nối với nhau thông qua một ma trận kết nối "FastCONECT
Trang 12Switch matrix" Mỗi khối function block gồm có một khối logic - gồm các
dạng tích AND và OR sắp xếp giống PLA hoặc PAL, cho phép thực hiện cáchàm logic tổ hợp, và nhiều khối MC (Macrocell) có chứa tài nguyên là cácTrigơ cho phép xây dựng các thanh ghi và mạch tuần tự Phần lõi bên trongcủa CPLD được nối ra bên ngoài thông qua các khối vào ra I/O cho phép thiếtlập chức năng cho các chân của IC có chức năng vào hoặc ra hoặc vừa là chânvào vừa là chân ra, ngoài ra còn có thể thiết lập các chân I/O này làm việc ởcác mức logic khác nhau, có điện trở pull-up hoặc pull-down,
Với cấu trúc đồng nhất, giá thành rẻ, tính năng khá mạnh, dễ sử dụng nênCPLD đã và đang được sử dụng rất rộng rãi trong thực tế, giúp cho nhà sảnxuất phát triển nhanh sản phẩm của mình với giá thành rẻ Đặc biệt hiện naycác hãng đã phát triển các họ CPLD với tính năng rất mạnh, công suất tiêu thụthấp, chúng đang được sử dụng rất nhiều để phát triển các sản phẩm điện tử,viễn thông, công nghệ thông tin, nhất là trong các thiết bị cầm tay, di động…Trong thực tế rất có nhiều loại CPLD khác nhau, của các hãng khácnhau, và đã được phát triển với nhiều chủng loại, thế hệ CPLD khác nhau.Cấu tạo, dung lượng, tính năng, đặc điểm, ứng dụng… của mỗi loại CPLDcũng rất khác nhau Trong giáo trình này không đi sâu trình bày cấu tạo cụ thểcủa tất cả các họ CPLD, mà chỉ trình bày kiến trúc chung đơn giản nhất củaCPLD Khi sử dụng cụ thể loại CPLD nào, người học nên tham khảo các tàiliệu khác, nhất là tham khảo các tài liệu kỹ thuật được cung cấp kèm theo cấukiện do các hãng đưa ra (datasheet) Các hãng điện tử nổi tiếng trên thế giớiđang sở hữu, phát triển, cung cấp các loại linh kiện CPLD là Xilinx, Altera…
Cấu trúc cơ bản của FPGA:
Trang 13Hình 1.6 – Cấu trúc của FPGA
Hình 1.6 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áchãng sản xuất khác nhau, nhưng về cơ bản FPGA được cấu thành từ các khốilogic (Logic Block), số lượng của các khối này thay đổi từ vài trăm đến vàichục nghìn, và được bố trí dưới dạng ma trận, chúng được kết nối với nhauthông qua hệ thống các kênh nối khả trình Hệ thống này còn có nhiệm vụ kếtnối với các cổng giao tiếp vào ra (IO_PAD) của FPGA Số lượng các chânvào ra thay đổi từ vài trăm đến hàng nghìn châ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 cứng những khối thiết kế sẵn mà thuật ngữ gọi là Hard IP cores, các IP
cores này có thể là các bộ nhớ RAM, ROM, các khối thực hiện phép nhân,khối thực hiện phép xử lý tín hiệu số (DSP),…bộ vi xử lý cỡ nhỏ và vừa nhưPower PC hay ARM
1.2.Thiết bị điều khiển lập trình
1.2.1 Địa chỉ các ngõ vào/ ra
Cấu trúc cơ bản của họ CPLD XC9500 được mô tả trong hình 2.1
Trang 14Hình 2.1 – Cấu trúc họ CPLD XC9500
Mỗi khối chức năng (Function Block: FB) được cho trong hình 2.1 baogồm 18 macrocell độc lập nhau, mỗi macrocell có thể thực thi các hàm kếthợp hoặc thanh ghi
Mỗi khối FB có bộ nhận xung clock, kết nối đến ngõ ra và set/reset cáctín hiệu Các FB tạo ra 18 ngõ ra kết nối tới ma trận Fast CONNECT switch
Hình 2.2 – Khối FB của XC9500
Trang 15Hình 2.3 – Cấu trúc macrocell bên trong khối FB 1.2.2 Phần chữ chỉ vị trí và kích thước của ô nhớ.
Khối IO (IOB) giao tiếp gữa các logic bên trong và các chân người dùngbên ngoài Mỗi IOB bao gồm bộ đệm ngõ vào, bộ lái, bộ mux ngõ ra và bộđiều khiển tiếp đất người dùng có thể lập trình được (hình 2.4)
Bộ đệm ngõ vào tương thích với chuẩn CMOS 5V, TTL 5V và các mứctín hiệu 3.3V Bộ đệm ngõ vào sử dụng điện áp cung cấp bên trong 5V(VCCINT) để đảm bảo ngưỡng ngõ vào là hằng số và không khác với điện áp
VCCIO
Ngõ ra kết nối có thể được tạo ra từ một trong bốn lựa chọn: tín hiệuđược tạo ra từ macrocell, các tín hiệu OE toàn cục, luôn luôn là mức “1” hoặcluôn luôn mức “0” Có hai ngõ vào kết nối toàn cục cho thiết bị với 144macrocell, và bốn ngõ vào kết nối toàn cục kết nối tới các thành phần Cả haicực của bộ điều kiển ba trạng thái của các chân (GTS) có thể được sử dụngtrong thiết bị
Trang 16Hình 2.4 – Khối IO và kết nối ngõ ra của CPLD XC9500
1.2.3 Ma trận Fast CONNECT Switch
Ma trận Fast CONNECT switch kết nối các tín hiệu tới các ngõ vào FB(hình 2.5) Tất các các ngõ IOB (tương ứng với các chân ngõ vào người dùng)
và tất cả các ngõ ra lái ma trận Fast CONNECT
Trang 17Hình 2.5 – Ma trận Fast CONNECT Switch 1.2.4 Cấu trúc bộ nhớ
Lập trình trong hệ thống:
XC9500 được lập trình trong hệ thống với chuẩn JTAG 4 chân (JTAG:Joint Test Group) Khi lập trình, tất cả các port ngõ vào trong khối I/O đượcthiết lập ở mức cao “H”
Trang 18Hình 2.6 – Kết nối CPLD với chuẩ JTAG 1.3 Xử lí chương trình
1.3.1 Vòng quét chương trình
Hình 3.1 – Cấu trúc chung của họ FPGA Spartan 3E
FPGA spartan 3E được cấu trúc từ các thành phần sau:
v CLBs (Configuration Logic Blocks): là các khối chứa các LUTs(Look Up Tables) để thực thi các phép lưu trữ logic như flip-flop haychốt, thực thi các hàm logic
v IOBs (Input/Output Blocks): là các khối điều khiển dữ liệu giữa cácchân I/O và các logic bên trong của thiết bị Mỗi IOB hỗ trợ dữ liệuhai chiều hoạt động ở ba trạng thái
v Khối RAM: cung cấp cho việc lưu trữ dữ liệu với các khối RAM18Kbit
v Khối Multiplier : Tính toán các số nhị phân 18 bit
v Khối DCM (Digial Clock Manager): cung cấp các giải pháp đo, trễ,nhân, chia và dịch pha các tín hiệu clock
1.3.2 Cấu trúc chương trình
Khối logic khả trình của FPGA của hãng Xilinx là các khối CLB CLB 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ácmạch logic
Mỗi CLB được cấu thành từ 4 Slice, mỗi Slice lại được cấu thành từ 2LUT (Look Up Tables) Phân bố của các CLB được thể hiện ở hình 3.2
Trang 19Hình 3.2 – 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 CLB được xác địnhbằng một tọa độ X và Y trong ma trận Đối với Spartan 3E thì số lượng hàngthay đổi từ 22 đến 76, số lượng cột từ 16 đến 56 tùy thuộc vào các linh kiện
cụ thể
a SLICE:
Mỗi CLB được tạo thành từ 4 slice và các slice này chia làm hai nhómtrái và nhóm phải Nhóm 2 slice bên trái có khả năng thực hiện các chức nănglogic và làm việc như phần tử nhớ nên được gọi là SLICEM (Slice Memory).Nhóm hai slice bên phải chỉ thực hiện được các chức năng logic nên được gọi
là SLICEL (Slice Logic) Thiết kế như vậy xuất phát từ thực tế nhu cầu thựchiện chức năng logic thường lớn hơn so với nhu cầu lưu trữ dữ liệu, do đóviệc hỗ trợ chỉ một nửa làm việc như phần tử nhớ làm giảm kích thước và chiphí FPGA, mặt khác làm tăng tốc độ làm việc cho toàn khối
Trang 20Hình 3.3 – Bố trí slice bên trong một CLB
Cả hai thành phần SLICEM và SLICEL có chứa các thành phần để thựcthi các hàm logic, thuật toán và ROM:
Trang 21Cấu trúc chi tiết của một slice được thể hiện ở hình 3.5.
Hình 3.5 – Cấu trúc của slice
Trang 22Nhữ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 là những kết nối mà cả hai dạngslice đều có.
b Bảng tham chiếu LUT:
Hình 3.6 – Phân bố các LUT trên một slice
Bảng tham thiếu LUT được phân bố ở góc bên trên và bên dưới của slice
và được gọi tên tương ứng là G-LUT và F-LUT Phần tử nhớ đóng vai trò làđầu ra của các LUT được gọi tương ứng là flip-flop X (FFX) và flip-flop Y(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 kỳ với bốn đầu vào.Cấu trúc của LUT được thể hiện như sau:
Hình 3.7 – Cấu trúc LUT
LUT về cơ bản là một bộ chọn kênh 16 ngõ vào, các ngõ vào của LUTA[3:0] đóng vai trò là tín hiệu chọn kênh, ngõ ra của LUT là đầu ra của bộchọn kênh Khi cần thực hiện một hàm logic bất kỳ nào đó, một mảng nhớSRAM 16 bit được tạo ra để lưu trữ kết quả bảng sự thật của hàm, tổ hợp 16giá trị của hàm tương ứng sẽ là các kênh chọn của khối chọn kênh Khi làmviệc, tùy thuộc vào giá trị của A[3:0] mà đầu ra D sẽ nhận một trong số 16 giá
Trang 23trị lưu trữ tương ứng trong SRAM Bằng cách như vậy, một hàm logic bất kỳvới bốn đầu vào và một đầu ra có thể thực hiện được trên LUT.
Hai LUT có trong SLICEM có thể được cấu trúc để làm việc như RAM16x1 gọi là RAM phân tán hoặc được cấu trúc để làm việc như một thanh ghidịch 16 bit SHL16
Các LUT có thể được kết hợp với nhau để thực hiện các hàm logic tùybiế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 Ởcác thế hệ FPGA sau này, nguyên lý làm việc của LUT vẫn không thay đổinhưng số lượng đầu vào có thể nhiều hơn
1.3.3 Phương pháp lập trình
a.Phần tử nhớ:
Phần tử nhớ có trong CLB là FFX và FFY có thể được cấu hình để làmviệc như D flip-flop hoặc chốt, làm việc với các tín hiệu điều khiển clockhoặc không có clock, vì vậy cấu trúc của phần tử nhớ trong FPGA phức tạphơn so với cấu trúc của D flip-flop thông thường Các đầu ra QX và QY củacác phần tử nhớ cũng là các đầu ra của slice Trong phần lớn các ứng dụngthường gặp thì phần tử nhớ được cấu trúc để làm việc như D flip-flop có xungclock
b.Bộ chọn kênh mở rộng:
Trong cấu trúc của slice có chứa hai bộ mux đặc biệt gọi là bộ mux mởrộng F5MUX và FiMUX
Hình 3.8 – FiMUX và F5MUX
Trang 24Mỗi LUT được thiết kế để có thể thực hiện được mọi hàm logic bốn đầuvào Mục đích của các bộ chọn kênh này là tăng tính linh động của FPGAbằng cách kết hợp các phần tử logic chức năng như LUT, chuỗi bit nhớ, thanhghi dịch, RAM phân tán ở các slice, các CLB khác nhau để tạo ra các hàm tùybiến với nhiều đầu vào hơn.
Hình 3.9 – Cấu tạo của F5MUX
Bảng sự thật của bộ F5MUX được thể hiện chi tiết trong bảng 3.2
1.4.1 Những yêu cầu với máy tính PC
Spartan 3E cũng như trong các FPGA thế hệ sau này đều được tích hợpcác chuỗi bit nhớ (carry chain) và các chuỗi số học (arithmetic chain) đặc biệt,các chuỗi này kết hợp với các LUT được sử dụng tự động hầu hết trong cácphép toán số học thường gặp như cộng, trừ, nhân, góp phần rất lớn vào việctăng tốc cho các phép toán này, đồng thời thiết kiệm tài nguyên logic (LUT).Các chuỗi này được tạo thành bằng các khối chọn kênh và các cổng logicriêng biệt, các phần tử đó cũng có thể được sử dụng độc lập để thực hiện cáchàm logic đơn giản khác
Chuỗi bit nhớ thường gặp trong phép toán cộng, với mỗi slice chuỗi bitnhớ được bắt đầu từ tín hiệu CIN và kết thức ở COUT Các chuỗi đơn lẻ trong
có thể được nối trực tiếp giữa các CLB với nhau để tạo thành các chuỗi dàihơn theo yêu cầu Mỗi một chuỗi bit nhớ này có thể được bắt đầu tại bất kỳmột đầu vào BY nào của các slice
Trang 25Các chuỗi số học logic bao gồm chuỗi thực hiện hàm XOR với các cổngXORG, XORF phân bố ở phần trên và phần dưới của slice, chuỗi AND vớicác công GAND, FAND Các chuỗi này kết hợp với các LUT để thực hiệnphép nhân hoặc tạo thành các bộ đếm nhị phân.
Hình 3.10 – Chuỗi bit nhớ
Việc sử dụng các chuỗi này sẽ tối ưu hóa tài nguyên và tăng tốc độ choFPGA Thiết kế điển hình của bộ cộng 1 bit FULL_ADDER trên FPGA đượcthể hiện như trong hình 3.11, và bộ nhân trong hình 3.12
Hình 3.11- Sơ đồ logic của bộ cộng 1 bit FULL_ADDER trên
FPGA
Trang 26Hình 3.12 – Bộ nhân trong FPGA
Với sơ đồ như hình 3.11 và 3.12, ta thấy bộ công 1 bit FULL_ADDER
và bộ nhân trong FPGA thực thi ít mất thời gian và tài nguyên hơn so với bộcộng 1 bit FULL_ADDER và bộ nhân thông thường sử dụng IC số
1.4.2 Cài đặt phần mềm lập trình ứng dụng
Trong mỗi CLB của FPGA có chứa 4x16 = 64 bit RAM tương ứng với 4LUT nằm trong 2 SLICEM của CLB Phần RAM có thể sử dụng như mộtkhối RAM 64 bit một port hoặc khối RAM 32 Bit hai port, khi đó khối RAMđược tạo thành từ hai mảng nhớ 32 bit và lưu trữ dữ liệu giống nhau Vì cácRAM này phân bố rải rác theo CLB nên trong cấu trúc của FPGA chúng đượcgọi là RAM phân tán để phân biệt với các khối RAM nằm tập trung và cókích thước lớn hơn gọi là RAM khối
Hình 3.13 – RAM phân tán trong FPGA
RAM phân tán trong FPGA có thể sử dụng ở một trong hai dạng nhưhình 3.13 Đối với kiểu single-port RAM thì có một cổng đọc/ghi dữ liệu, còndual-port RAM thì có một cổng đọc/ghi dữ liệu và một cổng chỉ thực hiện đọc
dữ liệu từ RAM
Hình 3.14 cho ta thấy giản đồ thao tác đọc/ghi dữ liệu RAM phân tán củaFPGA
Trang 27Hình 3.14 – Thao tác đọc/ghi dữ liệu RAM phân tán trong FPGA của
Xilinx
Tài nguyên RAM phân tán trong FPGA được sử dụng hết sức linh động,một khối CLB đơn lẻ có thể được cấu hình để tạo thành các khối RAM phântán 64x1, 32x2, 16x4 Các đầu vào G[4:1] và F[4:1] được dùng như các đầuvào địa chỉ Các khối RAM lớn hơn có thể được tạo thành bằng cách ghép tàinguyên trong các CLB khác nhau lại sử dụng các bộ chọn kênh mở rộng, khi
đó các cổng BY, BY được sử dụng như các bit địa chỉ bổ xung
Trang 28BÀI 2: CÁC TỆP LỆNH CỦA DỮ LIỆU
Mục tiêu của bài:
- Trình bày được các chức năng của Set (S) và Reset (R), counter, Timer (bộđếm, Bộ định thời)
- Lập trình, kết nối, chạy thử các chức năng của S, R, Timer, counter trongcác bài toán thực tế
- Chủ động, sáng tạo và đảm bảo an toàn trong quá trình học tập
2.1 Các liên kết logic
2.1.1 Các lệnh vào/ra và các lệnh tiếp điểm đặc biệt
Sơ đồ nguyên lý của khối điều khiển vào ra (IOB) trong Spartan 3E đượctrình bày ở hình 3.17
Hình 3.17 – Sơ đồ nguyên lý của khối đệm vào ra IOB
Các khối IOB trong FPGA cung cấp các cổng vào ra lập trình được theomột chiều hoặc hai chiều giữa các chân vào/ra của FPGA với các khối logicbên trong Các khối một chiều là các khối chỉ đóng vai trò là ngõ vào, sốlượng của các ngõ vào này thường chiếm không nhiều
Trang 29a Ngõ vào trễ:
Mỗi một đường dữ liệu vào chứa các khối làm trễ có thể lập trình được
gọi là programmable input delay block Các khối này bao gồm một phần tử
làm trễ thô có thể được bỏ qua, khối làm trễ tín hiệu ở mức độ chính xác vừaphải Tiếp theo là chuỗi sáu phần tử làm trễ được điểu khiển bởi các bộ chọnkênh Đối với đường vào clock thông qua các phần tử nhớ tới IQ1, IQ2 thì cóthể chọn 3 mức làm trễ Còn đối với đường vào không có clock tới cổng I thì
có thể thay đổi ở 6 mức làm trễ Tất cả khối làm trễ có thể được bỏ qua, khi
đó tín hiệu được gửi đồng thời tới các chân ra có clock và không có clock
Khái niệm DDR (Double Data Rate transmission) chỉ dạng đường truyền
dữ liệu có xung clock ở tốc độ gấp 2 lần tốc độ cho phép của xung nhịp clockbằng cách kích hoạt tại thời điểm sườn lên và sườn xuống của xung nhịp Với
cả 3 đường dữ liệu có trong IOB, mỗi đường đều có một cặp phần tử nhớ chophép thực hiện truyền dữ liệu theo phương thức DDR
Trang 30Hình 3.19 – Nguyên lý DDR
Hình 3.19 thể hiện cách thực hiện DDR trong FPGA Hai phần tử nhớhoạt động ở chế độ flip-flop Đầu ra được nối với bộ DDR_MUX để điềukhiển dữ liệu vào/ra Cùng một thời điểm có hai xung nhịp đồng hồ lệch phanhau 1800 gửi tới đầu vào xung nhịp CLK1 và CLK2 với chu kỳ T của flip-flop Giả sử tại thời điểm sườn dương của tín hiệu CLK1 thì flip-flop 1 hoạtđộng, thì sau đó nửa chu kì, thì tại thời điểm sườn âm của xung nhịp CLK1tương ứng với sườn dương của CLK2 thì flip-flop 2 hoạt động Như vậy chu
kỳ nhận/gửi dữ liệu là T/2, hay tốc độ nhận/gửi dữ liệu được tăng lên gấp đôi
Để tạo ra hai xung nhịp lệch pha nhau có thể dùng khối DCM, từ một tínhiệu xung nhịp chuẩn sinh ra tín hiệu xung nhịp thứ hai bằng cách dịch pha
1800 Phương pháp này đạt được độ trễ xung nhịp thấp nhất Bên cạnh đó,phương pháp thứ hai như mô tả ở hình bên phải trong hình 3.19 là dùng cổngđảo có trong IOB để tạo lệch pha 1800
2.1.2 Các lệnh liên kết logic cơ bản
Các kết nối khả trình (Programmable Interconnects) của FPGA dùng đểliên kết các phần tử chức năng khác nhau bao gồm IOB, CLB, RAM khối,khối nhân chuyên dụng, DCM lại với nhau Các kết nối khả trình của FPGAđược thiết kế cân bằng giữa yếu tố linh động và tốc độ làm việc (giảm thiểutrễ do đường truyền gây ra) Đối với các FPGA họ Spartan 3E có 4 loại kếtnối sau: kết nối dài (long line), kết nối kép (double line), kết nối ba (hex line)
và kết nối trực tiếp (direct line) Các dạng kết nối này liên hệ với nhau thôngqua cấu trúc ma trận chuyển (switch matrix)
a Ma trận chuyển:
Ma trận chuyển (Switch matrix) là các khối thực hiện kết nối giữa cácdạng tài nguyên của FPGA bao gồm kết nối dài, kết nối kép, kết nối ba và kết
Trang 31nối trực tiếp Ô liên kết được định nghĩa là một khối bao gồm ma trận chuyển
và các phần tử chức năng của FPGA như IOB, CLB, RAM khối, DCM và các
bộ nhân chuyên dụng
Hình 3.20 – Các thành phần kết nối khác nhau trong Xilinx FPGA
Với CLB, IOB, DCM chỉ cần một ma trận chuyển để tạo thành một ô kếtnối, nhưng với các phần tử lớn hơn như RAM khối hay MULT18 thì cầnnhiều ma trận kết nối tương ứng có số ô kết nối lớn hơn
Hình 3.21 – Mảng kết nối trong FPGA Spartan 3E
Trang 32b Các dạng kết nối:
Các kiểu kết nối có trong FPGA bao gồm:
v Kết nối dài (Long line):
Hình 3.22 – Kết nối dài trong FPGA
Đường kết nối dài gồm tổ hợp 24 đường kéo dài theo cả chiều dọc vàchiều ngang và kết nối tới một trong sáu gạch nối Tại bất kỳ một kết nối sẽ
có bốn đường để lái hoặc nhận tín hiệu từ ma trận chuyển Do điện dung củakết nối này thấp cho nên kết nối dài rất phù hợp để thực hiện các tín hiệu tần
số cao với ảnh hưởng của tải là nhỏ nhất
v Kết nối ba (hex line)
Hình 3.23 – Kết nối ba trong FPGA
Kết nối ba là kênh kết nối gồm tám đường nối tới một trong ba CLB liêntiếp
v Kết nối kép (Double line)
Hình 3.24 – Kết nối kép
Kết nối kép là kênh kết nối gồm 8 đường nối tới một trong hai CLB liêntiếp Kết nối kép có số lượng nhiều và linh hoạt hơn trong FPGA so với kếtnối dài và kết nối ba
Trang 33Hình 3.26 – RAM khối trong FPGA
RAM khối có hai port là port A và port B cho phép thực hiện các thao tácđọc/ghi độc lập với nhau, mỗi một port có các tín hiệu xung clock, kênh dữliệu và các tín hiệu điều khiển riêng:
v Đọc/ghi từ port A
v Đọc/ghi từ port B
v Truyền dữ liệu từ A sang B
Trang 34v Truyền dữ liệu từ B sang A
RAM khối trên thực tế đều là các khối RAM hai port và có thể được khởitạo để hoạt động ở RAM 2 port (Dual – port RAM) hoặc RAM một port(Single port RAM) Các cổng vào ra của RAM khối được mô tả ở hình 3.27
Hình 3.27 – RAM khối
Tên gọi của các RAM được đặt theo cú pháp RAMB16_S[WA]_S[WB],trong đó WA và WB là độ rộng dữ liệu của port A và Port B Vì vậy một RAM
2 port có tên RAMB16_S9_S18 là một RAM 2 port có độ rộng port A là 9-bit
và độ rộng của port B là 18-bit RAM 1 port có tên tương ứng làRAMB16_[w], vì vậy với một RAM có tên RAMB16_S18 là một RAM 1port có độ rộng 18-bit
b Khối nhân chuyên dụng 18x18:
Các khối nhân chuyên dụng 18x18 được thiết kế riêng, thường được ứngdụng trong các bài toán xử lý tín hiệu số, tên của bộ nhân chuyên dụng nàytrong thư viện chuẩn của Xilinx là MULT18X18SIO
Số lượng của bộ nhân chuyên dụng trong FPGA Spartan 3E từ 4 đến 36tùy thuộc vào loại IC Khối nhân này thực hiện nhân hai số có dấu 18 bit, kếtquả cho ra là một số có dấu 36 bit
Trang 35Hình 3.28 – Sơ đồ khối của khối nhân 18 bit
c Khối DCM:
Khối DCM là một khối đặt biệt trong FPGA có nhiệm vụ điều chỉnh vàtạo ra xung đồng hồ theo những yêu cầu cụ thể của bài toán DCM có cấu tạophức tạp và có số lượng hạn chế trong Spartan 3E với số lượng từ 2 đến 8khối DCM Các công việc chính mà khối DCM có thể thực hiện là:
v Loại bỏ độ trễ giữa các xung clock ở các vị trí khác nhau
v Tổng hợp tần số: nhân, chia tần số với một số
v Dịch pha: dịch pha của xung nhịp đi 00, 900, 1800 hoặc 2700
Hình 3.29 – Khối DCM
Trang 362.2.4 Bài tập ứng dụng
FPGA cũng giống như những linh kiện điện tử khác đều có các thông sốgiới hạn của chính bản thân nó Ta cần quan tấm đến một số thông số giới hạnsau khi sử dụng FPGA
v Điện áp hoạt động của FPGA
v Số thanh ghi của FPGA
v Số chân của FPGA
v Số IO của FPGA
v Số khối logic của FPGA
v Số cổng của FPGA
v Nhiệt độ hoạt động của FPGA
v Số Slice Flip Flop
v Số LUTs 4 ngõ vào
v Số BUFGMAXS
v Số chân hỗ trợ CLK
v Công suất tiêu thụ của FPGA
v Các thành phần tích hợp của FPGA như DSP,…
Có hai phương pháp chính để lưu giữ chương trình cho FPGA như sau:
v Lưu giữ chương trình trực tiếp trên FPGA
v Lưu trữ bằng các phần tử nhớ khác như: Platform Plash PROM, SPISerial Flash PROM (SPI), StrataPlash parallel Flash PROM (BPI Uphay BPI Down), card CF,…
Hầu hết các FPGA đều không có bộ nhớ để lưu giữ chương trình, do đókhi ta đổ chương trình trực tiếp lên FPGA thì chương trình đó sẽ bị mất đi khimất nguồn điện Còn với phương pháp cấu hình bằng các phần tử nhớ khác thìchương trình được lưu giữ trong phần tử nhớ đó, khi cấp nguồn điện thìchương trình trong phần tử nhớ sẽ được đưa lên FPGA để cho FPGA hoạtđộng
Trang 372.2.2 Các ví dụ
Tùy thuộc vào từng họ linh kiện FPGA cụ thể mà nhà sản xuất cung cấp cho
ta những đặc tính điện của họ linh kiện đó Trong phần này trình bày một số
đặc tính điện liên quan đến họ linh kiện FPGA Spartan – 3E của hãng
Xilinx
a Điều kiện hoạt động tối đa cho phép:
Điều kiện hoạt động tối đa cho phép là điều kiện mà người dùng phảituân theo để tránh làm cho linh kiện bị hư hỏng Điều kiện hoạt động tối đa
cho phép được cho trong bảng 3.3
Bảng 3.3 – Điều kiện hoạt động tối đa của họ linh kiện Spartan – 3E
-0.5 VCCAUX+0.5 V
b Chi tiết kỹ thuật nguồn cung cấp:
Chi tiết kỹ thuật nguồn cung cấp họ linh kiện FPGA Spartan -3E được
cho trong các bảng 3.4; 3.5 và 3.6
Trang 38Bảng 3.4 – Điện áp ngưỡng cung cấp cho việc Reset mở nguồn:
Bảng 3.5 – Tỉ lệ độ dốc điện áp cung cấp
VCCINTR Độ dốc từ GND tới mức giá trị
VCCO2R Độ dốc từ GND tới mức giá trị
VCCO cung cấp của Bank 2
Bảng 3.6 – Các mức điện áp cung cấp cần thiết để duy trì các nội dung của RAM
VDRINT Mức điện ápVCCINT yêu cầu để duy trì dữ
liệu của RAM
VDRAUX Mức điện áp VCCAUX yêu cầu để duy trì dữ
liệu của của RAM
Chú ý là nội dung của RAM bao gồm các dữ liệu cấu hình
c Các điều kiện hoạt động chung được khuyến cáo sử dụng:
Các điều kiện hoạt động chung được khuyến cáo sử dụng được cho trongbảng 3.7
Bảng 3.7 – Các điều kiện hoạt động chung được khuyến cáo sử dụng
Trang 39VCCAUX Điện áp cung cấp
d Đặc tính điện DC của các chân I/O:
Đặc tính điện DC của các chân I/O người dùng, các chân sử dụng chomục đích Dual, các chân chuyên dụng được cho trong bảng 3.8
Bảng 3.8 – Đặc tính điện DC của các chân I/O người dùng, các chân sử dụng cho mục đích Dual, các chân chuyên dụng
Ký
hiệu Mô tả Điều kiện kiểm tra Min Norm Max Đơn vị
IL
Dòng rò tại các
chân I/O, chân ngõ
vào, chân dùng cho
Dòng diện qua điện
trở treo tại các chân
I/O chân dùng cho
Điện trở treo tương
đương tại các chân
I/O, chân ngõ vào,
Trang 40IREF Dòng VREF trên các
CIN Dung kháng ngõ
e Dòng điện tĩnh:
Các điều kiện về dòng điện tĩnh yêu cầu được cho trong bảng 3.9
Bảng 3.9 – Đặc tính dòng điện tĩnh cung cấp của họ Spartan – 3E
Ký hiệu Mô tả Linh kiện Norm Max
(thương mại)
Max (công nghiệp)
Đơn vị
f Chuẩn I/O Single – Ended:
Một số điều kiện hoạt động được khuyển cáo sử dụng cho các chân I/O
người dùng theo chuẩn Single – Ended được cho trong bảng 3.10 và bảng
3.11