Mục tiêu của mô đun: - Trình bày được cấu tạo, đặc tính của các họ vi mạch số lập trìnhđược như: PLD, CPLD, FPGA...theo nội dung đã học.. Cấu trúccủa PAL kế thừa cấu trúc của PROM, sử d
Trang 1BỘ LAO ĐỘNG THƯƠNG BINH VÀ XÃ HỘI
Ban hành kèm theo Quyết định số:120/QĐ-TCDN ngày 25 tháng 02 năm 2013
của Tổng cục trưởng Tổng cục Dạy nghề
Năm 2013
Trang 2TUYÊN BỐ BẢN QUYỀN
Tài liệu này thuộc loại giáo trình nên các nguồn thông tin có thể đượcphép dùng nguyên bản hoặc trích dùng cho các mục đích về đào tạo và thamkhảo
Mọi mục đích khác mang tính lệch lạc hoặc sử dụng với mục đích kinhdoanh thiếu lành mạnh sẽ bị nghiêm cấm
Trang 3LỜI GIỚI THIỆU
Để thực hiện biên soạn giáo trình đào tạo nghề Điện tử công nghiệp ở
trình độ Cao Đẳng Nghề và Trung Cấp Nghề, giáo trình Vi mạch số lập trình
là một trong những giáo trình mô đun đào tạo chuyên ngành được biên soạntheo nội dung chương trình khung được Bộ Lao động Thương binh Xã hội vàTổng cục Dạy Nghề phê duyệt Nội dung biên soạn ngắn gọn, dễ hiểu, tíchhợp kiến thức và kỹ năng chặt chẽ với nhau, logíc
Trong những năm gần đây, công nghệ FPGA ( Field Programmable GateArray) đã và đang phát triển mạnh mẽ trong lĩnh vực điện tử FPGA đượchiểu như là một IC số có thể lập trình được, được ứng dụng trong việc xử lýtín hiệu số, xử lý số,…để thay thế các IC số thông thường, cồng kềnh Bằngcách sử dụng FPGA người thiết kế có thể tạo ra một mạch điện chức năngthay vì sử dụng nhiều IC số Chính vì vậy, nhu cầu hiểu biết về IC số có thểlập trình được nói chung và FPGA nói riêng là một nhu cầu cần thiết cho cáccán bộ kỹ thuật điện tử
Nội dung giáo trình được bố cục bao gồm 7 bài với nội dung như sau:Bài 1: Giới thiệu chung về PLD, CPLD và FPGA
Bài 2: Họ CPLD
Bài 3: Họ FPGA
Bài 4: Qui trình thiết kế cho CPLD và FPGA của hãng Xilinx
Bài 5: Phần mềm ISE và modelsim
Bài 6: Ngôn ngữ Verilog HDL
Bài 7: Mốt số chương trình ứng dụng
Tuy nhiên, tùy theo điều kiện cơ sở vật chất và trang thiết bị, cáctrường có thề sử dụng cho phù hợp Mặc dù đã cố gắng tổ chức biên soạn đểđáp ứng được mục tiêu đào tạo nhưng không tránh được những khiếm khuyết.Rất mong nhận được đóng góp ý kiến của các thầy, cô giáo, bạn đọc để nhómbiên soạn sẽ hiệu chỉnh hoàn thiện hơn Các ý kiến đóng góp xin gửi vềTrường Cao đẳng nghề Lilama 2, Long Thành Đồng Nai
Đồng Nai, ngày 15 tháng 03 năm 2013 Tham gia biên soạn
1 Chủ biên :Ts Lê Văn Hiền
2 Trần Xuân Thiện
Trang 4MỤC LỤC
TRANG
LỜI GIỚI THIỆU 2
MỤC LỤC 3
BÀI 1 9
GIỚI THIỆU CHUNG VỀ PLD, CPLD VÀ FPGA 9
1 Lịch sử phát triển: 9
2 Sự cần thiết và ý nghĩa thực tế của việc sử dụng mảng logic có thể lập trình được: 11
3 Cấu trúc cơ bản của PLD: 12
3.1 PAL: 12
3.2 PLA: 14
3.3 GAL 14
4 Cấu trúc cơ bản của CPLD: 15
5 Cấu trúc cơ bản của FPGA: 17
6 Sự khác biệt giữa PLD, CPLD và FPGA: 18
7 Phần mềm hỗ trợ: 19
BÀI 2 20
HỌ CPLD 20
1 Giới thiệu chung: 20
2 Vi mạch CPLD: 21
BÀI 3 27
HỌ FPGA 27
1 Giới thiệu chung: 27
2 Vi mạch FPGA: 28
2.1 Mô tả FPGA: 29
2.2 Thông số giới hạn: 47
2.3 Đặc tính lưu trữ dữ liệu: 47
2.4 Đặc tính điện DC: 48
Trang 52.5 Công suất tiêu thụ: 53
2.6 Sơ đồ chân: 54
2.7 Ý nghĩa tên linh kiện: 69
3 Lựa chọn phương án cấu hình cho FPGA: 71
BÀI 4 73
QUY TRÌNH THIẾT KẾ CHO CPLD VÀ FPGA CỦA HÃNG XILINX 73
1 Phương án lựa chọn CPLD và FPGA 73
2 Qui trình thiết kế cho CPLD của hãng Xilinx: 74
3 Qui trình thiết kế cho FPGA của hãng Xilinx: 78
BÀI 5 80
PHẦN MỀM ISE VÀ MODELSIM 80
1 Cài đặt và khởi động ISE: 80
2 Tạo Project trên ISE: 88
3 Cài đặt và khởi động Modelsim: 92
4 Mô phỏng dạng sóng trên ISE và Modelsim: 99
4.1 Mô phỏng trên ISE: 99
4.2 Mô phỏng trên modelsim: 107
5 Gán chân thích ứng với thiết bị: 121
6 Biên dịch và tổng hợp chương trình: 123
7 Đổ chương trình vào CPLD và FPGA: 128
8 Tạo và sử dụng core có sẵn từ ISE: 140
BÀI 6 146
NGÔN NGỮ VERILOG HDL 146
1 Giới thiệu ngôn ngữ Verilog HDL: 146
1.1 HDL là gì? 146
1.2 Tầm quan trọng của HDL: 147
1.3 Đặc điểm nổi bật của Verilog: 148
1.4 Xu hướng của HDL: 148
2 Tổng quan về ngôn ngữ Verilog: 149
2.1 Lịch sử ngôn ngữ Verilog 149
Trang 62.2 Phương pháp thiết kế hệ thống: 150
2.3 Các khái niệm cơ bản trong Verilog: 151
2.4 Module và các port: 159
3 Verilog HDL và các mức thiết kế phổ biến: 162
3.1 Thiết kế mức cổng: 162
3.2 Các cổng cơ bản được định nghĩa sẵn: 162
3.3 Thiết kế ở mức Dataflow: 166
3.4 Thiết kế ở mức hành vi: 177
3.5 Tast và Function: 191
4 Bài tập bài 6: 196
BÀI 7 198
MỘT SỐ CHƯƠNG TRÌNH ỨNG DỤNG 198
1 Điều khiển led đơn: 198
1.1 Chương trình chính: 198
1.2 Chương trình testbench: 200
1.3 kết quả mô phỏng: 201
2 Thanh ghi dịch: 201
2.1 Chương trình chính: 201
2.2 Chương trình testbench: 202
2.3 Kết quả mô phỏng: 204
3 Mạch đếm: 204
3.1 Chương trình chính: 204
3.2 Chương trình testbench: 205
3.3 Kết quả mô phỏng: 207
4 Mạch đếm vòng xoắn Johson: 207
4.1 Chương trình chính: 207
4.2 Chương trình testbench: 208
4.3 Kết quả mô phỏng: 209
5 Bộ Mạch mã hóa và giải mã: 209
5.1 Bộ mã hóa encoder 8 sang 3: 209
Trang 75.2 Bộ giải mã decoder 8 sang 3: 212
6 Mux/Demux: 216
6.1 Bộ mux: 216
6.2 Bộ demux: 219
7 Bộ so sánh và cộng dữ liệu: 224
7.1 Bộ so sánh: 224
7.2 Bộ cộng dữ liệu: 229
8 Giao tiếp với led ma trận: 237
9 Điều chế độ rộng xung và chia tần: 240
9.1 Chia tần số: 240
9.2 Điều chế độ rộng xung: 243
10 Truyền dữ liệu song song: 248
10.1 Chương trình chính: 248
10.2 Chương trình testbench: 249
10.3 Kết quả mô phỏng: 251
11 Giao tiếp ADC và cảm biến nhiệt độ 251
11.1 Chương trình chính: 251
11.2 Chương trình testbench: 254
11.3 Kết quả mô phỏng: 256
12 Tạo bộ đệm dữ liệu: 257
13 Sử dụng core có sẵn của ISE vào thiết kế: 259
14 Bài tập bài 7: 260
TÀI LIỆU THAM KHẢO 261
Trang 8MÔN ĐUN: VI MẠCH SỐ LẬP TRÌNH
Mã mô đun: MĐ30
Vị trí, tính chất, ý nghĩa và vai trò của mô đun:
- Vị trí của mô đun: Mô đun được bố trí dạy sau khi học song môđun vi xử lý, vi điều khiển
- Tính chất của mô đun: Là mô đun bắt buộc
- Ý nghĩa và vai trò của mô đun: giúp sinh viên nắm bắt các kiếnthức và kỹ năng lập trình FPGA ứng dụng vào lĩnh vực điện tử,
là một mô đun không thể thiếu đối với sinh viên nghề điện tửcông nghiệp
Mục tiêu của mô đun:
- Trình bày được cấu tạo, đặc tính của các họ vi mạch số lập trìnhđược như: PLD, CPLD, FPGA theo nội dung đã học
- Phân tích được các mạch ứng dụng vi mạch số lập trình đượcCPLD, FPGA theo tiêu chuẩn nhà sản xuất
- Thiết kế được các yêu cầu điều khiển dùng CPLD, FPGA theo yêucầu kỹ thuật
- Sửa chữa, thay thế các linh kiện hư hỏng đạt yêu cầu kỹ thuật
- Kiểm tra chính xác các điều kiện hoạt động của thiết bị
Nội dung của mô đun:
Kiểm tra
1 Giới thiệu chung về PLD, CPLD,
FPGA, mảng logic lập trình được
4 Qui trình thiết kế cho CPLD và
FPGA của Xilinx
Trang 97 Viết một số chương trình ứng dụng 75 4 66 5
Trang 10BÀI 1 GIỚI THIỆU CHUNG VỀ PLD, CPLD VÀ FPGA
Mã bài: MĐ30 - 01
Giới thiệu:
PLD, CPLD và FPGA là các vi mạch số có thể lập trình được Do đó,trước khi đi sâu vào vi mạch số lập trình người học phải được trang bị nhữngkiến thức tổng quan về các vi mạch số có thể lập trình được
- Phân biệt cấu tạo logic giữa các họ PLDs, CPLDs, FPGA
- Nêu phạm vi ứng dụng của các họ PLD, CPLD, FPGA
- Phân biệt sự khác nhau giữa PLD với CPLD và FPGA
- Cách xác định và lựa chọn linh kiện trong thiết kế logic
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
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ừ
Trang 11lự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 trongviệ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
Trang 12(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.
2 Sự cần thiết và ý nghĩa thực tế của việc sử dụng mảng logic có thể lập trình được:
Mục tiêu: giải thích cho người học hiểu rõ mụch đích và ý nghĩa của việc sử dụng vi mạch khả trình trong mạch điện.
Các IC số rất đa dạng từ thực hiện các phép tính kỹ thuật số căn bản đếncác chức năng phức tạp khác như: bộ ghép kênh, phân kênh, bộ cộng, so sánh,
bộ mã hoá, giải mã, bộ đếm,… Chúng là các IC số có chức năng cố định, tức
là mỗi IC thực hiện một chứ năng chuyên biệt Những linh kiện này được sảnxuất một số lượng lớn để đáp ứng nhu cầu ứng dụng phong phú
Để thiết kế một mạch điện, nhà thiết kế có thể chọn từ các IC có sẵn phùhợp nhất cho mạch điện Phần thiết kế này có thể được chỉnh sửa để đáp ứngcác yêu cầu chuyên biệt của những linh kiện này
Ưu điểm của phương pháp này là:
Chi phí phát triển thấp
Vận hành nhanh xung quanh bản thiết kế
Tương đối dễ thử nghiệm các mạch điện
Nhược điểm:
Các yêu cầu về kích thước trong bảng mạch lớn
Yêu cầu về điện lớn
Thiếu tính bảo mật (Các bảng mạch có thể bị sao chép)
Các yêu cầu về chi phí bổ sung, khoảng trống, điện,…cần thiết đểchỉnh sửa bản thiết kế hoặc trình bày các tính năng khác
Để khắc phục những nhược điểm của thiết kế bằng cách sử dụng các IC
có chức năng cố định, các mạch tích hợp ứng dụng chuyên biệt Aplication Specific IC) đã được phát triển Các ASIC đã được thiết kế để đápứng các yêu cầu chuyên biệt của một mạch và được giới thiệu bởi một nhàsản xuất IC Các thiết kế này quá phức tạp không thể thực hiện bằng cách sửdụng các IC có chức năng cố định được
(ASIC-Ưu điểm của phương pháp này là:
Giảm thiểu được kích thước thông qua việc sử dụng mức tích hợpcao
Giảm thiểu được yêu cầu về điện
Nếu được sản xuất theo một quy mô lớn thì chi phí giảm đáng kể
Việc thiết kế được thực thi dưới dạng này thì hoàn toàn không thể saochép được
Trang 1312Nhược điểm:
Chi phí phát triển ban đầu có thể cực kỳ lớn
Các phương pháp thử nghiệm phải được phát triển và điều này làmgia tăng chi phí
Để có được các ưu điểm của hai phương pháp trên, đồng thời xử lýnhững ứng dụng lớn và phức tạp thì mảng logic lập trình được sử dụng
Với các ưu điểm về khả năng tái cấu hình, tốc độ hoạt động, thời giansản xuất, giá thành giảm,… mà mảng logic lập trình được thường được sửdụng trong các lĩnh vực:
Thiết kế các lõi IP cho các lĩnh vực chuyên dụng:
Mã hóa
Viễn thông (Communication)
Công nghiệp phát thanh truyền hình số (Broadcast Industry)
Xử lý ảnh, thiết kế các bộ codec
SoC thiết kế các Core CPU, bus
Thiết kế các sản phẩm công nghệ cao và số lượng ít, cần độ đặc chế cao.Các máy đo, phát và thu sóng viễn thông Mảng logic lập trình được đóng vaitrò glue-logic, kết nối các chip chuyên dụng lại và chạy một số chức năng hỗtrợ cho CPU nhúng để hệ thống nhanh hơn, hiệu quả hơn
3 Cấu trúc cơ bản của PLD:
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 PLD.
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ộc dòng SPLD như PAL, GAL, PLA
3.1 PAL:
PAL đượ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
Trang 14Hì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
Hình 1.2 – Cấu trúc Macrocell
Trang 15Như đã 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 16Hình 1.4 – Cấu trúc họ vi mạch GAL
4 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.
Trang 17Hì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 Switch 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ân
Trang 18và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…
5 Cấu trúc cơ bản của FPGA:
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 FPGA.
Trang 19Hì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
6 Sự khác biệt giữa PLD, CPLD và FPGA:
Mục tiêu: trình bày và giải thích cho người học hiểu rõ sự khác biệt giữa PLD, CPLD và FPGA.
CPLD là được cấu thành từ các SPLD, do đó ở đây ta xem xét và so sánhgiữa các dòng IC khả trình CPLD và dòng IC khả trình FPGA
Bảng 1.1 – Bảng so sánh CPLD và FPGA
Cấu trúc theo mảng các dạng tích Cấu trúc dựa vào LUT
Mảng kết nối trung tâm Ma trận kết nối 2 chiều X – Y
Cấu hình được lưu lại khi mất
điện, và hoạt động không đổi
trong quá trình hoạt động
Cấu hình nạp vào SRAM, khi mấtđiện sẽ không còn, cần có bộ nhớcấu hình PROM, cấu hình có thểđược nạp trong quá trình hoạtđộng
Cấu trúc đồng nhất Cấu trúc không đồng nhất
Nhiều tài nguyên: DLL (delay_Locked Loop: vòng khóa pha trễ), bộ nhớ, các bộ nhân,…
Ứng dụng: mã hóa và giải mã
logic, các máy trạng thái hay các
giao diện bus chuẩn (SPI, I2C,
…), ưu điểm nổi bật khi thiết kế
các mạch logic nhiều đầu vào
Ứng dụng: PCI (Peripheral Component Interface), giao tiếp nối tiếp tốc độ cao và các bộ vi xử
lý ứng dụng,…ưu thế nổi bật khi thiết kế phức tạp, cần nhiều tài
Trang 20Mentor Graphics Corporation cung cấp phần mềm modelsim, là một công cụ
hỗ trợ rất mạnh cho việc thực thi mô phỏng thiết kế
Trong nội dung giáo trình này sẽ trình bày chi tiết việc thiết kế lập trìnhchip CPLD và FPGA của hãng Xilinx trên phần mềm ISE và công cụ mô
phỏng ISIM của hãng Xilinx, và phần mềm mô phỏng modelsim của Mentor Graphics Corporation.
YÊU CẦU VỀ ĐÁNH GIÁ KẾT QUẢ HỌC TẬP BÀI 1:
Trang 21Mục tiêu:
- Giải thích được cấu trúc logic của họ CPLD thông dụng
- Trình bày các tính năng cần thiết của thiết bị để khai thác và sửdụng thiết bị hiệu quả theo yêu cầu kỹ thuật
Nội dung chính:
1 Giới thiệu chung:
Mục tiêu: giới thiệu cho người học những kiến thức tổng quan về họ CPLD.
CPLD được nhiều hãng sản xuất khác nhau sản xuất như Altera, Xilinx,
…Trong phần 1.4 đã trình bày cấu trúc cơ bản của CPLD, để hiểu rõ hơn vềcấu CPLD của hãng Xilinx, phần này sẽ bày về một họ CPLD của hãngXilinx là họ CPLD XC9500
Đặc điểm chung của họ CPLD XC9500:
Thời gian delay của các chân với chân logic là 5ns
Tần số hoạt động FCNT của bộ đếm 16 bit lên đến 125MHz
Mật độ tích hợp lớn: từ 36 đến 288 macrocell với số lượng cổng từ
800 đến 6400 cổng
Ngõ ra dòng cao 24mA
Tương thích với điện áp 3.3V và 5V
Công nghệ FastFLASH CMOS 5V
Ngoài những đặc điểm trên, họ CPLD XC9500 còn nhiều đặc điểm khácnữa Họ CPLD XC9500 gồm nhiều dòng linh kiện khác nhau, chi tiết của cácloại linh kiện này được cho trong bảng 2.1
Trang 22Trong đó, fSYSTEM là tần số hoạt động bên trong của hệ thống.
Nhìn vào bản 2.1 ta thấy, số macrocell chính bằng hai chữ số cuối củatên linh kiện CPLD
Trang 23Hì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 24Hình 2.3 – Cấu trúc macrocell bên trong khối FB Các khối I/O:
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 25Hình 2.4 – Khối IO và kết nối ngõ ra của CPLD XC9500
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 26Hình 2.5 – Ma trận Fast CONNECT Switch 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”
Hình 2.6 – Kết nối CPLD với chuẩ JTAG
Trang 27YÊU CẦU VỀ ĐÁNH GIÁ KẾT QUẢ HỌC TẬP BÀI 2 :
Nội dung:
- Về kiến thức: Trình bày được các kiến thức tổng quan về cấu trúc
và tính năng của họ vi mạch CPLD của hãng Xilinx.
- Về kỹ năng: phân biệt được các loại CPLD khác nhau Xác định và lựa chọn linh kiện CPLD trong thiết kế logic.
- Về thái độ: Đảm bảo an toàn và vệ sinh công nghiệp.
Phương pháp:
- Về kiến thức: Được đánh giá bằng hình thức kiểm tra viết, trắc nghiệm, vấn đáp.
Trang 28BÀI 3
HỌ FPGA
Mã bài: MĐ30 - 03
Giới thiệu:
FPGA là linh kiện có thể lập trình được thông dụng nhất hiện nay Do
đó, người học phải được trang bị những kiến thức cơ bản về FPGA trước khi
đi vào lập trình cho họ linh kiện này
Mục tiêu:
- Giải thích được cấu trúc logic của họ FPGA thông dụng
- Trình bày các tính năng cần thiết của thiết bị để khai thác và sửdụng thiết bị hiệu quả theo yêu cầu kỹ thuật
Nội dung chính:
1 Giới thiệu chung:
Mục tiêu: giới thiệu cho người học những kiến thức tổng quan về họ FPGA của hãng Xilinx.
FPGA có nhiều hãng sản xuất khác nhau, trong đó Xilinx là công ty sảnxuất FPGA hàng đầu thế giới hiện nay với nhiều họ FPGA khác nhau, ứngdụng ở nhiều hệ thống lớn nhỏ khác nhau Phần này giới thiệu về họ FPGASpartan 3E của hãng Xilinx
Đặc điểm chung của Spartan 3E:
Chi phí thấp, hiệu xuất logic cao, các ứng dụng theo định hướngngười dùng
Xử lý theo công nghệ 90nm
Đa mức điện áp, nhiều chân giao tiếp
Lên tới 376 chân I/O hay 156 cặp tín hiệu vi sai
Chuẩn tín hiệu LVCMOS, LVTTL, HST và SSTL
Các tín hiệu 3.3V, 2.5V, 1.8V, 1.5V và 1.2V
Hỗ trợ DDR (Double Data Rate)
Nguồn tài nguyên phong phú và linh hoạt:
Mật độ lên đến 33,192 tế bào logic, bao gồm các thanh ghi tùychọn hoặc hỗ trợ RAM được phân bố
Hiệu quả của các bộ mux lớn
Thực thi logic nhanh
Tăng cường bộ mux 18x18 với đường ống lựa chọn
Trang 29 Cấu trúc RAM phân cấp:
Khối RAM nhanh lên đến 648 Kbit
Khối RAM phân bố lên đến 231 Kbit
Có tối đa đến 8 bộ quản lý xung clock số (DCM)
Tổng hợp, nhân và chia tần số
Độ phân dải dịch pha cao
Vùng tần số có giới hạn rộng (từ 5MHz đến 300MHz)
Có 8 clock toàn cục và 8 clock cho mỗi nửa thiết bị
Cấu hình giao tiếp theo chuẩn công nghiệp PROM
Hỗ trợ trên ISE WebPACK
Hỗ trợ core MicroblazeSpartan 3E có nhiều linh kiện khác nhau, thuộc tính của từng loại được cho trong bảng 3.1
Bảng 3.1 – Bảng thuộc tính của các FPGA họ Spartan 3E
Device
Số cổng hệ thống
Số cổng tương đương
Mảng CLB (1 CLB = 4 Slice) Số bit RAM
phân tán
Số bit khối RAM
Bộ
Số I/O tối đa
Cặp tín hiệu
vi sai tối đa
Hàng Cột Tổng
CLB
Tổng Slice
Trang 30Hì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:
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
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
Khối RAM: cung cấp cho việc lưu trữ dữ liệu với các khối RAM18Kbit
Khối Multiplier : Tính toán các số nhị phân 18 bit
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
2.1 Mô tả FPGA:
2.1.1 Khối logic khả 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 31Hì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 32Hì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 3332Cấ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 34Nhữ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 35Cá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.
c 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
Trang 36bằ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
e Chuỗi bit nhớ và chuỗi số học:
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
Cá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
Trang 37Hì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 38Hì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ố
f RAM phân tán:
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 39đó các cổng BY, BY được sử dụng như các bit địa chỉ bổ xung.
g Thanh ghi dịch:
Một dạng sử dụng khác của các LUTG và LUTF trong SLICEM là dùngnhư một thanh ghi dịch 16 bit là SRL16
Hình 3.15 – Sử dụng LUT như thanh ghi dịch 16 bit
Hình 3.16 – Cấu trúc thanh ghi dịch trong FPGA
Trong cấu trúc thanh ghi dịch này, ngõ ra D được qui định bởi địa chỉA[3:0] nên còn gọi là thanh ghi địa chỉ
Trang 40Thanh ghi dịch có thể sử dụng ở chế độ địa chỉ hoặc không Khi muốn
mở rộng thanh ghi dịch ở chế độ địa chỉ thì phải dử dụng thêm các bộ mux
mở rộng
2.1.2 Khối điều khiển vào ra:
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