Luận văn nghiên cứu khả năng lập trình của FPGAs XC4005XL hãng Xilinx và các chip MAX7000S, chip FLEX10K hãng Altera và ứng dụng thực tiễn dành cho sinh viên khối ngành công nghệ thông tin công nghệ phần mềm
Trang 1 PHẦN 1: KIT XS40 HÃNG XILINX
Họ Xilinx 4000 là thiết bị họ FPGA với 2,000 đến 180,000 cổng tiện ích Nó được cấu hình bởi lập trình trong SRAM nội
CHƯƠNG I: CẤU TRÚC TỔNG QUÁT CỦA FPGA
I Cấu trúc chung
1 Các logic block
Cấu trúc và nội dung của logic block được gọi là kiến trúc của nó Kiến trúc của logic block có thể được thiết kế theo nhiều cách khác nhau Một số logic block có thể chỉ đơn giản là các cổng AND hai ngõ nhập Các logic block khác có cấu trúc phức tạp hơn như các multiplexer hay các bảng dò tìm (look-up table) Trong một số
Trang 2loại FPGA, các logic block có thể có cấu trúc hoàn toàn giống PAL Hầu hết các logic block chứa một số loại flip-flop để hỗ trợ cho việc thực hiện các mạch tuần tự.
2 Khối I/O (IOB)
Mỗi chân I/O của linh kiện XC4000 có một IOB lập trình được với các buffer tương thích với các mức tín hiệu của TTL và CMOS Nó được sử dụng như một lối
ra, lối vào hoặc port 2 chiều Một IOB được định cấu hình như một lối vào có thể có lối vào trực tiếp, chốt Với việc định cấu hình một lối ra, IOB có lối ra trực tiếp Lối
ra bộ đệm của IOB có bộ điều khiển skew và slew Các thanh ghi có giá trị đối với đường dẫn lối vào lối ra của một IOB được truyền các xung đảo riêng biệt Có một set và reset toàn cục
3 Các nguồn kết nối
routing (routing architecture) Kiến trúc routing gồm các đoạn dây nối và các chuyển mạch lập trình được Các chuyển mạch lập trình được có thể có nhiều cấu tạo khác nhau như: pass-transistor được điều khiển bởi cell RAM, các cầu chì nghịch (anti-fuse), EPROM transistor và EEPROM transistor Giống như logic block, có nhiều cách khác nhau để thiết kế các kiến trúc routing Một số FPGA cung cấp nhiều kết nối đơn giản giữa các logic block, một số khác cung cấp ít kết nối hơn nên routing phức tạp hơn
II Các loại FPGA trên thị trường
Phần này giới thiệu một số họ FPGA của các hãng, trong đó giới thiệu kiến trúc FPGA của các hãng lớn Quicklogic, Xilinx, Actel và Altera
Công ty Kiến trúc tổng quát Kiểu khối Logic Công nghệ lập trình
Based Gates
Static RAM
Trang 3CHƯƠNG II: MẠCH XS40
Mạch XS40_005XL là lý tưởng cho việc thực hiện các thiết kế với FPGA, lập trình vi điều khiển hoặc codesign phần cứng/phần mềm XC4005XL gồm 9000 cổng, hoạt động ở mức thế là 5V Vì vậy ta có thể nối nó đến các chip TTL Thiết kế logic số được nạp vào FPGA Vi điều khiển sử dụng FPGA như một bộ xử lý chung SRAM 32K byte lưu trữ hoặc cung cấp những chương trình/dữ liệu vi điều khiển như việc lưu trữ thông dụng đối với thiết kế FPGA cơ bản XC4005XL nối tiếp của FPGAs được hỗ trợ bởi phần mềm XILINX Foundation và Alliance Series
Trang 4II Mô tả mạch XS40
1 Nguồn điện
Mạch XS40 sử dụng nguồn 9V để thực hiện các thiết kế logic với bộ vi điều khiển Đặt mạch XS40 trên một bề mặt không dẫn điện, sau đó cắm nguồn vào jack J9 của mạch như hình 2 Mạch quy định điện thế sẽ tạo ra mức thế được yêu cầu bởi phần còn lại của XS40
2 Kết nối Breadboard
Một mạch con không hàn có thể nối đến hai hàng chân của mạch XS40 với những lỗ cắm cách nhau 0.1” (tốt nhất nên chọn một trong những mạch chuẩn của A.C.E) Khi cắm vào, tất cả các chân của FPGA, vi điều khiển và SRAM đều được nối đến những mạch khác trên breadboard (Các con số được ghi bên cạnh các hàng chân của mạch XS40 tương ứng với số của chân FPGA) Nguồn điện vẫn có thể được cắm vào chân J9 của mạch XS40 hoặc được cắm trực tiếp thông qua một số chân ở bên dưới của mạch Chỉ cần nối nguồn +5V, +3.3V và nối mass đến các chân của mạch XS40 (Sử dụng nguồn +3.3V nếu mạch XS40 chứa loại XC4000XL của FPGA)
Loại mạch XS40 Chân GND Chân +5V Chân +3.3V
Bảng 1: Nguồn điện cung cấp cho các chân của mạch XS40
Hình 2: Các kết nối bên ngoài của mạch XS40
Trang 5Hình 3: Sự sắp xếp các thành phần trên mạch XS40
3 Kết nối máy tính với mạch XS40
Nối mạch XS40 với một máy tính bằng một dây cáp 6’ Một đầu cáp được gắn vào cổng song song của máy tính và đầu kia nối đến bộ nối DB-25 (J1) ở phần trên của mạch XS40 (như hình 2)
4 Kết nối một monitor VGA với mạch XS40
Ta có thể hiển thị hình ảnh trên một màn hình VGA bằng cách nối đến bộ nối
15 chân J12 ở phần dưới mạch XS40 (như hình 2) Ta sẽ phải download driver của VGA vào mạch XS40 để hiển thị hình ảnh
5 Kết nối chuột/bàn phím với mạch XS40
Các lối vào có thể nhận từ bàn phím hoặc chuột bằng cách nối nó đến chân J5 của bộ nối loại PS/2 ở phần dưới của mạch XS40 (Như hình 2)
6 Sự bố trí các jumper trên mạch XS40
Các jumper được mặc định (Như trong bảng 2) để định cấu hình cho mạch XS40 trong một môi trường thiết kế Thay đổi vị trí các jumper với điều kiện là:
song của máy tính
mạch XS40 (Muốn sử dụng tính năng đặc biệt này thì phải thay thế bộ vi điều khiển ROMLESS trên mạch XS40 với một loại ROM)
Trang 6Jumper Chế độ Chức năng
dạng thông qua EEFROM nối tiếp trên mạch
được lập trìnhOff
(mặc định)
Tháo bỏ shunt trong khi sử dụng mạch thông thường
32KByte (U8) của mạch XS40
được lưu trữ nội bộ trong vi điều khiển
XC4000XL 3.3V của họ FPGA
XC4000E 5V của họ FPGA
dạng từ EEFROM nối tiếp trên mạchOff
(mặc định)
Tháo bỏ shunt nếu mạch XS40 hoặc XSP đang được download từ cổng song song của máy tính
dạng từ EEFROM nối tiếp trên mạch
(mặc định)
Đặt shunt vào chân 1 và chân 2 (osc) trong các thao tác thông thường khi bộ dao động đang phát ra một tín hiệu xung clk
động đang được thiết lập
Bảng 2: Thiết lập các jumper trên mạch XS40 và XSTEND
III Mối quan hệ giữa các linh kiện trên mạch XS40
Trên mạch XS40, vi điều khiển và FPGA đã được kết nối với nhau Chúng có những giới hạn để làm cho chương trình vi điều khiển và phần cứng FPGA tương tác lẫn nhau Một mức cao sẽ xét bộ vi điều khiển, SRAM và FPGA được kết nối như thế nào được trình bày như hình 4:
Trang 7Hình 4: Sơ đồ kết nối các thành phần trên mạch XS40
Ghi chú: * = not conectted on XSP Board
** = applies to XS40 + Board
Lối ra của bộ dao dộng lập trình được đưa trực tiếp đến lối vào xung đồng bộ của FPGA FPGA sử dụng xung này để phát ra một xung gởi đến lối vào xung XTAL1 của vi điều khiển Vi điều khiển đa thành phần 8 bit thấp của một địa chỉ bộ nhớ với 8 bit dữ liệu và các lối ra được nối đến P0 Cả những đường dữ liệu SRAM và FPGA đều được nối đến P0 SRAM sử dụng kết nối này để chuyển dữ liệu đến vi
Trang 8điều khiển và nhận dữ liệu từ vi điều khiển FPGA được lập trình để chốt địa chỉ lối
ra ở P0 dưới sự điều khiển của tín hiệu ALE và gửi các bit địa chỉ đã chốt đến 8 đường địa chỉ thấp hơn của SRAM
Trong khi đó, 8 bit địa chỉ cao là lối ra ở P2 của vi điều khiển Trên mạch XS40, SRAM 32Kbyte sử dụng 7 trong 8 bit địa chỉ này trong khi SRAM 128Kbyte lấy cả 8 bit địa chỉ FPGA cũng nhận địa chỉ 8 bit cao và giải mã cùng với đường điều khiển PSENB và Read/Write (chân P3.6 của P3) từ vi điều khiển để phát ra tín hiệu CBE và OBE cho phép SRAM và lối ra của nó điều khiển, hoặc đưa tín hiệu CBE hoặc OBE lên cao để vô hiệu hóa SRAM và ngăn cản nó khỏi ảnh hưởng trên phần còn lại của mạch XS40
Một trong những lối ra của FPGA điều khiển chân reset của vi điều khiển Vi điều khiển có thể tránh khỏi ảnh hưởng trên phần còn lại của mạch bằng cách cho chân RST lên cao thông qua FPGA (Khi RST hoạt động, các chân của vi điều khiển được kéo lên cao)
Những chân I/O đa năng của P1 và P3 của vi điều khiển nối đến FPGA và có thể dùng chung I/O giữa FPGA và vi điều khiển Thêm vào chân I/O đa năng đó, các chân của P3 cũng có những chức năng riêng như các máy phát , máy thu nối tiếp, các đầu vào ngắt, các đầu vào định thời và các tín hiệu điều khiển Read/Write của SRAM ngoại Nếu không sử dụng hàm riêng biệt thì ta có thể dùng chân kết hợp cho I/O đa năng giữa vi điều khiển và FPGA Tuy nhiên, trong nhiều trường hợp, ta sẽ lập trình cho FPGA để sử dụng các chân đặc biệt của vi điều khiển (Ví dụ: FPGA có thể phát ra tín hiệu ngắt vi điều khiển) Nếu muốn kích chân đặc biệt từ một mạch bên ngoài thì chân I/O của FPGA đã nối với nó phải ở 3 trạng thái
Một LED 7 đoạn nối trực tiếp đến FPGA (Các chân của FPGA có thể truyền đến một monitor VGA) FPGA được lập trình để vi điều khiển có thể điều khiển LED 7 đoạn thông qua P1 hoặc P3 hoặc chốt bản đồ bộ nhớ cho LED trong bộ nhớ của vi điều khiển
Máy tính truyền các tín hiệu đến mạch XS40 thông qua 8 bit dữ liệu ở lối ra của cổng song song FPGA đã truy xuất trực tiếp đến những tín hiệu này Vi điều khiển cũng có thể truy xuất những tín hiệu này nếu FPGA được lập trình để chuyển chúng đến vi điều khiển thông qua các chân I/O đa năng
Mạch XS40 truyền ngược lại máy tính thông qua cổng song song Các chân trạng thái của cổng song song được nối đến các chân P1 và P3 của vi điều khiển Hoặc là vi điều khiển hoặc là FPGA kích các chân trạng thái Máy tính có thể đọc các chân trạng thái để tìm nạp dữ liệu từ mạch XS40
FPGA cũng truy xuất đến các đường dữ liệu và xung của bàn phím hoặc chuột được gắn vào cổng PS/2 của mạch
Trang 9IV Lưu đồ thiết kế giữa vi điều khiển 8031 và FPGA
Lưu đồ thiết kế cơ bản để xây dựng các ứng dụng cho vi điều khiển và FPGA như hình 5 Đầu tiên phải tìm ra đặc tính cho hệ thống đang thiết kế Sau đó, xác định lối vào nào là giá trị cho hệ thống và lối ra nào sẽ phát
Vào lúc này, hệ thống phải phân chia các hàm giữa vi điều khiển và FPGA Một số tín hiệu lối vào sẽ đưa vào vi điều khiển, một số sẽ đưa vào FPGA và một số khác sẽ đi vào cả hai Tương tự, một số lối ra sẽ được tính toán bởi vi điều khiển và một số được tính bởi FPGA Cũng sẽ có thêm một số lối vào và lối ra mới của hệ thống được tạo ra bởi yêu cầu của cả FPGA và vi điều khiển
Thông thường, FPGA sẽ sử dụng chủ yếu các hàm bậc thấp mà ở đó sự chuyển tiếp các tín hiệu xảy ra thường xuyên hơn và mức logic điều khiển đơn giản hơn Ngược lại, vi điều khiển được sử dụng đối với các hàm bậc cao mà ở đó các đáp ứng xảy ra chậm hơn và mức điều khiển logic phức tạp hơn Một khi thiết kế được phân chia, gán giá trị các lối vào, lối ra và các hàm cho vi điều khiển và FPGA thì sau đó thiết kế chi tiết về phần mềm và phần cứng có thể được bắt đầu Đối với phần mềm,
ta có thể sử dụng chương trình soạn thảo thông dụng để tạo ra file ASM (Như ngôn ngữ assembler) và dịch nó thành file HEX với ASM51 cho vi điều khiển trên mạch XS40 Đối với phần cứng FPGA, ta sử dụng phần mềm XILINX Foundation để đưa bảng sự thật và các phương trình logic vào file ABL hoặc VHD và dịch nó thành file BIT
Sử dụng chương trình GXSLOAD (được trình bày ở phần sau) để download các File HEX và file BIT vào mạch XS40 GXSLOAD lưu trữ nội dung file HEX vào SRAM trên mạch XS40 Sau đó, nó định dạng lại FPGA bằng cách nạp file bitstream vào FPGA
Khi mạch XS40 được nạp cả phần cứng và phần mềm, ta phải kiểm tra xem nó đã thật sự hoạt động hay chưa Thông thường mạch chưa hoạt động, vì vậy ta phải xen các tín hiệu kiểm tra vào và quan sát kết quả XSPORT là một chương trình đơn giản, cho phép gửi các tín hiệu kiểm tra đến mạch XS40 thông qua cổng song song của máy tính Ta có thể nhận thấy sự tác động trở lại của hệ thống đến các tín hiệu từ cổng song song bằng cách lập trình cho FPGA và vi điều khiển để trạng thái lối ra thông báo trên LED 7 đoạn (Gần giống với lệnh “printf” trong ngôn ngữ lập trình C)
Trang 10Hình 5: Lưu đồ thiết kế FPGA và vi điều khiển
Trang 11CHƯƠNG III: MẠCH XSTEND
I Đặc điểm và tính năng
Mạch XS40 đưa ra các mẫu thiết kế FPGA và CPLD Tuy nhiên, kích thước vật lý của chúng nhỏ làm giới hạn giá trị sơ đồ mạch hỗ trợ mà chúng có thể áp dụng Mạch XSTEND gỡ bỏ giới hạn này bằng cách cung cấp thêm mạch hỗ trợ mà XS40 có thể sử dụng thông qua các giao diện breadboard của chúng
Mạch XSTEND chứa các tài nguyên, mở rộng vùng ứng dụng của các mạch XS
ở 3 vùng:
ứng dụng cơ bản Các đặc trưng này kết hợp với các mạch XS, sao chép lại chức năng của mạch HW/UW FPGA trước đây
cho phép được sử dụng trong video và trong tính toán
trong việc kết hợp các mạch DSP với phần mềm XILINX’s CORE
Mạch XSTEND mở rộng khả năng của mạch XS40 bằng cách cung cấp:
Những tài nguyên này được trình bày trong mạch XSTEND đơn giản hoá tổng quan Mỗi tài nguyên được mô tả trong hình vẽ bên dưới:
Trang 12Hình 1: Layout mạch XSTEND
II Mô tả mạch XSTEND
1 Vùng lắp đặt mạch XS40
Một mạch XS40 được gắn trên mạch XSTEND sử dụng socket mạch XS Những socket này kết hợp với các chân giao diện breadboard của mạch XS cho phép chúng nối đến tất cả tài nguyên của mạch XSTEND Để sử dụng một mạch XS40 với mạch XSTEND, ta cắm nó vào cột bên phải của socket, (nếu dùng mạch XS95 thì ta cắm nó vào cột bên trái của socket) Có những chỗ đánh dấu trên mạch XSTEND cho biết cột thích hợp với mỗi loại mạch XS
Nếu mạch XS nối với một nguồn điện được cấp thông qua chân J9 thì mạch quy định nguồn điện của nó sẽ cung cấp VCC và GND cho mạch XSTEND thông qua socket Mạch XS40 với FPGAs có nguồn điện là 3.3V sẽ cung cấp nguồn 3.3V và 5V cho mạch XSTEND, trong khi đó mạch XS40 với FPGAs và XS95 có nguồn điện 5Võ chỉ cung cấp 5V
Nguồn cấp điện bên ngoài cũng có thể được dùng với mạch XSTEND Một nguồn điện 5V được nối với header J12 và nguồn 3.3V được nối vào header J14 như
Trang 13hình 2 Các nguồn cung cấp này cũng được cắm vào mạch XS cũng như mạch XSTEND.
Hình 2: Kết nối nguồn cung cấp cho mạch XSTEND
led D1 – D8 Đặt shunt trên jumper cho phép thanh led hoạt động
đoạn U1 Đặt shunt trên jumper cho phép led U1 hoạt động
đoạn U2 Đặt shunt trên jumper cho phép led U2 hoạt động
dụng mạch XSTEND với mạch XS95 Nếu đang sử dụng mạch XS40 với mạch XSTEND thì ta gỡ bỏ shunt trên jumper này
Bảng 1: Thiết lập các Jumper cho mạch XSTEND
Listing 1: Sự kết nối giữa các led của mạch XSTEND
# LEFT LED DIGIT SEGMENT CONNECTIONS (ACTIVE-LOW)
Trang 14Mạch XSTEND có một dải 8 công tắc DIP và 2 nút ấn (được đặt là SPARE và
RESET) được sử dụng từ mạch XS (Có 1 nút ấn thứ 3 được đặt là PROGRAM,
dùng để khởi tạo chương trình của mạch XS40 Nó không được sử dụng như một đầu
vào đa năng) Khi closed hoặc ON, mỗi công tắc DIP kéo chân của mạch XS nối mass Khi công tắc DIP open hoặc OFF thì chân được kéo lên cao thông qua điện trở
Khi được ấn, mỗi nút ấn sẽ kéo chân của mạch XS nối mass Nếu không thì các
Trang 15Listing 2: Sự kết nối giữa công tắc DIP mạch XSTEND và công tắc nút đẩy và mạch XS40
# DIP SWITCH CONNECTIONS
#
#PUSHBUTTON SWITCH CONNECTIONS (ACTIVE-LOW)
4 Giao diện (interface) VGA
Mạch XSTEND cung cấp một mạch XS với một giao diện monitor VGA thông qua bộ nối J5 Mạch XS có thể truyền các tín hiệu đồng bộ ngang và các tín hiệu đồng bộ dọc (tác động ở mức thấp) điều khiển chiều rộng và chiều cao của khung video và truy xuất đến 2 bit của các tín hiệu màu đỏ, xanh lá cây và xang dương Vì
Listing 3: Sự kết nối giữa giao diện VGA của mạch XSTEND và XS40
# VGA CONNECTIONS
5 Stereo Codec
Mạch XSTEND có 1 stereo codec nhận 2 kênh lối vào analog từ J9, lượng tử hoá giá trị analog và gửi các giá trị số đến mạch XS như một chuỗi bitstream Codec cũng nhận một chuỗi bitstream từ mạch XS và chuyển đổi nó thành 2 tín hiệu lối ra analog ra mạch XSTEND thông qua J10
Trang 16Codec được định cấu hình bằng cách thiết lập shunt trên các jumper như bảng 2
động bằng các giữ nó ở trạng thái reset Gỡ bỏ shunt trên jumper khi đang sử dụng codec
shunt trên jumper khi đang sử dụng codec
Bảng 2: Thiết lập jumper cho codec XSTEND
Listing 6: Sự kết nối giữa stereo codec của mạch XSTEND và mạch XS40
# STEREO CODEC CONNECTIONS
Các tín hiệu analog lối vào và lối ra của stereo vào và ra khỏi mạch XSTEND thông qua các J9 và J10 khoảng 1/8” tương ứng Lối ra của một máy hát CD có thể là lối vào thông qua J9 và một bộ tai nghe stereo nhỏ có thể được nối đến J10 để nghe tín hiệu ở đầu ra đã xử lý
Dữ liệu đã được số hoá ở lối ra từ bộ codec thông qua J17 đến mạch XS đã gắn trên mạch XSTEND Shunt sẽ được đặt trên J17 khi bộ codec đang được sử dụng
Bởi vì dữ liệu nối tiếp ở đầu ra của bộ codec không tristatable và vì nó dùng chung
lối vào của mạch XS với các tài nguyên khác trên mạch XSTEND nên shunt gắn trên J17 sẽ được gỡ bỏ khi bộ codec không được sử dụng
6 Giao diện Xilinx Xchecker
Mạch XS40 gắn trên mạch XSTEND có thể được định cấu hình và kiểm tra bằng cách dùng một cáp XILINX Xchecker được cắm vào J19 Khi sử dụng cáp Xchecker, ta không phải nối cáp giữa mạch XS và cổng song song của máy tính Thêm vào đó, khi sử dụng cáp với 1 mạch XSTEND/XS40 kết hợp, ta phải điều chỉnh lại mạch XS40:
Trang 17Chân Xchecker Chân XS40
Bảng 3: Kết nối giữa cáp Xchecker và XS40
7 Vùng mẫu (prototyping area)
Mạch XSTEND có 1 vùng mẫu bao gồm thành phần các lỗ xuyên qua trên 1 khung lưới 0.1”*0.1” đặt rải rác với mạng lưới các bus VCC và GND như hình 3 Các bus truyền VCC liên tục ở phần trên mạch XSTEND trong khi các bus GND chạy liên tục ở phần dưới mạch Các bus VCC và GND có các giao tiếp kết nối mà một dây kim loại nhỏ có thể được hàn gắn để tạo một kết nối đến các thành phần lỗ xuyên qua bên cạnh
Hình 3: Vị trí các bus VCC và GND xung quanh các thành phần giao tiếp trong
vùng mẫu mạch XSTEND
Trang 18Khi đặt shunt trên J16 sẽ xác định các bus VCC trong vùng mẫu có truyền nguồn 5V hoặc là 3.3V hay không (xem hình 4) Dĩ nhiên, sự lựa chọn jumper sẽ không có hiệu quả nếu ta không cấp các nguồn này vào mạch XSTEND bởi mạch
XS hoặc là bằng cách kết nối với nguồn cung cấp bên ngoài
Hình 4: Thiết lập shunt cho bus VCC
Mạch XS kết nối đến vùng mẫu thông qua bộ nối J3 Các chân trên bộ nối phải được sắp xếp phù hợp với các chân trên mạch XS40 Ví dụ: chân J3 ở bên dưới phía trái của mạch XSTEND tương ứng với chân 21 ở bên dưới phía trái của mạch XS40
8 Bộ nối mạch con
Các mạch con với các mạch ứng dụng có thể được nối đến mạch XSTEND thông qua bộ nối J8 Bộ nối 42*2 này truyền tất cả I/O và VCC/GND từ mạch XS40 đến mạch con
Trang 19Chương IV: PHẦN MỀM HỖ TRỢ THIẾT KẾ
I Phần mềm tiện ích XSTOOL
Hiện nay XILINX cung cấp các công cụ cho việc lập trình họ FPGAs và CPLDs Một vài phiên bản gần đây của phần mềm XILINX tạo ra các file dạng bitstream tương thích với mạch XS40 XESS corp cung cấp thêm tiện ích XSTOOLs cho việc giao tiếp một máy tính với một mạch XS40
Phần mềm tiện ích XSTOOL này bao gồm các chức năng sau:
1 Kiểm tra mạch XS40
Mỗi lần lắp đặt mạch XS40 và các jumper ở cấu hình mặc định của chúng thì mạch có thể được kiểm tra bằng cách sử dụng tiện ích GUI-based GXSTEST như sau:
Sau đó hiện cửa sổ:
Kế tiếp, ta sẽ chọn loại cổng song song mà mạch XS40 được kết nối từ danh
sách pulldown Port GXSTEST bắt đầu với cổng LPT1 như mặc định, nhưng ta cũng
có thể chọn cổng LPT2 hoặc LPT3 tuỳ thuộc vào cấu hình máy tính
Sau khi chọn cổng song song, ta chọn loại mạch XS40 đang cần kiểm tra từ
danh sách pulldown Board Type Sau đó nhấp chọn nút TEST để bắt đầu thủ tục
kiểm tra GXSTEST sẽ định dạng FPGA để chạy thủ tục kiểm tra trên mạch XS40 Sau vài giây, nếu việc kiểm tra được thực hiện thành công thì LED 7 đoạn hiển thị
O Ngược lại nếu E hiển thị trên LED 7 đoạn thì việc kiểm tra thất bại Cửa sổ trạng
thái sẽ xuất hiện trên màn hình máy tính để khai báo cho ta biết việc kiểm tra thành công hay thất bại
Nếu kiểm tra mạch XS40 thất bại, ta sẽ thấy danh sách kiểm tra thông báo nguyên nhân của việc kiểm tra không thành công đó Nếu tình trạng không phải là một trong những nguyên nhân đó thì ta sẽ kiểm tra mạch XS40 bằng một máy tính khác
2 Lập trình cho bộ dao động của mạch XS40
Trang 20Mạch XS40/XSP có một bộ dao động lập trình được tần số 100MHz Tần số chính 100MHz có thể được chia bởi các hệ số từ 1,2,…đến 2050 để lấy xung từ 100MHz, 50MHz, …xuống 48.7KHz tương ứng Các tần số đã chia này được gửi đến phần còn lại của mạch XS40/XSP như một tín hiệu xung.
Các số chia (ước số) được lưu trữ ở bộ nhớ cố định trong chip của bộ dao động để nó tiếp tục hoạt động ở tần số đã được chương trình hoá bất cứ khi nào nguồn điện được cấp cho mạch XS40/XSP Các số chia đặc biệt có thể lưu trữ vào chip của bộ dao động bằng các sử dụng tiện ích GUI-based GXSSETCLK như sau:
XSTOOLS) Sau đó hiện ra cửa sổ:
Bước kế tiếp là chọn cổng song song mà mạch XS40/XSP được kết nối từ danh
sách pulldown Port GXSSETCLK bắt đầu với cổng song song LPT1 như đã mặc
định, nhưng ta cũng có thể chọn cổng song song LPT2 hoặc LPT3 tuỳ theo cấu hình
máy tính Sau đó chọn loại mạch XS40/XSP từ danh sách pulldown Board Type.
Kế tiếp, ta đưa vào một số chia có giới hạn trong khoảng từ 1 đến 2050 vào ô
Divisor và nhấp chọn nút SET Sau đó các lệnh liên tục được cho bởi GXSSETCLK
để đặt các shunt, di chuyển và lưu trữ nguồn điện trong suốt quá trình lập trình cho bộ dao động Khi quá trình trên hoàn tất, tần số mới sẽ được lập trình để đưa vào DS1075
Tín hiệu xung ngoại có thể được thay thế cho bộ dao động nội tần số 100MHz của DS1075 Việc kiểm tra hộp chọn xung ngoại sẽ cho phép đặc tính này trong chip của bộ tạo dao động lập trình được Nếu điều này được chọn, ta sẽ phải tự cung cấp xung ngoại cho mạch XS40/XSP thông qua chân 64 sau đó
3 Lập trình
Phần này sẽ cho biết làm thế nào để download một thiết kế logic từ máy tính vào mạch XS40 và làm sao để lưu trữ một thiết kế trong EEFROM nối tiếp tuỳ ý mà khi cấp nguồn điện vào thì nó sẽ hoạt động
a Download các thiết kế vào mạch XS40
Trang 21Trong giai đoạn triển khai và kiểm tra, thông thường ta sẽ kết nối mạch XS40 đến cổng song song của máy tính và download mạch mỗi khi thay đổi nó Download một thiết kế FPGA vào mạch XS40 bằng cách sử dụng tiện ích GXSLOAD như sau:
XSTOOLS) Sau đó xuất hiện cửa sổ như hình:
Chọn cổng song song mà mạch XS40 được kết nối đến từ danh sách pulldown
Port Thông thường GXSLOAD được mặc định với cổng song song LPT1 nhưng ta
có thể chọn cổng song song LPT2 hoặc LPT3 tuỳ theo cấu hình của máy tính Sau đó
chọn loại mạch XS40 đang sử dụng từ danh sách pulldown Board Type.
Sau khi thiết lập loại mạch và cổng song song, ta tải các file BIT đến FPGA
trên mạch XS40 bằng cách kéo chúng đến vùng FPGA/CPLD của GXSLOAD như
cửa sổ bên dưới:
Trang 22Mỗi lần rê nút chuột trái và thả file, file có vệt sáng xuất hiện trong vùng
FPGA/CPLD và nút Load trong cửa sổ GXSLOAD được cho phép Nhấp chọn nút Load file có vệt sáng sẽ được gửi đến mạch XS40 thông qua kết nối cổng song song
Các file BIT chứa cấu hình các bitstream được nạp vào FPGA GXSLOAD sẽ bỏ đi những file không cho phép download Trong suốt quá trình download, GXSLOAD sẽ hiển thị tên file và quá trình download hiện thời
Ta có thể kéo và thả nhiều file trong vùng FPGA/CPLD Khi nhấp chọn chuột
vào một file thì tên file đó sáng và chọn nó để download Chỉ có một file có thể được chọn để download ở một thời điểm
Nhấp kép vào file có vệt sáng thì file đó sẽ không được chọn Vì vậy không có
file nào được download Khi đó nút Load sẽ không được phép
Trang 23b Lưu trữ mà không xoá các thiết kế trong mạch XS40
FPGA trên mạch XS40 lưu trữ cấu hình của nó trên chip của SRAM và được xoá bất cứ khi nào nguồn điện được ngắt Một khi thiết kế được hoàn thành, ta có thể lưu trữ bitstream trong một EEFROM nối tiếp được đặt trên socket U7 của mạch XS40 EEFROM sẽ định dạng FPGA để hoạt động ngay khi nguồn điện được cấp vào
XILINX XC1700 là một loạt các EEFROM nối tiếp tương thích với mạch XS40 Hơn nữa, XC1700 chỉ có thể lập trình một lần (OTP), vì vậy cần phải có một chip mới mỗi lần thay đổi thiết kế logic Bảng 3 liệt kê các chip EEFROM nối tiếp cần để lưu trữ các file bitstream đối với mỗi loại mạch XS40
Loại mạch XS40 Kích thước Bitstream EEPROM XILINX
Bảng 3: Giới thiệu các EEPROM nối tiếp của hãng XILINX đối với mỗi loại
mạch XS40 khác nhau
Ngoài ra cần phải lựa chọn việc lưu trữ các thiết kế vào EEPROM nối tiếp AT7C256 Atmel lập trình lại được Nếu mạch XS40-005E, XS40-005XL hoặc mạch XS40-010E được sử dụng thì mạch XS40 có thể lập trình trực tiếp trên chip Atmel và các FPGA trên các mạch này có các file bitstream có kích thước phù hợp với
AT7C256 Thiết kế được nạp vào EEPROM Atmel bằng cách kéo file BIT vào vùng Flash/EEPROM và nhấp vào nút Load Tuần tự các bước đưa dữ liệu vào bộ
nhớ là như sau:
Trang 24iii Nội dung của file BIT được download vào EEPROM thông qua cổng
song songMỗi lần các thiết kế được nạp vào EEPROM, các bước tiếp theo sẽ định dạng mạch XS40 từ EEPROM khi cấp điện
XSPORT 0 để đảm bảo 2 bit cao của cổng song song đều ở mức logic 0 Các bit này được nối đến các chân chế độ của FPGA và phải ở mức logic 0 hoặc FPGA sẽ không cấp điện ở chế độ hoạt động nối tiếp)
tiếp để nó cấp một tín hiệu xung đến EEPROM và tuần tự nạp cấu hình từ EEPROM vào FPGA
giao diện PC trên XS40 không bị nhiễu khi có tín hiệu xung từ FPGA
nối tiếp Ta có thể nối lại dây cáp nếu cần xen các tín hiệu kiểm tra vào các thiết kế đang sử dụng chương trình XSPORT
c Download và Upload dữ liệu đến RAM hoặc từ RAM trên mạch XS40
Mạch XS40 chứa RAM 32Kbytes hoặc 128KByte, nội dung của nó có thể
download và upload bằng GXSLOAD Điều này thuận lợi cho việc khởi chạy RAM
với dữ liệu sử dụng bằng FPGA và đọc nội dung của RAM sau khi FPGA hoạt động
RAM được nạp dữ liệu bằng cách kéo và thả một hoặc nhiều file EXO, MCS,
.HEX, và/hoặc file XES vào vùng RAM của cửa sổ GXSLOAD và sau đó nhấp
vào nút Load Tuần tự các bước đưa dữ liệu vào bộ nhớ là như sau:
thiết bị RAM và cổng song song của máy tính
vào RAM thông qua cổng song song Dữ liệu các file sẽ viết đè lên
nhau nếu địa chỉ trùng lấp.
sáng trong vùng FPGA/CPLD được download vào FPGA trên mạch
XS40 Ngoài ra FPGA vẫn còn định cấu hình như một giao diện trên RAM
Nội dung của RAM được kiểm tra bằng cách upload nó đến máy tính Để upload dữ liệu từ một vùng địa chỉ trong RAM, gõ các ranh giới cao và thấp vào
vùng High Address và Low Address bên dưới vùng RAM và chọn dạng muốn lưu trữ dữ liệu đang sử dụng trong danh sách pulldown Upload Format Sau đó chọn
biểu tượng file, kéo và thả nó vào một vài danh mục Tuần tự các bước đưa dữ liệu vào bộ nhớ là như sau:
bị RAM và cổng song song của máy tính
Trang 25ii Dữ liệu RAM giữa địa chỉ cao và thấp được upload thông qua cổng song song.
có phần mở rộng tương ứng với file định dạng
II Phần mềm LEONARDOSPECTRUM
1 Giới thiệu
LeonardoSpectrum là một hệ công cụ thiết kế bậc cao, tổng hợp tất cả các thiết kế đối với họ FPGA, CPLD hoặc ASIC của các hãng như: Xilinx, Altera, Quicklogic, Atmel, … Nó đưa ra các sơ đồ thiết kế, các thiết kế bằng ngôn ngữ Verilog và VHDL, chương trình gỡ lỗi (register transfer level) để tổng hợp logic, tối ưu hóa những ràng buộc cơ bản, phân tích định thời, đóng gói place and route và kiểm tra lại
sơ đồ
LeonardoSpectrum có khả năng định cấu hình ở ba mức khác nhau:
dụng cơ sở dữ liệu phân cấp trong bộ nhớ của LeonardoSpectrum
sử dụng đối với tất cả công nghệ FPGA Khác với mức 1, mức 2 được sử dụng cho tất cả các công nghệ FPGA
cách linh hoạt Mức 3 cho phép sử dụng phương pháp thiết kế công nghệ độc lập cho FPGA và CPLD Hơn nữa, mức 3 còn hỗ trợ thêm các thuật toán cho công nghệ ASIC và sử dụng kỹ thuật tối ưu hoá mạnh nhất để đảm bảo kết quả tốt nhất cho một số công nghệ FPGA hoặc ASIC
Trang 262 Cách sử dụng
Start -> programs -> FPGA Advantage 5.3 -> Synthesis -> LeonardoSpectrum-> enter.
Xuất hiện cửa sổ Exemplar logic:
Trong khung technology, chọn FPGA/CPLD = > Xilinx => XC4000XL.
Trong khung device, chọn 4005XLPC84.
Chọn file vhd cần dịch => open
Trang 27Nhấp kép vào biểu tượng (working directory), xuất hiện cửa sổ:
Chọn thư mục cần lưu trữ file edf => set Sau đó nhấp chọn Run flow.
Sau khi biên dịch hoàn tất khung bên phải cửa sổ Exempler logic hiển thị dòng thông báo Finish Synthesis Run nghĩa là việc biên dịch được thực hiện thành công Khi đó file edf được lưu trữ ở thư mục đã chọn.
III Phần mềm XILINX WEBPACK 4.1
1 Giới thiệu
Xilinx Intergrated Software Enviroment (ISE) là phần mềm được bắt đầu với Project Navigator Từ Project Navigator, ta chỉ có thể thiết lập và kiểm tra các project Ta có thể thực hiện với trình soạn thảo và mô phỏng để xác định project, thoả mãn các qui định cụ thể Một loạt các công cụ thực hiện được dùng để biên dịch và xác định lại các khía cạnh của thiết kế Khi thiết kế đã thoả mãn các quy định, ta có thể download thiết kế sau cùng vào linh kiện
2 Quá trình biên dịch file EDF thành file BIT
Start => Program => Xilinx ISE 4 => Project Navigator => Enter
Trang 28Nhấp vào File => New project => enter Xuất hiện cửa sổ:
Trong Project Name, gõ tên thư mục cần chứa file bit và chương trình tự động tạo thư mục theo đường dẫn ở Project Location
Trong Project Device Option chọn như hình trên Sau khi chọn xong, nhấp OK
Trang 29Chọn file nguồn
Nhấp vào Generate Programming File để chạy chương trình chuyển đổi Chương trình hoàn tất khi thấy dòng thông báo Done: completed successfully Khi đó file edf đã được dịch thành file bit.
Vì chương trình biên dịch gán chân ngẫu nhiên cho linh kiện nên ta phải gán chân lại cho linh kiện để phù hợp với thiết kế
3 Quá trình gán chân (assign pins)
Start => Program => Xilinx ISE 4 => Accessories => contraint editor => Enter Xuất hiện cửa sổ:
Trang 30Chọn file => open hoặc chọn biểu tượng xuất hiện cửa sổ
Chọn đường dẫn như hình vẽ => OK =>YES Khi đó file ucf đã được tạo.
Sau đó chọn Start => Program=> Xilinx ISE 4 => Accessories => chip
viewer => Enter.
Chọn file => open hoặc chọn biểu tượng xuất hiện cửa sổ
Chọn file cần gán chân (file.ngd)
Chọn linh kiện thích hợp để gán chân => OK, xuất hiện cửa sổ
Trang 31Chọn các tín hiệu input và output để gán vào các chân thích hợp theo thiết kế.
Các chân được chọn sẽ xuất hiện màu theo quy định của người thiết kế
Sau khi gán chân xong ta phải dịch lại file đã thiết kế chân thành file bit, sau
đó sử dụng phần mềm tiện ích XSTOOLs (đã trình bày ở trên) để nạp file bit vào XC4005XL
Trang 32 PHẦN 2: KIT UP2 HÃNG ALTERA
Các họ Số chân I/O Số cổng Logic Cell Công nghệ
Trang 33Cấu trúc MAX7000 gồm:
1.Logic Array Block(LAB)
+Một LAB bao gồm 16 Macrocells
+Các LAB được nối với nhau qua đường kết nối chung lập trình được (Programmable Interconnect Array: PIA), các đường này sẽ nối các macrocells và chân I/O
+36 tín hiệu ngõ vào Macrocells
2 Cấu trúc Macrocells
+Họ linh kiện MAX7000 gồm có 32 đến 256 macrocells Mỗi macrocell chứa 5 cổng AND với các lối vào mở rộng cung cấp cho cổng OR được lập trình nghịch ở lối
ra Mảng cổng AND/OR được thiết kế để thực hiện các hàm Boolean biểu diễn dưới dạng tổng của các tích Các lối vào đến cổng AND mở rộng có giá trị ở cả hai dạng thông thường và nghịch đảo
+1 Macrocell bao gồm 3 khối chức năng: Mảng logic, ma trận chọn thành phần tích (Product Term Select Matrix) và thanh ghi lập trình được (Programmable Register)
+Thực hiện chức năng mạch tổ hợp hoặc mạch tuần tự
+Parallel Logic Expanders cho phép nối các macrocell lại với nhau để tạo thành chức năng logic lớn hơn và Sharable Logic Expanders mở rộng thành phần tích
Trang 343 Khối I/O
+Các chân I/O có thể cấu hình là ngõ vào, ngõ ra, 2 chiều
Các chân I/O đệm 3 trạng thái
Chú ý: Max7000 chỉ lập trình được 100 lần
II FLEX10K
FLEX10K là họ linh kiện CPLD (complex programmable logic devices) với 10,000 đến 250,000 cổng Linh kiện FLEX được cấu hình bởi chương trình nạp sẵn trong SRAM Khi sử dụng SRAM, cấu hình sẽ không bị mất bất cứ khi nào tắt nguồn
Hình: Cấu trúc FLEX10K
Trang 35Cấu trúc của FLEX10K gồm có:
1 Embedded Array Block (EAB)
FLEX10K bao gồm các EAB (Embedded Array Block) Mỗi EAB gồm có 2048 bit, có thể tạo RAM, FOM, FIFO hoặc các chức năng logic tổng quát Mỗi EAB gồm 100-600 cổng, có thể dùng độc lập hoặc kết hợp lại với nhau Các EAB khi là RAM có thể là 256x8, 512x4, 1024x2, 2048x1
2 Logic Array Block (LAB)
+Các mảng Logic gồm các LAB, mỗi LAB gồm 8 LE và một đường kết nối cục bộ
Hình: Cấu tạo LAB (Logic Array Block) của FLEX10K
+ Mỗi LE gồm 1 LUT (Look-up Table) 4 ngõ vào, 1 FlipFlop lập trình được và các đường để dành để ghép nối
Trang 36Hình: Phần tử logic (LE: Logic Element) của FLEX10K
Hình: Cấu tạo bảng dò tìm (LUT)
+Các Interconnection theo hàng và cột, nối các LAB với nhau
3 I/O Element (IOE)
Các IOE (I/O Element) chứa các I/O pin Mỗi IOE gồm 1 bộ đệm 2 chiều và 1 FlipFlop có thể là ngõ vào/ra 2 chiều hoặc thanh ghi vào/ra
*Ứng dụng của các EAB là tạo bộ nhớ, các bộ vi xử lý, vi điều khiển, lọc số,…
Trang 37CHƯƠNG II: MÔ TẢ KIT
I Giới thiệu
Mạch UP2 được thiết kế để đáp ứng nhu cầu của các trường đại học trong việc giảng dạy thiết kế logic với các công cụ phát triển và các thiết bị logic có thể lập trình được (PLDs)
Mạch UP2 hoạt động dựa vào chip FLEX10K và chip MAX7000 Khi được sử dụng với phần mềm MAX + PLUS II, mạch cung cấp nền tảng mạnh hơn cho các thiết kế logic số đang sử dụng công cụ phát triển theo chuẩn công nghiệp và các PLD
Mạch UP2 hỗ trợ cả bảngdò tìm (LUT) cơ bản và giới hạn cơ bản các cấu trúc EPF10K70 có thể được định cấu hình trong hệ thống với cáp tải ByteBlaster II hoặc thiết bị định cấu hình EPC1 EPM7128S lập trình được trong hệ thống với cáp tải ByteBlaster II
Mạch UP2 có các đặc điểm sau:
Trang 381 Chip EPM7128S
Chip EPM7128S, một linh kiện thuộc họ MAX7000 có mật độ cao, hoạt động mạnh, được dựa vào các yếu tố của bộ nhớ ROM xoá và lập trình được bằng điện (EEPROM) Chip EPM7128S có một socket được lắp vào chip carrier J-lead 84 chân và có 128 macrocell Mỗi macrocell có một mảng AND/OR cố định có thể lập trình cũng như một thanh ghi cấu hình được với xung lập trình độc lập, xung enable, clear và các hàm định sẵn Với 2500 cổng và cấu trúc đơn giản, chip EPM7128S là ý tưởng cho các thiết kế mở đầu cũng như tổ hợp các hàm logic liên tục
2 Chip EPF10K70
Chip EPF10K70 dựa trên công nghệ SRAM Nó có giá trị trong package RQFP
240 chân, có 3744 phần tử logic (LEs: logic elements) và 9 EABs (Embedded Array Blocks) Mỗi LE gồm 4 ngõ vào LUT, một Flip Flop lập trình được và các đường dẫn tín hiệu đã biết đối với hàm lưu trữ và vận chuyển Mỗi EAB cung cấp 2048 bits của bộ nhớ có thể được sử dụng để tạo ra RAM, ROM hoặc các hàm FIFO Hơn nữa, EABs có thể thi hành các hàm logic như: bộ nhân, vi điều khiển, trạng thái của máy và các hàm xử lý tín hiệu số (DSP) Với 70,000 cổng điển hình, chip EPF10K70 là ý tưởng trung gian để phát triển hơn nữa các quá trình thiết kế số bao gồm kiến trúc máy tính, viễn thông và ứng dụng của DSP
3 Cáp tải cổng song song ByteBlaster II
Các thiết kế có thể được tải nhanh chóng và dễ dàng vào mạch UP2 bằng cách sử dụng cáp tải ByteBlaster II Cáp ByteBlaster II là một giao diện phần cứng đối với cổng song song chuẩn Cáp này gửi dữ liệu lập trình hoặc dữ liệu cấu hình giữa phần mềm MAX + PLUS II và các mạch UP Vì sự thay đổi của các thiết kế được tải trực tiếp đến các thiết bị trên mạch nên các mẫu thiết kế đơn giản và phức tạp có thể được thực hiện thành công nhanh chóng
II Mô tả KIT
Mạch UP2, được trình bày trong hình 1, chứa các đặc tính mô tả bên dưới:
Hình 1: Cấu tạo KIT UP2
Trang 391 Lối vào nguồn RAW và nguồn DC
Lối vào nguồn DC nhận đầu nối âm 2.5mm*5.55mm với mức điện thế từ 7 đến 9V ở cường độ nhỏ nhất 350mA Lối vào nguồn RAW gồm hai lỗ để nối với nguồn cố định Lỗ được đánh dấu (+) là lối vào dương; lỗ đánh dấu (-) là dùng cho mạch chung
2 Bộ dao động
Mạch UP chứa bộ dao động trong suốt có tần số 25.175 Mhz Lối ra của bộ dao động truyền một lối vào xung toàn cục trên chip EPM7128S ở chân 83 và lối vào xung toàn cục trên chip FLEX 10K ở chân 91
3 Header JTAG_IN
Đầu cắm trên cáp tải ByteBlaster II nối với header JTAG_IN gồm10 chân trên mạch UP Mạch cung cấp nguồn và mass đến cáp tải ByteBlaster II Dữ liệu được dịch vào trong các linh kiện thông qua chân TDO Bảng 1 xác định tên của chân JTAG_IN khi ByteBlaster II đang hoạt động ở chế độ JTAG (Joint Test Action Group)
Chân Tín hiệu JTAG
3 bộ nối (C1, C2, và C3) trên mỗi phần của 4 Jumper
Hình 2: Vị trí bộ nối C1, C2 và C3
Trang 40Hoạt động theo yêu cầu TDI TDO DEVICE BOARD
Cấu hình cho cả EPM7128S và
FLEX10K(1)
Bảng 2: Xác định cho việc thiết lập jumper cho mỗi cấu hình
Chú ý:
(1): Linh kiện đầu tiên trong JTAG chain là thiết bị FLEX 10K và linh kiện thứ
2 là EPM7128S
(2): Linh kiện đầu tiên trong JTAG chain là FLEX 10K và linh kiện thứ hai là
EPM7128S Mạch cuối cùng trong JTAG chain phải được thiết lập cho cấu hình mạch đơn (ví dụ: chỉ cấu hình cho chip EPM7128S, chỉ cấu hình cho chip FLEX 10K, hoặc cấu hình cho cả hai chip) Mạch cuối cùng không được thiết lập để nối nhiều mạch với nhau
Trong suốt quá trình cấu hình, led xanh CONF_D sẽ tắt và led xanh TCK sẽ điều chỉnh để cho biết dữ liệu đang được chuyển Sau khi thiết bị đã được cấu hình xong thì led CONF_D sẽ sáng
5 Chip EPM7128S
Mạch UP2 cung cấp các tài nguyên sau cho chip EPM7128S:
OE2/GCLK2Các chân của chip EPM7128S không được gán lại đối với các công tắc và các LED, nhưng được nối đến các header Với các chân truy xuất trực tiếp, ta có thể tập trung vào quy tắc thiết kế cơ bản và nắm được chương trình của các chân I/O và các PLD Sau khi biên dịch và kiểm tra thiết kế thành công bằng phần mềm MAX+PLUS II, ta có thể dễ dàng nối các chân I/O đã gán đến các công tắc và led bằng cách sử dụng dây hook_up Sau đó tải các thiết kế vào linh kiện và mô phỏng các thiết kế đó