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
GVHD: LÊ ĐỨC HÙNG 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ố 1 GVHD: LÊ ĐỨC HÙNG loạ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 Cấu trúc và nội dung của các nguồn kết nối trong FPGA được gọi là kiến trúc 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 Xilinx Symetrical Array Lookup Table Static RAM Actel Row-based Multiplexer-based Anti-fuse Altera Hierarchical-PLD PLD Block EPROM Plessey Sea-of-gates NAND-gate Static RAM Plus Hierarchical-PLD PLD Block EPROM AMD Hierarchical-PLD PLD Block EEPROM QuickLogic Symetrical Array Multiplexer-based Anti-fuse Algotronix Sea-of-gates Multiplexer & Based Gates Static RAM Concurrent Sea-of-gates Multiplexer & Based Gates Static RAM Crosspoint Row-based Transitor Pairs & Multiplexer Anti-fuse 2 GVHD: LÊ ĐỨC HÙNG CHƯƠNG II: MẠCH XS40 I. Đặc điểm XS40_005XL gồm có: • XC4005XL FPGA • Vi điều khiển 8031 • SRAM 32K Byte • Bộ dao động lập trình được 100MHz • Cổng song song • Cổng chuột, bàn phím loại PS/2 • Cổng monitor VGA • Led 7 đoạn • 84 chân giao tiếp với XSTEND board • Socket EFROM nối tiếp • Jack cắm nguồn 9V DC • Mức điện thế quy đònh 5V/3.3V • Dây cáp tải qua cổng LPT • Phần mềm tiện ích XSTOOL 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. Hình 1: Mô tả các thành phần trên mạch XS40 3 GVHD: LÊ ĐỨC HÙNG II. 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 XS40-005E V1.4 52 2 ; 54 None XS40-005XL V1.4 52 2 54 XS40-010E V1.4 52 2 ; 54 None XS40-010XL V1.4 52 2 54 XS40-010 V1.4 52 2 ; 54 None 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 4 GVHD: LÊ ĐỨC HÙNG Hì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à: • Đang sử dụng chế độ mạch XS40 độc lập, nó không liên kết với cổng song song của máy tính • Thiết lập lại tần số xung trên mạch XS40 • Thực thi mã của bộ vi điều khiển từ ROM nội thay vì SRAM ngoại trên 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) 5 GVHD: LÊ ĐỨC HÙNG Jumper Chế độ Chức năng J4 On (mặc đònh) Đặt shunt nếu đang download mạch XS40 hoặc XSP thông qua cổng song song Off Tháo bỏ shunt nếu mạch XS40 hoặc XSP đang được đònh dạng thông qua EEFROM nối tiếp trên mạch J6 On Đặt shunt khi EEPROM nối tiếp trên mạch (U7) đang được lập trình Off (mặc đònh) Tháo bỏ shunt trong khi sử dụng mạch thông thường J7 1-2 (ext) (mặc đònh) Đặt shunt vào chân 1 và chân 2 (ext) nếu chương trình vi điều khiển 8031 được lưu trữ trong SRAM ngoại 32KByte (U8) của mạch XS40 2-3 (int) Đặt shunt vào chân 2 và chân 3 (int) nếu chương trình được lưu trữ nội bộ trong vi điều khiển J8 On Đặt shunt trên mạch XS40 hoặc XSP sử dụng loại XC4000XL 3.3V của họ FPGA Off Tháo bỏ shunt trên mạch XS40 hoặc XSP sử dụng loại XC4000E 5V của họ FPGA J10 On Đặt shunt nếu mạch XS40 hoặc XSP đang được đònh dạng từ EEFROM nối tiếp trên mạch Off (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 J11 On (mặc đònh) Đặt shunt nếu mạch XS40 hoặc XSP đang được download từ cổng song song của máy tính Off Tháo bỏ shunt nếu mạch XS40 hoặc XSP đang được đònh dạng từ EEFROM nối tiếp trên mạch J12 1-2 (osc) (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 2-3(set) Đặt shunt vào chân 2 và chân 3 (set) khi tần số bộ dao độ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: 6 GVHD: LÊ ĐỨC HÙNG Hì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 7 GVHD: LÊ ĐỨC HÙNG đ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 8 GVHD: LÊ ĐỨC HÙNG IV. 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). 9 GVHD: LÊ ĐỨC HÙNG Hình 5: Lưu đồ thiết kế FPGA và vi điều khiển 10 [...]... đ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: • Các nút ấn, các. .. DIP, các LED và vùng mẫu được sử dụng cho các ứ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 • Giao diện màn hình VGA, giao diện chuột/bàn phím cổng PS/2 và SRAM cho phép được sử dụng trong video và trong tính toán • Mã hoá stereo và mạch 2 kênh vào/ra giúp cho việc xử lý tín hiệu audio trong việc kết hợp các mạch DSP với phần mềm XILINX s... 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: i Toàn bộ EEPROM được xoá ii FPGA trên mạch XS40 được lập trình để tạo ra một giao diện giữa EEPROM và cổng song... 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 35 GVHD: LÊ ĐỨC HÙNG Hì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... 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: i FPGA trên mạch XS40 được lập. .. 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: • Kiểm tra mạch • Lập trình tạo tần số cho bộ dao động trên mạch • Download các thiết... 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ế... 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... 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ư... 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