1. Trang chủ
  2. » Giáo Dục - Đào Tạ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

81 25 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 81
Dung lượng 14,21 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Để 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 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

S K C0 0 5 3 8 6

Trang 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

Trang 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 4

DANH SÁCH NHỮNG THÀNH VIÊN THAM GIA NGHIÊN CỨU ĐỀ TÀI

Trang 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 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ư 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 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 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 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 9

TRƯỜ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 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

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 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

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 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 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 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:

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 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 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 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

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 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 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 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 22

Mô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 23

Hì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 26

CHƯƠ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 28

sẽ 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 29

Hì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 30

Adept, 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 31

Bố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 32

Ngõ 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 33

2.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 34

thiế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 35

Bảng 2.3: Gán chân Bus dữ liệu và địa chỉ bộ nhớ

Trang 36

CHƯƠ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 37

3.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 38

Khi 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 39

CHƯƠ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 40

Do 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

Ngày đăng: 27/11/2021, 08:59

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm