Giáo trình mô đun Vi mạch số lập trình

doc 262 trang ngocly 1810
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình mô đun Vi mạch số lập trình", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • docgiao_trinh_mo_dun_vi_mach_so_lap_trinh.doc

Nội dung text: Giáo trình mô đun Vi mạch số lập trình

  1. BỘ LAO ĐỘNG THƯƠNG BINH VÀ XÃ HỘI TỔNG CỤC DẠY NGHỀ GIÁO TRÌNH Mô đun: Vi Mạch Số Lập Trình NGHỀ: ĐIỆN TỬ CÔNG NGHIỆP TRÌNH ĐỘ: CAO ĐẲNG 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 Năm 2012
  2. 1 TUYÊ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ể được phép dùng nguyên bản hoặc trích dùng cho các mục đích về đào tạo và tham khả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 kinh doanh thiếu lành mạnh sẽ bị nghiêm cấm.
  3. 2 LỜ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ạn theo 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ích hợ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 Gate Array) đã và đang phát triển mạnh mẽ trong lĩnh vực điện tử. FPGA được hiể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ằng cách sử dụng FPGA người thiết kế có thể tạo ra một mạch điện chức năng thay 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ác cá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ác trườ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óm biê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
  4. 3 MỤ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
  5. 4 2.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
  6. 5 2.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
  7. 6 5.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
  8. 7 MÔ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ến thứ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 được CPLD, 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êu cầ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: Thời gian Số Tên các bài trong mô đun Lý Thực Kiểm TT Tổng số thuyết hành tra 1 Giới thiệu chung về PLD, CPLD, 5.5 5.5 0 0 FPGA, mảng logic lập trình được 2 Họ CPLD 5.5 5.5 0 0 3 Họ FPGA 6 6 0 0 4 Qui trình thiết kế cho CPLD và 9 4 5 0 FPGA của Xilinx
  9. 8 5 Phần mềm ISE và modelsim 15 10 5 1 6 Ngôn ngữ Verilog HDL 34 18 15 1 7 Viết một số chương trình ứng dụng 75 4 66 5 Tổng 150 52 91 7
  10. 9 BÀ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ững kiến thức tổng quan về các vi mạch số có thể lập trình được. Mục tiêu: - Giải thích được sự cần thiết và ý nghĩa trong thiết kế logic của họ PLDs, CPLDs, FPGA - Trình bày cấu tạo, ý nghĩa thực tế của việc sử dụng mảng logic lập trình được trong các yêu cầu thiết kế phức tạp. - 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 Nội dung chính: 1. Lịch sử phát triển: Mục tiêu: khái quát cho người học nắm rõ lịch sử phát triển của vi mạch khả trình. Vi mạch khả trình gồm các dạng sau:  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.  CPLD (Complex Programmable Logic Device) là IC khả trình phức tạp thường được ghép từ nhiều SPLD trên một chip đơn. Số lượng cổng tương đương của CPLD đạt từ hàng nghìn đến hàng chục nghìn cổng.  FPGA (Field – Programmable Gate Array) là IC khả trình được cấu trú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 Wen Tsing Chow năm 1956 khi làm việc tại Arma Division của công ty American Bosch Arma tại Garden, New York. PROM được chế tạo theo đơn đặt hàng từ
  11. 10 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ưu trữ 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ùng trong máy tính của hệ thống phóng tên lửa Atlas E/F và được giữ bí mật trong vòng vài năm trước khi Atlas E/F trở nên phổ biến. PROM là vi mạch lập trì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ập trình được (PLD – Programmable Logic Device). PAL (Programmable Array Logic) ra đời cuối những năm 1970. Cấu trúc củ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 việ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ới PROM là ở mỗi đầu ra của mảng OR lập trình được được dẫn bởi khối logic gọi là Macrocell. PLA (Programmable Logic Array) ra đời năm 1975, và là chip lập trình thứ hai sau PROM. Cấu trúc của PLA không khác nhiều so với cấu trúc của PAL, 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 PLA thấ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ông nghệ mới hơn như GAL, CPLD, GAL (Generic Array Logic) được phát triển bởi công ty Lattice Secmiconductor vào năm 1983. 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 dùng công nghệ 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ào nghiên cứu chế tạo CPLD như Xilinx với các dòng sản phẩm như họ CPLD XC95xx, 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ụng lớn và phức tạp hơn. Năm 1985, công ty Xilinx đưa ra ý tưởng hoàn toàn mớ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
  12. 11 (Field Programmable Gate Array). Hiện nay, Xilinx vẫn là nhà sản xuất chip FPGA số một trên thế giới. FPGA có cấu trúc và hoạt động phức tạp hơn CPLD. 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 đến cá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ản xuấ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 ứng cá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 (ASIC- 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. Ư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ợp cao.  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ể sao chép được.
  13. 12 Nhượ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àm gia 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 gian sả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 vai trò 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ởi khối logic gọi là Macrocell như trong hình 1.1.
  14. 13 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ứa một flip–flop, bộ mux2 và mux8 và cổng logic ba trạng thái. Tín hiệu điều khiển của mux4 có thể được lập trình để cho phép dẫn tín hiệu lần lượt qua cá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ùy thuộ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
  15. 14 Nhờ có cấu trúc macrocell mà PAL có thể được sử dụng không những để thực hiện các hàm logic tổ hợp mà cả các hàm logic tuần tự. 3.2 PLA: Cấu trúc PLA khác cấu trúc PAL là ở chỗ PLA có thể lập trình ở cả hai ma trận AND và ma trận OR (hình 1.3). Hình 1.3 – Cấu trúc PLA 3.3 GAL Như đã 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ụng công nghệ PROM CMOS xóa bằng điện, do đó GAL cho phép lập trình lại giống như EEPROM.
  16. 15 Hì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.
  17. 16 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 cao hơn so với các PLD đơn giản đã xem xét ở phần trên. CPLD bao gồm nhiều mạch logic, mỗi mạch có thể coi là một SPLD. Trong một mạch đơn chỉ thực hiệ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ết nố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ọa trong 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ác hàm logic tổ hợp, và nhiều khối MC (Macrocell) có chứa tài nguyên là các Trigơ cho phép xây dựng các thanh ghi và mạch tuần tự. Phần lõi bên trong củ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ết lậ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
  18. 17 và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ên CPLD đã và đang được sử dụng rất rộng rãi trong thực tế, giúp cho nhà sản xuấ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 nay cá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ác nhau, 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 CPLD cũ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ủa CPLD. Khi sử dụng cụ thể loại CPLD nào, người học nên tham khảo các tài liệ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ấu kiệ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. Hình 1.6 – Cấu trúc của FPGA
  19. 18 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á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 này thay đổi từ vài trăm đến vài chục nghìn, và được bố trí dưới dạng ma trận, chúng được kết nối với nhau thô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ế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 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ánh giữ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 CPLD 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 Mật độ tích hợp trung bình Mật độ tích hợp cao Tỷ lệ số chân I/O trên macrocell Tỷ lệ số chân I/O trên macrocell lớn nhỏ Cấu hình được lưu lại khi mất Cấu hình nạp vào SRAM, khi mất điện, và hoạt động không đổi điện sẽ không còn, cần có bộ nhớ trong quá trình hoạt động 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ã Ứng dụng: PCI (Peripheral logic, các máy trạng thái hay các Component Interface), giao tiếp giao diện bus chuẩn (SPI, I2C, nối tiếp tốc độ cao và các bộ vi xử ), ưu điểm nổi bật khi thiết kế lý ứng dụng, ưu thế nổi bật khi các mạch logic nhiều đầu vào thiết kế phức tạp, cần nhiều tài nguyên.
  20. 19 7. Phần mềm hỗ trợ: Mục tiêu: giới thiệu cho người học những phần mềm hỗ trợ khi thiết kế mạch điện sử dụng vi mạch khả trình. Mỗi hãng sản xuất IC khả trình FPGA khác nhau cung cấp những phần mềm lập trình khác nhau như: phần mềm Quatus của Altera, ISE của Xilinx, Để thực thi mô phỏng thì mỗi phần mềm của hãng đều hỗ trợ công cụ mô phỏng như: công cụ ISIM trong phần mềm ISE của hãng Xilinx, ngoài ra Mentor 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ình chip 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:  Nội dung: - Về kiến thức: Trình bày được các kiến thức cơ bản về PLD, CPLD và FPGA. - Về kỹ năng: Phân biệt được các loại PLD, CPLD và FPGA. Xác định và lựa chọn linh kiện 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.
  21. 20 BÀI 2 HỌ CPLD Mã bài: MĐ30 - 02 Giới thiệu: CPLD là một trong những linh kiện cơ bản có thể lập trình được hiện nay. Do đó, người học phải được trang bị những kiến thức cơ bản về CPLD 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ọ 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ãng Xilinx 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ác nữa. Họ CPLD XC9500 gồm nhiều dòng linh kiện khác nhau, chi tiết của các loại linh kiện này được cho trong bảng 2.1.
  22. 21 Bảng 2.1 – Họ CPLD XC9500 XC9536 XC9572 XC95108 XC95144 XC95216 XC95288 Macrocell 36 72 108 144 216 288 Số cổng 800 1,600 2,400 3,200 4,800 6,400 Số thanh ghi 36 72 108 144 216 288 fCNT (MHz) 100 125 125 125 111.1 92.2 fSYSTEM(MHz) 100 83.3 83.3 83.3 66.7 56.6 Trong đó, 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ủa tên linh kiện CPLD. Bảng 2.2 – Số chân của các CPLD họ XC9500 XC9536 XC9572 XC95108 XC95144 XC95216 XC95288 44 chân 34 - - - - - VQFP 44 chân 34 34 - - - - PLCC 48 chân CSP 34 - - - - - 84 chân - 69 69 - - - PLCC 100 chân - 72 81 81 - - TQFP 100 chân - 72 81 81 - - PQFP 160 chân - - 108 133 133 - PQFP 208 chân - - - 166 168 HQFP 352 chân - - - 166 192 BGA 2. Vi mạch CPLD: Mục tiêu: giới thiệu cho người học những kiến thức tổng quan về trấu trúc một họ CPLD cụ thể. Cấu trúc cơ bản của họ CPLD XC9500 được mô tả trong hình 2.1.
  23. 22 Hì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 bao gồm 18 macrocell độc lập nhau, mỗi macrocell có thể thực thi các hàm kết hợ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ác tí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
  24. 23 Hì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ùng bê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ức tí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ặc luô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 144 macrocell, 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ả hai cự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ụng trong thiết bị.
  25. 24 Hì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.
  26. 25 Hì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 được thiết lập ở mức cao “H”. Hình 2.6 – Kết nối CPLD với chuẩ JTAG
  27. 26 YÊ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.
  28. 27 BÀ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ản xuất FPGA hàng đầu thế giới hiện nay với nhiều họ FPGA khác nhau, ứng dụng ở nhiều hệ thống lớn nhỏ khác nhau. Phần này giới thiệu về họ FPGA Spartan 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ướng ngườ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ùy chọ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
  29. 28  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 Microblaze Spartan 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 Số Số Cặp cổng cổng Mảng CLB Số bit Số tín Device Số bit hệ tương (1 CLB = 4 Slice) RAM Bộ I/O hiệu khối DCM thống đương phân mux tối vi sai RAM Hàng Cột Tổng Tổng tán đa tối CLB Slice đa XC3S100E 100K 2160 22 16 240 960 15K 72K 4 2 108 40 XC3S250E 250K 5508 34 26 612 2448 38K 216K 12 4 172 68 XC3S500E 500K 10476 46 34 1164 4656 73K 360K 20 4 232 92 XC3S1200E 1200K 19512 60 46 2168 8672 136K 504K 28 8 304 124 XC3S1600E 1600K 33192 76 58 2688 14752 231K 648K 36 8 376 156 2. Vi mạch FPGA: Mục tiêu: giới thiệu cho người học những kiến thức cơ bản về họ FPGA Spartan 3E của hãng Xilinx.
  30. 29 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:  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 hay chố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ác chân I/O và các logic bên trong của thiết bị. Mỗi IOB hỗ trợ dữ liệu hai 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 RAM 18Kbit  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ác mạch logic. Mỗi CLB được cấu thành từ 4 Slice, mỗi Slice lại được cấu thành từ 2 LUT (Look Up Tables). Phân bố của các CLB được thể hiện ở hình 3.2.
  31. 30 Hì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 định bằng một tọa độ X và Y trong ma trận. Đối với Spartan 3E thì 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 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óm trá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ăng logic 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ực hiệ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à chi phí FPGA, mặt khác làm tăng tốc độ làm việc cho toàn khối.
  32. 31 Hì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ực thi các hàm logic, thuật toán và ROM: LUT Thành phần lưu trữ Hai bộ mux mở rộng F5MUX và FiMUX Logic nhớ và logic số học Ngoài ra SLICEM hỗ trợ thêm hai RAM phân bố 16x1 gọi là RAM16 và hai thanh ghi dịch 16 bit là SRL16 như hình 3.4. Hình 3.4 – Phân bố tài nguyên trong SLICEM và SLICEL
  33. 32 Cấ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
  34. 33 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 là những kết nối mà cả hai dạng slice đề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 LUT A[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 16 giá 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àm việ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á
  35. 34 trị 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ư RAM 16x1 gọi là RAM phân tán hoặc được cấu trúc để làm việc như một thanh ghi dị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ù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. Ở các thế hệ FPGA sau này, nguyên lý làm việc của LUT vẫn không thay đổi như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àm việ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 clock hoặc không có clock, 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 flip-flop thông thường. Các đầu ra QX và QY của các phần tử nhớ cũng là các đầu ra của slice. Trong phần lớn các ứng dụng thường gặp thì phần tử nhớ được cấu trúc để làm việc như D flip-flop có xung clock. d. 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 Mỗi LUT được thiết kế để có thể thực hiện được mọi hàm logic bốn đầ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
  36. 35 bằng cách kết hợp các phần tử logic chức năng như LUT, chuỗi bit nhớ, thanh ghi dịch, RAM phân tán ở các slice, các CLB khác nhau để tạo ra các hàm tùy biế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. Bảng 3.2 – Bảng sự thật bộ F5MUX Ngõ vào Ngõ ra S I0 I1 O LO 0 1 X 1 1 0 0 X 0 0 1 X 1 1 1 1 X 0 0 0 Tương tự như vậy, có thể thành lập các hàm với số lượng đầu vào lớn hơn bằng bộ FiMUX tương ứng có F6MUX, F7MUX, F8MUX. 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ợp cá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ác phé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ệc tă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 logic riêng biệt, các phần tử đó cũng có thể được sử dụng độc lập để thực hiện các hà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 bit nhớ đượ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ài hơ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ổng XORG, XORF phân bố ở phần trên và phần dưới của slice, chuỗi AND với các công GAND, FAND. Các chuỗi này kết hợp với các LUT để thực hiện phép nhân hoặc tạo thành các bộ đếm nhị phân.
  37. 36 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 độ cho FPGA. Thiết kế điển hình của bộ cộng 1 bit FULL_ADDER trên FPGA được thể 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 Hình 3.12 – Bộ nhân trong FPGA
  38. 37 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 4 LUT nằm trong 2 SLICEM của CLB. Phần RAM có thể sử dụng như một khố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ác RAM này phân bố rải rác theo CLB nên trong cấu trúc của FPGA chúng được gọ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òn dual-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ủa FPGA. Hình 3.14 – Thao tác đọc/ghi dữ liệu RAM phân tán trong FPGA của Xilinx
  39. 38 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ân tán 64x1, 32x2, 16x4. Các đầu vào G[4:1] và F[4:1] được dùng như các đầu và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ài nguyê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. 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ùng như 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ỉ. Thanh 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.
  40. 39 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 được trì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 theo mộ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 logic bê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.
  41. 40 a. 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ừa phả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ọn kê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. Hình 3.18 – Khối làm trễ có thể lập trình được Một trong những ứng dụng của khối làm trễ là đảm bảo không vi phạm điều kiện Thold khi phần tử nhớ hoạt động (T hold là thời gian tối thiểu cần giữ ổn định dữ liệu sau thời điểm kích hoạt của xung nhịp đồng hồ). b. Cổng vào ra ở chế độ DDR: 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 clock bằ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ớ cho phép thực hiện truyền dữ liệu theo phương thức DDR.
  42. 41 Hì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ều khiển dữ liệu vào/ra. Cùng một thời điểm có hai xung nhịp đồng hồ lệch pha nhau 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 CLK1 tươ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ín hiệ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.3. Các kết nối khả trình: 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ểu trễ do đường truyền gây ra). Đối với các FPGA họ Spartan 3E có 4 loại kết nố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ông qua 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ác dạ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
  43. 42 nố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ết nối, nhưng với các phần tử lớn hơn như RAM khối hay MULT18 thì cần nhiề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
  44. 43 b. Các dạng kết nối: Các kiểu kết nối có trong FPGA bao gồm:  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ủa kế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.  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ên tiếp.  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ên tiế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ết nối dài và kết nối ba.
  45. 44  Kết nối trực tiếp: Hình 3.25 – Kết nối trực tiếp Kết nối trực tiếp kết nối các CLB cạnh nhau theo phương ngang, dọc và chéo nhau mà không cần thông qua ma trận kết nối. 2.1.4. Các thành phần khác của FPGA: Mục tiêu: giới thiệu cho người học những kiến thức về các thành phần khác bên trong FPGA của hang Xilinx như Ram khối, khối nhân, a. RAM khối: Bên cạnh nguồn tài nguyên lưu trữ dữ liệu là các RAM phân tán, với bản chất là sử dụng một hình thức sử dụng khác của LUT, thì trong FPGA Xilinx còn được tích hợp các RAM khối riêng biệt được cấu hình như một RAM khối hai port, số lượng RAM khối này trong spartan 3E thay đổi từ 4 đến 36 tùy theo từng IC cụ thể. Tất cả RAM khối hoạt động có xung clock và có khả năng lưu trữ tập trung một khối lượng lớn thông tin. Giao diện của một RAM khối như sau: Hì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:  Đọc/ghi từ port A
  46. 45  Đọc/ghi từ port B  Truyền dữ liệu từ A sang B  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ởi tạ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[W A]_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 1 port 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 ứng dụ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ày trong 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 36 tù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ết quả cho ra là một số có dấu 36 bit.
  47. 46 Hì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ạo phức tạp và có số lượng hạn chế trong Spartan 3E với số lượng từ 2 đến 8 khối DCM. Các công việc chính mà khối DCM có thể thực hiện là:  Loại bỏ độ trễ giữa các xung clock ở các vị trí khác nhau.  Tổng hợp tần số: nhân, chia tần số với một số.  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
  48. 47 2.2. Thông số giới hạn: 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ạn sau khi sử dụng FPGA.  Điện áp hoạt động của FPGA  Số thanh ghi của FPGA  Số chân của FPGA  Số IO của FPGA  Số khối logic của FPGA  Số cổng của FPGA  Nhiệt độ hoạt động của FPGA  Số Slice Flip Flop  Số LUTs 4 ngõ vào  Số BUFGMAXS  Số chân hỗ trợ CLK  Công suất tiêu thụ của FPGA  Các thành phần tích hợp của FPGA như DSP, Và nhiều thông số khác. 2.3. Đặc tính lưu trữ dữ liệu: Tùy thuộc vào từng ứng dụng cụ thể, và khả năng hỗ trợ của FPGA mà người dùng có thể lựa phương pháp lưu trữ dữ liệu chương trình cho FPGA hoạt động. Có hai phương pháp chính để lưu giữ chương trình cho FPGA như sau:  Lưu giữ chương trình trực tiếp trên FPGA.  Lưu trữ bằng các phần tử nhớ khác như: Platform Plash PROM, SPI Serial Flash PROM (SPI), StrataPlash parallel Flash PROM (BPI Up hay 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 khi mấ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.
  49. 48 2.4. Đặc tính điện DC: 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ải tuâ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 Ký hiệu Mô tả Điều kiện Min Max Đơn vị VCCINT Điện áp cung cấp bên trong -0.5 1.32 V VCCAUX Điện áp cung cấp phụ trợ -0.5 3.00 V VCCO Điện áp cung cấp lái ngõ ra -0.5 3.75 V VREF Điện áp tham chiếu ngõ vào -0.5 VCCO+0.5 V Thương -0.95 4.4 V Điện áp cung cấp tới mại tất cả các chân I/O người dùng và các Lái vào Công chân cho mục đích trạng thái -0.85 4.3 V V nghiệp IN Dual trở kháng cao Điện áp cung cấp tới Tất cả các tất cả các chân giới hạn -0.5 VCCAUX+0.5 V chuyên dụng nhiệt độ IIK Dòng điện I/O -0.5<VIN<VCCO+0.5 - ±100 mA Mô hình thân người - ±2000 V Mô hình thiết bị sạc V Điện áp tĩnh điện - ±500 V ESD được Mô hình máy - ±200 V o TJ Nhiệt độ mối nối - 125 C o TSTG Nhiệt độ lưu trữ -65 150 C 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.
  50. 49 Bảng 3.4 – Điện áp ngưỡng cung cấp cho việc Reset mở nguồn: Ký hiệu Mô tả Min Max Đơn vị VCCINTT Ngưỡng của VCCINT 0.4 1.0 V VCCAUXT Ngưỡng của VCCAUX 0.8 2.0 V VCCO2T Ngưỡng của VCCO Bank 2 0.4 1.0 V Bảng 3.5 – Tỉ lệ độ dốc điện áp cung cấp Ký hiệu Mô tả Min Max Đơn vị VCCINTR Độ dốc từ GND tới mức giá trị 0.2 50 ms VCCINT cung cấp VCCAUXR Độ dốc từ GND tới mức giá trị 0.2 50 ms VCCAUX cung cấp VCCO2R Độ dốc từ GND tới mức giá trị 0.2 50 ms 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 Ký hiệu Mô tả Min Đơn vị VDRINT Mức điện ápVCCINT yêu cầu để duy trì dữ 1.0 V liệu của RAM VDRAUX Mức điện áp V CCAUX yêu cầu để duy trì dữ 2.0 V 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 trong bả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 Ký hiệu Mô tả Min Norm Max Đơn vị Thương 0 - 85 oC Nhiệt độ mại TJ mối nối Công -40 - 100 oC nghiệp Điện áp cung cấp V 1.140 1.200 1.260 V CCINT bên trong VCCO Điện áp lái ngõ ra 1.100 - 3.465 V
  51. 50 Điện áp cung cấp V 2.375 2.500 2.625 V CCAUX phụ trợ I/O, ngõ vào, các chân cho mục đích -0.5 - VCCO+0.5 V VIN Dual Các chân chuyên -0.5 - V +0.5 V dụng CCAUX Thời gian chuyển T - - 500 ns IN tín hiệu ngõ vào 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 cho mụ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ý Đơn Mô tả Điều kiện kiểm tra Min Norm Max hiệu vị Dòng rò tại các chân I/O, chân ngõ Trạng thái tổng trở cao, vào, chân dùng cho I V = 0V hoặc V -10 - +10 µA L mục đích Dual và IN CCO lớn nhất các chân chuyên dụng Dòng diện qua điện VIN=0V,VCCO=3.3V -0.36 - -1.24 mA trở treo tại các chân VIN=0V,VCCO=2.5V -0.22 - -0.8 mA I/O chân dùng cho I V =0V,V =1.8V -0.10 - -0.42 mA RPU mục đích Dual và IN CCO các chân chuyên VIN=0V,VCCO=1.5V -0.06 - -0.27 mA dụng VIN=0V,VCCO=1.2V -0.04 - -0.22 mA V =0V,V = 3.0V tới IN CCO 2.4 - 10.8 kΩ 3.465V Điện trở treo tương V =0V,V =2.3V tới đương tại các chân IN CCO 2.7 - 11.8 kΩ I/O, chân ngõ vào, 2.7V RPU chân dùng cho mục V =0V,V ==1.7V IN CCO 4.3 - 20.2 kΩ đích Dual và các tới 1.9V chân chuyên dụng V = 0V, V =1.4V IN CCO 5.0 - 25.9 kΩ tới 1.6V
  52. 51 V =0V,V =1.14V IN CCO 5.5 - 32.0 kΩ tới 1.26V Dòng V trên các I REF Tất cả các mức V -10 - +10 µA REF chân CCO Dung kháng ngõ C - - - 10 pF IN vào 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 Max Max Đơn Ký hiệu Mô tả Linh kiện Norm (thương mại) (công nghiệp) vị XC3S100E 8 27 36 mA Dòng điện XC3S250E 15 78 104 mA ICCINTQ tĩnh cung XC3S500E 25 106 145 mA cấp VCCINT XC3S1200E 50 259 324 mA XC3S1600E 65 366 457 mA XC3S100E 0.8 1.0 1.5 mA Dòng điện XC3S250E 0.8 1.0 1.5 mA ICCOQ tĩnh cung XC3S500E 0.8 1.0 1.5 mA cấp VCCO XC3S1200E 1.5 2.0 2.5 mA XC3S1600E 1.5 2.0 2.5 mA XC3S100E 8 12 13 mA Dòng điện XC3S250E 12 22 26 mA ICCAUXQ tĩnh cung XC3S500E 18 31 34 mA cấp VAUX XC3S1200E 35 52 59 mA XC3S1600E 45 76 86 mA 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.
  53. 52 Bảng 3.10 – Các đ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 VCCO VREF VIL VIH Chuẩn Min Norm Max Min Norm Max Max Min (V) (V) (V) (V) (V) (V) (V) (V) LVTTL 3.0 3.3 3.465 0.8 2.0 LVCMOS33 3.0 3.3 3.465 0.8 2.0 LVCMOS25 2.3 2.5 2.7 Điện áp VREF không 0.7 1.7 sử dụng cho các LVCMOS18 1.65 1.8 1.95 chuẩn này 0.4 0.8 LVCMOS15 1.4 1.5 1.6 0.4 0.8 LVCMOS12 1.1 1.2 1.3 0.4 0.7 Trong đó: -VIL: điện áp ngõ vào mức thấp -VIH: điện áp ngõ vào mức cao -VCCO: điện áp cung cấp cho việc lái ngõ ra -VREF: điện áp tham chiếu dùng cho việc thiết lập ngưỡng chuyển mạch ngõ vào Bảng 3.11 – Đặc tính DC của các I/O người dùng theo chuẩn Single – Ended Điều kiện test Đặc tính mức điện áp Chuẩn IOL(mA) IOH(mA) VOL Max(V) VOH Min(V) 2 2 -2 0.4 2.4 4 4 -4 6 6 -6 LVTTL 8 8 -8 12 12 -12 16 16 -16 2 2 -2 0.4 VCCO-0.4 4 4 -4 LVCMOS33 6 6 -6 8 8 -8
  54. 53 12 12 -12 16 16 -16 2 2 -2 0.4 VCCO-0.4 4 4 -4 LVCMOS25 6 6 -6 8 8 -8 12 12 -12 2 2 -2 0.4 VCCO-0.4 4 4 -4 LVCMOS18 6 6 -6 8 8 -8 2 2 -2 0.4 VCCO-0.4 LVCMOS15 4 4 -4 6 6 -6 LVCMOS12 2 2 -2 0.4 VCCO-0.4 Trong đó: -IOL: dòng điện ngõ ra mức thấp -IOH: dòng điện ngõ ra mức cao -VOL: điện áp ngõ ra mức thấp -VOH: điện áp ngõ ra mức cao -VCCO: điện áp cung cấp lái ngõ ra Ngoài những đặc tính điện trên, FPGA họ SPARTAN -3E còn nhiều đặc tính điện khác, người sử dụng có thể tìm hiểu thêm trong DATASHEET của họ SPARTAN – 3E. 2.5. Công suất tiêu thụ: Tổng công suất tiêu thụ của FPGA được tính toán dựa trên công cụ XPower Estimator (XPE). Tổng công suất của FPGA được tính như sau: Tổng công suất FPGA = Công suất tĩnh của FPGA + công suất tĩnh thiết kế + công suất động thiết kế
  55. 54 Trong đó: - Công suất tĩnh FPGA: là công suất rò rỉ của transistor khi linh kiện được bật nguồn và chưa được cấu hình. - Công suất tĩnh thiết kế: là công suất tiêu thụ thêm vào khi linh kiện được cấu hình và không có các hoạt động chuyển mạch. Công suất này bao gồm công suất tĩnh của các I/O, DCI, bộ quản lý xung clock, - Công suất động thiết kế: là công suất tiêu thụ trung bình thêm vào từ việc sử dụng các logic người dùng và các hoạt động chuyển mạch. 2.6. Sơ đồ chân: a. Kiểu chân của Spartan – 3E: Các kiểu chân của Spartan – 3E được cho trong bảng 3.12. Bảng 3.12 – Các kiểu chân của Spartan – 3E Kiểu chân Mô tả Tên chân theo kiểu chân I/O Chân I/O người dùng sử dụng cho mục IO đích chung IO_Lxxy_# INPUT Chân ngõ vào. Các chân này không có IP cấu trúc ngõ ra IP_Lxxy_# DUAL Các chân Dual, sử dụng làm chân cấu M[2:0] hình linh kiện trong quá trình cấu hình, HSWAP sau đó dùng làm chân I/O sau khi đã cấu CCLK hình. Một số chân xung clock MOSI/CSI_B D[7:1] D0/DIN CSO_B RDWR_B BUSY/DOUT INIT_B A[23:20] A19/VS2 A18/VS1 A17/VS0 A[16:0] LDC[2:0] HDC
  56. 55 VREF Các chân Dual dùng làm chân tham chiếu IP/VREF_# điện áp hoặc chân I/O người dùng. Khi sử IP_LXX_#/VREF_# dụng làm chân tham chiếu, chúng cung cấp điện áp tham chiếu ngõ vào cho các chuẩn I/O, tất cả các chân VREF trong bank phải được kết nối GCLK Sử dụng làm chân I/O người dùng hoặc GLCK[15:0] LHCLK ngõ vào bộ đệm xung clock. Mỗi linh LHCLK[7:0] RHCLK kiện có 16 chân clock toàn cục trong toàn RHCLK[7:0] bộ linh kiện. RHCLK là các chân clock ngõ vào bên phải của linh kiện. LHCLK là các chân clock ngõ vào bên trái linh kiện CONFIG Chân cấu hình chuyên dụng. Không sử DONE, PROG_B dụng làm chân I/O người dùng. Mỗi linh kiện có hai kiểu chân cấu hình chuyên dụng. Các chân này được cấp nguồn bởi VCCAUX JTAG Các chân JTAG chuyên dụng, không sử TDI, TMS, TCK, TDO dụng làm chân I/O người dùng. Mỗi linh kiện có 4 chân JTAG chuyên dụng. Các chân này được cấp nguồn bởi VCCAUX GND Các chân nối mass chuyên dụng. Số chân GND GND phụ thuộc vào từng linh kiện cụ thể VCCAUX Chân cung cấp nguồn phụ trợ. Số chân VCCAUX VCCAUX phụ thuộc vào từng linh kiện. Tất cả các chân này được cấp nguồn +2.5V VCCINT Các chân chuyên dụng sử dụng để cấp VCCINT nguồn cho core logic bên trong. Số chân VCCINT phụ thuộc vào từng linh kiện. Tất cả các chân này được kết nối tới nguồn +1.2V VCCO Chân cấp nguồn I/O cho các bank VCCO_# NC Các chân này không được kết nối. N.C. Trong đó: - #: là số bank I/O, có giá trị từ 0 đến 3 - xx: là số tự nhiên 2 chữ số
  57. 56 - y: có dạng kiểu “P” (dùng cho tín hiệu thực) hoặc “N” cho tín hiệu được đảo ngược trong các cặp vi sai b. kiểu đóng gói của Spartan – 3E: kiểu đóng gói của họ linh kiện Spartan – 3E được cho trong bảng 3.13. bảng 3.13 – Kiểu đóng gói Spartan -3E Chiều Số Số Diện tích Đóng gói Kiểu cao chân I/O (mm) (mm) VQ100/VQG100 100 Very-thin Quad Flat Pack (VQFP) 66 16x16 1.20 CP132 /CPG132 132 Chip-Scale Package (CSP) 92 8x8 1.10 TQ144/TQG144 144 Thin Quad Flat Pack (TQFP) 108 22x22 1.60 PQ208 /PQG208 208 Plastic Quad Flat Pack (PQFP) 258 30.6x30.6 4.10 Fine-pitch, Thin Ball Grid Array FT256 / FTG256 256 190 17x17 1.55 (FBGA) FG320 /FGG320 320 Fine-pitch Ball Grid Array (FBGA) 250 19x19 2.00 FG400 /FGG400 400 Fine-pitch Ball Grid Array (FBGA) 304 21x21 2.60 FG484 /FGG484 484 Fine-pitch Ball Grid Array (FBGA) 376 23x23 2.60 c. Các chân nguồn và chân GND: Số lượng các chân nguồn và chân GND của họ linh kiện Spartan – 3E được cho trong bảng 3.14 Bảng 3.14 – Số chân nguồn và chân GND của FPGA họ Spartan – 3E Kiểu đóng gói VCCINT VCCAUX VCCO GND VQ100 4 4 8 12 CP132 6 4 8 16 TQ144 4 4 9 13 PQ208 4 8 12 20 FT256 8 8 16 28 FG320 8 8 20 28 FG400 16 8 24 42 FG484 16 10 28 48 d. Số chân I/O người dùng: Số chân I/O người dùng của họ linh kiện FPGA Spartan -3E được cho trong bảng 3.15.
  58. 57 Bảng 3.15 – Số chân I/O người dùng của họ FPGA Spartan – 3E Số Đóng I/O Cặp Linh kiện I/O INPUT DUAL VREF GCLK N.C gói người vi sai dùng XC3S100E 66 30 16 1 21 4 24 0 VQ100 XC3S250E 66 30 16 1 21 4 24 0 XC3S250E 92 41 22 0 46 8 16 0 CP132 XC3S500E 92 41 22 0 46 8 16 0 XC3S100E 108 40 22 19 42 9 16 0 TQ144 XC3S250E 108 40 20 21 42 9 16 0 XC3S250E 158 65 58 25 46 13 16 0 PQ208 XC3S500E 158 65 58 25 46 13 16 0 XC3S250E 172 68 62 33 46 15 16 16 XC3S500E FT256 190 77 76 33 46 19 16 0 XC3S1200E 190 77 78 31 46 19 16 0 XC3S500E 232 92 102 48 46 20 16 18 XC3S1200E FG320 250 99 120 47 46 21 16 0 XC3S1600E 250 99 119 48 46 21 16 0 XC3S1200E 304 124 156 62 46 24 16 0 FG400 XC3S1600E 304 124 156 62 46 24 16 0 XC3S1600E FG484 376 156 214 72 46 28 16 0 Sơ đồ đóng gói chân các linh kiện họ Spartan – 3E được thể hiện chi tiết từ hình 3.30 đến hình 3.37
  59. 58 Hình 3.30 - Kiểu đóng gói chân linh kiện VQ100
  60. 59 Hình 3.31 – Kiểu đóng gói chân linh kiện CP132
  61. 60 Hình 3.32 – Kiểu đóng gói chân linh kiện TQ144
  62. 61 Hình 3.33a – Kiểu đóng gói chân linh kiện PQ208 (nửa trái)
  63. 62 Hình 3.33b – Kiểu đóng gói chân linh kiện PQ208 (nửa phải)
  64. 63 Hình 3.34 – Kiểu đóng gói chân linh kiện FT256
  65. 64 Hình 3.35 – Kiểu đóng gói chân linh kiện FG320
  66. 65 Hình 3.36a – Kiểu đóng gói chân linh kiện FG400 (nửa trái)
  67. 66 Hình 3.36b – Kiểu đóng gói chân linh kiện FG400 (nửa phải)
  68. 67 Hình 3.37a – Kiểu đóng gói chân linh kiện FG484 (nửa trái)
  69. 68 Hình 3.37b – Kiểu đóng gói chân linh kiện FG484 (nửa phải)
  70. 69 2.7. Ý nghĩa tên linh kiện: Hình 3.38; 3.39 và hình 3.40 cho ta thấy những ví dụ về ý nghĩa của tên linh kiện FPGA Spartan – 3E của hãng Xilinx. Mặt linh kiện được nhìn từ mặt trên xuống. Mã mặt nạ Mã chế tạo Công nghệ xử lý Kiểu linh kiện Kiểu đóng gói Mã ngày Phân loại tốc độ Mã lô hàng Giới hạn nhiệt độ Chân P1 Hình 3.38 – Một ví dụ về đóng gói linh kiện Spartan – 3E QFP Mã mặt nạ A1 BGA Mã chế tạo Mã xử lý Kiểu linh kiện Kiểu đóng gói Mã ngày Mã lô hàng Phân loại tốc độ Giới hạn nhiệt độ Hình 3.39 – Một ví dụ về đóng gói linh kiện Spartan – 3E BGA
  71. 70 A1 Kiểu linh kiện Mã lô hàng Mã ngày Giới hạn nhiệt độ Kiểu đóng gói C5 = CP132 C6 = CPG132 Phân loại tốc độ Mã mặt nạ Mã xử lý Mã chế tạo Hình 3.40 – Một ví dụ về đóng gói linh kiện Spartan – 3E CP132 và CPG132 Họ linh kện FPGA Spartan – 3E có hai kiểu đóng gói là kiểu chuẩn và kiểu Pb – free. Kiểu đóng gói Pb – free bao gồm một ký tự “G” kèm theo trong mã linh kiện. Nhìn vào kiểu đóng gói FPGA, ta sẽ biết được số cổng logic và số chân của FPGA. Kiểu đóng gói chuẩn: XC3S250E -4 FT 256 C Kiểu linh kiện Giới hạn nhiệt độ Số cổng logic Số chân FPGA Phân loại tốc độ Kiểu đóng gói Hình 3.41 – Ví dụ kiểu đóng gói chuẩn họ linh kiện FPGA Spartan – 3E Kiểu đóng gói Pb – Free XC3S250E -4 FT G 256 C Kiểu linh kiện Giới hạn nhiệt độ Số cổng logic Số chân FPGA Phân loại tốc độ Pb - free Kiểu đóng gói Hình 3.42 – Ví dụ kiểu đóng gói Pb-Free họ linh kiện FPGA Spartan – 3E
  72. 71 Bảng 3.16 cung cấp cho ta thấy chi tiết hơn về phân loại tốc độ, kiểu đóng gói, số chân và giới hạn nhiệt độ của họ linh kiện FPGA Spartan – 3E. Bảng 3.16 – Các thông số tốc độ, kiểu đóng gói, số chân và giới hạn nhiệt độ của họ linh kiện FPGA – Spartan – 3E Phân loại tốc độ -4 Hiệu suất chuẩn -5 Hiệu suất cao Kiểu đóng gói/số chân VQ100 và VQG100 100-pin Very Thin Quad Flat Pack (VQFP) CP132 và CPG132 132-ball Chip-Scale Package (CSP) TQ144 và TQG144 144-pin Thin Quad Flat Pack (TQFP) PQ208 và PQG208 208-pin Plastic Quad Flat Pack (PQFP) FT256 và FTG256 256-ball Fine-Pitch Thin Ball Grid Array (FTBGA) FG320 và FGG320 320-ball Fine-Pitch Ball Grid Array (FBGA) FG400 và FGG400 400-ball Fine-Pitch Ball Grid Array (FBGA) FG484 và FGG484 484-ball Fine-Pitch Ball Grid Array (FBGA) Giới hạn nhiệt độ (TJ) C Thương mại (0oC tới 85oC) I Công nghiệp (-40oC tới 100oC) 3. Lựa chọn phương án cấu hình cho FPGA: Từ đặc tính lưu trữ dữ liệu chương trình cho FPGA ta có thể lựa chọn phương án cấu hình cho FPGA dựa vào đặc tính lưu trữ dữ liệu đó. Cấu hình trực tiếp trên FPGA: chương trình sẽ mất đi sau khi mất nguồn điện, do đó phương pháp cấu hình này thường được sử dụng khi cần kiểm tra chương trình đã hoạt động đúng như yêu cầu đã thiết kế hay chưa, ứng dụng vào giảng dạy, học tập, Cấu hình chương trình trên phần tử nhớ: phương pháp cấu hình này được áp dụng để lưu giữ chương trình cho FPGA hoạt động trong các hệ thống ứng dụng cụ thể, sau khi đã test xong chương trình, Tùy thuộc vào từng thiết kế, ứng dụng cụ thể mà người dùng có thể lựa các các phương pháp cấu hình cho phần tử nhớ khác nhau như PROM, SPI, Card CF,
  73. 72 YÊU CẦU VỀ ĐÁNH GIÁ KẾT QUẢ HỌC TẬP BÀI 3:  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, tính năng và đặc tính của họ FPGA. Phương án cấu hình cho FPGA. - Về kỹ năng: phân biệt được các loại FPGA khác nhau. Xác định và lựa chọn linh kiện FPGA 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.
  74. 73 BÀI 4 QUY TRÌNH THIẾT KẾ CHO CPLD VÀ FPGA CỦA HÃNG XILINX Mã bài MĐ30 - 04 Giới thiệu: Xilinx là hãng chuyên sản xuất các họ FPGA và CPLD, giáo trình tập trung vào việc lập trình trên FPGA và CPLD của hãng Xilinx. Do đó, người học cần được trang bị những kiến thức cần thiết trong việc lựa chọn linh kiện sao cho phù hợp với yêu cầu, các qui trình để cấu hình và đổ chương trình vào FPGA, CPLD của hãng Xilinx. Mục tiêu: -Lựa chọn phương án thiết kế dùng CPLD và FPGA của Xinlinx - Trình bày qui trình thiết kế cho CPLD và FPGA của Xinlinx Nội dung chính: 1. Phương án lựa chọn CPLD và FPGA Mục tiêu: trình bày cho người học nắm rõ phương pháp phân tích để lựa chọn CPLD và FPGA phù hợp với từng ứng dụng cụ thể. Khi phát triển các hệ thống số sử dụng CPLD/FPGA bước đầu tiên cần được thực hiện là phân tích bài toán, lựa chọn vi mạch CPLD hoặc FPGA phù hợp. Việc chọn được vi mạch, công nghệ phù hợp nhất cho các tiêu chuẩn thiết kế, được tiến hành theo các yêu cầu sau:  Mật độ: là mật độ logic dự tính của linh kiện, đặc trưng bởi khái niệm "số lượng cổng".  Số lượng thanh ghi: Phải tính được số thanh ghi cần cho bộ đếm, máy trạng thái, thanh ghi và bộ chốt. Số lượng macrocell trong vi mạch tối thiểu phải bằng số thanh ghi cần có.  Số lượng chân vào/ra: phải xác định vi mạch thiết kế cần bao nhiêu đầu vào, bao nhiêu chân đầu ra.  Yêu cầu về tốc độ: Tuyến tổ hợp nhanh nhất sẽ xác định tpd (trễ truyền trong vi mạch, tính theo ns). Mạch tuần tự nhanh nhất sẽ xác định tần số tối đa của vi mạch (fMax).  Đóng gói: Phải xác định vi mạch cần gọn nhất hay chỉ sử dụng dạng thông thường. Hoặc vi mạch thiết kế thuộc dạng có lắp chân cắm.  Công suất thấp: Phải xác định sản phẩm sẽ sử dụng nguồn pin hay năng lượng mặt trời, thiết kế có yêu cầu công suất tiêu thụ thấp hay không, vấn đề tổn hao nhiệt có quan trọng hay không?
  75. 74  Chức năng cấp hệ thống: Phải xác định bo mạch có bao gồm nhiều vi mạch đa mức điện áp hay không, giữa các vi mạch có phải chuyển mức hay không, có yêu cầu sửa dạng xung clock hay không, có yêu cầu giao tiếp giữa bộ nhớ và bộ vi xử lý hay không? 2. Qui trình thiết kế cho CPLD của hãng Xilinx: Mục tiêu: trình bày cho người học nắm rõ qui trình thiết kế sử dụng CPLD của hãng Xilinx. Quá trình thiết kế cho CPLD chủ yếu là thực hiện trên các công cụ phần mềm, lưu đồ thiết kế chung cho CPLD như hình 4.1 (sử dụng phần mềm ISE), bao gồm các bước như sau:  Nhập thiết kế (Design Entry): Đây là bước đầu tiên và quan trọng nhất của quá trình thiết kế cho CPLD. Các công cụ thiết kế cho phép nhập thiết kế theo các cách sau: Nhập thiết kế theo sơ đồ nguyên lý Schematic: người thiết kế sử dụng các module đã có sẵn trong thư viện Schematic để ghép nối chúng với nhau tạo thành bản thiết kế theo yêu cầu, cách này có thể thực hiện thiết kế nhanh nhưng sẽ rất khó khăn và không tối ưu tài nguyên của CPLD khi thiết kế phức tạp, và thiết kế không sử dụng sang công cụ thiết kế CPLD của các hãng khác. Từ sơ đồ nguyên lý thiết kế được công cụ phần mềm chuyển thành file ngôn ngữ mô tả phần cứng HDL, mà phổ biến là VHDL và Verilog HDL. Nhập thiết kế sử dụng ngôn ngữ mô tả phần cứng HDL (VHDL, Verilog, ABEL, ): người thiết kế có thể sử dụng chương trình soạn thảo để thực hiện việc mô tả toàn bộ bản thiết kế của mình dưới dạng ngôn ngữ HDL nào đó mà công cụ thiết kế có thể tổng hợp được. Có rất nhiều phương pháp mô tả, mức độ trừu tượng khác nhau khi thiết kế, mỗi cách mô tả khác nhau có thể tạo ra một cấu trúc mạch khác nhau trong CPLD mặc dù chúng có cùng chức năng. Do đó, người thiết kế cần thực hiện phân tích bài toán, tìm hiểu tài nguyên, cấu trúc của CPLD, yêu cầu về thời gian thiết kế để sử dụng kiểu mô tả. Mức độ trừu tượng trong khi mô tả phù hợp vừa đảm bảo yêu cầu về thời gian thiết kế vừa tối ưu được việc sử dụng tài nguyên của CPLD. Nhập thiết kế dưới dạng sơ đồ: Công cụ thiết kế còn cho phép nhập thiết kế vào dưới dạng sơ đồ, mà điển hình là đồ hình trạng thái, sau đó chúng cũng được chuyển sang HD  Kiểm tra, mô phỏng thiết kế (Design Verification): thực hiện kiểm tra, mô phỏng chức năng hoạt động của thiết kế HDL đã được tạo ra ở trên. Các công cụ thiết kế đều hỗ trợ việc mô phỏng chức năng hoạt động của thiết kế HDL theo mô hình hoạt động, mô phỏng này độc
  76. 75 lập với loại CPLD đã được lựa chọn. Bước này có thể không cần phải thực hiện trong khi thiết kế.  Tổng hợp thiết kế (Design Synthesis): sau khi hoàn thành mô phỏng thiết kế, bước tổng hợp tiếp theo có nhiệm vụ chuyển thiết kế dưới dạng file văn bản HDL thành dạng file nestlist thực hiện mô tả mạch thực ở mức thấp dưới dạng cổng logic và kết nối giữa chúng với nhau. Có thể sử dụng các công cụ tổng hợp của các hãng khác nhau. Mỗi công cụ có thể tạo ra file netlist theo định dạng riêng, nhưng có thể đặt lựa chọn để tạo ra file netlist dưới dạng định dạng chuẩn EDIF (Electronic Digital Interchange Format) mà tất cả các công cụ có thể hiểu được.
  77. 76 Design Entry Schematic HDL State Machines ECS Verilog/VHDL StateCad Design Verification Functional Simulation Modelsim PE Student, ISIM Design Synthesis Xilinx Synthesis Tool XST Design Implementation Translate Map Palce and Route Timing Simalation Static Timing Analysis (ECS) Modelsim PE Student, ISIM Configuration Download (iMPACTE) Hình 4.1 – Lưu đồ thiết kế cho CPLD của hãng Xilinx
  78. 77  Thực thi thiết kế (Design Implementation): sau khi có file netlist, bước tiếp theo là thực thi thiết kế, nghĩa là xây dựng cấu hình cho CPLD. Bước này sử dụng file netlist và file ràng buộc “constraints File” (file mô tả các nguyên tắc thiết kế, các ràng buộc về tốc độ, thời gian, ) để tạo thiết kế sử dụng tài nguyên có sẵn của CPLD. Bước này bao gồm các bước: Translate (biên dịch), Map (phân bố bản thiết kế vào chip), Place and Route (Định vị và định tuyến). Translate: Bước này nhằm thực hiện kiểm tra thiết kế và đảm bảo netlist phù hợp với kiến trúc đã chọn, kiểm tra file ràng buộc "constraints File" của người sử dụng để phát hiện các lỗi mâu thuẫn với tham số của chip đã chọn. Biên dịch thường bao gồm các quá trình: tối ưu hoá, biên dịch thành các thành phần vật lý của thiết bị, kiểm tra ràng buộc thiết kế. Khi kết thúc bước biên dịch, sẽ có một bản báo cáo về các chương trình được sử dụng, danh sách các cổng I/O và các thiết bị được sử dụng trong thiết kế, nhờ đó người thiết kế sẽ lựa chọn được phương án thiết kế tối ưu. Map: tạo bản phân bố thiết kế tới các tài nguyên cụ thể trong CPLD. Nếu thiết kế quá lớn so với thiết bị được chọn, quy trình này không thể hoàn thành nhiệm vụ của mình. Quá trình Map có các tham số ràng buộc của thiết kế, ví dụ như tham số tốc độ, thời gian của thiết kế, và đôi khi quyết định gắn thêm các thành phần logic để đáp ứng các yêu cầu về thời gian. Map có khả năng thay đổi thiết kế xung quanh các bảng ánh xạ để tạo khả năng thực hiện tốt nhất cho thiết kế. Quy trình này được thực hiện hoàn toàn tự động và cần rất ít tác động đầu vào từ người sử dụng. Bước này nhằm đưa mạch thiết kế vào một thiết bị cụ thể. Bước này cũng tạo ra báo cáo xác nhận các tài nguyên được sử dụng trong chip, mô tả chính xác các phần trong thiết kế được đặt ở vị trí nào trong chip thực tế. Place and Route (PAR - Định vị trí và định tuyến kết nối): Place là quá trình lựa chọn vị trí phù hợp của mỗi khối chức năng trong thiết kế và đưa các cổng logic của phần đó vào các khối logic hay các module cụ thể trong CPLD trên cơ sở tối ưu việc kết nối và đảm bảo các ràng buộc về thời gian. Những phần logic hoạt động tốc độ cao sẽ được xếp cạnh nhau để giảm độ dài đường kết nối. Route là quá trình tạo liên kết vật lý giữa các khối logic. Hầu hết các nhà sản xuất cung cấp công cụ Place and Route tự động cho người sử dụng. Ngoài công cụ tự động, người thiết kế có thể tự Place and Route trong khi thiết kế. Nhà sản xuất cũng cung cấp các công cụ, như “Floorplanner”, để nâng cao hiệu suất quá trình Place and Route do người thiết kế thực hiện so với quá trình tự động.
  79. 78 Place and Route là quá trình phức tạp, do đó nó chiếm thời gian nhiều nhất. Tuy nhiên, bước này chỉ có thể hoạt động tốt nếu chip đã chọn đáp ứng đủ các tuyến liên kết cho thiết kế. Nếu không, người thiết kế sẽ phải chọn chip có dung lượng lớn hơn.  Timing Simulation (Mô phỏng có tham số thời gian): Sau bước Place and Route người thiết kế có thể thực hiện mô phỏng thiết kế ở mức cổng logic đã được định vị trí và định tuyến trên CPLD, để thực hiên mô phỏng hoạt động của thiết kế mà có tính đến các tham số thời gian trễ, thời gian thiết lập, của các cổng logic trong CPLD. Bước này rất quan trọng với những thiết kế phức tạp, tốc độ lớn.  Configuration (Cấu hình): Gọi chương trình điều khiển việc nạp cấu hình, thực hiện kết nối thiết bị nạp (cáp nạp) đến CPLD và nạp file cấu hình cho CPLD. Với CPLD của hãng Xilinx, quá trình lập trình có thể thực hiện ngay trong hệ thống nhờ công cụ JTAG, hoặc sử dụng bộ lập trình thiết bị chuyên dụng, ví dụ như công cụ JTAG Data I/O, theo chuẩn IEEE/ANSI 1149.1_1190. Công cụ JTAG là một bộ các nguyên tắc thiết kế, hỗ trợ quá trình kiểm tra, lập trình cho thiết bị và gỡ rối trên chip, trên bo mạch và trên hệ thống. Khả năng lập trình trên hệ thống là ưu điểm của CPLD, cho phép hàn trực tiếp thiết bị lên PCB. Nếu có thay đổi trong thiết kế, sẽ không phải tháo thiết bị ra khỏi bo mạch, mà đơn giản chỉ phải lập trình lại trên hệ thống. 3. Qui trình thiết kế cho FPGA của hãng Xilinx: Mục tiêu: trình bày cho người học nắm rõ qui trình thiết kế sử dụng FPGA của hãng Xilinx. Lưu đồ thiết kế cho FPGA cũng tương tự như lưu đồ thiết kế cho CPLD, chỉ khác ở bước cuối cùng - bước Cấu hình cho FPGA. Ở bước này, đối với FPGA có thêm bước "Create Bit file" để tạo ra file "bitstream" để nạp vào bộ nhớ cấu hình trong FPGA, thường là bộ nhớ tạm thời như SRAM. Dòng bit được nạp mang tất cả các thông tin để định nghĩa các hàm logic và các liên kết trong thiết kế. Mỗi thiết kế khác nhau có một dòng bit khác nhau. Các thiết bị SRAM mất toàn bộ thông tin mỗi khi ngắt nguồn, do đó khi cần thiết phải nạp dòng bit cấu hình này vào trong PROM (thường sử dụng PROM nối tiếp). Mỗi khi thiết bị được bật nguồn file cấu hình từ PROM sẽ được nạp tự động vào bộ nhớ SRAM của FPGA, và FPGA hoạt động theo cấu hình đã được nạp đó.
  80. 79 Configuration Create Bit file Download (iMPACTE) Hình 4.2 – Lưu đồ thiết kế cho FPGA của hãng Xilinx YÊU CẦU VỀ ĐÁNH GIÁ KẾT QUẢ HỌC TẬP BÀI 4:  Nội dung: - Về kiến thức: Trình bày được phương án lựa chọn CPLD và FPGA, qui trình thiết kế cho CPLD và FPGA của hãng Xilinx. - Về kỹ năng: Áp dụng qui trình thiết kế cho CPLD và FPGA của hãng Xilinx để lựa chọn CPLD và FPGA cho một thiết kế cụ thể. - 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.
  81. 80 BÀI 5 PHẦN MỀM ISE VÀ MODELSIM Mã bài: MĐ30 - 05 Giới thiệu Chương này là cung cấp cho người học những kiến thức về cách cài đặt và sử dụng chương trình ISE để sử dụng vào việc thiết kế và mô phỏng các kết quả thiết kế của mình. Cung cấp cho người học cách cài đặt và sử dụng phần mềm modelsim để mô phỏng các kết quả thiết kế của mình. Mục tiêu: - Trình bày cách sử dụng công cụ phần mềm phát triển hệ điều khiển CPLD và FPGA của Xilinx - Trình bày phần mềm ISE và phần mềm mô phỏng Modelsim - Sử dụng CPLD và FPGA của Xilinx để thực hiện mô hình cụ thể theo yêu cầu. Nội dung chính: 1. Cài đặt và khởi động ISE: Mục tiêu: trình bày và hướng dẫn cho người học cách để cài đặt và khởi động phần mềm ISE ứng dụng vào lập trình FPGA và CPLD của hãng Xilinx. Xilinx đã cung cấp các công cụ thiết kế hoàn chỉnh, cho phép thực hiện thiết kế trên các thiết bị logic khả trình của Xilinx. Các công cụ này kết hợp cộng nghệ tiên tiến với giao diện đồ họa linh hoạt, dễ sử dụng để người thiết kế có thể có được thiết kế tối ưu. Bộ công cụ phần mềm hiện tại đang sử dụng rộng rãi là ISE với nhiều phiên bản phần mềm khác nhau, các phiên bản sau được hỗ trợ thêm các dòng thiết bị mới. Trong chương này trình bày chi tiết về cách cài đặt và sử dụng phần mềm ISE 12.1 (phiên bản phần mềm 2010). Xilinx cũng cung cấp ISE dưới dạng các gói phần mềm có cấu hình khác nhau với giá thành khác nhau, tiêu biểu là ISE WebPACK và ISE Foundation:  ISE WebPACK: bản miễn phí có thể dùng để thiết kế cho tất cả các họ CPLD và một số họ FPGA của Xilinx.  Gói phần mềm Foundation: có thể thiết kế cho tất cả các loại FPGA và CPLD của Xilinx. Ngoài ra, Xilinx còn phát triển các bộ công cụ phần mềm tiện ích khác như System Generator hỗ trợ cho các thiết kế DSP, hay EDK (Embeded Development Kit) hỗ trợ cho các thiết kế nhúng.
  82. 81 Ta có thể tải phần mềm ISE WebPACK từ trang web: Để cài đặt chương trình ISE WebPACK 12.1 ta tiến hành các bước sau:  Từ folder chứa phần mềm ta kich đúp vào file setup, và làm theo các bước sau: - Chọn Next Hình 5.1 - Đánh dấu tick vào ô: i accept the terms of this software licence - Sau đó kích Next Hình 5.2
  83. 82 - Đánh dấu tick vào ô: i accept the terms of this software licence - Sau đó kích Next Hình 5.3 - Chọn ISE WebPACK sau đó nhấn Next Hình 5.4
  84. 83 - Chọn Next Hình 5.5 - Kích vào cửa sổ Browse để chọn đường dẫn chứa chương trình cài đặt sau đó kích Next Hình 5.6
  85. 84 - Kích Install Hình 5.7 - Sau khi chọn Install, chương trình bắt đầu được cài đặt như hình 5.8. Ta đợi cho đến khi quá trình cài đặt hoàn thành Hình 5.8
  86. 85 - Sau khi quá trình cài đặt hoàn thành, hộp thoại quản lý cấu hình của Xilinx sẽ xuất hiện để ta chọn các loại license khác nhau như hình 5.9. Hình 5.9 Ta có thể chọn một trong năm dạng license.  Start Now! -30 Day trial (No Bitstream): cho phép ta sử dụng miễn phí trong 30 ngày, và không tạo được Bitstream.  Get Free ISE Webpack License: Nhận license ISE WebPACK từ trang web của Xilinx.  Start 30 Day Evalation: Sử dụng phiên bản evaluation trong 30 ngày  Get My Purchased License (s): Mua license của Xilinx  Local Existing License (s): chọn tới đường dẫn chứa license có sẵn trong máy tính được cài đặt. Với license có sẵn trong máy tính ta chọn Locate Existing License (s), sau đó chọn Next, khi đó sẽ xuất hiện hộp thoại như hình 5.10.
  87. 86 Hình 5.10 - Ta kích vào Copy License, sau đó chọn đến đường dẫn chứa file License như hình 5.11, sau đó nhấn Open để hoàn thành quá trình cài đặt. Hình 5.11
  88. 87 Sau khi cài đặt xong, ta kích vào biểu tượng Xilinx ISE Design Suite 12.1 trên màn hình máy tính (hình 5.12a) hoặc vào Start -> All Programs -> Xilinx ISE Design Suite 12.1 -> ISE Design Tool -> Project Navigator (hình 5.12b) để khởi động ISE. (a) (b) Hình 5.12– Khởi động ISE 12.1 Sau khi khởi động ISE sẽ xuất hiện giao diện chương trình ISE với các cửa sổ soạn thảo như hình 5.13. Cửa sổ quản lý source và project Cửa sổ soạn thảo Cửa sổ thông báo Hình 5.13 – Giao diện chương trình ISE 12.1
  89. 88 2. Tạo Project trên ISE: Mục tiêu: trình bày cho người học cách thức để tạo Project trên ISE. Để tạo project trên ISE ta vào File -> New Project, khi đó sẽ xuất hiện hộp thoại như hình 5.14. Hình 5.14  Tại vùng Name: ta đặt tên của project  Location và Working Directory: tên thư mục chứa project - Sau đó chọn Next, sẽ xuất hiện hộp thoại thiết lập cho project như hình 5.15. - Sau khi đã thiết lập cho project, nếu ta muốn thay đổi thiết lập thì kích chuột phải vào cửa sổ quản lý project và chọn Design Properties. Hình 5.15 – Cửa sổ thiết lập cho project
  90. 89 Trong đó:  Family: ta chọn họ linh kiện  Device: chọn tên linh kiện  Package: chọn dạng đóng gói của linh kiện  Speed: chọn tốc độ  Synthesis Tool: chọn công cụ tổng hợp  Simulator: chọn công cụ mô phỏng, có thể sử dụ Isim VHDL/Verilog đã được tích hợp sẵn trong ISE hay công cụ mô phỏng Modelsim.  Preferred Language: ngôn ngữ viết chương trình, ở đây ta viết bằng chương trình Verilog, do đó ta chọn Verilog. - Sau đó kích Next và finish thì quá trình tạo một project hoàn thành như hình 5.16 Hình 5.16
  91. 90 - Để add chương trình có sẵn vào project ta kích chuột phải vào cửa sổ quản lý project, sau đó chọn Add Source như hình 5.17. Khi đó sẽ xuất hiện hộp thoại để ta add source chương trình đã tạo ra trước đó vào project. Hình 5.17 – Add source chương trình có sẵn vào project - Để thêm một source chương trình mới vào project ta kích chuột phải vào cửa sổ quản lý project, sau đó chọn New Source. Khi đó sẽ xuất hiện hộp thoại như hình 5.18. Ta đặt tên soure mới vào File name. Hình 5.18 – Thêm new source vào project Trong đó:  IP (CORE Generator & Architecture Wizard): tạo IP CORE có sẵn từ ISE  Schematic: tạo một schematic mới  Verilog Module: tạo một soure chương trình Verilog mới  Verilog Test Fixture: tạo soure chương trình mô phỏng Verilog mới  VHDL Module: Tạo source chương trình VHDL mới
  92. 91  VHDL Test Bench: tạo testbench cho module VHDL Ở đây, ta viết chương trình bằng ngôn ngữ Verilog cho nên ta quan tâm chủ yếu là IP (CORE Generator & Architecture Wizard), Verilog Module và Verilog Test Fixture. - Để tạo Verilog Module mới ta chọn Verilog Module, đặt tên vào ô file name sau đó kích Next, sẽ xuất hiện hộp thoại như hình 5.19 để ta khai báo các ngõ vào ra. Ta kích Next để bỏ qua bước này. Hình 5.19 – Đặt tên ngõ vào ra của new source - Sau đó kích finish thì một source chương trình mới được tạo ra như hình 5.20. Hình 5.20 – Màn hình soạn thảo của new source
  93. 92 - Để tạo source chương trình mô phỏng bằng Verilog ta làm tương tự như tạo source chương trình Verilog mới, nhưng thay vì chọn Verilog Module ta chọn Verilog Test Fixture, sau đó chọn Next sẽ xuất hiện hộp thoại như hình 5.21. Ta chọn module cần tạo file mô phỏng (ở đây là soure chương trình a), sau đó kích Next và finish thì Hình 5.21 một source chương trình mô phỏng cho chương trình a sẽ được tạo ra như hình 5.22. Hình 5.22 – Cửa sổ soạn thảo chương trình mô phỏng 3. Cài đặt và khởi động Modelsim: Mục tiêu: trình bày và hướng dẫn cho người học cách để cài đặt và khởi động phần mềm Modelsim ứng dụng vào lập trình FPGA và CPLD của hãng Xilinx.
  94. 93 Modelsim là công cụ hỗ trợ mô phỏng của Mentor Graphics Corporation, cho phép mô phỏng kết quả thực thi thiết kế trên ISE, mô tả cho ta thấy dạng sóng, số liệu, của các tín hiệu trong chương trình. Modelsim có nhiều dạng khác nhau như Modelsim SE, Modelsim PE, và mỗi dạng có nhiều phiên bản khác nhau như Modelsim SE 6.1a, Modelsim SE 6.3b, Modelsim SE 6.5a, Modelsim PE 6.1a, Modelsim- pe_student_edition 10.1a, Trong đó Modelsim-pe_student_edition là phiên bản cung cấp license miễn phí cho sinh viên nghiên cứu và học tập (download từ website: Để cài đặt Modelsim-pe_student_edition 10.1a, ta kích đúp vào file chương trình modelsim-pe_student_edition.exe, khi đó chương trình Modelsim-pe_student_edition sẽ bắt đầu được cài đặt (hình 5.23). Hình 5.23 - Bắt đầu cài đặt modelsim-pe_student_edition Sau khi quá trình cài đặt được khởi tạo, sẽ xuất hiện hộp thoại như hình 5.24, ta chọn Next để tiếp tục quá trình cài đặt. Hình 5.24
  95. 94 Sau khi chọn Next sẽ xuất hiện hộp thoại như hình 5.25, ta tiếp tục chọn Yes để tiếp tục quá trình cài đặt. Hình 5.25 Sau khi chọn Yes, sẽ xuất hiện hộp thoại như hình 5.26, hộp thoại này cho phép ta thay đổi đường dẫn chứa chương trình cài đặt. Sau khi thay đổi xong ta chọn Next. Hình 5.26 – Chọn đường dẫn chứa chương trình cài đặt
  96. 95 - Chọn Next Hình 5.27 - Sau khi chọn Next, chương trình chính bắt đầu được cài đặt như hình 5.28, ta đợi cho đến khi chương trình cài đặt được hoàn thành. Hình 5.28
  97. 96 - Sau khi quá trình cài đặt hoàn thành, chương trình hỏi ta có tạo Shortcut trên desktop không (hình 5.29) , nếu ta muốn tạo thì chọn Yes, còn không muốn tạo thì chọn No. Hình 5.29 - Chọn Yes để add đường dẫn cho chương trình modelsim vừa được cài đặt (hình 5.30). Hình 5.30 – Add đường dẫn cho modelsim
  98. 97 - Sau khi add đường dẫn xong, ta chọn finish để kết thúc quá trình cài đặt modelsim, đồng thời tại thời điểm đó chương trình sẽ dẫn đường link tới website của Mentor Graphics Corporation để ta điền thông Hình 5.31 – Kết thúc cài đặt và yêu cầu license tin yêu cầu license. Sau khi đã nhận được license qua email, ta copy license vào thư mục chương trình modelsim vừa cài đặt, sau đó thiết lập môi trường biến và license cho modelsim theo các bước như sau:  Kích chuột phải vào My computer, chọn Properties (hình 5.32). Hình 5.32
  99. 98  Sau khi hộp thoại System Properties xuất hiện, ta vào Advanced, chọn Enviroment Variables (hình 5.33). Hình 5.33  Từ hộp thoại Enviroment Variables ta chọn New (hình 5.34), sau đó: - Tại vùng Variable name: ta điền: LM_LICENSE_FILE - Tại vùng Variable value: ta chọn đường dẫn tới file license đã nhận trước đó. - Sau đó nhấn Ok để kết thúc việc thiết lập license. Hình 5.34 Chú ý là, để yêu cầu và nhận được license qua email, thì trong quá trình cài đặt máy tính phải được kết nối internet.
  100. 99 Sau khi cài đặt xong modelsim, ta có thể khởi động modelsim bằng nhiều cách khác nhau:  Ta vào: Start -> All Program -> Modelism PE Student Edition 10.1a -> Modelsim  Khởi động modelsim bằng cách kích vào biểu tượng của modelsim trên desktop (hình 5.35) Hình 5.35 – Biểu tượng Modelsim trên desktop  Khởi động modelsim bằng cách link từ ISE 4. Mô phỏng dạng sóng trên ISE và Modelsim: Mục tiêu: trình bày và hướng dẫn cho người học cách thức để mô phỏng dạng sóng, kết quả trên phần mềm ISE và Modelsim. 4.1. Mô phỏng trên ISE: Phần mềm ISE cung cấp cho ta một công cụ hỗ trợ mô phỏng tích hợp sẵn trong ISE là Isim (VHDL/Verilog). Để thiết lập link mô phỏng gọi chương trình ISim có sẵn trong ISE, ta khởi động ISE lên, sau đó kích chuột phải vào cửa sổ quản lý project chọn Design Properties, khi đó một cửa sổ mới được mở ra như hình 5.36. Hình 5.36 – Thiết lập cho project
  101. 100 Tại mục Simulator ta chọn ISim (VHDL/Verilog), sau đó nhấn ok. Để bắt đầu quá trình mô phỏng, trên ISE ta chọn Simulation, sau đó chọn file chương trình cần mô phỏng như hình 5.37. Hình 5.37 – Chọn file cần mô phỏng Sau khi chọn file chương trình cần mô phỏng, ta kích đúp vào biểu tượng mô phỏng Simulate Behavioral Model trong cửa sổ Processes để gọi chương trình mô phỏng ISim như hình 5.38. Hình 5.38 – Gọi chương trình mô phỏng
  102. 101 Sau khi gọi chương trình mô phỏng ISim, cửa sổ giao diện chương trình ISim sẽ được mở lên với các các vùng soạn thảo như hình 5.39. Vùng quản lý source Giá trị của tín hiệu hiện thời Dạng sóng của tín hiệu mô phỏng Vùng quản lý tên của tín hiệu Vùng lệnh Hình 5.39 – Giao diện chương trình ISim Vùng quản lý Source: cho phép ta truy cập vào nội dung của source chương trình. Để đọc nội dung của một source chương trình, ta kích đúp vào tên của source chương trình cần đọc thì nội dung của source đó sẽ hiện ra (hình 5.40). Hình 5.40 – Đọc nội dung của source chương trình
  103. 102 Vùng quản lý tên của tín hiệu (Name), vùng giá trị hiện thời của tín hiệu (Value) và vùng dạng sóng của tín hiệu mô phỏng cho phép ta theo dõi, phân tích và thao tác trên dạng sóng của tín hiệu. Để copy, xóa, cắt hay sửa lại tên của tín hiệu nào thì ta kích chuột phải vào tên hay dạng sóng của tín hiệu đó như hình 5.41. Trong đó: - Cut: cho phép ta cắt tín hiệu - Copy: cho phép copy tín hiệu - Delete: cho phép xóa tín hiệu - Rename: sửa tên của tín hiệu Hình 5.41 – Thao tác trên dạng sóng của tín hiệu Khi khởi tạo mô phỏng, thì mặc định dữ liệu sẽ được hiện dưới dạng kiểu dữ liệu nhị phân, để thay đổi kiểu dữ liệu của tín hiệu nào ta kích chuột phải vào tín hiệu đó, sau đó chọn Radix, khi đó sẽ xuất hiện một danh sách các kiểu dữ liệu để ta lựa chọn như hình 5.42.
  104. 103 Trong đó: - Binary: kiểu nhị phân - Hexadecimal: kiểu thập lục phân - Unsigned Decimal: kiểu thập phân không dấu - Signed Decimal: kiểu thập phân có dấu - Octal: kiểu octal - ASCII: kiểu mã ASCII Hình 5.42 – Chọn kiểu dữ liệu cho tín hiệu Mặc định, khi khởi tạo thì màu sắc của tất cả các dạng sóng là giống nhau. Do đó, nếu trong quá trình mô phỏng có nhiều dạng sóng thì vấn đề quan sát trở nên khó khăn, vì vậy ISim cho phép ta thay đổi màu sắc của dạng sóng để dễ dàng quan sát hơn. Để thay đổi màu của dạng sóng, ta kích chuột phải vào dạng sóng cần quan sát, sau dó chọn Signal Color, khi đó sẽ hiện ra một danh sách các màu sắc để ta lựa chọn như hình 5.43. Hình 5.43 – Thay đổi màu sắc của dạng sóng tín hiệu
  105. 104 Trong quá trình quan sát dạng sóng, nếu có quá nhiều dạng sóng, lúc đó ta muốn quan sát dạng sóng nào thì ta kích chuột phải vùng quản lý tên dạng sóng và chọn Find (hình 5.44a), sau đó gõ tên dạng sóng cần quan sát vào vùng Find, sau đó nhấn enter sẽ hiện ra dạng sóng mà ta cần tìm (hình 5.44b). (a) (b) Hình 5.44 – Tìm dạng sóng Để biết được tín hiệu mà ta đang quan sát được xử lý ở đâu trong chương trình thì ta kích chuột phải vào dạng sóng đó (hình 5.45a) sau đó chọn Go To Source Code, khi đó chương trình sẽ chỉ tới tín hiệu mà ta cần biết xử lý ở đâu trong chương trình (hình 5.45b). (a) (b) Hình 5.45 – Link từ dạng sóng tới chương trình
  106. 105 Đối với những tín hiệu nhiều bit, khi đó trạng thái mà ta quan sát được là giá trị của nhiều bit. Để quan sát giá trị của từng bit ta kích vào tín hiệu đó như hình 5.46. Hình 5.46 – Quan sát giá trị của từng bit Trong trường hợp ta chưa quan sát được trạng thái của dạng sóng mà ta cần quan sát do thời gian của mô phỏng ngắn hơn thời điểm trạng thái đó xuất hiện, lúc đó để quan sát trạng thái này, ta vào Simulation chọn Run All (hình 5.47a), sau đó muốn ngừng mô phỏng lúc nào ta vào Simlation và chọn break (hình 5.47b). (b) (a) Hình 5.47 – (a): Chạy mô phỏng Run All, (b): Ngừng mô phỏng
  107. 106 Nếu ta không muốn chạy mô phỏng Run All, thì ta chạy mô phỏng theo từng bước cho đến khi có được số liệu mà ta cần quan sát. Để chạy mô phỏng từng bước ta vào Simulation và chọn Step hoặc Run như hình 5.48. Hình 5.48 – Chạy mô phỏng từng bước Để chia dạng sóng thành những khoảng thời gian nhỏ đều nhau, ta chọn Add Marker, khi đó tín hiệu sẽ được chia thành các khoảng thời gian nhỏ đều nhau như hình 5.49(a). Trong quá trình quan sát, nếu ta muốn xóa Add Marker nào ta kích chuột phải vào Add Marker đó và chọn Delete Marker (hình 5.49b), còn nếu muốn xóa hết Add Marker thì ta chọn Delete All Markers (hình 5.49b). (a) (b) Hình 5.49 – Chia tín hiệu quan sát thành các khoảng thời gian bằng nhau
  108. 107 Khi ta muốn nới rộng dạng sóng quan sát ở vùng nào, ta kéo và giữ chuột giữa ở vùng đó (hình 5.50a), khi đó dạng sóng ở vùng đó sẽ được nới rộng ra hình (5.50b). (b) (a) Hình 5.50 – Nới rộng dạng sóng Ngoài ra ISim còn hỗ trợ nhiều chức năng khác nữa như; zoom in, zoom out, và một số chức năng khác để thao tác trên dạng sóng như những phần mềm khác. 4.2. Mô phỏng trên modelsim: Để thiết lập link mô phỏng gọi chương trình modelism_pe_student, ta khởi động ISE lên, sau đó kích chuột phải vào cửa sổ quản lý project chọn Design Properties, khi đó một cửa sổ mới được mở ra như hình 5.51. Hình 5.51 – Thiết lập chọn chương trình mô phỏng
  109. 108 Tại mục Simulator ta chọn Modelsim_PE Verilog sau đó nhấn ok. Để bắt đầu quá trình mô phỏng, trên ISE ta chọn Simulation, sau đó chọn file chương trình cần mô phỏng như hình 5.52. Hình 5.52 – Chọn file cần mô phỏng Sau khi chọn file chương trình cần mô phỏng, ta kích đúp vào biểu tượng mô phỏng Simulate Behavioral Model trong cửa sổ Processes để gọi chương trình mô phỏng modelsim_pe_student như hình 5.53. Hình 5.53 – Gọi chương trình mô phỏng Sau khi gọi chương trình mô phỏng modelim_pe_student, cửa sổ giao diện chương trình modelsim_pe_student sẽ được mở lên với các các vùng soạn thảo như hình 5.54.
  110. 109 Vùng quản lý dạng sóng Vùng quản lý source Vùng hiển thị tín hiệu I/O Dạng sóng của tín và các tín hiệu khác hiệu mô phỏng Vùng quản lý tên của Giá trị hiện thời của tín hiệu tín hiệu Vùng hiển thị source chương trình Vùng lệnh Hình 5.54 – Giao diện chương trình modelsim_pe_student Vùng quản lý Source: cho phép ta truy cập vào nội dung của source chương trình. Để đọc nội dung của một source chương trình, ta kích đúp vào tên của source chương trình cần đọc thì nội dung của source đó sẽ hiện ra ở vùng hiển thị source chương trình như hình 5.55. Hình 5.55 – Đọc nội dung của source chương trình Vùng quản lý tên của tín hiệu, vùng giá trị hiện thời của tín hiệu và vùng dạng sóng của tín hiệu mô phỏng cho phép ta theo dõi, phân tích và thao tác trên dạng sóng của tín hiệu.
  111. 110 Để copy, xóa, cắt hay sửa lại tên của tín hiệu nào thì ta kích chuột phải vào tên hay dạng sóng của tín hiệu đó sau đó chọn Edit như hình 5.56. Trong đó: - Cut: cho phép ta cắt tín hiệu - Copy: cho phép copy tín hiệu - Delete: cho phép xóa tín hiệu - Paste: dán tín hiệu đã cắt hoặc copy Hình 5.56 – Thao tác trên dạng sóng của tín hiệu Khi khởi tạo mô phỏng, thì mặc định dữ liệu sẽ được hiện dưới dạng kiểu dữ liệu nhị phân, để thay đổi kiểu dữ liệu của tín hiệu nào ta kích chuột phải vào tín hiệu đó, sau đó chọn Radix, khi đó sẽ xuất hiện một danh sách các kiểu dữ liệu để ta lựa chọn như hình 5.57. Trong đó: - Binary: kiểu nhị phân - Octal: kiểu dữ liệu octal - Decimal: kiểu thập phân có dấu - Hexadecimal: kiểu thập lục phân - Unsigned: kiểu thập phân không dấu - ASCII: kiểu mã ASCII - Time: kiểu time Hình 5.57 – Chọn kiểu dữ liệu cho tín hiệu
  112. 111 Mặc định, khi khởi tạo thì màu sắc của tất cả các dạng sóng là giống nhau. Do đó, nếu trong quá trình mô phỏng có nhiều dạng sóng thì vấn đề quan sát trở nên khó khăn, vì vậy modelsim cho phép ta thay đổi màu sắc của dạng sóng để dễ dàng quan sát hơn. Để thay đổi màu của dạng sóng, ta kích chuột phải vào dạng sóng cần quan sát, sau đó chọn Properties như hình 5.58a, khi đó sẽ xuất hiện hộp thoại như hình 5.58b. Từ hộp thoại này, trong vùng Wave Color, ta chọn Colors sẽ hiện ra danh sách bảng màu để ta chọn màu sắc cần thay đổi, còn muốn thay đổi màu của tên dạng sóng thì trong vùng Name Colors ta chọn Color để thay đổi màu của tên dạng sóng. (a) (b) Hình 5.58 – Thay đổi màu sắc của dạng sóng tín hiệu Để quan sát dạng sóng ở dạng tín hiệu analog thì ta kích chuột phải vào tên dạng sóng, sau đó chọn Format -> Analog như hình 5.59. Để quay lại dạng sóng dưới dạng tín hiệu số ta chọn Literal. Chú ý là tín hiệu 1 bit không quan sát được dưới dạng tín hiệu analog. Hình 5.59 – Lựa chọn quan sát tín hiệu dưới dạng số hoặc tương tự
  113. 112 Trong quá trình quan sát dạng sóng, nếu có quá nhiều dạng sóng, lúc đó ta muốn quan sát dạng sóng nào thì ta sử dụng công cụ tìm kiếm dạng sóng đó. Để tìm kiếm dạng sóng, ta vào Edit -> Find, khi đó sẽ xuất hiện ô tìm kiếm dạng sóng như hình 5.60, ta gõ tên dạng sóng cần tìm thì chương trình sẽ link tới tên dạng sóng đó Hình 5.60 – Tìm dạng sóng Đối với những tín hiệu nhiều bit, khi đó trạng thái mà ta quan sát được là giá trị của nhiều bit. Để quan sát giá trị của từng bit ta kích vào tín hiệu đó như hình 5.61
  114. 113 Hình 5.61 – Quan sát giá trị của từng bit Trong trường hợp ta chưa quan sát được trạng thái của dạng sóng mà ta cần quan sát do thời gian của mô phỏng ngắn hơn thời điểm trạng thái đó xuất hiện, lúc đó để quan sát trạng thái này, ta vào Simulation ->Run-> Run All (hình 5.62a), sau đó muốn ngừng mô phỏng lúc nào ta sẽ vào Simlation và chọn break (hình 5.62b). (a) (b) Hình 5.62 – (a): Chạy mô phỏng Run All, (b): Ngừng mô phỏng
  115. 114 Trong trường hợp sau khi ngừng mô phỏng, ta muốn chạy tiếp chương trình mô phỏng ta vào Simulation - >Run-> Run All và chọn Continue. Hình 5.63 – Chạy tiếp chương trình mô phỏng Nếu ta không muốn chạy mô phỏng Run All, thì ta chạy mô phỏng theo từng bước cho đến khi có được số liệu mà ta cần quan sát. Để chạy mô phỏng từng bước ta vào Simulation và chọn Run 100 hoặc Run-Next như hình 5.64. Hình 5.64 – Chạy mô phỏng từng bước Để phân chia dạng sóng thành những khoảng khác nhau, ta kích vào Insert Cursor (hình 5.65) khi đó các cursor được thêm vào như hình 5.65. Trong trường hợp muốn xóa các cursor thì ta kích vào Delete Cursor.
  116. 115 Hình 5.65 – Chia dạng sóng thành các khoảng khác nhau Khi ta muốn nới rộng dạng sóng quan sát ở vùng nào, ta giữ và kéo chuột giữa ở vùng đó (hình 5.66a), khi đó dạng sóng ở vùng đó sẽ được nới rộng ra hình (5.66b). (a) (b) Hình 5.66 – Nới rộng dạng sóng Để đọc dữ liệu của một tín hiệu trong quá trình thực thi mô phỏng thì ta kích chuột phải vào dạng sóng chọn Add -> To List -> Selected Items như hình 5.67.
  117. 116 Hình 5.67 – Đọc dữ liệu của tín hiệu Khi đó sẽ xuất hiện hộp thoại List – Default (hình 5.68) hiển thị các giá trị của tín hiệu trong quá trình mô phỏng. Hình 5.68 – Đọc dữ liệu của tín hiệu mô phỏng
  118. 117 Để biết tín hiệu mình đang xử lý ở trong Dataflow thì ta kích chuột phải vào dạng sóng và chọn Add -> To Dataflow -> Selected Items như hình 5.69. Hình 5.69 – Lựa chọn tín hiệu tới Dataflow Khi đó cửa sổ Dataflow được mở ra, hiển thị cho ta biết tín hiệu mà chúng ta muốn biết trong Dataflow như hình 5.70. Hình 5.70 – Hiển thị tín hiệu trong Dataflow
  119. 118 Để hiển thị toàn bộ tín hiệu và sơ đồ kết nối schematic từ chương trình mà ta đã viết, thì ta chọn toàn bộ tín hiệu, sau đó vẫn chọn Add -> To Dataflow -> Selected Items như ở bước trên, thì toàn bộ tín hiệu và kết nối schematic từ chương trình mà ta đã viết xuất hiện như hình 5.71. Hình 5.71 – Hiển thị tất cả các tín hiệu và schematic trong Dataflow Dataflow cũng chính là nơi chỉ ra cho ta thấy sơ đồ mạch điện thiết kế của chương trình mà ta đã viết. Để hiển thị dạng sóng trong cửa sổ Dataflow, ta chọn Show Wave như hình 5.72. Hình 5.72 chọn Show Wave trong Dataflow Khi đó, trong cửa sổ Dataflow sẽ hiển thị dạng sóng mô phỏng như hình 5.73.
  120. 119 Hình 5.73 – Hiển thị dạng sóng trong Dataflow Trong cửa sổ Dataflow, khi ta kích vào chân tín hiệu hay một khối trong schematic thì trong vùng quản lý dạng sóng sẽ link tới tín hiệu hay khối đó và ngược lại. Để tao tác hiển thị toàn bộ hay một phần schematic trong Dataflow ta có thể thực hiện các công cụ thao tác như trong hình 5.74. Thao tác để hiển thị toàn bộ hay một phần sơ đồ mạch Hình 5.74 – Thao tác để hiển thị toàn bộ hay một phần mạch trong Dataflow
  121. 120 Để xuất tín hiệu ra dưới dạng file ảnh, thì ta vào Edit -> Export -> Image, khi đó một hộp thoại xuất hiện như hình 5.75, ta điền tên cần lưu vào ô File name, và chọn nơi để lưu phai ảnh, sau đó nhấn Save. Hình 5.75 – Xuất dạng sóng ra file ảnh Để xem và biết các khối lệnh, thanh ghi, đã sử dụng trong chương trình, thì trong modelsim ta chọn Capacity, khi đó cửa sổ Capacity sẽ hiện ra cho ta thấy số lượng các khối lệnh, thanh ghi, đã sử dụng trong chương trình như hình 5.76 Hình 5.76 – Cửa sổ Capacity
  122. 121 Để tao tác các bước mô phỏng, ngừng mô phỏng, trước đó thì ta có thể vào của sổ quản lý lệnh như hình 5.77, sau đó dùng phím di chuyển lên xuống trên bàn phím để chọn lệnh Hình 5.77 – Gọi lệnh từ cửa sổ lệnh trong sau đó nhấn enter thì modelsim chương trình sẽ được thực thi. Ngoài những thao tác trong việc sử dụng phần mềm modelsim như đã trình bày ở trên, thì modelsim còn hỗ trợ nhiều chức năng và nhiều phím tắt khác, người học có thể khai thác thêm trên phần mềm modelsim. 5. Gán chân thích ứng với thiết bị: Mục tiêu: trình bày và hướng dẫn người học cách thức để gán chân vào vi mạch FPGA và CPLD của hãng Xilinx. Trong giai đoạn Translate, thì Netlist của chương trình được biên dịch thành dạng EDIF (Electronic Device Interchangeable Format) hoặc định dạng NGC (một định dạng netlist riêng của Xilinx), sau đó kết hợp với hai file quy định ràng buộc của thiết kế.  NFC (Native Constraint File): chứa những thông tin vật lý về thời gian, tốc độ, các tham số vật lý ký sinh, của chip FPGA là đối tượng sẽ tiến hành cấu hình.  UCF (User Contraint File): chữa những ràng buộc yêu cầu từ phía người dùng thiết kế với vi mạch của mình. UCF được xem là một phần quan trọng trong thiết kế, nếu như mô tả chức năng chỉ qui định mạch định làm gì thì trong file UCF sẽ chứa những yêu cầu đòi hỏi về tốc độ (timing contraint) cũng như mức độ sử dụng tài nguyên. Các yêu cầu này là cơ sở cho các quá trình biên dịch trong ISE tối ưu hóa thiết kế. Để có thể viết được những yêu cầu này thì người thiết kế trước hết phải rất hiểu thiết kế của mình, chẳng hạn như trong thiết kế có dùng những tín hiệu xung nhịp như thế nào, khu vực tổ hợp nào có khả năng gây ra thời gian trễ nhất và ước tính được giá trị của độ trễ. Việc gán chân trong FPGA do người dùng thiết kế, do đó trong file UCF có chứa các qui định về việc gán chân tương thích với thiết bị. Cách gán chân này phụ thuộc vào từng loại FPGA và từng mạch ứng dụng FPGA cụ thể. Việc gán chân trong Verilog được thực hiện theo cấu trúc câu lệnh như sau: (*LOC = “Chân thiết bị”*) loại_tín_hiệu tên_tín_hiệu;