Báo cáo Nghiên cứu thiết kế các module mở rộng cho kít FPGA và xây dựng các bài thực hành (Phần 1)

pdf 22 trang phuongnguyen 80
Bạn đang xem 20 trang mẫu của tài liệu "Báo cáo Nghiên cứu thiết kế các module mở rộng cho kít FPGA và xây dựng các bài thực hành (Phần 1)", để 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:

  • pdfbao_cao_nghien_cuu_thiet_ke_cac_module_mo_rong_cho_kit_fpga.pdf

Nội dung text: Báo cáo Nghiên cứu thiết kế các module mở rộng cho kít FPGA và xây dựng các bài thực hành (Phần 1)

  1. BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH CÔNG TRÌNH NGHIÊN CỨU KHOA HỌC CẤP TRƯỜNG NGHIÊN CỨU THIẾT KẾ CÁC MODULE MỞ RỘNG CHO KÍT FPGA VÀ XÂY DỰNG CÁC BÀI THỰC HÀNH MÃ SỐ: T2013- 02 S K C0 0 5 3 8 6 Tp. Hồ Chí Minh, 2013
  2. BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH BÁO CÁO TỔNG KẾT ĐỀ TÀI KH&CN CẤP TRƯỜNG NGHIÊN CỨU THIẾT KẾ CÁC MODULE MỞ RỘNG CHO KÍT FPGA VÀ XÂY DỰNG CÁC BÀI THỰC HÀNH MÃ SỐ: T2013- 02 Chủ nhiệm đề tài: GV.THS. TRƯƠNG THỊ BÍCH NGÀ TP. HCM, 12/2013
  3. TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH KHOA ĐIỆN – ĐIỆN TỬ BÁO CÁO TỔNG KẾT ĐỀ TÀI KH&CN CẤP TRƯỜNG NGHIÊN CỨU THIẾT KẾ CÁC MODULE MỞ RỘNG CHO KÍT FPGA VÀ XÂY DỰNG CÁC BÀI THỰC HÀNH MÃ SỐ: T2013 - 02 Chủ nhiệm đề tài: GV.THS. TRƯƠNG THỊ BÍCH NGÀ TP. HCM, 12/2013 Trang 1
  4. DANH SÁCH NHỮNG THÀNH VIÊN THAM GIA NGHIÊN CỨU ĐỀ TÀI VÀ ĐƠN VỊ PHỐI HỢP CHÍNH 1. Các thành viên tham gia gồm có 1. GVC.THS. NGUYỄN ĐÌNH PHÚ 2. Các đơn vị phối hợp Trang 2
  5. MỤC LỤC Mở đầu . 10 Tình hình nghiên cứu trong và ngoài nước. 10 Tính cấp thiết – mục tiêu. 10 Cách tiếp cận. 11 Phương pháp nghiên cứu 11 Đối tượng và phạm vi nghiên cứu . 11 Nội dung nghiên cứu . 11 Chương 1: CÔNG NGHỆ FPGA & NGÔN NGỮ PHẦN CỨNG VHDL 1.1 CÔNG NGHỆ FPGA 12 1.1.1 Lịch sử phát triển của FPGA 12 1.1.2 Khái niệm cơ bản và cấu trúc của FPGA 12 1.1.3 Các ứng dụng của FPGA 14 1.1.4 So sánh FPGA với một số mạch lập trình được 16 1.2 NGÔN NGỮ PHẦN CỨNG VHDL 17 1.2.1 Giới thiệu 17 1.2.2 Giới thiệu công nghệ (và ứng dụng) thiết kế mạch bằng VHDL 20 Chương 2: GIỚI THIỆU KIT DILIGENT NEXYS 2 SPARTAN-3E 24 2.1 TỔNG QUAN VỀ BOARD NEXYS 2 24 2.2 NGUỒN CUNG CẤP CHO BOARD 25 2.3 CẤU HÌNH FPGA VÀO PLATFORM FLASH 26 2.4 CLOCK 28 2.5 CỔNG NỐI TIẾP 31 2.6 BỘ NHỚ 31 Chương 3: KHẢO SÁT CÁC VI MẠCH THANH GHI DỊCH 34 3.1 GIỚI THIỆU 34 3.2 KHẢO SÁT CÁC VI MẠCH THANH GHI 34 3.2.1 Khảo sát vi mạch 74HC595 35 3.2.2 Khảo sát vi mạch MBI5026 36 Chương 4: THIẾT KẾ MODULE MỞ RỘNG 37 4.1 YÊU CẦU THIẾT KẾ 37 4.2 KHỐI GIAO TIẾP 37 Trang 3
  6. 4.3 KHỐI THANH GHI DỊCH 38 4.4 KHỐI LED ĐƠN 39 4.5 KHỐI LED 7 ĐOẠN 41 4.6 KHỐI LCD 43 4.7 KHỐI BÀN PHÍM MA TRẬN 44 4.8 SƠ ĐỒ MẠCH IN 44 4.9 PHƯƠNG PHÁP LẬP TRÌNH ĐIỀU KHIỂN 46 Chương 5: CÁC BÀI THỰC HÀNH MẪU ĐIỀU KHIỂN CÁC MODULE CỦA KIT MỞ RỘNG 47 5.1 GIỚI THIỆU 47 5.2 CÁC BÀI THỰC HÀNH MẪU 47 5.2.1 Điều khiển module led đơn 47 5.2.2 Điều khiển module 4 led 7 đoạn 53 5.2.3 Điều khiển module led 7 đoạn dùng phương pháp quyét 59 5.2.4 Module ma trận phím 66 5.2.5 Module lcd 70 KẾT LUẬN 77 KIẾN NGHỊ VÀ HƯỚNG PHÁT TRIỂN 77 TÀI LIỆU THAM KHẢO 78 Trang 4
  7. Danh mục hình Hình 1.1: Kiến trúc tổng quan của FPGA. Hình 1.2: Khối logic lập trình được của FPGA Hình 1.3: Kiến trúc thực thể một Entity Hình 1.4: Thí dụ của một mô hình VHDL có thứ bậc Hình 1.5: Kiến trúc thực thể một Testbench Hình 1.6 :Quy trình thiết kế chip dựa trên VHDL Hình 1.7 : Mã thiết kế bộ cộng Hình 1.8: kết quả mô phỏng Hình 2.1: Sơ đồ khối và đặc điểm của Nexys 2 Hình 2.2: Sơ đồ khối nguồn cung cấp Nexys 2 Hình 2.3: Mạch lập trình Nexys 2 Hình 2.4: Mạch lập trình Board Nexys 2 Hình 2.5: Thiết bị I /O Board Nexys 2 Hình 2.6: Mạch và thiết bị I / O của Board Nexys 2 Hình 2.7: sơ đồ nguyên lý của các cổng I/O mở rộng của kit Hình 2.8 : cổng I/O thực tế Hình 2.9: Mạch cổng nối tiếp Nexys 2 Hình 2.10: Mạch bộ nhớ Nexys 2 Hình 3.1: Các dạng di chuyển dữ liệu của thanh ghi. Hình 3.2: Sơ đồ khối thanh ghi 74595. Hình 3.3: Sơ đồ khối thanh ghi MBI5026. Hình 4.1 : Sơ đồ khối hệ thống Hình 4.2: Sơ đồ nguyên lý mạch giao tiếp chuyển đổi mức điện áp. Hình 4.3: Sơ đồ nguyên lý kết nối modul led đơn với kit FPGA Hình 4.4 : Sơ đồ nguyên lý kết nối 4 led 7 đoạn với kit FPGA Hình 4.5 : Sơ đồ nguyên lý kết nối 8 led 7 đoạn quét với kit FPGA Hình 4.6: Sơ đồ nguyên lý kết nối lcd 20x4 với kit FPGA Hình 4.7: Sơ đồ nguyên lý kết nối bàn phím với kit FPGA Hình 4.8: Sơ đồ mạch in và sắp xếp linh kiện. Hình 4.9: Sản phẩm sau khi thi công. Hình 4.10: Sơ đồ khối của khối truyền dữ liệu Hình 5.1: Sơ đồ khối của mạch điều khiển 32 led đơn sáng tắt dần. Hình 5.2: Lưu đồ điều khiển 32 led đơn sáng dần và tắt dần. Hình 5.3: Sơ đồ khối của mạch điều khiển 4 led 7 đoạn đếm 0000 đến 9999. Hình 5.4: Lưu đồ mạch đến 0000 đến 9999 Hình 5.5: Sơ đồ khối mạch đếm giờ phút giây hiển thị trên led 7 đoạn dùng phương pháp quét Hình 5.6: Lưu đồ đếm giờ phút giây. Hình 5.7: Lưu đồ quét phím Trang 5
  8. Danh mục bảng Bảng 1.1: So sánh FPGA với CPLD. Bảng 1.2: Bảng sự thật của bộ cộng đầy đủ Bảng 2.1: Nguồn cung cấp cho Board Nexys 2 Bảng 2.2: Địa chỉ các chân I/O mở rộng Bảng 2.3: Gán chân Bus dữ liệu và địa chỉ bộ nhớ Bảng 4.1: Kết nối chân modul led đơn với kit FPGA Bảng 4.2 : Kết nối chân modul 4 led 7 đoạn với kit FPGA Bảng 4.3: Kết nối chân modul 8 led 7 đoạn quét với kit FPGA Bảng 4.4 : Sơ đồ chân lcd 16x2 Bảng 4.5 : Thanh ghi điều khiển Bảng 4.6 : Địa chỉ ký tự Bảng 4.7: Kết nối chân module 8 lcd 16x2 với kit FPGA Bảng 4.8: Kết nối chân module bàn phím với kit FPGA Trang 6
  9. TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM THÀNH PHỐ HỒ CHÍ MINH Độc lập - Tự do - Hạnh phúc ĐƠN VỊ Tp. HCM, ngày 18 tháng 12 năm 2013 THÔNG TIN KẾT QUẢ NGHIÊN CỨU 1. Thông tin chung: - Tên đề tài: NGHIÊN CỨU THIẾT KẾ CÁC MODULE MỞ RỘNG CHO KÍT FPGA VÀ XÂY DỰNG CÁC BÀI THỰC HÀNH - Mã số: T2013 - 02 - Chủ nhiệm: GV.THS. TRƯƠNG THỊ BÍCH NGÀ - Cơ quan chủ trì: Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh - Thời gian thực hiện: THÁNG 2/2013 ĐẾN THÁNG 12/2013 2. Mục tiêu: Nghiên cứu và thiết kế thi công module mở rộng cho kit FPGA , kit Nexsy 2 trên phòng thí nghiệm PLD, dùng để phục vụ cho việc học và nghiên cứu mở rộng các đối tượng trong ứng dụng dùng FPGA để điều khiển. 3. Tính mới và sáng tạo: Thiết kế module mở rộng cho kit Nexsy 2 tích hợp nhiều ứng dụng điều khiển, phục vụ cho các bài thực hành nâng cao, và các ứng dụng thực tế. 4. Kết quả nghiên cứu: Đã nghiên cứu và chế tạo một module mở rộng giao tiếp với kit Nexsy 2 trên phòng thí nghiệm với các đối tượng cần thiết cho các ứng dụng thực tế. Đã thực hiện các bài thực hành mẫu hướng dẫn người học cách điều khiển từng phần tử trên module. 5. Sản phẩm: Một module mở rộng có thể kết nối với các cổng PMOD của kit Nexsy 2 và các bài thực hành mẫu cho các ứng dụng trên module. 6. Hiệu quả, phương thức chuyển giao kết quả nghiên cứu và khả năng áp dụng: Do được thiết kế đầy đủ các ứng dụng điều khiển cần thiết trên thực tế, nên có thể đáp ứng yêu cầu điều khiển cao hơn, rộng hơn, sâu hơn sẽ nâng cao chất lượng thực hành của sinh viên. Trang 7
  10. Ngoài việc phục vụ giảng dạy thực hành cho sinh viên trong trường thì bộ kit có thể chuyển giao cho các trường có nhu cầu. Trưởng Đơn vị Chủ nhiệm đề tài (ký, họ và tên, đóng dấu) (ký, họ và tên) . THS.TRƯƠNG THỊ BÍCH NGÀ Trang 8
  11. RESULTS INFORMATION 1. General Information: - Project title: RESEARCH AND DESIGN AN EXPANSION MODULE FOR KIT FPGA , COMPILE SAMPLE EXERCISES - Item Number: T2013 - 02 - Chairman: Msc. Truong Thi Bich Nga - Responsible agencies: University of Technical Education Ho Chi Minh City - Implementation period: 02/2013 to 12/2013 2. Objectives: Research and design an extension module for FPGA kit, kit Nexsy 2 on PLD laboratory, used to serve the study and expand research in the application objects used to control FPGA. 3. Novelty and creativity: Expansion module designed for Nexsy 2 kit, this module integrates many control applications, serving to enhance the exercises, and practical applications. 4. Research results: We have studied and built an extension module to communicate with Nexsy 2 kit on lab with objects needed for practical applications. We wrote the sample exercise guide to learn how to control each element in the module. 5. Products: The expansion module can be connected to the pmod ports of kit Nexsy 2 and sample exercises for the application on the module. 6. Efficient method of transferring research results and applicability: Module is designed with the applications needed on the actual, so this equipment will response the control requirements higher, wider, deeper, raise the quality of student practice. In addition to serving teaching practice for students in schools, the kit can be transferred to the school's needs. Msc. Truong Thi Bich Nga Trang 9
  12. MỞ ĐẦU Trong những năm gần đây, với sự phát triển của nghành công nghệ điện điện tử trong việc tạo ra những bộ vi xử lí và vi điều khiển, các hệ thống đo lường và điều khiển ngày càng thông minh hơn, giải quyết nhiều bài toán phức tạp hơn. Tuy nhiên, khi nhà chế tạo phát minh ra những sản phẩm công nghệ đó thì lúc nào cũng có giới hạn về số lượng các I/O, để điều khiển các thiết bị ngoại vi. Khi đưa vào thực tế thì những sản phẩm công nghệ này không thỏa mãn về số lượng chân điều khiển. Lúc này thì các module mở rộng là biện pháp hoàn hảo để giải quyết vấn đề trên. Các module mở rộng thường được tích hợp để mở rộng cho ít hay nhiều thiết bị điều khiển. TÌNH HÌNH NGHIÊN CỨU TRONG VÀ NGOÀI NƯỚC Hiện nay trên thế giới, các kit thí nghiệm về vi xử lý, DSP, FPGA cho giáo dục được các hãng sản xuất ở nước ngoài đưa ra khá nhiều. Để giảm giá thành, một số kit được thiết kế có cấu hình được đơn giản hóa, người sử dụng tùy theo nhu cầu có thể mua thêm các module mở rộng cần thiết cho ứng dụng nghiên cứu của mình. Và các module này thường có giá thành khá cao. Ở phạm vi trong nước, hiện chưa có đơn vị nào sản xuất các kit thực hành cho FPGA. Các kit này được nhập về để phục vụ cho nhu cầu dạy và học ở trong nước. Chính vì vậy để mở rộng và nâng cao các bài thực hành, một số trường chọn giải pháp mua thêm các module mở rộng. TÍNH CẤP THIẾT – MỤC TIÊU Hiện nay trên phòng thí nghiệm PLD của khoa Điện Điện tử có 2 phòng. Một phòng dùng kit Nexsy 2 và 1 phòng dùng kit Nexsy 3. Cả hai kit này đều của Digilent, có cổng giao tiếp VGA, uart, PS/2, ROM, RAM và 4 cổng PMOD mở rộng, giao tiếp I/O có cấu hình chỉ bao gồm 8 led đơn, 8 switch gạt, 5 nút nhấn, 4 led 7 đoạn.Với các giao tiếp I/O đơn giản như vậy, cấu hình của 2 bộ kit này không đủ để xây dựng các bài thực hành nâng cao và các ứng dụng trên thực tế. Vì vậy nhóm nghiên cứu mong muốn xây dựng thêm các Trang 10
  13. module mở rộng để phục vụ cho giảng dạy sinh viên ngành điện – điện tử và sau đó là đáp ứng các ứng dụng điều khiển trong thực tế. CÁCH TIẾP CẬN Tiến hành tìm tài liệu, đọc tài liệu, khảo sát các module mở rộng của các hãng sản xuất trên thế giới như Digilent, Altera, tiến hành thử nghiệm, thiết kế và thi công sản phẩm. Tiến hành thử nghiệm sản phẩm đã thi công, đánh giá sản phẩm. PHƯƠNG PHÁP NGHIÊN CỨU Đọc các tài liệu, phân tích các sản phẩm đã thực hiện, đánh giá ưu nhược, tiến hành thiết kế module theo yêu cầu, thử nghiệm, thi công và hoàn thiện sản phẩm. ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU Nhóm nghiên cứu sẽ khảo sát các module mở rộng của các hãng Digilent, Altera và khảo sát các nhu cầu trên thực tế, yêu cầu từ các bài thực hành. Trong đề tài nhóm sẽ thiết kế 1 module mở rộng gồm; giao tiếp với ma trận phím, led ma trận, led đơn, led 7 đoạn, relay để việc điều khiển các thiết bị được nhiều hơn, giải quyết các bài thực hành ở mức độ khó hơn với nhiều thiết bị điều khiển hơn. Từ đó nâng cao trình độ đào tạo trong môn thực hành PLD nói riêng và nâng cao đào tạo của trường nói chung. NỘI DUNG NGHIÊN CỨU Nội dung nghiên cứu được thực hiện gồm nghiên cứu và thiết kế một module mở rộng giao tiếp với kit Nexsy 2 và viết các bài thực hành cho module này. Tất cả các nội dung thực hiện được thể hiện qua 5 chương theo sau. Trang 11
  14. CHƯƠNG 1 CÔNG NGHỆ FPGA và NGÔN NGỮ PHẦN CỨNG VHDL 1.1 CÔNG NGHỆ FPGA 1.1.1 Lịch sử phát triển của FPGA. FPGA được thiết kế đầu tiên bởi Ross Freeman, người sáng lập công ty Xilinx vào năm 1984, kiến trúc mới của FPGA cho phép tích hợp số lượng tương đối lớn các phần tử bán dẫn vào một vi mạch. So với kiến trúc trước đó là CPLD, FPGA có khả năng chứa tới từ 100.000 đến hàng vài tỷ cổng logic, trong khi CPLD chỉ chứa từ 10.000 đến 100.000 cổng logic, con số này đối với PAL, PLA còn thấp hơn nữa chỉ đạt vài nghìn đến 10.000. CPLD được cấu trúc từ số lượng nhất định các khối SPLD (Simple programable logic device) thuật ngữ chung chỉ PAL, PLA. SPLD thường là một mảng logic AND/OR lập trình được có kích thước xác định và chứa một số lượng hạn chế các phần tử nhớ đồng bộ (clocked register). Cấu trúc này hạn chế khả năng thực hiện những hàm phức tạp và thông thường hiệu suất làm việc của vi mạch phụ thuộc vào cấu trúc cụ thể của vi mạch hơn là vào yêu cầu bài toán. Kiến trúc của FPGA là kiến trúc mảng các khối logic, mỗi khối này nhỏ hơn nhiều nếu đem so sánh với một khối SPLD, ưu điểm này giúp FPGA có thể chứa nhiều hơn các phần tử logic và phát huy tối đa khả năng lập trình của các phần tử logic và hệ thống mạch kết nối, để đạt được mục đích này thì kiến trúc của FPGA phức tạp hơn nhiều so với CPLD. Một điểm khác biệt nữa với CPLD là trong những FPGA hiện đại được tích hợp nhiều bộ logic số học đã được tối ưu hóa, hỗ trợ RAM, ROM, tốc độ cao, hay các bộ nhân, cộng dùng cho những ứng dụng xử lý tín hiệu số. Ngoài khả năng cấu trúc lại vi mạch ở mức toàn cục, một số FPGA hiện đại còn hỗ trợ cấu trúc lại ở mức cục bộ, tức là khả năng cấu trúc lại một bộ phận riêng lẻ trong khi vẫn đảm bảo hoạt động bình thường cho các bộ phận khác. 1.1.2 Khái niệm cơ bản và cấu trúc của FPGA. FPGA (Field Programable Gate Arrays - Ma trận cổng lập trình được theo hàng) là một thiết bị bán dẫn bao gồm các khối logic lập trình được gọi là "Logic Block", và các kết nối khả trình. Các khối logic có thể được lập trình để thực hiện các chức năng của các khối logic cơ bản như AND, XOR, hoặc các chức năng kết hợp phức tạp hơn như decoder hoặc các Trang 12
  15. phép tính toán học. Trong hầu hết các kiến trúc FPGA, các khối logic cũng bao gồm cả các phần tử nhớ. Đó có thể là các Flip-Flop hoặc những bộ nhớ hoàn chỉnh hơn. Kiến trúc tổng quan về FPGA được mô tả như hình 1.1: Configurable Logic Blocks I/O Programmable Interconnects Hình 1.1: Kiến trúc tổng quan của FPGA. Vi mạch FPGA được cấu thành từ các bộ phận: 1.1.2.1 Các khối logic cơ bản lập trình được (logic block). Phần tử chính của FPGA là các khối logic (logic block). Khối logic được cấu thành từ LUT và một phần tử nhớ đồng bộ flip-flop. LUT (Look up table) là khối logic có thể thực hiện bất kì hàm logic nào từ 4 đầu vào, kết quả của hàm này tùy vào mục đích mà gửi ra ngoài khối logic trực tiếp hay thông qua phần tử nhớ flip-flop. Khối logic được mô tả như hình 1.2: Hình 1.2: Khối logic lập trình được của FPGA Trong tài liệu hướng dẫn của các dòng FPGA của Xilinx còn sử dụng khái niệm SLICE, 1 Slice gồm 4 khối logic tạo thành, số lượng các Slice thay đổi từ vài nghìn đến vài chục nghìn tùy theo loại FPGA. 1.1.2.2 Hệ thống mạch liên kết lập trình được. Trang 13
  16. Mạng liên kết trong FPGA được cấu thành từ các đường kết nối theo hai phương ngang và đứng, tùy theo từng loại FPGA mà các đường kết nối được chia thành các nhóm khác nhau, ví dụ trong XC4000 của Xilinx có 3 loại kết nối: ngắn, dài và rất dài. Các đường kết nối được nối với nhau thông qua các khối chuyển mạch lập trình được (programable switch), trong một khối chuyển mạch chứa một số lượng nút chuyển lập trình được, đảm bảo cho các dạng liên kết phức tạp khác nhau. - Khối vào/ra (IO Pads). Khối vào/ra nhiều hay ít là tuỳ thuộc vào từng loại FPGA. Chúng có thể được kết nối với các thiết bị bên ngoài như LED, USB, RS232, RAM tuỳ theo mục đích sử dụng. - Các phần tử tích hợp sẵn. Ngoài các khối logic, tùy theo các loại FPGA khác nhau mà có các phần tử tích hợp thêm khác nhau, ví dụ để thiết kế những ứng dụng SoC, trong dòng Virtex 4, 5 của Xilinx có chứa nhân xử lý PowerPC, hay cho những ứng dụng xử lý tín hiệu số trong FPGA được tích hợp các DSP Slice là bộ nhân, cộng tốc độ cao, thực hiện hàm A*B+C, ví dụ dòng Virtex của Xilinx chứa từ vài chục đến hàng trăm DSP slice với A, B, C 18-bit. 1.1.3 Các ứng dụng của FPGA. Ứng dụng của FPGA bao gồm: xử lý tín hiệu số, các hệ thống hàng không, vũ trụ, quốc phòng, tiền thiết kế mẫu ASIC(ASIC prototyping), các hệ thống điều khiển trực quan, phân tích nhận dạng ảnh, nhận dạng tiếng nói, mật mã học, mô hình phần cứng máy tính Do tính linh động cao trong quá trình thiết kế cho phép FPGA giải quyết lớp những bài toán phức tạp mà trước kia chỉ thực hiện nhờ phần mềm máy tính, ngoài ra nhờ mật độ cổng logic lớn FPGA được ứng dụng cho những bài toán đòi hỏi khối lượng tính toán lớn và dùng trong các hệ thống làm việc theo thời gian thực. Ý nghĩa của FPGA. ASIC lập trình được đã xuất hiện từ lâu dưới dạng PLD (Programmable Logic Device), nhưng vai trò của các dạng ASIC này là không nhiều vì số lượng cổng trên Chip rất ít dẫn tới chức năng của các PLD này cũng nghèo nàn và thường chỉ sử dụng với những nhiệm vụ rất hạn chế trong toàn hệ thống. Kể từ năm 1980,Các công ty sản xuất PLD hàng đầu đã đẩy mạnh quá trình nghiên cứu về FPGA và nhanh chóng cho ra các thế hệ FPGA với số lượng cổng và tốc độ ngày càng cao. Các FPGA hiện nay có số lượng cổng đủ lớn để có thể thay thế cả một hệ thống bao gồm lõi CPU, Bộ điều khiển bộ nhớ (Memory Controller), các ngoại vi như SPI, Timer, I2C, GPIO, PWM, Video/Audio Controller (nghĩa là tương đương với các SoC hiện đại). Tuy Trang 14
  17. nhiên, FPGA không thể nào so sánh được với ASIC và SoC cả về kinh tế lẫn tốc độ hoạt động. Nhưng bù lại, với khả năng tái cấu hình mạnh, FPGA đóng một vai trò vô cùng to lớn trong việc giảm giá thành và thời gian chế tạo ASIC bằng cách sử dụng FPGA trong quá trình thiết kế luận lý trước khi đưa ra sản xuất các ASIC mẫu. Quy trình sản xuất Chip ASIC bằng cách này gọi là fabless rất phổ biến hiện nay trên thế giới, giúp các công ty nhỏ và vừa và đặc biệt là các nước yếu về công nghệ như Việt nam tham gia vào thế giới sản xuất IC. Để giải thích cho sự quan trọng rất lớn của FPGA, sẽ có một ví dụ cụ thể sau: Trước đây, khi muốn chế tạo ra một con chip “Vi xử lý”, người ta phải thiết kế chip ở mức logic sử dụng các ngôn ngữ mô tả phần cứng, để kiểm tra công đoạn này cần phải sử dụng những phần mềm mô phỏng. Sau đó thiết kế phải được tổng hợp dựa trên các thư viện cấp thấp của hãng sản xuất con Chip sau này, sau đó là quá trình kiểm tra timing (định thời) cho toàn bộ thiết kế để đảm bảo thiết kế đó sẽ hoạt động ở tần số yêu cầu. Tất cả các công đoạn này đều chỉ có thể kiểm tra bằng các phần mềm mô phỏng (điều này dẫn tới nguy cơ xảy ra sai sót rất lớn khi chuyển thiết kế sang môi trường Chip thực ). Quy trình tiếp theo là gởi thiết kế của mình tới công ty sản xuất Chip và phó mặc cho số phận, một chip mẫu giá vài triệu USD sẽ được chuyển trả về, sau đó là bắt đầu quá trình test chip trong môi trường thực, nếu thất bại, khả năng lớn là chúng ta sẽ phải thực hiện lại hoàn toàn qui trình thiết kế như đã nói ở trên, và cứ mỗi lần như vậy, phải thanh toán vài triệu USD cộng với khoảng thời gian nghiên cứu rất lớn. Quy trình này làm cho các đất nước nghèo như Việt Nam không thể tham gia vào các cuộc chơi của các đất nước giàu có trong thế giới của ASIC. Nhưng với FPGA, chúng ta không những có thể rút ngắn thời gian thực hiện ASIC mà còn giảm chi phí nghiên cứu tối đa do quá trình kiểm tra thiết kế không những được kiểm tra bằng các phần mềm mô phỏng mà giờ đây còn có thể chạy trên các Chip thực trong mội trường có thể nói là gần với môi trường ASIC thực nhất. Khả năng tái cấu hình cho phép sửa bản thiết kế cho đến khi đạt yêu cầu mà không phải trả khoản chi phí nào ngoài tiền điện tiêu thụ. * Kết luận khi so sánh FPGA với ASIC:  FPGA có tính mềm dẻo hơn vì có khả năng tái cấu hình.  FPGA hiệu quả hơn về kinh tế nếu sản xuất với số lượng vừa và nhỏ.  ASIC có mật độ ứng dụng nhiều hơn. Trang 15
  18. 1.1. 4 So sánh FPGA với một số mạch lập trình được. 1.1.4.1 FPGA với CPLD. FPGA CPLD Logic cell nằm ngoài, chia Logic cell nằm giữa các Khối logic chung nguồn tài nguyên nguồn tài nguyên Kết nối Phức tạp Đơn giản hơn Công nghệ lập trình SRAM EPROM, EEPROM Cấu trúc logic LUT Mảng AND-OR, PAL-like Ứng dụng Vừa và lớn Nhỏ Bảng 1.1: So sánh FPGA với CPLD. Một kiến trúc khác tương tự nhưng đơn giản hơn FPGA, là CPLD (Complex Programable Logic Device ). Thực chất đây là tiền thân của FPGA. FPGA và CPLD đều bao gồm một số lượng khá lớn các phần tử logic khả trình. Mật độ cổng logic (Logic Gate) của CPLD nhỏ hơn rất nhiều lần so với FPGA. Khác biệt cơ bản giữa FPGA và CPLD là ở kiến trúc của chúng. CPLD có một kiến trúc bị giới hạn trong một hoặc một vài dãy logic khả trình cùng với một lượng nhỏ thanh ghi định thời. Do đó nó kém linh hoạt hơn, nhưng lại có ưu điểm là khả năng dự đoán trễ lớn hơn và tỉ lệ logic-kết nối cao hơn. 1.1.4.2 FPGA với SoC. SoC đề cập đến tất cả các thành phần tích hợp của một máy tính hoặc các hệ thống điện tử tích hợp thành một vi mạch (chip). SoC có thể là một hệ thống mạch số, mạch analog, mạch mixed-tín hiệu, hoặc hệ thống mạch chức năng về radio-frequency được tích hợp tất cả trên một chip. Một ứng dụng điển hình của SoC là trong lĩnh vực hệ thống nhúng. Khả năng của SoC vượt trội hơn FPGA cả về hai khía cạnh kinh tế lẫn tốc độ, bởi mật độ tích hợp rất cao của SoC đến hàng triệu cổng. Trên thực tế, SoC là kết quả sau khi kết hợp các FPGA huyên biệt lại với nhau để tạo nên một hệ thống hoàn chỉnh. FPGA có ưu thế hơn SoC ở tính mềm dẻo, khả năng tái cấu hình mạnh nên FPGA phù hợp với nhu cầu nghiên cứu hơn là SoC. 1.2 NGÔN NGỮ MÔ TẢ PHẦN CỨNG - VHDL 1.2.1 Giới thiệu Ngày nay ngành công nghệ chế tạo phần cứng luôn có những đột phá không ngừng. Từ các mạch điện đơn giản đến các mạch số, mạch tích hợp, kiến trúc mạch trở nên ngày một phức tạp hơn. Trang 16
  19. Nhờ những ưu điểm hơn hẳn so với các phương pháp phân tích, mô hình hoá, thiết kế mạch số kiểu truyền thống mà phương pháp sử dụng các ngôn ngữ mô phỏng phần cứng (HDL-Hard ware Description Languages ) đang trở thành một phương pháp thiết kế các hệ thống điện tử số phổ biến trên toàn thế giới. Có 3 ngôn ngữ được sử dụng trong thiết kế phần cứng: VHDL, Verilog, C. Do ngôn ngữ dùng trong giảng dạy môn học này ở trường chúng ta là ngôn ngữ VHDL (Very high speed intergrated circuit Hardware Description Language) nên tác giả dùng ngôn ngữ này để soạn thảo các bài thực hành. 1.2.1.1 Giới thiệu ngôn ngữ mô tả phần cứng VHDL VHDL là ngôn ngữ mô tả phần cứng cho các mạch tích hợp tốc độ rất cao, là một loại ngôn ngữ mô tả phần cứng được phát triển dùng cho trương trình VHSIC (Very High Speed Itergrated Circuit) của bộ quốc phòng Mỹ. Mục tiêu của việc phát triển VHDL là có được một ngôn ngữ mô phỏng phần cứng tiêu chuẩn và thống nhất cho phép thử nghiệm các hệ thống số nhanh hơn cũng như cho phép dễ dàng đưa các hệ thống đó vào ứng dụng trong thực tế. Ngôn ngữ VHDL được ba công ty Intermetics, IBM và Texas Instruments bắt đầu nghiên cứu phát triển vào tháng 7 năm 1983. Phiên bản đầu tiên được công bố vào tháng 8- 1985. Sau đó VHDL được đề xuất để tổ chức IEEE xem xét thành một tiêu chuẩn chung. Năm 1987 đã đưa ra tiêu chuẩn về VHDL ( tiêu chuẩn IEEE-1076-1987). VHDL được phát triển để giải quyết các khó khăn trong việc phát triển, thay đổi và lập tài liệu cho các hệ thống số. Như ta đã biết, một hệ thống số có rất nhiều tài liệu mô tả. Để có thể vận hành bảo trì sửa chữa một hệ thống ta cần tìm hiểu kỹ lưỡng tài liệu đó. Với một ngôn ngữ mô phỏng phần cứng tốt việc xem xét các tài liệu mô tả trở nên dễ dàng hơn vì bộ tài liệu đó có thể được thực thi để mô phỏng hoạt động của hệ thống. Như thế ta có thể xem xét toàn bộ các phần tử của hệ thống hoạt động trong một mô hình thống nhất. 1.2.1.2 Cấu trúc một mô hình hệ thống mô tả bằng VHDL Mục đích của phần này sẽ nhằm giới thiệu sơ qua về cấu trúc khung cơ bản của VHDL khi mô tả cho một mô hình thiết kế thực. Thông thường một mô hình VHDL bao gồm ba phần: thực thể, kiến trúc và các cấu hình. Đôi khi ta xử dụng các gói( packages) và mô hình kiểm tra hoạt động của hệ thống (testbench). + Thực thể (entity) : Khai báo thực thể trong VHDL phần định nghĩa các chỉ tiêu phía ngoài của một phần tử hay một hệ thống. Thực chất của việc khai báo thực thể chính là khai báo giao diện của hệ thống với bên ngoài. Ta có thể có tất cả các thông tin để kết nối mạch vào mạch khác hoạt thiết kế tác nhân đầu vào phục vụ cho mục đích thử nghiệm. Tuy nhiên hoạt động thật sự Trang 17
  20. của mạch không nằm ở phần khai báo này. Dưới đây là một ví dụ khai báo thực thể cho một cổng NOT: Hình 1.3 Kiến trúc thực thể một Entity + Kiến trúc (Architecture) : Phần thứ 2 trong mô hình VHDL là khai báo kiến trúc. Mỗi một khai báo thực thể đều phải đi kèm với ít nhất một kiến trúc tương ứng. VHDL cho phép tạo ra hơn một kiến trúc cho một thực thể. Phần khai báo kiến trúc có thể bao gồm các khai báo về các tín hiệu bên trong, các phần tử bên trong hệ thống, hay các hàm và thủ tục mô tả hoạt động của hệ thống. Tên của kiến trúc là nhãn được đặt tuỳ theo người xử dụng. Có hai cách mô tả kiến trúc của một phần tử ( hoặc hệ thống) đó là mô hình hoạt động (Behaviour) hay mô tả theo mô hình cấu trúc (Structure). Tuy nhiên một hệ thống có thể bao gồm cả mô tả theo mô hình hoạt động và mô tả theo mô hình cấu trúc. - Mô tả kiến trúc theo mô hình hoạt động: Mô hình hoạt động mô tả các hoạt động của hệ thống ( hệ thống đáp ứng với các tín hiệu vào như thế nào và đưa ra kết quả gì ra đầu ra) dưới dạng các cấu trúc ngôn ngữ lập trình bậc cao. Cấu trúc đó có thể là PROCESS , WAIT, IF, CASE, FOR-LOOP - Mô tả kiến trúc theo mô hình cấu trúc: Mô hình cấu trúc của một phần tử (hoặc hệ thống) có thể bao gồm nhiều cấp cấu trúc bắt đầu từ một cổng logic đơn giản đến xây dựng mô tả cho một hệ thống hoàn thiện. Thực chất của việc mô tả theo mô hình cấu trúc là mô tả các phần tử con bên trong hệ thống và sự kết nối của các phần tử con đó. Như với ví dụ mô tả mô hình cấu trúc một flip-flop RS gồm hai cổng NAND có thể mô tả cổng NAND được Trang 18
  21. định nghĩa tương tự như ví dụ với cổng NOT, sau đó mô tả sơ đồ móc nối các phần tử NAND tạo thành trigơ RS. - Cấu trúc Process: Process là khối cơ bản của việc mô tả theo hoạt động. Process được xét đến như là một chuỗi các hành động đơn trong suốt quá trình dịch. S: Mô hình cấu trúc S B: Mô hình hoạt động S B S/B: Mô hình kết hợp S S/B S B B B B B B Hình 1.4 Thí dụ của một mô hình VHDL có thứ bậc * Cấu trúc tổng quát: [process_label] Process [(sensitivi_List) ] process_declarative_part Trong đó các phần đặt trong dấu [ ] thì có thể có hoặc không. - process_label: (nhãn lệnh) là tuỳ thuộc người lập trình đặt tên - sensitivity_list: Danh sách các yếu tố kích thích hoạt động. + Môi trường kiểm tra (testbench) Một trong các nhiệm vụ rất quan trọng là kiểm tra bản mô tả thiết kế. Kiểm tra một mô hình VHDL được thực hiện bằng cách quan sát hoạt động của nó trong khi mô phỏng và các giá trị thu được có thể đem so sánh với yêu cầu thiết kế. Testbench Entity Generics Data Source (stimuli DUT Observer Generator) Hình 1.5 Kiến trúc thực thể một Testbench Trang 19