Để 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..
Trang 1BỘ 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
S K C0 0 5 3 8 6
Trang 2BỘ 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
Trang 3TRƯỜ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 4DANH SÁCH NHỮNG THÀNH VIÊN THAM GIA NGHIÊN CỨU ĐỀ TÀI
Trang 5MỤ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 64.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ư n 5: CÁC BÀI THỰC HÀNH MẪU ĐIỀU KHIỂN CÁC MODULE CỦA KIT MỞ RỘNG 4
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 7Danh 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 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
Trang 8Danh 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 9TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT
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 10Ngoà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
Trang 11- 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 12MỞ ĐẦ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
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 13module 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 14CHƯƠ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 15phé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:
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
I/O
Programmable Interconnects
Configurable Logic Blocks
Trang 16Mạ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 17nhiê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 181.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
Khối logic Logic cell nằm ngoài, chia
chung nguồn tài nguyên
Logic cell nằm giữa các 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 19Nhờ 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 20củ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 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
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ế
Hình 1.5 Kiến trúc thực thể một Testbench
Testbench Entity Generics
DUT
Data Source (stimuli Generator)
Observer
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
B B B B B B
Trang 22Môi trường kiểm tra có thể hiểu như một mạch kiểm tra ảo Môi trường kiểm tra sinh ra các tác động lên bản thiết kế và cho phép quan sát hoặc so sánh kết quả hoạt động của bản
mô tả thiết kế Thông thường thì các bản mô tả đều cung cấp chương trình thử Nhưng ta cũng có thể tự xây dựng chương trình thử (testbench) Mạch thử thực chất là sự kết hợp của tổng hợp nhiều thành phần Nó gồm ba thành phần Mô hình VHDL đã qua kiểm tra, nguồn
dữ liệu và bộ quan sát Hoạt động của mô hình VHDL được kích thích bởi các nguồn dữ liệu
và kiểm tra tính đúng đắn thông qua bộ quan sát Trên đây là sơ đồ tổng quat của một chương trình thử (Testbench)
1.2.2.1 Ứng dụng của công nghệ thiết kế mạch bằng VHDL
Hiện nay hai ứng dụng chính và trực tiếp của VHDL là các ứng dụng trong các thiết bị logic có thể lập trình được (Programmable Logic Devices – PLD) (bao gồm các thiết bị logic phức tạp có thể lập trình được và các FPGA – Field Programmable Gate Arrays) và ứng dụng ASICs ( Application Specific Intergrated Circuits)
Khi chúng ta lập trình cho các thiết bị thì chúng ta chỉ cần viết mã VHDL một lần, sau
đó ta có thể áp dụng cho các thiết bị khác nhau (như Altera, Xilinx, Atmel, ) hoặc có thể để chế tạo một con chip ASIC Hiện nay, có nhiều cấu trúc chip phức tạp (như các vi điều khiển) được thiết kế dựa trên ngôn ngữ VHDL
1.2.2.2 Quy trình thiết kế mạch bằng VHDL
Như đã đề cập ở trên, một trong số lớn các ứng dụng của VHDL là chế tạo ra các mạch hoặc
hệ thống trong thiết bị khả lập trình (programmable devide) (PLD hoặc FPGA) hoặc trong một hệ ASIC Việc chế tạo ra vi mạch sẽ được chia làm 3 gian đoạn như sau:
- Giai đoạn 1: Bắt đầu thiết kế bằng viết mã VHDL
Mã VHDL sẽ được lưu vào file có đuôi là *.vhd và có tên cùng với tên thực thể Mã
VHDL sẽ được mô tả ở tầng chuyển đổi thanh ghi
Trang 23Hình 1.6 Quy trình thiết kế chip dựa trên VHDL
- Giai đoạn 2: Giai đoạn chế tạo
Bước 1: Biên dịch chương trình Quá trình này sẽ chuyển mã VHDL vào một netlist ở tầng cổng
Bước 2: là tối ưu hóa Quá trình này được thực hiện trên netlist ở tầng cổng về tốc độc
và phạm vi
Trong giai đoạn này, thiết kế có thể được mô phỏng để kiểm tra phát hiện những lỗi xảy
ra trong quá trình chế tạo
- Giai đoạn 3: Giai đoạn ghép nối đóng gói phần mềm
Ở giai đoạn này sẽ tạo ra sự sắp xếp vật lý cho chip PLD / FPGA hoặc tạo ra mặt nạ cho ASIC
1.2.2.3 Công cụ EDA
Active – VHDL: là công cụ tạo mã VHDL và mô phỏng phục vụ cho quá trình thiết kế vi mạch sẽ là:
- Công cụ EDA (Electronic Design Automation): là công cụ tự động thiết kế mạch điện
tử Công cụ này được dùng để phục vụ cho việc chế tạo, thực thi và mô phỏng mạch sử dụng VHDL
Trang 24- Công cụ cho đóng gói: Các công cụ này sẽ cho phép tổng hợp mã VHDL vào các chip CPLD / FPGA của hãng Altera hoặc hệ ISE của Xilinx
Bit s và cout được tính như sau: cout = a.b + a.cin + b.cin
Từ công thức tính s và cout ta viết đoạn mã VHDL dưới đây:
Từ mã VHDL này, mạch vật lý được tạo ra Tuy nhiên có nhiều cách để thực hiện phương trình được mô tả trong ARCHITECTURE OF, vì vậy mạch thực tế sẽ phụ thuộc vào
bộ biên dịch / bộ tối ưu đang được sử dụng và đặc biệt phụ thuộc vào mục đích công nghệ Hình vẽ sau đây thể hiện một số dạng kiến trúc của mạch cộng:
Trong trường hợp này:
Nếu mục đích công nghệ là thiết bị cổng logic có thể lập trình được ( PLD, FPGA) thì kết quả cho cout thõa mãn là ở hình (b) và hình (c) ( cout = a.b + a.cin + b.cin)
Trang 25- Nếu mục đích công nghệ là ASIC thì chúng ta có thể sử dụng hình (d) Hình (d) sử dụng công nghệ CMOS với các tầng transistor và các mặt nạ phủ
Bất cứ một cái mạch nào được tạo ta từ mã thì những thao tác của nó sẽ luôn luôn được kiểm tra ở mức thiết kế, như ta đã chỉ ra ở hình 1 Tất nhiên chúng ta có thể kiểm tra nó ở tầng vật lý, nhưng sau đó những thay đổi là rất tai hại
Hình dưới đây là mô phỏng kết quả của đoạn chương trình đã được viết
Hình 1.8: kết quả mô phỏng
Trang 26CHƯƠNG 2
GIỚI THIỆU KIT DILIGENT NEXYS 2 SPARTAN-3E
2.1.Tổng quan về Board Nexys 2
Board Nexys2 đã được hoàn thiện, chip sử dụng là Xilinx Spartan3E FPGA Tích hợp cổng USB2 tốc độ cao, 16Mbytes bộ nhớ RAM và ROM, nhiều thiết bị I /O và các cổng làm cho nó trở thành một nền tảng lý tưởng cho các hệ thống kỹ thuật số của tất cả các loại, bao gồm cả hệ thống bộ vi xử lý nhúng dựa trên MicroBlaze Xilinx Cổng USB2 cung cấp nguồn và giao diện lập trình, do đó Board Nexys 2 có thể sử dụng với một máy tính xách tay để tạo thành một trạm thiết kế thực sự tiện dụng
Hình 2.1: Sơ đồ khối và đặc điểm của Nexys 2
Các thành phần của Board Nexys 2 gồm:
500K-gate Xilinx Spartan 3E FPGA
USB2 – cơ sở để FPGA cấu hình và truyền dữ liệu tốc độ cao (sử dụng bộ phần mềm Adept miễn phí)
USB2 – nguồn cung cấp (pin và phích cắm cũng có thể được sử dụng)
16MB của Micron PSDRAM &16MB của Intel StrataFlash ROM
Xilinx Platform Flash cho cấu hình FPGA không biến đổi
Trang 27 Có phím gạt nguồn cung cấp hữu dụng ( tốt cho các ứng dụng sử dụng năng lượng riêng)
Bộ tạo dao động 50Mhz với 1 một ổ cắm cho dao động thứ 2
PS2 port (for mouse/keyboard)
8-bit VGA port
60 I/O định tuyến cho kết nối mở rộng
Các ngõ ra đa dụng (GPIO) bao gồm 8 LED đơn, 4 nút nhấn, 8 công tắc 4 led 7 đoạn 2.2 Nguồn cung cấp cho Board
Nguồn cung cấp cho Board Nexys 2 có thể được truyền từ một dây USB, từ một nguồn dương 5VDC – 15VDC, phích cắm nguồn 2.1mm, hoặc từ một bộ pin Khối Power Select Jumper dùng để lựa chọn nguồn cung cấp cho Board Hệ mạch USB luôn được cấp điện từ dây cáp USB, nếu không có cáp USB được cắm vào thì hệ mạch USB sẽ không được cung cấp điện
Hình 2.2: Sơ đồ khối nguồn cung cấp Nexys 2
Đầu vào chính của nguồn được ổn áp ở điện áp 3.3V cung cấp tất cả dòng điện mà Board yêu cầu Một số thiết bị yêu cầu 2.2V, 1.8V và 1.2V cung cấp thêm vào nguồn cung cấp chính là 3.3V, và các nguồn được cung cấp thêm này được tạo ra từ sự điều chỉnh nguồn cung cấp chính 3.3V Các nguồn cung cấp chính được tạo ra bởi các máy điều chỉnh chuyển mạch hiệu suất cao từ công nghệ tuyến tính Các máy điều chỉnh này không chỉ sử dụng hiệu quả nguồn USB, chúng cũng cho phép Nexys 2 chạy từ bộ pin trong thời gian dài
Dòng tổng của Board phụ thuộc vào cấu hình của FPGA, tần số xung Clock và các kết nối bên ngoài Trong mạch thử nghiệm với khoảng 20K cổng định tuyến, tần số 50MHz, và tất cả các đèn LED đều sáng, khoảng 200mA hiện tại được rút ra từ nguồn cung cấp 1.2V, 50mA từ nguồn cung cấp 2.5V, 100mA từ nguồn cung cấp 3.3V Yêu cầu về dòng của mạch
Trang 28sẽ tăng nếu mạch mạch lớn hơn được cấu hình trong FPGA và nếu các thiết bị ngoại vi được gắn vào Bảng 123 tóm tắt các thông số cung cấp điện
Bảng 2.1: Nguồn cung cấp cho Board Nexys 2
2.3 Cấu hình FPGA và Platform Flash
FPGA FPGA trên Board Nexys2 phải được cấu hình (hay được lập trình) của người sử dụng trước khi nó có thể thực hiện bất kỳ chức năng nào Trong quá trình cấu hình, một tập tin "bit" được
truyền vào các ô nhớ trong FPGA để xác định các chức năng logic và mạch kết nối Phần mềm ISE / WebPack CAD miễn phí từ Xilinx có thể được sử dụng để tạo ra các tập tin bit từ VHDL, Verilog, hoặc các tập tin mã nguồn dựa trên sơ đồ
FPGA có thể được lập trình theo hai cách: trực tiếp từ một máy tính bằng cách sử dụng cổng USB trên Board, và từ một Platform Flash ROM (Flash ROM cũng là người dùng có thể lập trình thông qua cổng USB) trên Board Một chân nối trên Board Nexys2 xác định nguồn (PC hoặc ROM) FPGA sẽ sử dụng để tải cấu hình của nó FPGA sẽ tự động tải một cấu hình từ ROM Flash Platform khi bật nguồn nếu cấu hình chế độ chân nối được thiết lập
"Master Serial" Nếu chế độ chân nối được thiết lập "JTAG", FPGA sẽ đợi chương trình từ máy PC (thông qua cáp USB)
Trang 29Hình 2.3: Mạch lập trình Nexys 2
Phần mềm Adept miễn phí sẵn có trên máy tính có thể được sử dụng để cấu hình FPGA
và Flash Platform phù hợp với bất kỳ tập tin được lưu trữ trên máy tính Adept sử dụng cáp USB để chuyển một tập bit được chọn từ máy PC tới FPGA hoặc Platform Flash ROM Sau khi FPGA được cấu hình, nó sẽ giữ nguyên cho đến khi nó được thiết lập lại do ảnh hưởng của nguồn hoặc nút reset FPGA (BTNR) được nhấn ROM Flash Platform sẽ giữ lại một tập tin bit cho đến khi nó được lập trình lại, bất chấp ảnh hưởng của nguồn
Hình 2.4: Mạch lập trình Board Nexys 2
Để chương trình Board Nexys2 sử dụng Adept, cắm cáp USB vào Board (nếu nguồn USB sẽ không được sử dụng, gắn một nguồn cung cấp phù hợp để các jack cắm điện hoặc pin kết nối trên Board, và thiết lập chuyển tới "wall" hoặc "bat") Khởi động phần mềm
Trang 30Adept, và chờ đợi cho FPGA và Flash Platform ROM để được chấp nhận Sử dụng chức năng duyệt để liên kết các tập tin bit với FPGA, hoặc các tập tin .mcs với ROM Flash Platform Nhấp chuột phải vào thiết bị được lập trình, và chọn chức năng "lập trình" Các tập tin cấu hình sẽ được gửi đến FPGA hoặc Flash Platform, và phần mềm sẽ cho biết lập trình đã hoàn thành Các LED sẽ sáng sau khi FPGA đã được cấu hình thành công Để biết thêm thông tin về cách sử dụng Adept, chúng ta có thể xem tài liệu Adept có sẵn tại trang web Digilent
Board Nexys2 cũng có thể được lập trình sử dụng phần mềm iMPACT Xilinx bằng cách kết nối một cáp lập trình phù hợp với các đầu JTAG Cáp JTAG3 Digilent hoặc bất kỳ cáp nào của Xilinx đều có thể được sử dụng
Một cấu hình Demo được nạp vào Flash Platform trên bảng Nexys2 trong quá trình chế tạo Cấu hình đó, cũng có sẵn trên trang web Digilent, có thể được sử dụng để kiểm tra tất cả các thiết bị và mạch trên bảng Nexys2
2.4 Clock
Board Nexys2 bao gồm một bộ dao động 50MHz và một ổ cắm cho một dao động thứ hai Tín hiệu clock từ các bộ dao động kết nối với toàn bộ clock đầu vào các chân trên FPGA bởi vậy chúng có thể điều khiển đồng bộ clock các khối đang hoạt động trong FPGA
Bộ tổng hợp clock (gọi là DLL, hoặc vòng khóa trì hoãn) cung cấp khả năng quản lý clock bao gồm tăng gấp đôi hoặc nhân bốn tần số đầu vào, phân chia tần số đầu vào bất kỳ số nguyên, và xác định giai đoạn chính xác và các mối liên hệ trễ giữa tín hiệu clock khác nhau
Những I / O sử dụng
Board Nexys2 bao gồm một số các thiết bị đầu vào, thiết bị đầu ra, và cổng dữ liệu, cho phép nhiều thiết kế được thực hiện mà không có sự cần bất kỳ thành phần nào khác
Hình 2.5: Thiết bị I /O Board Nexys 2
Các ngõ vào: Slide Switches và Pushbuttons
Trang 31Bốn nút nhấn và 8 công tắc được cung cấp cho ngõ vào Các nút nhấn thường ở mức thấp, khi được nhấn sẽ lên mức cao Công tắc tạo ra những ngõ vào mức cao hay mức thấp phụ thuộc vào vị trí của chúng Các nút nhấn và công tắc ngõ vào được sử dụng các điện trở nối tiếp để bảo vệ tránh hiện tượng đoản mạch (hiện tượng đoản mạch xảy ra khi chân của FPGA được gán một nút nhấn hoặc công tắc vô tình được định nghĩa như một ngõ ra
Hình 2.6: Mạch và thiết bị I / O của Board Nexys 2
Trang 32Ngõ ra: LEDs
Tám LED đơn được cung cấp cho ngõ ra của mạch Cực dương LED được điều khiển từ FPGA thông qua điện trở 390-ohm, do đó, đầu ra mức logic '1 ' sẽ sáng với dòng khoảng 3-4mA LED thứ chín là được cung cấp như một LED chỉ thị nguồn, và LED 10 cho biết trạng thái chương trình FPGA
Hình 2.7: sơ đồ nguyên lý của các cổng I/O mở rộng của kit
Bảng 2.2: Địa chỉ các chân I/O mở rộng
Hình 2.8 : cổng I/O thực tế
Trang 332.5 Cổng nối tiếp
Nexys 2 chưa một cổng nối tiếp cơ bản 2 dây chuyển đổi điện áp trên một vi điện tử ST3232 Vi điện tử ST3232 chuyển đổi các mức tín hiệu được sử dụng bởi giao tiếp RS-232 (từ -12V – 3V cho mức logic ‘1’ và từ 3V – 12V cho mức logic ‘0’) tới tín hiệu 3.3V dùng trong FPGA Do chỉ có hai tín hiệu được kết nối (RXD và TXD), cổng nối tiếp trên FPGA điều khiển chỉ có thể sử dụng phần mềm giao thức bắt tay (XON, XOFF) Cổng nối tiếp Nexys 2 hữu ích trong nhiều ứng dụng, và đặc biệt là dùng để sửa lỗi và làm việc với vi xử
lý nhúng MicroBlaze của Xilinx
Hai thiết bị được kết nối với hai đầu của một sợi cáp nối tiếp được gọi là thiết bị đầu cuối
dữ liệu (DTE) và thiết bị truyền thông dữ liệu (DCE) DCE đầu tiên được hiểu là một Modem, nhưng bây giờ nhiều thiết bị được kết nối với máy tính như một DCE Một thiết bị DTE “nguồn” sử dụng một kết nối DB-9 đầu đực và một thiết bị DCE “ngoại vi” sử dụng một kết nối DB-9 đầu cái Hai thiết bị DTE có thể được kết nối thông qua một cáp nối tiếp chỉ khi hai và ba dòng (RXD và TXD)chéo nhau, sản xuất những gì được biết đến như một cáp modem không Một thiết bị DTE và DCE có thể được kết nối với một cáp thẳng Nexys2 được cấu hình như một thiết bị DCE, với giả thiết đặc trưng nhất là nó sẽ được kết nối với một thiết bị DTE như một máy tính
Hình 2.9: Mạch cổng nối tiếp Nexys 2
Trang 34thiết kế điều khiển đơn giản hóa bộ nhớ (tương tự như bất kỳ SRAM) trong FPGA Khi hoạt động ở chế độ đồng bộ, truyền liên tục lên đến 80MHz là có thể
ROM ngoại là một Intel 128Mbit TE28F128J3D75-110 StrataFlash thiết bị được thiết lập 8Mbytes 16bits x Bên trong, nó có chứa 128 khối có thể từng khối một bị xóa, và nó hỗ trợ chu kỳ đọc 110ns, với 25ns đọc chế độ trang trong khối Nó có một bộ đệm 32-byte viết nội bộ có thể được viết với thời gian chu kỳ đánh giá 70ns, và bộ đệm 32-byte có thể được chuyển giao cho các mảng Flash trong 218us (điển hình)
Cả hai thiết bị đều sử dụng chung 16-bit bus dữ liệu và 24-bit bus địa chỉ RAM Cellular
là byte định địa chỉ bằng cách sử dụng các tín hiệu byte cao và byte thấp (UB và LB), nhưng
MT-StrataFlash được cấu hình cho 16 byte hoạt động (nó không phải là byte địa chỉ) Tín hiệu cho phép xuất ra(OE) và ghi (WE) tín được sử dụng bởi cả hai thiết bị, nhưng mỗi thiết bị có con chip cho phép tín hiệu (CE) riêng Ngoài ra, bộ nhớ RAM Cellular có clock (MT-CLK), đợi (MT-WAIT), địa chỉ hợp lệ (MT-ADV) và cho phép thanh ghi điều khiển (MT_CRE) tín hiệu có sẵn cho FPGA để sử dụng với truyền đồng bộ, và StrataFlash có thiết lập lại (RP
#) tình trạng và (STS) tín hiệu truyền đến FPGA
Mã nguồn VDHL sẵn có trong một thiết kế tham khảo được đăng trên trang web Digilent
để minh họa cho việc sử dụng các thiết bị này Một hệ thống tập tin cơ sở xây dựng cũng có sẵn để sử dụng các thiết bị này với công cụ EDK Xilinx và bộ xử lý lõi MicroBlaze, cả hai đều có sẵn từ Xilinx.Toàn bộ thông tin có sẵn cho cả hai thiết bị từ các trang web nhà sản xuất
Hình 2.10: Mạch bộ nhớ Nexys 2
Trang 35Bảng 2.3: Gán chân Bus dữ liệu và địa chỉ bộ nhớ
Trang 36CHƯƠNG 3 KHẢO SÁT THANH GHI DỊCH
3.1 GIỚI THIỆU
Các vi mạch thanh ghi dịch có nhiều chủng loại:
Vào nối tiếp, ra nối tiếp, xem hình 3-1(a, b)
Vào song – song, ra nối tiếp, xem hình 3-1(c)
Xoay trái, xoay phải, xem hình 3-1(d, e)
Vào nối tiếp, ra song - song, xem hình 3-1(f)
Vào song – song, ra song - song, xem hình 3-1(g)
Hình 3-1: Các dạng di chuyển dữ liệu của thanh ghi
Với yêu cầu là mở rộng các cổng giao tiếp nên phải sử dụng các vi mạch là thanh ghi dạng vào nối tiếp ra song – song mới đáp ứng được
3.2 KHẢO SÁT CÁC VI MẠCH THANH GHI
Có rất nhiều thanh ghi dịch nhưng chỉ có thanh ghi dịch từ nối tiếp sang song – song là phù hợp với yêu cầu nên phần này chỉ khảo sát các vi mạch đáp ứng được yêu cầu này
Trang 373.2.1 Khảo sát vi mạch 74HC595
Sơ đồ khối của vi mạch 74HC595 như hình 3-2:
Hình 3-2 Sơ đồ khối thanh ghi 74595
Chân tín hiệu SER của 74595 là ngõ vào nhận dữ liệu nối tiếp sẽ nối với chân xuất dữ liệu của FPGA
Chân tín hiệu SCK dùng để nhận xung clock để nhịp đẩy dữ liệu vào thanh ghi dịch sẽ nối với chân xuất tín hiệu xung clock của FPGA
Chân tín hiệu SCLR dùng để xóa dữ liệu trong thanh ghi dịch nối tiếp
Chân tín hiệu QH dùng để kết nối với thanh ghi dịch tiếp theo
Thanh ghi dịch 74HC595 có 2 bộ thanh ghi 8 bit: 1 bộ thanh ghi dùng để nhận dữ liệu dịch vào (shift register) và một bộ thanh ghi dịch dùng để lưu dữ liệu xuất ra ngoài (storage register), tín hiệu RCK dùng để nạp dữ liệu từ thanh ghi dịch bên trong sang thanh ghi dịch xuất ra ngoài
Chân tín hiệu G dùng để mở bộ đệm 3 trạng thái xuất tín hiệu ra ngoài
Chức năng 2 tầng thanh ghi là khi dịch chuyển dữ liệu sẽ xảy ra ở tầng thứ nhất không làm ảnh hưởng tầng thứ 2 và không ảnh hưởng đến ngõ ra, chờ cho dịch chuyển hết dữ liệu mới xuất dữ liệu ra ngoài
Thanh ghi này rất phù hợp với việc giao tiếp và mở rộng port
Trang 38Khi giao tiếp thì FPGA chỉ cần sử dụng 4 đến 5 tín hiệu giao tiếp còn số lượng vi mạch kết nối thêm tùy ý nhưng phải đảm bảo tương thích về điện áp và dòng điện để vi mạch hoạt động
Vi mạch này với các ngõ vào ra tương thích với chuẩn TTL và giá thành thấp
3.2.2 Khảo sát vi mạch MBI5026
Sơ đồ khối của vi mạch MBI5026 như hình 3-4:
MBI5026 là thanh ghi dịch 16 bit có thể nhận dòng từ 5mA đến 90mA có thể thiết lập được bằng điện trở gắn thêm bên ngoài Áp có thể hoạt động lên đến 36V phù hợp với các tải công suất như relay, solenoid, …
Các tín hiệu còn lại có chức năng giống như vi mạch 74HC595
Thanh ghi này phù hợp với các ứng dụng ngoại vi nhiều hơn 8 bit
Các thanh ghi vừa khảo sát đều đáp ứng được các yêu cầu điều khiển, các thanh ghi khác không đáp ứng được thì không khảo sát
Chương tiếp theo sẽ sử dụng các thanh ghi giao tiếp với ngoại vi và FPGA
Hình 3-3 Sơ đồ khối thanh ghi MBI5026
Trang 39CHƯƠNG 4
THIẾT KẾ VÀ THI CÔNG MODULE MỞ RỘNG
4.1 YÊU CẦU THIẾT KẾ
Ngày nay việc sử dụng ngôn ngữ HDL viết cho FPGA điều khiển các thiết bị, viết các ứng dụng điều khiển… càng phổ biến và phát triển Để theo kịp nhịp độ của thì trường thì vấn để thực tập trên kit SPARTAN -3E cần cải tiến sao cho chất lượng, hiệu quả hơn
Để đạt được điều đó thì kit cần có thêm các module điều khiển để việc thực tập có những bài tập đa dạng hơn, giúp người thực tập hiểu rõ hơn về ngôn ngữ HDL, cũng như phương pháp lập trình
Hình 4.1 : Sơ đồ khối hệ thống Chức năng các khối:
Khối pmod: là 4 cổng pmod của kit FPGA, dùng để giao tiếp giữa FPGA và các khối của module mở rộng
Khối thanh ghi dịch: dịch dữ liệu điều khiển các khối hiển thị: led ma trận, led đơn, led 7 đoạn, lcd
Khối bàn phím ma trận: giao tiếp với bàn phím gồm 4x4 phím
Khối giao tiếp công suất: giao tiếp với relay
4.2 KHỐI GIAO TIẾP
Vì kit mở rộng dùng điện áp nguồn cung cấp là 5V và kit Nexsy2 có điện áp nguồn cung cấp
là 3.3V, vì vậy cần chuyển đổi mức điện áp tương thích của Nexsy2 với Module mở rộng
Trang 40Do module mở rộng dùng thanh ghi dịch để điều khiển các thiết bị, và các thanh ghi này là
họ TTL nên trên module sẽ dùng IC 74245 để chuyển đổi mức điện áp từ 3.3V lên 5V
Hình 4.2 Sơ đồ nguyên lý mạch giao tiếp chuyển đổi mức điện áp
4.3 KHỐI LED ĐƠN:
Trên kit Spartant 3E/6 chỉ có 8 led đơn Vì vậy để mở rộng cho các bài thực hành điều khiển led đơn như mạch đèn quảng cáo, tác giả thiết kế thêm 32 led đơn trên module
led
led CC
I
V V
R
Chọn R= 220
Các led này được kết nối với thanh ghi dịch 74595, để giảm thiểu số đường điều khiển Các tín hiệu điều khiển sẽ được kết nối với port A, theo bảng sau:
MODULE MỞ RỘNG BO FPGA MODULE MỞ RỘNG BO FPGA
SCK_PLD (X12) (JA1) L15 SDO_PLD (X11) (JA7) K13 G_32LED (X18) (JA4) M15 RCK_32LED (X17) (JA10) M16
Bảng 4.1: Kết nối chân modul led đơn với kit FPGA