HSTC là một giao diện mở rộng được định nghĩa bởi các công nghệ Terasic. Board DE3 được trang bị với tám đầu nối HSTC (J1 ~ J7) có thể được sử dụng để kết nối các Stratix III FPGA với các board con hoặc các board DE3 khác. Các thông số kỹ thuật cụ thể của đầu nối HSTC được mô tả dưới đây:
Bốn nhóm đầu nối HSTC:
LED
Đầu nối HSTC trên board DE3 được chia thành bốn nhóm: HSTC A, HSTC B, HSTC C và HSTC D. Mỗi nhóm có đầu nối đực và cái ở phía trên và dưới của board DE3. Ngoài ra, cả 2 đầu nối đực và cái HSTC chia sẻ cùng chân I/O ngoại trừ giao diện JTAG và I2C.
Sự phân bố I/O:
Mỗi đầu nối HSTC có 60 cặp kênh khác nhau, 5 cặp xung clock đầu vào và ra mà mỗi cặp là xung clock đầu vào và ra, bus JTAG và I2C.
Ngoài ra, có 3 bank (dãy) trên một đầu nối HSTC. Các chân I/O sử dụng trong các kênh thu phát khác nhau ở bank 1 hỗ trợ LVDS vào ra. Ở bank 2, 3 các chân I/O sử dụng trong kênh phát khác nhau hỗ trợ mô phỏng LVDS thông qua 1 điện trở giới hạn và các kênh nhận khác nhau hỗ trợ LVDS.
Tiêu chuẩn cấu hình I/O:
Các chân của đầu nối HSTC hỗ trợ nhiều chuẩn I/O với mức điện thế khác nhau. Tương thích với đầu nối HSMC:
Các kết nối HSTC không những được thiết kế để tương thích giống với các sản phẩm HSMC đi trước mà còn cung cấp nhiều chân I/O để kết nối thêm. Các nhiệm vụ chân của bank 1 và 2 thì giống hệt nhau.
Sự khác biệt duy nhất giữa đầu nối HSMC và HSTC là nhiệm vụ chân cho bank 3. Đối với đầu nối HSTC, tất cả các chân I/O ở bank 3 được định nghĩa rõ ràng.
Chia sẻ các chân I/O tương tự với các đầu nối khác:
Đầu nối HSTC nhóm HSTCA (J1, J2) và HSTCB (J3, J4) chia sẻ các chân tương tự nhau với những header mở rộng GPIO (J13, J14) và ổ cắm DDR2 SO-DIMM (J9). Vì vậy không có đầu nối nào trong số những sự kết hợp trên là được phép sử dụng cùng một lúc.
Nguồn cung cấp:
Đầu nối HSTC cung cấp điện thế 12V, 5V, 3.3V để cấp nguồn. Cũng có hai công suất chân đầu vào tên là B < nhóm HST > _VTT và B < nhóm HSTC > _VREF được kết nối với điện thế tham chiếu đầu vào (VREF) và chân điện áp giới hạn (VTT) của Stratix III FPGA.
2.2.5 Kết nối board con HSTC/HSMC đến đầu nối DE3 HSTC
Khi các board con HSTC/HSMC được kết nối đến các đầu nối HSTC DE3 là để đảm bảo các chân I/O được kết hợp đúng giữa board con và đầu nối DE3 đặc biệt là các chân công suất 12V, 5V, 3.3V.
Nếu có nhiều chân không phù hợp giữa 2 đầu nối, không những sẽ gây hư hỏng đến board con mà quan trọng hơn là làm hư chính nó - FPGA.
Hãy lưu ý rằng, board con chỉ có thể được kết nối đến đầu nối HSTC phía trên đầu của board DE3, vì thế đầu nối HSTC phía dưới chỉ được sử dụng để thiết lập kết nối cho mục đích xếp chồng.
2.2.6 Các Header mở rộng GPIO
Board DE3 cung cấp 2 header mở rộng gồm 40 chân như Hình 2.2-8. Mỗi header có 36 chân được kết nối đến Stratix III FPGA và hai header chia sẻ những chân I/O tương tự với đầu nối HSTC A. Bốn chân khác cung cấp DC + 5V (VCC 5), DC + 3.3V (VCC 33), và hai các chân GND. Giữa 36 chân I/O, có bốn chân kết nối đến các chân xung clock ngõ vào và ra PLL của FPGA.
Các chân I/O ở header mở rộng có một sự linh hoạt tốt trong việc lựa chọ tiêu chuẩn. Mức điện thế của VCCIO có thể được cấu hình là 3.3V, 2.5V, 1.8V và 1.5V.
Hình 2.2-8: Sự phân bố chân của header mở rộng GPIO
2.2.7 DDR2 SO-DIMM
Board DE3 cung cấp một ổ cắm DDR2 SO-DIMM gồm 200 chân. Dung lượng hỗ trợ tối đa là 4GB. DDR2 SO-DIMM chia sẻ những chân I/O tương tự nhau với đầu nối HSTC B, ngoại trừ các tín hiệu lệnh ngõ vào DDR2_CS_N[1..0] và phát hiện sự có mặt các tín hiệu ngõ vào DDR2_SA[1..0]. Người dùng không nên sử dụng ổ cắm DDR2 SO-DIMM và đầu nối HSTC B cùng lúc. Hình 2.2-9 cho thấy sự kết nối giữa DDR2 và thiết bị Stratix III.
Hình 2.2-9: Sự kết nối giữa DDR2 và Stratix III
2.2.8 USB OTG
Board DE3 cung cấp cả hai USB host và device giao diện sử dụng chip đơn Philips ISP1761ET USB điều khiển. Bộ điều khiển host và device thì tương thích với Universal Serial Bus Specification Rev. 2.0.
Hỗ trợ truyền dữ liệu ở high-speed (480 Mbit / s), full-speed (12 Mbit / s) và low- speed (1,5 Mbit / s) . Hình 2.2-10 cho thấy sự kết nối giữa các USB OTG và thiết bị Stratix III. HSTCB_SDA Altera DE3 Stratix III DDR2_SCL DDR2_SDA DDR2_DQ[0..63] DDR2_DQS_p[0..7] DDR2_DQS_n[0..7] DDR2_A[0..15] DDR2_BA[0..2] DDR2_CKE[0..1] DDR2_CLK_p[0..1] DDR2_CLK_n[0..1] DDR2_CS_n[0..1] DDR2_DM[0..7] DDR2_ODT[0..1] DDR2_CS_n[0..1] DDR2_SA[0..1] H ST C B HSTCB_SCL HSTCB_RX_n[0..29] HSTCB_RX_p[0..29] HSTCB_TX_n[0..29] HSTCB_RX_p[0..29]
Hình 2.2-10: Sự kết nối giữa USB OTG và Stratix III
2.2.9 SD CARD
Board DE3 có một ổ cắm thẻ SD và có thể được truy cập như là bộ nhớ bên ngoài tùy chọn trong cả hai chế độ SPI và SD 1-bit.
Hình 2.2-11: Sự kết nối giữa SD và Stratix III
2.3 CẤU TRÚC TỔNG THỂ CONTROL PANEL DE3
Hình 2.3-1 mô tả cấu trúc của Control Panel. Mỗi thiết bị đầu vào/đầu ra được kiểm soát bởi bộ xử lý Nios II khởi tạo trong chip FPGA. Giao tiếp với máy tính được thực hiện thông qua liên kết USB Blaster. Nios II dịch các lệnh được gửi từ máy tính và thực hiện các hành động thích hợp. Altera DE3 Stratix III CMD CLK DAT0 WP_n A[1..17] DMI D[0..3] DPI USB_ID CS NXP ISP1761ET WR RD HC_IRQ DM2 DC_IRQ DP2 RESET HC_DREQ HC_DACK DC_DREQ DC_DACK CLKIN DM3 Altera DE3 Stratix III P28 N29 N30 P29 R27 T23 R28 R25 R26 R24 12MHz Mini AB Loại A Loại A JP1 Close = Host JP1 Open = Device N5 P7 P8 R10
Hình 2.3-1: Sơ đồ khối của bảng điều khiển DE3 DDR2 SO-DIMM 7 SEG Display USB Devices IO Group Power Control Switches SD CARD EPCS 128 Buttons LEDs Control Panel DE3 TIMER RAM NIOS II 7-SEG DDR2 Controller USB Controller PIO Controller Avalon Map Memory JTAG Blaster Hardware EPCS Controller FPGA/SOPC JTAG
CHƢƠNG 3: SƠ LƢỢC PHẦN MỀM VÀ THÀNH PHẦN LIÊN QUAN 3.1 QUARTUS II
Quartus II là công cụ phần mềm thiết kế mạch logic khả trình của Altera, cung cấp môi trường thiết kế toàn diện cho các thiết kế SOPC, đây là phần mềm đóng gói tích hợp đầy đủ phục vụ cho thiết kế logic. Quartus cung cấp các tính năng sau:
- Môi trường thiết kế gồm các bản vẽ, sơ đồ khối, công cụ soạn thảo các ngôn ngữ: VHDL và Verilog HDL. Mô tả hệ thống mạch logic.
- Môi trường thiết kế đồ họa giúp người thiết kế dễ dàng viết mã, biên dịch, kiểm soát lỗi, mô phỏng... .
- Công cụ định vị lỗi tự động và các thông điệp cảnh báo làm việc phát hiện và sửa lỗi trở nên đơn giản hơn.
Mỗi mạch logic thiết kế bằng phần mềm Quartus được gọi là một project. Để bắt đầu thiết kế một mạch logic mới, chúng ta phải tạo một thư mục để chứa các file của nó. Để xây dựng phần cứng cho hệ thống muốn thiết kế, ta sử dụng công cụ SOPC Builder từ phần mềm Quartus II.
3.2 SOPC BUILDER
SOPC Builder là một công cụ của phần mềm Quartus II cho phép người thiết kế dễ dàng và nhanh chóng thiết lập hệ thống. Công cụ này tích hợp thư viện các thành phần có sẵn như: Nios II processor, Memory, JTAG. Các liên kết được thực hiện thông qua Avalon Bus. Nó dùng để kết nối và cấu hình các thành phần có sẵn để tạo ra một hệ thống mạch logic hoàn chỉnh.
Công cụ SOPC Builder có thể tạo ra một hệ thống dựa trên các thiết lập do người thiết kế lựa chọn các thành phần và thông số. Người thiết kế chỉ cần xác định các thành phần có trong hệ thống, SOPC Builder sẽ tạo ra các kết nối tự động. Hệ thống tạo ra chứa mã Verilog hoặc VHDL cho mỗi thành phần và cấu trúc kết nối, cho phép nó được tổng hợp, bố trí và định tuyến trên FPGA.
Sau khi xây dựng hệ thống phần cứng xong, để có thể giao tiếp được với board, ta viết chương trình ứng dụng cho hệ thống phần cứng đã được thiết kế bằng phần mềm Nios II Software Build Tools for Eclipse.
3.3 NIOS II SOFTWARE BUILD TOOLS FOR ECLIPSE
Nios II Software Build Tools for Eclipse là chương trình biên dịch ngôn ngữ lập trình C, cung cấp sẵn các tiện ích như tập lệnh và dòng lệnh đến giao diện người dùng Eclipse. Nó cung cấp mẫu phần mềm có sẵn để hỗ trợ người thiết kế làm việc một cách nhanh chóng. Ngoài ra, chúng ta có thể tạo, chỉnh sửa, biên dịch, chạy chương trình và chạy từng bước chương trình. Người thiết kế có thể thêm mã nguồn riêng của mình vào project bằng cách thay thế code có sẵn.
Thư viện của Nios II chứa file liên quan tới hệ thống xây dựng của SOPC Builder. Nó có thể thực hiện lựa chọn bộ nhớ ngõ vào, ngõ ra và bộ đếm cho ứng dụng. Có nhiều tùy chọn của biên dịch và chạy chương trình.
CHƢƠNG 4: KHẢO SÁT VỀ GIAO TIẾP NGOẠI VI 4.1 SWITCH VÀ LED ĐƠN
Trong phần này sử dụng giao tiếp I/O hiển thị sự thay đổi của switch lên LED tương ứng. Sử dụng 4 Switch (từ Switch 0 đến Switch 3). Khi ấn Switch 0 thì hiển thị LED xanh lá, ấn Switch 1 thì hiển thị LED xanh dương, ấn Switch 2 thì hiển thị LED đỏ và ấn Switch 3 thì hiển thị LED RGB.
Trước tiên, ta tạo một project mới và đặt tên cho nó. Kế đến chọn họ và thiết bị.
Hình 4.1-1 Chọn nơi lưu, đặt tên project và tên thư mục
Hình 4.1-2: Chọn họ và thiết bị
Bước đầu chọn nơi lưu trữ coi như đã hoàn tất, tiếp theo là phần xây dựng hệ thống nhúng bằng SOPC Builder. Trên thanh công cụ Quartus II chọn Tools/SOPC Builder và xuất hiện hộp thoại để đặt tên cho hệ thống.
Đầu tiên của xây dựng hệ thống là thiết kế phần CPU. Chọn Processor/Nios II Processor:
Tiếp theo là phần xây dựng bộ nhớ cho hệ thống để chứa lệnh và dữ liệu. Chọn Memories and Memory Controllers/On-Chip/On-Chip Memory (RAM or ROM). Sau khi tạo bộ nhớ RAM, quay lại CPU để gán bộ nhớ cho nó.
Hình 4.1-6: Gán bộ nhớ RAM cho CPU
Tiếp theo, ta chọn Interface Protocols/Serial/JTAG UART để kết nối dữ liệu từ máy tính đến board DE3 (Hình 4.1-7). Chọn Peripherals/Debug and Performance/ System ID Perpheral để nhận dạng hệ thống phần cứng (Hình 4.1-8).
Hình 4.1-7: Chọn JTAG
Hình 4.1-8: Chọn System ID
Trong phần giao thức PIO sẽ thiết kế bốn mạch kết nối gồm: 1 đầu vào 4 bit (switch), 1 đầu ra 8 bit (LED xanh), 1 đầu ra 8 bit (LED đỏ) và 1 đầu ra 8 bit (LED xanh dương). Chọn Peripherals/Microcontroller Peripherals/PIO (Parallel I/O).
Hình 4.1-9: Cấu hình PIO
Để biên dịch hệ thống, ta cần gán địa chỉ nền cho các core đã thiết kế. Chọn System/Auto-Assign Base Addresses để định lại địa chỉ nền cho các module. Kết quả sau khi gán địa chỉ nền (Hình 4.1-10).
Hình 4.1-10: Hệ thống nhúng xây dựng bằng SOPC Builder
Sau khi hoàn tất chọn Gernerate và biên dịch hệ thống thành công, bắt đầu gán chân cho hệ thống, trước khi gán chân, ta chọn Files/ Add/Remove Files in Project chọn file nios_sys.v.
Hình 4.1-11: Thêm file nios_sys.v
Tiếp theo, ta chọn File/New chọn Block Diagram/Schematic File xuất hiện cửa sổ gán chân cho hệ thống. Vào Symbol Tool để lấy sơ đồ khối hệ thống (nios_sys) đã tạo ra từ SOPC Builder.
Hình 4.1-12: Gán chân cho hệ thống
Hình 4.1-14: Nạp xuống board thành công
Khi hoàn tất nạp xuống board DE3, ta tiến hành viết chương trình ứng dụng trên Nios II Software Build Tools for Eclipse. Ta quay lại công cụ SOPC Builder, nhấp vào Tab System Generation sẽ xuất hiện phần mềm Nios II.
Tiếp theo, tạo một project mới lưu trữ ứng dụng vào File/New/Nios II Application and BSP form temple. Để lập trình cho hệ thống phần cứng, ta sử dụng code mẫu có sẵn “Hello Word”.
Hình 4.1-16: Cửa sổ Nios II Software Build Tools for Eclipse
Chương trình ứng dụng có code mẫu, để ứng dụng có thể giao tiếp được với board ta thay thế code bên dưới cho code có sẵn.
#include "system.h" #include "io.h" int main() { int t,c;
printf("Hong Thi Hanh_1117967.\n"); printf("Pham Thi Hai Quyen_1118007.\n"); while(1) { int a=IORD(0x00041000,0); c=a&0xff; if(c==0) { for(t =0; t<100; t++) { IOWR(0x00041010,0,0xff); IOWR(0x00041020,0,0xff); IOWR(0x00041030,0,0xff); printf("ok 333"); }} if(c==1) { IOWR(0x00041010,0,0x00); printf("ok"); } if(c==2) { IOWR(0x00041020,0,0x00); printf("hello"); } if(c==4) { IOWR(0x00041030,0,0x00); printf("ok 1"); } if(c==8) { for(t=0;t<100;t++) {IOWR(0x00041010,0,0x00); IOWR(0x00041020,0,0x00); IOWR(0x00041030,0,0x00); printf("ok 2"); }}} return 0;}
Sau khi đánh code xong ta nhấp chuột phải vào project SW_LED rồi chọn Build Project để biên dịch chương trình.
Hình 4.1-18: Biên dịch chương trình
Sau khi biên dịch xong, nhấp chuột phải vào project SW_LED chọn Run As/Run Configuration để chạy chương trình.
Kết quả chạy chương trình:
Hình 4.1-21: Hiển thị giá trị LED RGB khi trượt các Switch
4.2 SWITCH VÀ LED 7 ĐOẠN
Viết chương trình đọc nội dung của các switch, hiển thị giá trị tương ứng lên LED 7 đoạn, sử dụng 4 Switch (từ Switch 0 đến Switch 3).
Trước tiên xây dựng hệ thống nhúng:
Sau khi tạo hệ thống thành công, ta bắt đầu gán chân cho hệ thống như Hình 4.2-2.
Hình 4.2-2: Gán chân cho hệ thống
Hình 4.2-3: Biên dịch thành công
Sau khi nạp thành công hệ thống phần cứng xuống Board DE3, ta sử dụng phần mềm Nios II Software Builder Tool for Eclipse để viết chương trình ứng dụng bằng ngôn ngữ C cho hệ thống phần cứng đã thiết kế. Trở lại cửa sổ Altera SOPC Builder chọn Nios II Software Build Tools for Eclipse.
Hình 4.2-4: Nạp xuống board thành công
Sau đó, tạo project mới vào File/New/Nios II Application and BSP form temple. Chương trình ứng dụng sử dụng code mẫu có sẵn và đánh đoạn code bên dưới thay thế code có sẵn.
#include "system.h" #include "io.h" int giai_ma(int a); int main()
{ int x;
printf("Hong Thi Hanh _ 1117967.\n"); printf("Pham Thi Hai Quyen _ 1118007.\n"); while(1)
{ x = IORD(0x00041010,0); IOWR(0x00041010,0,x);
IOWR(0x00041000,0,giai_ma(x)); } }
// day la module giai ma bin ra led 7 doan int giai_ma(int a)
{ int led; switch (a)
{ case 0 : led = 0x40; break; //0 case 1 : led = 0x79; break; //1 case 2 : led = 0x24; break; //2 case 3 : led = 0x30; break; //3 case 4 : led = 0x19; break; //4 case 5 : led = 0x12; break; //5 case 6 : led = 0x02; break; //6 case 7 : led = 0x78; break; //7 case 8 : led = 0x00; break; //8 case 9 : led = 0x10; break; //9
default : led = 0xff; break;} // khong sang return led; }
Sau khi đánh code xong ta biên dịch và chạy chương trình.
Hình 4.2-6: Biên dịch chương trình thành công
Để kiểm tra kết quả sau khi chạy chương trình, ta bật các Switch đểhiển thị giá trị tương ứng lên LED 7 đoạn như code đã lập trình. Ví dụ, khi bật Switch 1 và Switch 2 tương ứng với mã hex của LED 7 đoạn thì hiển thị số 6 như Hình 4.2-7.
4.3 BUTTON VÀ LED ĐƠN
Viết chương trình đọc nội dung của các button, hiển thị giá trị tương ứng lên LED RGB:
- 8 LED xanh (từ LED 0 đến LED 7) chạy hiệu ứng khi ấn button 0.