Đề tài Thiết kế thiết bị điện tử lập trình sử dụng công nghệ FPGA và CPLD

pdf 272 trang vanle 2440
Bạn đang xem 20 trang mẫu của tài liệu "Đề tài Thiết kế thiết bị điện tử lập trình sử dụng công nghệ FPGA và CPLD", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfde_tai_thiet_ke_thiet_bi_dien_tu_lap_trinh_su_dung_cong_nghe.pdf

Nội dung text: Đề tài Thiết kế thiết bị điện tử lập trình sử dụng công nghệ FPGA và CPLD

  1. 1 Lời giới thiệu Khai thác, nghiên cứu cơ bản công nghệ mới là b−ớc không thể thiếu trong việc cải tiến, nâng cao, cũng nh− chế tạo mới các trang thiết bị quân sự và dân sự nhằm đáp ứng việc hiện đại hoá công nghiệp hoá của đất n−ớc. Cùng với sự phát triển v−ợt bậc của nghành công nghệ thông tin, các công nghệ mới về các mạch tích hợp vi điện tử, các mạch tổ hợp logic lập trình đ−ợc ra đời đã làm cho các sản phẩm quân sự cũng nh− dân sự ngày càng hoàn thiện và −u việt hơn. Để tiến một b−ớc xa hơn trong việc cải tiến, chế tạo khí tài quân sự nhằm đáp ứng chiến tranh điện tử hiện đại với tốc độ xử lý cực kỳ cao, đòi hỏi phải có công nghệ tiên tiến phù hợp với tình hình chung của thế giới. Trên cơ sở phát triển từ các chíp PLA, hiện nay công nghệ na nô đã đ−ợc đ−a vào để chế tạo các mạch tích hợp lập trình đ−ợc FPGA và CPLD, nó đã làm cho mạch tích hợp logic lên đến hàng chục triệu cổng, tốc độ đồng hồ lên đến 500 MHz. ứng dụng công nghệ mới vào trong thiết kế chế tạo các thiết bị điện tử lập trình PLIC là một b−ớc cần thiết cho t−ơng lai với một n−ớc đang phát triển nh− Việt Nam. Để đáp ứng đ−ợc tính bảo mật trong quân sự cũng nh− tính phản ứng nhanh trong chiến tranh hiện đại cùng với nhu cầu chuyên dụng hoá, tối −u hoá (thời gian, không gian, giá thành ), tính chủ động trong công việc ngày càng đòi hỏi khắt khe. Việc đ−a ra công nghệ mới trong lĩnh vực chế tạo mạch điện tử để đáp ứng những yêu cầu trên là hoàn toàn cấp thiết mang tính thực tế cao.
  2. 2 Công nghệ FPGA (Field Programmable Gate Array) và CPLD (Complex Programmable Logic Device) đã đ−ợc các hãng lớn tập trung nghiên cứu và chế tạo, điển hình là Xilinx và Altera. Để làm chủ công nghệ mới và tổ chức thiết kế sản xuất công nghệ FPGA của Xilinx cho phép chúng ta tự thiết kế những vi mạch riêng, những bộ xử lý số riêng dành cho ứng dụng của chúng ta. Đặc biệt trong lĩnh vực xử lý tín hiệu số, các mạch tích hợp dùng để nhận dạng âm thanh, hình ảnh, cảm biến với tính mềm dẻo cao và giá thành thấp. Mặc dù công nghệ FPGA đã xuất hiện từ năm 1985, xong đối với n−ớc ta thì nó vẫn còn rất mới. Do vậy tìm hiểu, làm chủ về công nghệ FPGA là việc làm hoàn toàn cần thiết. Nó không chỉ có ý nghĩa đối với các lĩnh vực Điện tử - Viễn thông, công nghệ thông tin mà nó có ý nghĩa đặc biệt quan trọng trong lĩnh vực an ninh quốc phòng. Xuất phát từ thực tế đòi hỏi cấp bách đó, bộ môn Tự động và Kỹ thuật tính – Khoa Kỹ thuật điều khiển – Học Viện Kỹ thuật quân sự đã cho xuất bản cuốn sách “Thiết kế thiết bị điện tử lập trình sử dụng công nghệ FPGA và CPLD”, tài liệu này nằm trong loạt các tài liệu đã đ−ợc bộ môn ấn hành, bao gồm Cấu trúc máy tính, Cờu trúc và lập trình cho các hệ xử lý tín hiệu số, cấu trúc và lập trình hệ vi điều khiển. Tài liệu giới thiệu ph−ơng pháp thiết kế CPLD, FPGA cũng nh− ngôn ngữ lập trình, từ đó đi sâu nghiên cứu các giải pháp có liên quan cũng nh− các công cụ hỗ trợ thiết kế, sau đó áp dụng để thiết
  3. 3 kế, tích hợp vào loại CPLD và FPGA cụ thể . Tài liệu đ−ợc chia thành 4 ch−ơng: - Ch−ơng 1: Giới thiệu tổng quan tổ chức phần cứng của ASIC. Giới thiệu tổng quan tổ chức các họ thiết bị cũng nh− cấu trúc của chúng (tài liệu giới thiệu cấu trúc ASIC của hãng Xilinx). - Ch−ơng 2: Giải pháp và tổ chức phần mềm đảm bảo. Giới thiệu các phần mềm hỗ trợ thiết kế, ngôn ngữ lập trình. - Ch−ơng 3: Ngôn ngữ lập trình VHDL - Ch−ơng 4: Thiết kế ứng dụng cơ bản. Ch−ơng này đ−ợc thực hiện với việc tích hợp các mạch điện tử trên cơ sở sử dụng ngôn ngữ VHDL, để thiết kế bộ điều khiển động cơ b−ớc trên hai họ thiết bị CPLD và FPGA. Cuốn sách đ−ợc dùng làm giáo trình giảng dạy bậc đại học và sau đại học chuyên ngành điện, điện tử hoặc làm tài liệu tham khảo cho các nghiên cứu sinh và cho những ai quan tâm đến cấu trúc và lập trình ASIC. Cuốn sách đ−ợc biên soạn bởi PGS. TS. Nguyễn Tăng C−ờng và TS. Phan Quốc Thắng, ThS. Phạm Tuấn Hải, KS Lê Trọng Nghĩa, do PGS. TS. Nguyễn Tăng C−ờng chủ biên. Nhân dịp này, tập thể tác giả xin bày tỏ lời cám ơn chân thành nhất đến những ng−ời đã có nhiều đóng góp trong quá trình hoàn thành tài liệu, đến các anh chị em Bộ môn Tự động và Kỹ thuật tính thuộc Khoa Kỹ thuật Điều khiển, Học viện Kỹ thuật Quân sự, đặc biệt phải kể đến sự hỗ trợ hiệu quả của TS. Đỗ Đình Nghĩa. Do kinh nghiệm và thời gian hạn chế, tài liệu này chắc chắn không thể tránh khỏi những thiếu sót. Rất mong nhận đ−ợc các ý kiến đóng góp và xây dựng của bạn đọc gần xa. ý kiến đóng góp xin
  4. 4 gửi về địa chỉ: Bộ môn Tự động và Kỹ thuật tính, Khoa Kỹ thuật Điều khiển, Học viện Kỹ thuật Quân sự, 100 Hoàng Quốc Việt, Hà nội; Điện thoại (04)7542281, email: tcuong@hn.vnn.vn. Hà Nội, Ngày 1 tháng 10 năm 2005 Tập thể tác giả
  5. 5 Ch−ơng 1 : Giới thiệu tổng quan tổ chức phần cứng của FPGA vμ CPLD 1.1 Giới thiệu công nghệ và giải pháp của Xilinx Vào cuối những năm 70, các bảng mạch đ−ợc thiết kế sẵn cùng với các thiết bị chuẩn logic đ−ợc −a chuộng và thịnh hành . Sau đó một số câu hỏi đ−ợc đ−a ra rằng " Điều gì sẽ xảy ra nếu chúng ta đ−a cho những ng−ời thiết kế khả năng thực hiện kết nối giữa các thiết bị chuẩn logic khác nhau trong một thiết bị lớn hơn ? ". Điều này cho phép những ng−ời thiết kế tích hợp đ−ợc nhiều thiết bị chuẩn logic hơn vào trong một thiết bị. Để có đ−ợc sự linh hoạt trong thiết kế, Ron Cline ng−ời của hãng SigneticsTM đã đ−a ra ý t−ởng bao gồm hai sơ đồ cho phép ng−ời thiết kế có thể lập trình đ−ợc. Hai sơ đồ này cung cấp bất kỳ tổ hợp logic nào của các cổng "AND" và "OR" mà chúng có thể đ−ợc dùng chung với một số giới hạn cổng "AND " thông qua các cổng "OR". Cấu trúc này đã trở nên rất mềm dẻo, nh−ng tại thời điểm đó lớp đệm hình học 10 àm đã tạo ra sự giữ chậm giữa đầu vào và đầu ra rất lớn, chính điều này đã làm
  6. 6 cho thiết bị hoạt động t−ơng đối chậm. Và cấu trúc này đ−ợc gọi là cấu trúc của PLA (Programmable Logic Array). Hình 1.1. Cấu trúc của PLA (Programmable Logic Array) Hãng MMI (Sau đó bị mua bởi hãng AMD TM) đã hợp tác với hãng SigneticsTM và là nơi cung cấp nguồn tài liệu thứ hai cho hệ thống mảng logic lập trình PLA (Programmable Logic Array). Nh−ng sau khi sản xuất, cấu trúc này đã bị thay đổi và trở thành cấu trúc logic mảng lập trình đ−ợc PAL (Programmable Array Logic), bởi việc cố định một mảng và chỉ cho phép lập trình trên một mảng còn lại. Cấu trúc PAL mới này rất khác với cấu trúc của PLA ở chỗ là một mảng lập trình đ−ợc bị gắn cố định - mảng các cổng OR . Tuy nhiên, cấu trúc PAL (Programmable Array Logic) này cũng có lợi là thời gian giữ chậm đ−ờng truyền từ đầu vào đến đầu ra ngắn hơn và phần mềm ít phức tạp hơn. Tuy nhiên chúng không mềm dẻo bằng cấu trúc PLA (Programmable Logic Array) . Các cấu trúc khác cũng đ−ợc đ−a ra, chẳng hạn nh− PLD (Programmable Logic Device) - thiết bị logic lập trình đ−ợc. Loại thiết bị này th−ờng đ−ợc gọi là thiết bị logic lập trình đ−ợc đơn giản SPLD ( Simple
  7. 7 Programmable Logic Device) và tên này đ−ợc gọi chung cho tất cả các thiết bị logic lập trình đ−ợc nh− : PALs, CPLDs, FPGAs. Cấu trúc của PAL (Programmable Array Logic) . Hình 1.2. Cấu trúc của PAL (Programmable Array Logic) Cấu trúc này có các mắt l−ới của các đ−ờng nối theo chiều ngang và chiều đứng. Tại mỗi điểm giao nhau, chúng đ−ợc nối với nhau bằng một cầu trì. Với sự trợ giúp của các công cụ phần mềm, ng−ời thiết kế có thể lựa chọn mối nối, mối nào không đ−ợc nối thì cầu trì tại điểm đó sẽ bị huỷ đi (Bị nung nóng và thổi đứt). Điều này đ−ợc thực hiện bởi một bộ nạp ch−ơng trình. Theo hình 1.2 các chân đầu vào đ−ợc nối vào các đ−ờng theo chiều đứng, các đ−ờng nằm ngang đ−ợc nối với các cổng AND - OR, lần l−ợt các đ−ờng này đ−ợc nối với các Flip-Flop chuyên dụng (Chẳng hạn nh− Flip-Flop loại D, T, RS). Các PLDs (Programmable Logic Device) trong một IC đóng gói đơn có số cổng nhiều hơn 50 lần các thiết bị logic chuyên biệt. Điều này nó đã thể hiện một sự tiến bộ rõ rệt, đấy là ch−a đề cập đến một số thiết bị cần phải đ−ợc giản l−ợc hoá để có độ tin cậy cao hơn các thiết bị chuẩn logic . Công nghệ PLD đã phát triển từ những ngày còn rất sớm, chẳng
  8. 8 hạn nh− công ty Xilinx, họ đã đ−a ra sản phẩm CMOS với nguồn tiêu thụ siêu thấp dựa trên công nghệ bộ nhớ flash. Các PLD flash cho phép khả năng lập trình và xoá bằng điện cho thiết bị nhiều lần đã trở nên thích hợp hơn so với các chíp thế hệ cũ, các loại chip mà với thời gian xoá ch−ơng trình hơn 20 phút bằng tia cực tím . 1.1.1. Complex Programmable Logic Devices (CPLDs) Tạm dịch là các thiết bị logic cho phép lập trình phức hợp, họ thiết bị này là kết quả của việc tăng mật độ của họ SPLDs (Programmable Logic Device) lên nhiều lần. Khái niệm này đ−ợc hiểu nh− sau : tăng một số khối PLD hoặc các macrocell (xin đ−ợc để nguyên nghĩa và giải thích ở phần cấu trúc của CPLD) ở trong một thiết bị đơn cùng với các đ−ờng nối liền đa năng giữa chúng. Các đ−ờng nối của các đơn vị logic đơn có thể đ−ợc thực thi ở trong một khối đơn ( a single block ). Nhiều logic phức tạp yêu cầu cần nhiều khối và sử dụng các đ−ờng nối đa năng giữa chúng để tạo nên các kết nối phức tạp hơn. Hình 1.3. Cấu trúc của CPLD
  9. 9 Các CPLDs rất thích hợp trong việc diễn tả các cổng logic phức tạp với tốc độ làm việc lớn hơn 200 Mhz ( t−ơng đ−ơng 5 ns ). Khuôn mẫu thời gian cho CPLD rất dễ tính toán, bởi thế tr−ớc khi bắt đầu thiết kế bạn có thể tính toán các tốc độ từ đầu vào đến đầu ra của mình dựa trên khuôn mẫu này. CPLDs đ−a ra cách đơn giản nhất để thực hiện một thiết kế, một thiết kế có thể đ−ợc mô tả bởi các sơ đồ nguyên lý hoặc nhập vào một HDL ( Hardware Description Language - Ngôn ngữ mô tả phần cứng). Đơn giản khi sử dụng các công cụ phát triển để tối −u hoá, nạp và mô phỏng thiết kế. Các công cụ thiết kế sẽ tạo ra một file mà file này (chính là một file ch−ơng trình) đ−ợc dùng để đ−a thêm các chuẩn logic vào trong một chip CPLD cùng với chức năng mong muốn. Chính vì vậy nó cung cấp một chuẩn phần cứng mà cho phép các quá trình xử lý, gỡ rối có thể thực hiện ngay từ khi bắt đầu công việc thiết kế. Giả sử nếu bạn cần có một một sự thay đổi về thiết kế, bạn có thể đ−a sự thay đổi thiết kế đó vào trong công cụ phát triển CPLD và thực thi trên nó, sau đó bạn có thể kiểm tra đ−ợc tức thì ngay sau đó bằng một phần mềm mô phỏng. CPLD có mức tích hợp rất cao (có nghĩa là một số l−ợng lớn các cổng trên một diện tích) và đ−ợc đóng gói trong một khuôn dạng rất nhỏ. Điều này đã đ−a ra một giải pháp tuyệt vời cho những ng−ời thiết kế cần sản phẩm của mình đ−ợc đóng gói nhỏ gọn với diện tích bo mạch bị giới hạn về không gian. Họ Xilinx CoolRunner CPLDs luôn có mặt trong các đóng gói cùng với các chip đời mới. Chẳng hạn nh− chip CP56 CPLD có khoảng cách các chân là 0,5 mm và với kích th−ớc bao nhỏ không đáng kể
  10. 10 6x6mm và điều này cho phép đ−a ra một sản phẩm nhỏ gọn cùng với mức độ tiêu thụ nguồn thấp . 1.1.2. Field Programmable Gate Arrays ( FPGAs) Mảng cổng cho phép lập trình đ−ợc. Năm 1985, công ty Xilinx đã đ−a ra một ý t−ởng mới : Đó là sự kết hợp giữa những điều khiển ng−ời dùng, thời gian đ−a sản phẩm PLD (Programmable Logic Device) ra thị tr−ờng cùng với mật độ tích hợp, giá của các ma trận cổng. Điều này đã cho ra đời thiết bị FPGA và cho đến nay Xilinx vẫn là nhà phân phối số 1 trên toàn thế giới về họ thiết bị này. Một FPGA có cấu trúc của các Logic Cell hoặc các Module và các đ−ờng nối (Xem hình 1.4), các đ−ờng nối này nằm d−ới sự điều khiển của ng−ời thiết kế. Có nghĩa là bạn có thể thiết kế, lập trình và thay đổi mạch của bạn bất cứ khi nào bạn muốn . Với họ FPGA ngày nay khả năng tích hợp của nó đã v−ợt qua giới hạn 10 triệu cổng ( Họ Xilinx VirtexTM- II và VirtexTM- 4 FPGA hiện đang giữ kỷ lục).Với sự giới thiệu của họ sản phẩm Spartan FPGA hiện nay, Xilinx có thể cạnh tranh về ma trận cổng ở mọi khía cạnh nh− giá cả, số l−ợng cổng, số l−ợng vào ra cũng nh− hiệu quả về giá thành. Giả sử lấy Spartan - IIE FPGA với số l−ợng 300.000 cổng làm chuẩn của giá thành, nó có thể cho phép thay thế các sản phẩm ứng dụng theo chuẩn chuyên dụng. Có hai loại FPGA cơ bản : Loại SRAM (Static Random Access Memory) có thể lập trình lại nhiều lần và loại OTP (One - Time Programmable) lập trình một lần.
  11. 11 Hình 1.4. Cấu trúc của FPGA Hai loại này khác nhau ở chỗ thực hiện của các logic cell và kỹ thuật tạo sự kết nối giữa chúng trong thiết bị. Loại hay đ−ợc dùng hơn cả là loại SRAM, vì nó có thể lập trình đ−ợc nhiều lần. Thực tế thì SRAM FPGA đ−ợc nạp cấu hình lại mỗi khi bật nguồn, bởi vì FPGA loại này thực chất là một chíp nhớ theo ý muốn. Có một câu hỏi đặt ra là " Tại sao lại cần một chip PROM nối tiếp hoặc bộ nhớ hệ thống? " cùng với mỗi SRAM FPGA . Xem cấu trúc của hai loại với hình vẽ 1.5 và 1.6:
  12. 12 Hình 1.5. Cấu trúc SRAM FPGA ( SRAM Logic Cell) - Loại SRAM có thể lập trình lại : + SRAM xác định các đ−ờng kết nối. + SRAM xác định đơn vị logic trong bảng LUT ( Look Up Table ) ( Mỗi một LUT là một bộ tạo chức năng hay bộ tạo hàm với N đầu vào và một đầu ra, có thể thực hiện bất cứ chức năng logic nào với N đầu vào của nó. N th−ờng nằm giữa 2 và 6, thông th−ờng các LUT có 4 đầu vào ). Hình 1.6 . Cấu trúc của OTP FPGA (OTP Logic Cell) - Loại OTP cho phép lập trình một lần : + Các đ−ờng nối không đ−ợc phép nối nh− dạng cầu chì ( Nối cố định ). + Logic là các cổng truyền thống . Trong SRAM Logic Cell, thay vì các cổng thông th−ờng, một LUT ( bộ tạo hàm ) sẽ xác định các đầu ra dựa vào giá trị cuả các đầu vào. Nh− hình 1.5 ta thấy sáu tổ hợp khác nhau của bốn bít vào
  13. 13 xác định các giá trị của đầu ra, các bit này cũng đ−ợc dùng để thực thi các kết nối. Trong OTP FPGAs sử dụng kết nối giữa các đ−ờng theo dạng nối ng−ợc ( Có nghĩa ng−ợc với cầu trì, sự kết nối đ−ợc tạo ra và không bị nóng chảy trong suốt thời gian nạp ch−ơng trình), nhằm tạo ra các kết nối cố định trong chip. Hơn nữa, OTP FPGA không cần SPROM nào khác, điều đó có nghĩa là nạp cấu hình vào thẳng FPGA. Tuy nhiên mỗi lần thay đổi một thiết kế bạn phải vứt bỏ đi một chip. Loại OTP Logic Cell có cấu trúc t−ơng tự nh− họ PLD (Programmable Logic Device), bao gồm các cổng và flip - flop chuyên dụng nh− Flip-Flop loại D , T , hay RS . 1.2. Giới thiệu các họ thiết bị của Xilinx Xilinx chia sản phẩm của mình ra rất nhiều họ nh−ng tài liệu sẽ tập trung chính vào việc giới thiệu hai loại FPGA và CPLD cơ bản, xem hình vẽ (Hình2.1). Đó là lọai thiết bị CoolRunner - XPLA3 CPLD, và Spartan 3 FPGA.
  14. 14 Hình1.7. Sơ l−ợc các họ thiết bị của Xilinx 1.2.1. Họ Platform FPGAs Hình 1.7 cho ta thấy đ−ợc tổng quan các họ sản phẩm chính cuả Xilinx. ở đây xin chỉ giới thiệu tổng quan và đ−a ra các địa chỉ cần tra cứu về chi tiết kỹ thuật của chúng trên trang Web của hãng Xilinx. Họ Virtex FPGAs : Sản phẩm Virtex-II là hiện thân đầu tiên của Platform FPGA. Nó đã tạo ra một điểm dấu mới trong sự thực thi, cộng thêm hàng loạt các tính năng mới của thiết bị mà từ tr−ớc ch−a có. Đây là thời kỳ mà Xilinx mở rộng tầm chiến l−ợc của mình bằng việc kết hợp với các hãng IBM, Wind River, Conexant,
  15. 15 RocketChipsTM, The MathWorks, và các nhà đứng đầu công nghệ khác trên thế giới. Platform FPGA đ−a ra các đặc tính sau : - Các giao tiếp vào ra hệ thống làm giảm nhẹ bớt các tiêu chuẩn không cần thiết khác. - XtremeDSPTM dựa trên FPGA, giải pháp cho sự thực hiện DSP ch−a từng có (Nhanh gấp 100 lần bộ xử lý DSP hàng đầu). - Empower ! Kỹ thuật xử lý dành cho xử lý hệ thống đòi hỏi sự thực hiện cao và mềm dẻo. Với dải mật độ từ 40.000 đến 10 triệu cổng hệ thống , Virtex-II đ−a ra bộ nhớ hệ thống đ−ợc mở rộng và bộ DSP flash thông qua kết cấu nhúng IP (Lõi sở hữu trí tuệ). Họ Xilinx Virtex là họ đầu tiên của FPGA mà nó đ−a ra một triệu cổng hệ thống và đ−ợc giới thiệu vào năm 1998. Dòng sản phẩm Virtex về cơ bản đã đ−ợc định nghĩa lại tất cả các đơn vị logic lập trình bởi việc mở rộng các khả năng của FPGA truyền thống để có đặc tính mạnh hơn, nó đ−ợc dùng cho các thiết kế hệ thống thực thi cao. Các thiết bị mới nhất đ−ợc đ−a ra với họ sản phẩm Virtex-E và đ−ợc công bố năm 1999 với hơn ba triệu cổng hệ thống. Virtex-EM giới thiệu năm 2000 và là họ FPGA đầu tiên đ−ợc sản xuất với qui trình mạ đồng đã đ−ợc cải tiến và thêm vào bộ nhớ trong chip để dùng trong các ứng dụng chuyển mạch mạng. Họ Spartan FPGAs : Họ Spartan FPGA là ý t−ởng dùng cho các ứng dụng với số l−ợng lớn, giá thành thấp, chúng đ−ợc đ−a vào các thiết bị đích nhằm thay thế các chip logic cố định và các sản phẩm chuyên dụng,
  16. 16 chẳng hạn nh− các chip giao tiếp bus. Năm thành viên của họ này là Spartan-3 (1.2v), Spartan-IIE (1.8 v), Spartan-II (2.5 v) và SpartanXL (3.3v), Spartan(5v). ở tài liệu này xin giới thiệu họ sản phẩm Spartan-3. - Spartan-3 FPGAs (1.2v, 90nm) : Với họ này, nó không chỉ có giá thành thấp mà còn đựoc tích hợp với một số tính chất mới về cấu trúc, các tính chất này đ−ợc kết hợp với các đơn vị logic cho phép lập trình. Sự kết hợp giữa giá thành thấp với các tính chất mới đã tạo ra sự thay thế các chip ASIC và các thiết bị chuyên dùng khác. Ví dụ một chip Spartan-3 FPGA trong hệ thống đa ph−ơng tiện truyền thông trong xe hơi có thể tập hợp đ−ợc rất nhiều chức năng của hệ thống, bao gồm các lõi IP nhúng, giao tiếp hệ thống khách hàng, DSP và các đơn vị logic khác. Nó bao gồm các thành phần chính sau: +/ Các khối SRL16 ( thanhghi dịch 16 bit) : * Mỗi khối Logic định cấu hình đ−ợc (CLB LUT- Configurable Logic Block LookUp Table) làm việc nh− một thanh ghi dịch nhanh 16 bit. (Mỗi CLB có chứa 2 hoặc 4 LUT và 2 hoặc 4 Flip Flop ). * Nối tầng các LUT ( Bộ tạo chức năng ) để tạo nên thanh ghi dịch dài hơn . * Sử dụng các thanh ghi đ−ờng ống cho các bộ đệm dành cho Video và các kết nối không dây. +/ Bộ nhớ RAM chọn có thể đ−ợc cấp tới 520Kb * Mỗi LUT làm việc nh− bộ RAM/ROM đơn cổng hoặc l−ỡng cổng.
  17. 17 * Nối tầng các LUT để tạo bộ nhớ lớn hơn . * Các ứng dụng có thể thay đổi kích th−ớc bộ nhớ một cách mềm dẻo, FIFO, và các bộ đệm. +/ Khối RAM nhúng tới 1.87Mb * Nhúng tới 104 khối RAM đồng bộ bằng việc nối tầng các khối RAM 18Kb. * Mỗi khối RAM 18Kb coi nh− một RAM đơn cổng hoặc l−ỡng cổng . * Cung cấp các bội số của tỷ số t−ơng quan, chuyển đổi độ rộng dữ liệu, tính chẵn lẻ. * Cung cấp cho các ứng dụng gồm: bộ đệm dữ liệu, FIFO, và các bộ đệm khác. +/ Giao tiếp bộ nhớ * Cho phép giao tiếp điện với các chuẩn nh− HSTL, SSTL, cho phép thực hiện kết nối với bộ nhớ thông th−ờng. +/ Các bộ nhân * Cho phép các phép tính toán học và số học đơn giản cũng nh− các chức năng nâng cao của DSP. * Cung cấp 104 bộ nhân 18x18 với các phép nhân18 bit dấu hoặc 17 bit không dấu, cho phép nối tầng để tăng độ rộng số bit. * Các bộ nhân hệ số hằng : Bộ nhớ on - Chip và các Logic Cell làm việc chặt chẽ với nhau để xây dựng các bộ nhân với các toán hạng là hằng số. * Bộ nhân Logic cell : Thực hiện thuật toán thông th−ờng chẳng hạn
  18. 18 nh− Baugh Wooly, Booth, cây Wallance * Các bộ DCM (Digital Clock Manager - Bộ quản lý đồng hồ số) thực hiện việc quản lý đồng hồ số phức tạp mà không bị ảnh h−ởng của các tác nhân kích thích mang tính hệ thống nh−, nhiệt độ, sự biến thiên điện áp, và các vấn đề khác mà ví dụ điển hình là th−ờng xảy ra với các bộ PLL (Phase Lock Loop - các vòng khoá pha) đ−ợc tích hợp trong FPGA. * Bộ tạo tần số mềm dẻo từ 25 MHz đến 325 MHz. * Điều khiển dịch pha các góc 1/4. *Tạo các chu kỳ chính xác 50/50. * Bù nhiệt. +/ Kỹ thuât trở kháng điều khiển đ−ợc XCITE (Xilinx Controlled Impedance Technology) *Các đầu cuối I/O cần bảo toàn tính nguyên dạng cuả tín hiệu, với hàng trăm đầu I/O và với các kỹ thuật đóng gói cải tiến, các điện trở đầu cuối mở rộng không còn bị biến đổi. * Các đầu cuối I/O bị loại trừ sự thay đổi theo quá trình nh− nhiệt độ, dao động của điện áp . Bảng 1.1. Tổng quan họ Spartan-3 FPGA
  19. 19 Các đặc tính và công dụng của chúng đ−ợc nêu trong bảng 1.2 : Bảng 1.2. Các đặc tính chính của Spartan-3 Các đặc tính của Spartan -3 Công dụng Kết cấu và định tuyến FPGA lên - Cho phép thực hiện các khối tới 5.000.000 cổng hệ thống. chức năng mức hệ thống, kết nối on - chip cao, đ−a vào các cấu hình hệ thống cao . Khối RAM - có các Block 18K - Cho phép thực hiện các bộ đệm lớn, các FIFO, các bộ đệm kết nối. Chế độ thanh ghi dịch ( SRL 16 ) - ý t−ởng thanh ghi dịch 16 bit dành cho các ứng dụng tốc độ cao, hoặc dữ liệu có dạng thô đ−ợc l−u trữ trong DSP và các
  20. 20 ứng dụng mã hoá, xử lý đ−ờng ống nhanh . Các khối nhân 18x18 . - Dùng cho việc xử lý DSP tốc độ cao; Sự sử dụng các bộ nhân kết hợp với kết cấu khung dữ liệu cho phép thực hiện DSP song song siêu nhanh. Tín hiệu đầu cuối (lên tới 622 - Cho phép kết nối các chíp đang Mbps) định dạng theo các chuẩn dùng với các chip, bộ nhớ khác, LVTTL, LVCMOS, GTL, GTL+, và từ các chip đang dùng tới các PCI, HSTL-I, II, III, SSTL- I, II . chuẩn tín hiệu ở mạch phản hồi, loại bớt sự cần nhiều IC chuyển đổi . Bộ quản lý đồng hồ số ( DCM ) - Loại trừ sự giữ chậm đồng hồ mức board và on-chip, nhân chia tức thì, có thể giảm đ−ợc tốc độ đồng hồ phù hợp ở mức board, giảm số bộ đồng hồ trên bo mạch. Có thể điều chỉnh pha đồng hồ đảm bảo độ chính xác cao . Có các tài nguyên đ−ợc định - Sự phân phối các clock và các tuyến toàn cục. tín hiệu khác cùng với các hệ số phân chia đầu ra cao trên toàn
  21. 21 thiết bị. Điều khiển đầu ra cho phép lập - Nâng cao tính toàn vẹn của trình . thiết bị 1.2.2. Họ Xilinx CPLDs Hiện nay Xilinx đ−a ra các sản phẩm CPLD ở hai loại thiết bị : XC9500 và CoolRunner. Để chọn CPLD phù hợp, bạn cần xem qua các đặc tính cuả nó để nhận dạng họ sản phẩm mà nó phù hợp với ứng dụng của bạn. - Với họ XC9500 : là họ các thiết bị cho phép lập trình phức tạp với sự thực thi cao, các đặc tính mới, linh hoạt. Họ thiết bị này đ−a ra tốc độ dẫn đầu trong nền công nghiệp, nó cung cấp sự linh hoạt trong cấu trúc khoá chân với ng−ời dùng. Họ sản phẩm này đ−ợc dùng cho các thiết kế cần tốc độ cao, giá thành thấp. - Họ CoolRunner : Họ thiết bị tiêu thụ nguồn cực kỳ thấp, tạo ra sự dẫn đầu trong thị tr−ờng các thiết bị xách tay. Hoạt động trong chế độ chờ ở mức Micro ampe, tiêu thụ nguồn nhỏ nhất khi làm việc, vì vậy nó phù hợp với các ứng dụng mà cần quan tâm nguồn,
  22. 22 chẳng hạn nh− nguồn ắc qui, các ứng dụng xách tay. Để quyết định chọn lọai thiết bị nào phù hợp với tiêu chuẩn thiết kế, cần phải xem thêm các thông tin chi tiết về loại thiết bị mà bạn cần, chẳng hạn nh− : Mật độ cổng, số thanh ghi, số chân vào ra, tốc độ yêu cầu, đóng gói chân, tiêu thụ nguồn, chức năng mức hệ thống Họ XC9500 ISP ( Họ này cho phép lập trình mức hệ thống ) Họ XC9500 với sự thực thi cao, giá thành thấp là mục tiêu cho các ứng dụng có nhu cầu phát triển, nâng cấp thiết kế. Họ XC9500 có dải mật độ từ 36 đến 288 Macrocell (Xin giải thích ở phần cấu trúc CPLD và FPGA mục 1.3 ch−ơng I), làm việc ở điện áp 2.5 Volt (XC9500 XV), 3.3 Volt (XC9500 XL), 5 Volt (XC9500 ). Các thiết bị này cho phép lập trình ở mức hệ thống ISP, điều này cho phép sử dụng lại các thiết kế trong suốt thời gian thử mẫu, gỡ rối hệ thống, nâng cấp, test tr−ớc khi xuất x−ởng. Dựa vào các kỹ thuật xử lý tiên tiến, họ XC9500 đ−a ra sự bảo hành nhanh (Chỉ cần file ch−ơng trình đ−ợc đóng gói và nạp lại), cho phép khoá chân ng−ời dùng, giao tiếp đ−ợc với chuẩn JTAG. Tất cả các họ XC9500 có đặc tính tin cậy tuyệt vời với 10.000 lần nạp xoá và l−u trữ dữ liệu trong vòng 20 năm. - Họ XC9500 5 V : Là một trong số 6 thiết bị dải từ 36 đến 288 Macrocell với các kiểu đóng gói chân đa dạng. Các chân vào ra cho phép giao tiếp trực tiếp với hệ thống 3V và 5 V (VccIO - chân giao tiếp ng−ời dùng), với các phiên bản mới nó trở nên rất dễ sử dụng với các đóng gói theo kiểu CSP (Chip Scale Package), BGA (Ball Grid Array) và cho phép truy cập đến 192 tín hiệu.
  23. 23 * Cấu trúc khoá chân linh hoạt : Cùng với phần mềm fitter đã đ−a ra khả năng định tuyến lớn nhất, mềm dẻo trong thực thi. Với cấu trúc có giầu đặc tính, cho phép đ−a ra nhiều tích số nhân riêng biệt, có ba bộ đồng hồ toàn cục, có nhiều tích số nhân trên đầu ra hơn các loại CPLD khác. Các tính năng về cấu trúc của loại này rất thích nghi với việc sửa đổi thiết kế trong quá trình thiết kế. * Trợ giúp gỡ rối và phát triển giao tiếp với JTAG IEEE 1149.1: Giao tiếp JTAG của họ XC9500 thông minh hơn bất cứ họ CPLD nào có mặt trên thị tr−ờng. Nó có các đặc tính chuẩn hỗ trợ kỹ thuật hỏi vòng, lấy mẫu, kiểm tra mở rộng. Hơn nữa nó gồm có các chỉ dẫn quét biên mà các loại CPLD khác không có, nó bao gồm INTEST (dùng cho kiểm tra chức năng của thiết bị ), HIGHZ ( dùng cho kỹ thuật hỏi vòng ). Họ XC9500 5V này đ−a ra nhiều chuẩn công nghiệp phát triển ở thế hệ thứ ba, các công cụ gỡ rối nh− Corelis , JTAG, Assert Intertech. Các công cụ này cho phép bạn phát triển các véc tơ test vùng biên để phân tích sự ảnh h−ởng lẫn nhau, test, gỡ rối lỗi hệ thống. Bảng 1.3. Tổng quan họ XC9500 5V
  24. 24 - Họ XC9500XL 3.3 V: Họ XC9500 XL đ−ợc úng dụng trong các hệ thống mũi nhọn cần sự phát triển tiếp theo và khả năng nâng cấp thiết kế. Họ này đ−a ra sự thực thi ch−a từng có với độ tin cậy lập trình cao nhất, giá thành thấp nhất. Họ XC9500 XL bổ sung mật độ cao hơn Xilinx FPGA để đ−a ra giải pháp logic tổng thể trong môi tr−ờng phát triển tích hợp . Các đặc tính chính của họ này nh− sau : * Điểm mạnh chính : +/ Giá thành thấp nhất trên mỗi Macrocell. +/ Cấu trúc khoá chân tiên tiến nhất hiện có . +/ Khả năng lập trình cao nhất, giảm sự rủi ro hệ thống +/ Bổ sung cho họ Xilinx 3.3 V FPGA. * Sự thực thi : +/ Tốc độ truyền tín hiệu giữa chân tới chân 5ns . +/ Tần số hệ thống 222 MHz . * Tính năng cấu trúc mạnh:
  25. 25 +/ Có các khối chức năng lên tới 54 đầu vào . +/ Có tới 90 tích số nhân trên mỗi Macrocell. +/ Cho phép định tuyến nhanh thông qua ma trận chuyển mạch CONNECTTM II. +/ Có ba bộ đồng hồ toàn cục và cho phép chuyển đổi vị trí giữa chúng. +/ Có đ−ờng OE (Output Enable) trên mỗi đầu ra riêng biệt, cho phép chuyển đổi vị trí . * Độ tin cậy cao nhất +/ Khả năng chịu đ−ợc 10.000 chu kỳ nạp xoá +/ L−u dữ liệu đ−ợc 20 năm +/ Cho phép bỏ qua chế độ lỗi mở khoá ISP . Bảng 1.4. Các họ XC9500 XV và XC9500 XL:
  26. 26 Họ CoolRunner Low - Power CPLD: Có hai thành viên chính trong họ CoolRunner là CoolRunner XPLA3(3.3v) và CoolRunner II (1.8V). ở tài liệu này giới thiệu CoolRunner XPLA (3.3 v). Họ CoolRunner CPLD là sự kết hợp của sự tiêu thụ nguồn thấp và tốc độ cao, mật độ cao, số đ−ờng vào ra cao trong một chip đơn. Họ CoolRunner 3.3v có mật độ từ 32 đến 512 Macrocell. CoolRunner CPLD có nét đặc biệt của kỹ thuật nguồn không, cho phép thiết bị không tiêu thụ nguồn ở chế độ Standby. Đặc tính này rất phù hợp với các thiết bị điện tử xách tay, nh− Laptop PCs, điện thoại di động, các thiết bị cá nhân số Họ CPLD này sử dụng nguồn động ít hơn nhiều khi hoạt động so với CPLD truyền thống. Một điều quan trọng hơn cả là chúng dùng cho ứng dụng cần sự thực thi với tốc độ cao, nhậy cảm về nhiệt, chẳng hạn nh− chuyển mạch của tổng đài, hệ thống mô phỏng
  27. 27 Mỗi thành viên của họ CoolRunner XPLA3 có chứa kỹ thuật thiết kế nguồn không mà nó là sự kết hợp nguồn năng l−ợng thấp và tốc độ cao. Với kỹ thuật thiết kế này họ CoolRunner XPLA3 đ−a ra tốc độ truyền từ chân tới chân là 5ns. Khi đ−ợc cấp nguồn với dòng nhỏ hơn 100 àA (ở chế độ standby) không cần bit "Powerdown" vì bit này có thể ảnh h−ởng xấu đến sự thực hiện của thiết bị. Bằng việc thay thế các ph−ơng pháp khuyếch đại truyền thống, ph−ơng pháp các tích số nhân với một loạt sự nối tầng của các cổng CMOS thuần tuý. Nguồn động cũng đ−ợc thay thế bằng nguồn thấp hơn bất kỳ loại CPLD nào khác. Họ CoolRunner hoàn toàn là loại PLD CMOS, vì vậy chúng sử dụng kỹ thuật xử lý CMOS và kỹ thuật thiết kế nguồn không CMOS . Bảng 1.5. Các đặc tính của họ CoolRunner: Đặc tính Công dụng Cấu trúc hoàn toàn CMOS cùng - Dòng tiêu thụ tổng và dòng ở với kỹ thuật thiết kế nguồn chế độ STANBY thấp nhất trong không FZP số họ CPLD, vì vậy tuổi thọ của ắc qui sẽ cao hơn, độ tin cậy tăng, toả nhiệt ít hơn. Có thể chọn thiết bị có chứa 32 - Phù hợp với nhiều thiết kế và đến 512 Macrocell. các ứng dụng, có thể chuyển mật độ lên hoặc xuống tuỳ thuộc vào phát triển thiết kế lên hay rút bớt.
  28. 28 Chuẩn vào ra thay đổi ( Có thể - Đơn giản trong thiết kế, có dao dộng từ 3.3 đến 5V). nhiều mức điện áp và dễ chuyển đổi mức. Hệ thống Bus vào ra thuận tiện. - Có điện trở treo ở đầu cuối . Sự chọn lựa clock đa năng. - Mềm dẻo trong thiết kế . Có các thanh ghi đầu vào tác - Giao tiếp trực tiếp với bus tốc động nhanh độ cao đ−ợc. VFM (Variable Function Mux) - Quá trình tối −u hoá mạnh hơn bộ chọn kênh chức năng cho và dễ điều chỉnh thiết kế, chi phí phép thay đổi. thấp hơn khi dùng vào các ứng dụng nhỏ. Đóng gói nhỏ gọn với các - Các chân nhỏ nhất, tiết kiệm khoảng cách chân là 0,8 mm và khoảng mạch in, phù hợp với các 0,5 mm. thiết bị cầm tay. Dải nhiệt độ chuẩn theo công - Có thể sử dụng trong các ứng nghiệp và th−ơng mại . dụng ở các lĩnh vực khác nhau, nh− y học Bảng 1.6. Tổng quan họ CoolRunner :
  29. 29 Giải thích ký hiệu CoolRunner CPLD: 1.2.3. Họ Xilinx ứng dụng trong hàng không và vũ trụ Xilinx là nhà cung cấp hàng đầu các họ PLD với độ tin cậy cao cho thị tr−ờng hàng không vũ trụ và quân sự . Các thiết bị này, chúng đ−ợc sử dụng rộng rãi trong các ứng dụng nh− chiến tranh
  30. 30 điện tử, tên lửa dẫn đ−ờng, tên lửa hành trình, Radar, truyền thông siêu âm, xử lý tín hiệu, khoa học điện tử hàng không và vệ tinh. Họ QproTM với các sản phẩm QML gốm, plastic đ−a ra các giải pháp lập trình logic nâng cao cho các thiết kế thế hệ tiếp theo. Họ QproTM cũng có các sản phẩm chọn, chịu nhiệt để sử dụng trong vệ tinh và các ứng dụng không gian khác. Chẳng hạn nh− họ XQ4000E/EX thuộc họ FPGA, QPro - XC1700D - PROM , XQ17V6 - PROM, XQ18V04 - Flash PROM đ−ợc sử dụng trong lĩnh vực quân sự . Địa chỉ tham khảo : ( ). 1.3. Cấu trúc của FPGA và CPLD Xilinx Với mỗi họ khác nhau cấu trúc cuả chúng khác nhau, tuy nhiên chúng vẫn có những điểm chung, ở tài liệu này xin giới thiệu một họ cụ thể. Với họ của FPGA tác giả xin giới thiệu cấu trúc của Spartan- IIE FPGA, với họ CPLD xin gới thiệu họ CoolRunner XPLA3. 1.3.1. Cấu trúc của Spartan-IIE ( 1.8V) FPGA Họ Spartan-IIE (Lõi 1.8V) của FPGA đ−a ra các kỹ thuật FPGA phát triển nhất ngày nay, bao gồm cho phép lập trình với nhiều chuẩn vào ra nh− LVDS, LVPECL, HSTL, các khối RAM on-chip, các vòng khoá độ giữ chậm cho phép quản lý clock ở mức board và mức chip. Hơn nữa họ Spartan-IIE có một ý nghĩa giá trị khác đó là nó loại bỏ sự cần thiết các sản phẩm tiêu chuẩn chuyên dụng ( ASSP ) với các ứng dụng đơn giản, chẳng hạn nh− vòng khoá pha, FIFO, các bộ chuyển đổi vào ra, điều khiển Bus hệ thống, các thành phần
  31. 31 này đã không thể thiếu để hoàn thiện một thiết kế mà nó đã đ−ợc dùng tr−ớc đây. - Họ Spartan-IIE là đòn bẩy cơ bản cho các tính năng về cấu trúc của Virtex-E để đ−a ra những tính năng nổi trội hơn. Cấu trúc CLB (Configurable Logic Block - Khối logic cho phép định cấu hình) có chứa RAM đ−ợc phân phối để thực hiện các chức năng logic cơ bản. - Bốn DLL ( Delay Locked Loop ) vòng khoá độ giữ chậm đ−ợc sử dụng cho bộ quản lý đồng hồ và có thể thực hiện clock đối xứng lệch và các phép nhân clock, chia clock. Clock đối xứng lệch có thể đ−ợc thực hiện bên ngoài (Mức board) hoặc ở bên trong chip ( Mức cơ bản ). - Các khối Block RAM gồm 4Kb cho mỗi khối có thể đ−ợc sắp xếp độ rộng từ 1 đến 16 bit. - Đặc tính Select I/O cho phép giao tiếp với nhiều chuẩn khác nhau để thực thi trong các vùng kết nối với các chip có chuẩn IO khác nhau, kết nối chip với bộ nhớ, kết nối chip với các giao tiếp ẩn.
  32. 32 Hình 1.8. Cấu trúc của Spartan - IIE - Họ Spartan-IIE FPGA đ−ợc thực thi với cấu trúc CLB cho phép lập trình linh hoạt, thông dụng, mà các CLB này đ−ợc bao bởi một vòng các khối I/O lập trình đ−ợc, các đ−ờng nối đ−ợc kết nối bởi các nguồn tài nguyên định tuyến đa năng. Cấu trúc này cũng đ−a ra các chức năng đ−ợc nâng cao chẳng hạn nh− khối RAM và các khối điều khiển clock.
  33. 33 Hình 1.9. Sơ đồ khối của Spartan -IIE Hình 1.10. Khối Input/Output Spartan -IIE (I/OB) I/O Block: - Các đặc tính I/OB của các đầu vào và đầu ra đ−ợc hỗ trợ tới 19 các chuẩn tín hiệu khác nhau, bao gồm LVDS, BLVDS, LVPECL,
  34. 34 LVCMOS, HSTL, SSTL và GTL . - Các đầu vào ra tốc độ cao này có khả năng hỗ trợ với tất cả các bộ nhớ hiện đại và giao tiếp bus khác. Chúng gồm ba thanh ghi chức năng hoặc là các flip - flop loại D đ−ợc kích hoạt bằng s−ờn hoặc là các bộ chốt nhạy mức Hình 1.10. - Mỗi một IOB có một đ−ờng CLK đ−ợc đ−a tới ba thanh ghi theo một đ−ờng dùng chung và các đ−ờng CE cho mỗi thanh ghi hoàn toàn độc lập xem Hình 1.10. Ngoài các đ−ờng CLK, CE, mỗi thanh ghi đều có chung một đ−ờng SET/RESET. Với mỗi thanh ghi bạn có thể đặt tín hiệu Set/Reset này nh− tín hiệu Set đồng bộ, Reset đồng bộ, Preset không đồng bộ hoặc một tín hiệu xoá (Clear) không đồng bộ. - Trong một số các chuẩn I/O yêu cầu điện áp Vcco hoặc Vref, các điện áp này chúng đ−ợc nối tới các chân của thiết bị khi thiết kế, các chân này chúng tạo thành từng nhóm của các khối vào ra và chúng đ−ợc gọi là Bank. - Chính vì vậy, sự hạn chế về các chuẩn vào của một thiết bị sẽ do các Bank quyết định. Tám Bank vào ra đ−ợc tách theo mỗi cạnh của FPGA và đ−ợc chia thành hai Bank chính (hình 1.11). Mỗi Bank có nhiều chân điên áp Vcco và tất cả chúng đều đ−ợc nối tới cùng một đ−ờng điện áp. Điện áp này đ−ợc xác định bởi các chuẩn đầu ra ng−ời dùng.
  35. 35 Hình 1.11. Các Bank chuẩn vào ra I/O của Spartan -IIE - Một số chuẩn đầu vào mong muốn một điện áp ng−ỡng nào đó mà nó đ−ợc cung cấp bởi ng−ời dùng chẳng hạn nh− Vref. Tr−ờng hợp này, các chân I/O ng−ời dùng đ−ợc xắp đặt tự động nh− các đầu vào cho điện áp lấy mẫu Vref. Khoảng một trong 6 các chân vào ra của các Bank đóng vai trò này. - Các chân Vref trong một bank đ−ợc nối bên trong và vì vậy chỉ một điện áp Vref có thể đ−ợc sử dụng trong mỗi bank .Tất cả các chân Vref trong các bank cần phải đ−ợc nối với nguồn điện áp bên ngoài để chúng hoạt động đúng. Để có sự trao đổi nhanh giữa các tín hiệu, các chân tín hiệu đầu vào cần phải đ−ợc cung cấp tr−ớc khi nguồn cấp vào chân Vccint và chân Vcco và phải đảm bảo không có đ−ờng dẫn dòng ng−ợc từ các chân I/O quay về điện áp nguồn cung cấp Vccint và Vcco (Có nghĩa là đảm bảo cho thiết bị có thể hoạt động ở một điện áp và giao tiếp ở một điện áp, hai điện áp này có thể khác nhau ). Configurable Logic Blok và Logic Cell:
  36. 36 - Các đơn vị cơ bản của CLB (Khối logíc cho phép định cấu hình) thuộc họ thiết bị Spartan-IIE chính là các Logic Cell ( LC - Xem hình 1.5 và hình 1.6 mục 1.1 ch−ơng I ). Mỗi một Logic Cell bao gồm một bộ tạo chức năng (Hay bộ tạo hàm) gồm 4 đầu vào, phần tử logic nhớ và phần tử l−u trữ (Flip-Flop loại D). - Đầu ra của bộ tạo chức năng của mỗi Logic Cell điều khiển cả đầu ra CLB hoặc đầu vào D của Flip-Flop. - Mỗi một CLB có chứa bốn Logic Cell và đ−ợc tổ chức thành hai Slice t−ơng tự nhau, một slice đơn có dạng nh− (hình 1.12). - Thêm vào bốn bộ LC cơ bản, các CLB của Spartan-IIE có chứa phần tử logic mà nó kết hợp với các bộ tạo chức năng để đ−a ra các chức năng 5 hoặc 6 đầu vào . Look-Up tables (LUT): - Các bộ tạo chức năng của Spartan -IIE thực hiện nh− LUT có bốn đầu vào. Để hoạt động nh− một bộ tạo chức năng, mỗi một LUT có thể cung cấp một RAM 16x1bit đồng bộ. - Hơn nữa hai LUT trong một Slice có thể đ−ợc kết hợp để tạo một RAM 16x2 bit hoặc 32x1 bit đồng bộ . Storage Element:
  37. 37 Hình 1.12 .Cấu trúc Logic Cell hay một Slice đơn trong Spartan -IIE - Các phần tử l−u trữ trong slice của Spartan-IIE có thể đ−ợc xem nh− một Flip-Flop loại D kích hoạt bằng s−ờn, hoặc nh− một bộ chốt nhạy mức. Các đầu vào D có thể đ−ợc điều khiển hoặc bởi bộ tạo chức năng trong slice hoặc trực tiếp từ đầu vào các slice (bỏ qua bộ tạo chức năng). Thêm vào các đ−ờng Clock (CLK) và Clock Enable (CE) (hình 1.12), mỗi Slice có các tín hiệu set và reset đồng bộ (SR và BY). Đ−ờng SR ép các phần tử l−u trữ về trạng thái khởi tạo, đặc biệt trong tr−ờng hợp nhồi cấu hình. Đ−ờng BY ép phần tử
  38. 38 l−u trữ về trạng thái ng−ợc lại. Có thể lựa chọn hai đ−ờng này để chúng hoạt động không đồng bộ. Tất cả các tín hiệu điều khiển có thể đảo ng−ợc một cách hoàn toàn độc lập và chúng đ−ợc chia sẻ bởi hai Flip-Flop trong một Slice. Arithmetic Logic: Bộ dồn kênh F5IN ở trong mỗi Slice đ−ợc kết hợp với các đầu ra bộ tạo chức năng đ−ợc chỉ ra ở hình 1.13. Hình 1.13. Bộ dồn kênh F5 và F6 Sự kết hợp này sẽ đ−a ra hoặc một bộ tạo hàm mà nó có thể thực thi bất kỳ 5 đầu vào chức năng nào, hoặc một bộ dồn kênh 4:1 hoặc các chức năng đ−ợc chọn lựa của chín đầu vào. T−ơng tự, bộ dồn kênh F6 kết hợp các đầu ra của bốn bộ tạo chức năng trong CLB bằng việc chọn một trong hai đầu ra của bộ dồn kênh F5. Điều này cho phép thực thi bất kỳ một hàm 6 đầu vào nào, một bộ dồn kênh 8:1, hoặc chức năng đ−ợc chọn lựa lên đến 19 đầu vào. Block RAM: Họ Spartan-IIE FPGA hợp nhất một vài bộ nhớ
  39. 39 RAM theo khối thành khối lớn hơn (gọi là SelectRAM +), có nghĩa là cần phải bổ xung thêm các LUT RAM đã đ−ợc dùng. Kiến trúc bộ nhớ không bền vững này đ−ợc thực hiện trong các CLB. Các khối bộ nhớ RAM Block chúng đ−ợc tổ chức theo các cột . Hầu hết họ Spartan -IIE có chứa hai cột nh− nhau, mỗi một cột đ−ợc bố trí dọc theo chiều đứng . Họ XC2S400E có bốn cột RAM khối, mỗi cột này đ−ợc kéo dài hết chiều cao của chip. Mỗi một khối nhớ chính gồm bốn CLB cao và vì vậy mỗi Spartan-IIE có 8 CLB cao sẽ chứa hai khối nhớ trên mỗi cột và tổng cộng có bốn khối . Delay - locked loop (DLL): Đ−ợc kết hợp với mỗi bộ đệm đầu vào clock toàn cục và là một vòng khoá độ giữ chậm số DLL mà nó loại trừ đ−ợc sự lệch giữa bộ đệm đầu vào clock và các chân đầu vào clock bên trong thiết bị. Bộ DLL giám sát toàn bộ clock đầu vào và clock đ−ợc phân phối, tự động điều chỉnh phần tử giữ chậm clock. Hơn nữa độ giữ chậm đ−ợc hiểu là s−ờn của clock đ−a tới Flip-Flop bên trong, với độ chính xác trong một chu kỳ đồng hồ sau khi chúng đ−ợc đ−a đến đầu vào. Chu trình kín này loại trừ ảnh h−ởng độ giữ chậm do phân phối clock bằng việc đảm bảo các s−ờn của clock đ−a đến các flip-flop bên trong đồng bộ với các s−ờn clock đến tại các chân vào. Để loại trừ sự giữ chậm do phân chia clock, DLL đ−a ra tín hiệu điều khiển hiệu chỉnh các khoảng clock khác nhau. DLL cung cấp các pha vuông 900 của clock nguồn mà có thể nhân đôi, hoặc chia bởi các hệ số 1.5 , 2, 2.5 , 3, 4 , 5 , 8 hoặc 16 ( Xem hình d−ới ).
  40. 40 Hình 1.14. Vòng giữ chậm DLL Hình 1.15. Các đặc tính đầu ra của DLL 1.3.2. Cấu trúc của CoolRunner -XPLA3 CPLD Cấu trúc của XPLA3 mang nét đặc tr−ng của một thanh ghi ở đầu vào, nhiều thành phần clock, lập trình qua JTAG, các đ−ờng vào ra dao động 5V và bao gồm một cấu trúc PLA (Programmable Logic Array) đầy đủ. Với sự phân phối logic linh hoạt cùng với các đặc
  41. 41 tính mở rộng này đã đ−a ra tốc độ cao gấp đôi, kết quả là nó tạo ra khả năng thay đổi thiết kế mà không cần thay đổi các chân đầu ra. Cấu trúc của nó bao gồm một tập hợp 48 tích số nhân mà có thể phân phối tới bất kỳ Macrocell nào trong khối logic. Sự kết hợp này cho phép các phép tính logic đ−ợc phân phối hiệu quả trên toàn khối logic và hỗ trợ nhiều tích số nhân cần thiết trên mỗi Macrocell. Cấu trúc tổng quát của một CPLD đ−ợc đ−a ra hình 1.16,1.17. Hình 1.16. Cấu trúc tổng quát mức cao của XPLA3 - CPLD Hình 1.17 Cấu trúc khối của CoolRunner XPLA3 CPLD
  42. 42 Hình 1.18. Cấu trúc chức năng của CoolRunner XPLA3 Hình 1.16 chỉ ra sơ đồ khối ở mức cao của một thiết bị 128 macrocell thực hiện cấu trúc XPLA3. Cấu trúc XPLA3 bao gồm các khối chức năng (Function Block) hay khối logic đ−ợc nối liền với nhau thông qua ma trận nối nguồn không (ZIA). Thực chất ZIA là một chuyển mạch điểm đ−ợc định tuyến. Mỗi khối chức năng có 36 đầu vào từ khối ZIA và 16 Macrocell (MC). Với họ XPLA3 duy nhất chỉ là sự phân chia logic nằm bên trong mỗi khối chức năng và kỹ thuật thiết kế đ−ợc sử dụng để thực hiện các khối chức năng này. Theo hình 1.18 ta thấy mỗi khối chức năng có chứa một ma trận PLA, mà nó tạo ra các đ−ờng điều khiển, đ−ờng clock và các logic cell dùng cho việc sử dụng các clock không đồng bộ, reset, preset và Output Enable (Cho phép đầu ra). Một PLA rất khác một PAL (Programmable Array Logic), vì vậy mà PLA có một ma trận
  43. 43 các cổng AND cho phép lập trình hoàn toàn thông qua lập trình các cổng OR . Một ma trận PAL bị cố định bởi ma trận các cổng OR ( xem hình 1.1 và 1.2 Mục 1.1), ma trận PLA nhận các đầu vào của nó trực tiếp từ ZIA. Có 36 cặp đầu vào và các đầu vào bổ xung từ ZIA, các đầu vào này đ−ợc cung cấp tới 48 tích số nhân trong ma trận. Bốn tám đ−ờng tích số nhân này, thì trong đó có 8 đ−ờng điều khiển cục bộ (LCT [0:7]) đ−ợc phép sử dụng nh− các tín hiệu điều khiển tới mỗi Macrocell (MC) dùng khi sử dụng các clock không đồng bộ, reset, preset và cho phép đầu ra (OE) Output Enable. Nếu không dùng 8 đ−ờng điều khiển này thì chúng đ−ợc nhập với 40 tích số nhân còn lại để tạo nguồn logic. Trong mỗi khối chức năng có 8 đ−ờng phản hồi NAND đ−ợc dùng để tổng hợp và tăng mật độ logic, hỗ trợ các hàm logic lớn hơn. Đặc tính này có thể đ−ợc phép hoặc không có thể do phần mềm ng−ời sử dụng qui định. Cùng với các tích số nhân, đ−ờng điều khiển và các đ−ờng phản hồi không đ−ợc sử dụng đến, các đ−ờng này chúng lại có thể gộp lại và đ−ợc dùng nh− một nguồn tài nguyên logic. Nếu có lớn hơn một phép tính logic nhân, hệ số đơn tại mỗi MC thì 47 tích số nhân nữa sẽ đ−ợc gộp lại tr−ớc để tạo ra VFM ( Variable Function Multiplexer - Bộ chọn kênh chức năng biến đổi ). Bộ VFM tăng sự tối −u hoá logic bằng việc thực hiện một vài chức năng logic đầu vào tr−ớc khi đi vào Macrocell xem hình 1.19.
  44. 44 Hình 1.19 Cấu trúc của một MacroCell Hình 1.20. Bộ dồn kênh chức năng VFM Cấu trúc MacroCell: Hình 1.20 chỉ ra cấu trúc của MacroCell (MC) đ−ợc sử dụng trong CoolRunner XPLA3, bất cứ một MC nào đều có thể reset hoặc
  45. 45 preset khi bật nguồn. Mỗi thanh ghi của MC có thể đ−ợc xem nh− một flip-flop kiểu D, T hoặc kiểu chốt hoặc bỏ qua nếu MC đ−ợc coi là một hàm logic tổ hợp. Mỗi flip - flop này có thể nhận đ−ờng Clk từ bất kỳ một trong 8 nguồn clock hoặc phần bổ xung của chúng (hình 1.20). Có hai đ−ờng Clk đồng bộ toàn cục mà chúng đ−ợc lấy từ 4 chân clk bên ngoài. Tại đây có một đ−ờng CLK chung và các tín hiệu đầu vào CT [4:7] (Local Control Terms). Có hai đ−ờng phản hồi tới khối ZIA thông qua bộ Mux, một bộ Mux sẽ chọn hoặc đầu ra của VFM hoặc từ đầu ra của thanh ghi, một bộ Mux còn lại sẽ chọn hoặc là từ đầu ra của thanh ghi hoặc từ đ−ờng dẫn I/O của MC. Khi các chân I/O đ−ợc sử dụng nh− một đầu ra, bộ đệm đầu ra đ−ợc phép chọn và đ−ờng phản hồi MC có thể đ−ợc sử dụng làm đ−ờng bổ xung logic trong MC. Khi chân I/O đ−ợc sử dụng làm đầu vào thì các chân đầu ra sẽ là ba trạng thái và tín hiệu đầu vào sẽ đ−ợc đ−a đến ZIA thông qua đ−ờng phản hồi I/O. Các phép Logic bù mà đ−ợc thực hiện trong MC có thể đ−a đến ZIA thông qua đ−ờng phản hồi của MC. Nếu một chân của MC đ−ợc đặt nh− một đầu vào, thì tại đó có một đ−ờng dẫn trực tiếp tới thanh ghi để tạo thời gian thiết lập đầu vào nhanh. Nếu MC đ−ợc xắp đặt là một bộ chốt thì đầu vào clock của thanh ghi sẽ tạo chức năng cho phép chốt và chốt chắc chắn nhất khi tín hiệu này là cao. Đ−ờng Clock đ−ợc nối cứng sẽ không đ−ợc sử dụng khi mà MC đ−ợc thực hiện nh− một bộ chốt . I/O Cell :
  46. 46 Hình 1.21. Cấu trúc I/O Cell Đ−ờng OE của bộ chọn kênh có tám khả năng xảy ra ( Xem bảng giải mã đ−ợc chỉ ra trong hình trên ). Khi các I/O cell đ−ợc đặt nh− một đầu vào (hoặc đầu ra ba trạng thái), đ−ờng OE này kéo đầu vào lên cao (thông qua một bộ treo ở mức yếu) nếu đầu vào bị thả nổi và v−ợt ng−ỡng. Điều này nhằm tạo ra sự bảo vệ đầu vào v−ợt khỏi vùng mà vùng này chính là nguyên nhân gây ra việc tiêu thụ nguồn lớn. Chức năng nh− của bộ treo ở mức yếu có thể thực hiện bằng phần mềm, chẳng hạn nh− nó sẽ luôn luôn đ−ợc bật khi I/O cell đ−ợc xem nh− một đầu vào. Điều này sẽ làm bộ treo tự động bật khi một chân không đ−ợc sử dụng trong thiết kế. Các I/O cell là 5v (hoặc 3.3 V) khi mà thiết bị đ−ợc cấp nguồn . Mỗi đầu ra có một bộ điều khiển tốc độ độc lập ( Nhanh hoặc chậm - cho phép đặt trong phần mềm), điều này sẽ giúp làm giảm sự phát ra nhiễu điện từ tr−ờng. L−u ý rằng một I/O của MC khi đã sử dụng một phép logíc đ−ợc thực hiện bên trong nó thì nó không có chân I/O đ−ợc sử dụng
  47. 47 cho đầu vào mà nó coi chân đó không đ−ợc sử dụng và các điện trở treo sẽ đ−ợc nối. Có thể nói rằng, tất cả các chân của XPLA3 không đ−ợc sử dụng thì không đ−ợc nối. Các chân đầu vào mà đ−ợc sử dụng cho một mục đích riêng nào đó (CLKx/INx) thì không có điện trở treo, vì vậy các chân đầu vào này cần có đầu cuối ở phía ngoài . Nh− tất cả họ CMOS không cho phép các chân đầu vào thả nổi . Timing Model : " Khuôn mẫu xác định thời gian ", cấu trúc này cho phép khuôn mẫu thời gian tiền định trong thiết kế và thiết kế lại . Hình 1.22. Các khuôn mẫu thời gian trong CoolRunner XPLA3 Có ba khuôn mẫu thời gian chính là TPD, TSU, TCO. Trong các cấu trúc khác ta có thể đ−a thiết kế vào trong CPLD nh−ng không đảm bảo đ−ợc yêu cầu về thời gian của hệ thống có đạt đ−ợc hay không và có thoả mãn hay không cho đến khi thiết kế đó đ−ợc dịch và nạp vào trong thiết bị . Chính vì vậy khuôn mẫu xác định thời gian của các cấu trúc khác rất phức tạp và rất nhiều thứ cần quan tâm, chẳng hạn nh− sự phụ thuộc của thời gian vào số bộ mở rộng song song
  48. 48 m−ợn, số bộ mở rộng chia sẻ, sự thay đổi số kênh định tuyến X , Y Trong XPLA3 có thể biết tr−ớc thiết kế có phù hợp với yêu cầu thời gian của hệ thống hay không vì nó có khuôn mẫu xắp xếp thời gian chuẩn. 1.4. Quy trình thiết kế cơ bản * Các b−ớc thiết kế: Với tính năng của các sản phẩm đ−a ra cuả Xilinx, phần mềm ISE (Integrated software Environment) đã làm cho việc thiết kế dễ dàng hơn với logic lập trình đ−ợc. Các thiết kế có thể đ−ợc mô tả một cách dễ dàng và nhanh chóng bằng việc sử dụng ngôn ngữ mô tả ALBEL, VHDL, VerilogTM, hoặc với một đóng gói từ các sơ đồ nguyên lý. Việc lấy thiết kế từ sơ đồ nguyên lý chính là ph−ơng pháp truyền thống mà những ng−ời thiết kế sử dụng để ấn định mảng các cổng và các thiết bị logic lập trình đ−ợc. Nó là công cụ đồ hoạ và cho phép ấn định chính xác các cổng đ−ợc yêu cầu và cách nối chúng nh− thế nào. D−ới đây là bốn b−ớc cơ bản của một thiết kế sử dụng từ sơ đồ nguyên lý : 1. Sau khi lựa chọn công cụ để tạo sơ đồ nguyên lý và th− viện các thiết bị, bắt đầu xây dựng mạch bằng việc tải các cổng mong muốn từ th− viện đã đ−ợc chọn. Có thể sử dụng bất kỳ một tổ hợp cổng cần thiết nào. Lúc này cần phải chọn một th− viện họ các thiết bị phân phối rõ ràng, nh−ng có thể không cần phải biết thiết bị nào trong họ đó. Về cơ bản, chỉ sử dụng với sự quan tâm về đóng gói và
  49. 49 tốc độ của chúng là đủ. 2. Nối các cổng lại với nhau bằng việc sử dụng các mạng và dây nối. Hoàn tất việc điều khiển nối các cổng theo bất cứ cấu hình nào mà cần cho ứng dụng . 3. Đ−a thêm và đặt tên cho các bộ đệm đầu vào và đầu ra , các nhãn này sẽ chỉ rõ các chân trong đóng gói vào ra của thiết bị . 4. Tạo danh sách các mạng các đ−ờng nối của mạch. Hình 1.23 d−ới đây mô tả luồng thiết kế với các PLDs . Hình 1.23. Các b−ớc thiết kế một PLD theo sơ đồ nguyên lý Một danh sách mạng kết nối ( Netlist ) là một file dạng text mô tả kết nối của một mạch. Nó đ−ợc tạo ra bởi các công cụ thiết kế, chẳng hạn nh− ch−ơng trình lấy sơ đồ nguyên lý ECS. Netslist là một file cô đọng, ngắn gọn để các ch−ơng trình khác có thể hiểu đ−ợc cổng nào đ−ợc nối trong mạch và chúng đ−ợc nối với nhau nh− thế nào, các tên của chân vào ra là gì. Trong một ví dụ d−ới đây,
  50. 50 Netlist phản ánh một cú pháp thực tế của một mạch theo dạng sơ đồ. Đó là một đ−ờng nối cho mỗi linh kiện và một đ−ờng cho một trong các mạng dây nối. L−u ý rằng ch−ơng trình máy tính sẽ gán các tên cho mỗi linh kiện ( G1 đến G4 ) và các đ−ờng nối N1 đến N8, hình 1.24 . Khi thực thi thiết kế này, nó sẽ đóng gói các chân đầu vào là A, B, C, D và các chân đầu ra là Q, R, S. EDIF ( Electronic Data Interchange Format-Định dạng trao đổi dữ liệu điện tử ) theo chuẩn công nghiệp cho việc ấn định các thiết kế logic ở dạng text và một dạng khác nữa là XNF ( Xilinx Netlist Format - Định dạng Netlist của Xilinx). Giả sử bạn có trong tay một Netlist, nh− vậy bạn đã có tất cả những gì bạn cần để xác định cái mà mạch của bạn định thiết kế. Hình 1.24. Netlist của một thiết kế Ví dụ trên đây là một ví dụ đơn giản và rõ ràng. Nh− chúng ta đã thấy, thử mô tả một thiết kế thực tế với 10.000 cổng. Một trang sơ đồ nguyên lý có chứa khoảng 200 cổng, vì vậy nó sẽ cần 50 trang
  51. 51 sơ đồ để tạo ra một thiết kế 10.000 cổng. Mỗi một trang cần thực hiện theo tất cả các b−ớc kể trên. Điều này sẽ tiêu tốn rất nhiều thời gian, đặc biệt nếu muốn tạo một thiết kế có 20.000 hoặc 50.000 và có thể các thiết kế lớn hơn nữa. Bạn thử hình dung sẽ tiêu tốn bao nhiêu thời gian nếu bạn tạo một th− viện phân phối linh kiện và nếu cần sửa đổi chúng. Có một cách tốt hơn để thực hiện điều này và nó đ−ợc gọi là thiết kế ở mức cao (HLD-High Level Design), hoạt động (Behavioral) của thiết kế, hoặc là ngôn ngữ mô tả phần cứng (HDL).ý t−ởng dùng ngôn ngữ bậc cao để mô tả mạch ở dạng file văn bản này hay hơn việc mô tả các cổng ở dạng đồ hoạ rất nhiều. Thuật ngữ hoạt động (Behavioral) ở đây đ−ợc dùng bởi vì ở trong ngôn ngữ bậc cao chúng ta có thể mô tả hàm hoặc phản ứng của mạch bằng lời hơn là đ−a ra hình vẽ của các cổng t−ơng ứng mà nó cần đ−ợc tạo trong ứng dụng. Có hai ngôn ngữ chính trong ngôn ngữ HDL đó là : VHDL và Verilog. Xét một ví dụ khác, hãy thiết kế một bộ nhân 16x16 với mô tả bằng file HDL và ch−ơng trình tạo từ sơ đồ nguyên lý ECS. Với một bộ nhân, thông th−ờng là một sự xắp đặt rất phức tạp của các bộ cộng, các thanh ghi và một số các cổng. Ví dụ của chúng ta cần hai đầu vào 16 bit ( Đầu vào A và B ) và một đầu ra bộ nhân 32 bit ( Y= AxB ) nh− vậy tổng cộng có 64 đ−ờng vào ra và t−ơng đ−ơng với khoảng gần 6000 cổng.Trong việc thực hiện bằng sơ đồ nguyên lý, số cổng yêu cầu cần phải đ−ợc tải vào, đặt trong trang thiết kế mạch và cần phải đ−ợc nối với nhau, cộng thêm các bộ đệm vào ra. Công việc này chiếm mất khoảng ba ngày. Khi
  52. 52 thực hiện bằng HDL, mất khoảng 8 dòng text và có thể hoàn thành trong ba phút. File Netlist đ−ợc tạo ra và nó có chứa tất cả các thông tin cần thiết của một bộ nhân 16x16. Hình 1.25. Các thông số của một thiết kế bộ nhân * Kiểm tra thiết kế : Các thiết kế logic lập trình, đ−ợc kiểm tra bằng việc sử dụng một bộ mô phỏng mà thực chất nó là một ch−ơng trình phần mềm, ch−ơng trình này xác nhận tất cả các chức năng hoặc thời gian hoạt động cuả một mạch. Các định dạng công nghiệp tiêu chuẩn đ−ợc sử dụng để đảm bảo một điều rằng các thiết kế có thể đ−ợc tái sử dụng. Nếu nh− có sự thay đổi th− viện của nhà phân phối thì thiết kế đó chỉ cần biên dịch lại quá trình tổng hợp nếu là cần thiết. Lõi IP (Lõi sở hữu trí tuệ ) th−ờng cho phép ở khuôn dạng HDL, chúng rất dễ thay đổi và sử dụng với nhà phân phối thiết bị khác nhau. Sau khi hoàn tất các chi tiết của một thiết kế, điều cần phải biết là liệu mạch thực tế có hoạt động đúng nh− mục đích của thiết kế không. Chính câu hỏi này đã trả lời cho mục đích của việc
  53. 53 kiểm tra thiết kế. Bộ mô phỏng sẽ mô phỏng thiết kế, vì vậy cần phải cung cấp đầy đủ thông tin của thiết kế (Thông qua file Netlist sau khi sử dụng ch−ơng trình ECS hoặc thông qua quá trình tổng hợp bằng phần mềm ) và các mẫu đầu vào cụ thể, hoặc thông qua các véc tơ kiểm tra. Bộ mô phỏng sẽ lấy thông tin từ đó để xác định các đầu ra của mạch. Xem hình sau: Hình 1.26. Quá trình thiết kế một PLD Mô tả tóm tắt:
  54. 54 - Mô phỏng chức năng : Tại giai đoạn này, sự phỏng chức năng chỉ kiểm tra những tổ hợp đúng của không và một mà mạch nguyên lý đ−a ra. Ng−ời thiết kế sẽ đ−a ra chỉ dẫn sự mô phỏng về thời gian ngay sau đó theo các b−ớc trong luồng thiết kế này. Nếu nh− có chức năng nào không đúng, cần phải quay lại sơ đồ nguyên lý hoặc file HDL (Xem hình 1.26) và sửa đổi lại, tạo lại file Netlist và sau đó cho chạy lại bộ mô phỏng. Những ng−ời thiết kế th−ờng mất khoảng 50% thời gian vào việc sửa đổi để đi qua b−ớc này cho đến khi thiết kế đạt theo yêu cầu mong muốn . Việc sử dụng file HDL có rất nhiều thuận lợi khi kiểm tra thiết kế : Ng−ời thiết kế có thể mô phỏng trực tiếp từ file nguồn HDL, điều này cho phép bỏ qua thời gian tiêu tốn trong quá trình tổng hợp mà thời gian này th−ờng đ−ợc yêu cầu mỗi khi thay đổi thiết kế. Một thiết kế khi đã làm việc đúng, chạy công cụ tổng hợp để tạo ra file Netlist cho các b−ớc tiếp theo trong quá trình thiết kế . - Thực thi trên thiết bị : Một file Netlist cuả thiết kế mô tả hoàn toàn đầy đủ một thiết kế mà thiết kế này sử dụng th− viện các cổng của nhà phân phối của một họ thiết bị nào đó và ít nhất nó cũng đã đi qua b−ớc kiểm tra. Đã đến lúc đ−a file này vào trong một chip và điều này đ−ợc xem nh− sự thực hiện trên thiết bị. Biên dịch bao sẽ gồm nhiều ch−ơng trình sẽ đ−ợc sủ dụng, các ch−ơng trình này nhập file Netlist của thiết kế đã đ−ợc dịch và dùng nó để bố trí, xắp xếp các cổng logic. Các ch−ơng trình này sẽ khác nhau với các nhà phân phối th− viện khác nhau. Các ch−ơng trình tham gia vào quá trình biên dịch bao gồm:
  55. 55 Ch−ơng trình tối −u hoá, dịch các phần tử của thiết bị vật lý, kiểm tra các qui luật thiết kế với thiết bị cụ thể nào (xem nó có v−ợt qua số bộ đệm Clock cho phép ở trong thiết bị này không ? ). Trong suốt giai đoạn thiết kế, ng−ời thiết kế sẽ đ−ợc hỏi để chọn thiết bị đích, đóng gói, cấp độ và các chọn lựa khác đối với thiết bị đ−ợc ấn định . Thông th−ờng quá trình biên dịch kết thúc với một báo cáo kết quả bao hàm toàn bộ các ch−ơng trình đã đ−ợc thực hiện. Thêm vào các cảnh báo lỗi, ở dạng bản kê của thiết bị và việc sử sụng các đ−ờng vào ra. Chính điều này giúp ng−ời thiết kế lựa chọn đ−ợc thiết bị đích tốt nhất. - Lắp đặt trên thiết bị: Đối với họ CPLD thì b−ớc này đ−ợc gọi là lắp đặt, có nghĩa là đ−a thiết kế vào trong thiết bị đích (Điều chỉnh cho phù hợp với nguồn tài nguyên của thiết bị đích). Trong hình vẽ 1.26 ở trên, có một phần của thiết kế đ−ợc gọi là lắp đặt vào trong CPLD. Các CPLD có cấu trúc cố định , vì thế nên phần mềm cần lấy các cổng và các đ−ờng nối phù hợp với mạch thiết kế. Công việc này th−ờng đ−ợc phần mềm xử lý rất nhanh bằng phần mềm. Một vấn đề khác nữa có khả năng xảy ra là việc gán vị trí của các chân vào ra (Th−ờng đ−ợc gọi là sự khoá chân I/O) có thể đã bị thực hiện tr−ớc. Th−ờng thì điều này hay xảy ra khi dùng lại một thiết kế mà thiết kế này đ−ợc thừa h−ởng, hoặc thiết kế này đã đ−ợc nạp vào board mạch in của thiết kế nào đó. Các cấu trúc mà nó cung cấp việc khoá các chân vào ra (chẳng hạn nh− XC 9500, CoolRunner CPLDs ) có sự thuận tiện rất lớn . Chúng cho phép giữ lại các chân vào ra gốc, bất kể thiết kế thay đổi
  56. 56 hay có sự tận dụng nào đó, hoặc có sự thực hiện theo yêu cầu nào đó. Sự khoá chân rất quan trọng khi sử dụng ISP (In system Programmable Device - Cho phép lập trình trong hệ thống), nếu mạch in đã vẽ và nối với các chân vào ra, sau đó thiết kế bị thay đổi và nạp lại ch−ơng trình, bạn hãy yên tâm là các chân này vẫn đ−ợc giữ nguyên . - Sắp đặt và định tuyến : Với họ FPGA, ch−ơng trình xắp đặt và định tuyến đ−ợc chạy sau khi biên dịch. Xắp đặt chính là quá trình chọn lựa các module cụ thể hoặc các khối logic ở trong FPGA nơi mà các cổng của thiết kế sẽ nằm trong đó. Định tuyến nó mang đúng ý nghĩa của nó, chính là việc nối vật lý các đ−ờng nối giữa các khối logic. Hầu hết các nhà phân phối cung cấp công cụ tự động sắp đặt và định tuyến, vì thế bạn không phải lo lắng về các chi tiết khó hiểu phức tạp của cấu trúc thiết bị. Một số nhà phân phối đ−a ra công cụ cho phép bạn sắp đặt và định tuyến bằng tay những phần then chốt nhất của thiết kế, để có thể thu đ−ợc sự thực hiện tốt hơn công cụ tự động. Bộ tạo sơ đồ mặt bằng bố trí các phần tử logic là một kiểu của công cụ sử dụng bằng tay. Ch−ơng trình sắp đặt và định tuyến cần nhiều thời gian nhất để hoàn thiện thành công một thiết kế, bởi vì nó là công việc rất phức tạp để xác định nơi đặt những thiết kế lớn và đảm bảo rằng chúng đ−ợc nối với nhau chính xác và đáp ứng đ−ợc sự thực hiện nh− mong muốn.
  57. 57 Tuy nhiên các ch−ơng trình này chỉ có thể làm việc tốt nếu cấu trúc của thiết bị đích có sự định tuyến phù hợp với thiết kế. Bạn không thể sửa mã ch−ơng trình để bù một cấu trúc đ−ợc hình thành sai lệch, đặc biệt nếu cấu trúc của thiết bị không đủ để định tuyến các đ−ờng nối. Nếu nh− gặp phải vấn đề này, thì giải pháp chung nhất là chọn một thiết bị đích lớn hơn. Một bộ phân tích thời gian tĩnh thông th−ờng là một phần của phần mềm thực thi của nhà phân phối. Nó cung cấp thông tin về thời gian của các đ−ờng dẫn trong thiết kế, thông tin này rất chính xác và có thể hiển thị theo nhiều cách khác nhau. Chẳng hạn nh− hiển thị tất cả các đ−ờng nối và xếp loại chúng từ độ giữ chậm dài nhất đến độ giữ chậm ngắn nhất. Hơn nữa khi này bạn có thể sử dụng thông tin xắp đặt đã đ−ợc chi tiết hoá sau khi định dạng và quay trở về bộ mô phỏng đã đ−ợc chọn với các thông tin chi tiết về thời gian. Qúa trình này đ−ợc gọi là chú thích ng−ợc (hay thông tin phản hồi), nó có sự thuận lợi trong việc cung cấp chính xác thời gian của sự thực hiện các số không và các số một trong thiết kế cuả bạn. Trong cả hai tr−ờng hợp, thời gian phản ánh sự giữ chậm của các khối logic cũng nh− các đ−ờng nối. B−ớc thực hiện cuối cuối cùng là tải hay nạp cấu hình xuống thiết bị. - Tải hay nạp ch−ơng trình: Tải ch−ơng trình nhìn chung đ−ợc xem nh− là tải thông tin xuống thiết bị dễ biến đổi nh− SRAM FPGA . Đúng với tên gọi của
  58. 58 nó, bạn tải thông tin cấu hình thiết bị vào trong bộ nhớ của thiết bị. Luồng các bit mà nó đ−ợc truyền đi có chứa tất cả các thông tin định nghĩa logic và các đ−ờng nối cuả thiết kế, thông tin này sẽ là khác nhau đối với thiết kế khác nhau. Xem hình 1.27. Hình 1.27. Giải thích phân biệt nạp ch−ơng trình và tải cấu hình Do vì các thiết bị SRAM mất đi cấu hình khi mất nguồn, vì thế luồng các bit cần phải cất ở đâu đó để giải quyết vấn đề này. Một nơi th−ờng đ−ợc dùng để cất thông tin cấu hình thiết bị, đó là PROM nối tiếp. Đây là thành phần kết hợp với phần cứng mà nó nối từ máy tính tới bo mạch mà bo mạch này có chứa thiết bị đích. Nạp ch−ơng trình đ−ợc dùng cho để lập ch−ơng trình cho tất cả các thiết bị logic có thể lập trình đ−ợc không bị thay đổi, chẳng hạn nh− PROM nối tiếp. Việc nạp ch−ơng trình thực hiện chức năng giống nh− tải ch−ơng trình, riêng các thông tin về cấu hình vẫn còn sau khi mất điện. Với các thiết bị mà có kiểu kết nối ng−ợc với một cầu trì (kết
  59. 59 nối một lần), thì việc nạp ch−ơng trình chỉ có thể thực hiện đ−ợc một lần trên thiết bị hay có thể gọi theo thuật ngữ khác : "Cho phép lập trình một lần ". Việc nạp ch−ơng trình đối với các CPLD của Xilinx có thể thực hiện trên hệ thống thông qua cáp JTAG hoặc cùng với bộ nạp ch−ơng trình truyền thống. Quét biên JTAG đ−ợc hiểu thông th−ờng nh− một chuẩn IEEE/ANSI 1149.1-1190, nó là một dãy các qui luật thiết kế mà các qui luật này dễ kiểm tra, dễ nạp ch−ơng trình cho thiết bị và gỡ rối trên chip, trên bo mạch ở mức hệ thống. Nạp ch−ơng trình trên hệ thống có rất nhiều thuận lợi, vì vậy thiết bị có thể đ−ợc hàn trực tiếp trên bo mạch in, và nếu có thay đổi thiết kế thì thiết bị không cần phải tháo khỏi mạch mà vẫn lập trình lại trên hệ thống một cách đơn giản . Ch−ơng II Giải pháp vμ tổ chức phần mềm đảm bảo 2.1. Giới thiệu sơ l−ợc Thiết kế logic lập trình đ−ợc đã đ−a ra kỷ nguyên mà trong đó mật độ của thiết bị ở đơn vị hàng triệu cổng, sự thực hiện của hệ thống ở tốc độ hàng trăm MHz. Xilinx đã đ−a ra các công cụ thiết kế điện tử hoàn toàn đầy đủ mà nó cho phép thực hiện các thiết kế trong họ PLD của Xilinx. Các giải pháp phát triển kết hợp với các kỹ thuật mạnh tạo ra một sự linh hoạt, mềm dẻo, giao tiếp đồ hoạ dễ sử dụng giúp bạn có đ−ợc
  60. 60 các thiết kế tốt nhất có thể trong một dự án lớn - mà không cần quan tâm đến kinh nghiệm của bạn. Công cụ phần mềm thiết kế ISE (Integrated Sofware Enviroment- Môi tr−ờng phần mềm tích hợp) là công cụ thiết kế tổng thể, bao hàm các công cụ phần mềm thiết kế chuyên dụng khác nhau và đây cũng là công cụ đ−ợc sử dụng nhiều nhất trong thiết kế các PLD (Programmable Logic Device) của Xilinx. 2.2. Các công cụ thiết kế Phần mềm ISE cải thiện đáng kể thời gian đ−a một sản phẩm ra thị tr−ờng bởi việc tăng tốc quá trình nhập thiết kế. Các b−ớc thực hiện một thiết kế đ−ợc cung cấp trong phần mềm ISE, ngoài ra chúng còn đ−ợc hỗ trợ thêm bởi các phần mềm bổ sung khác. Để tiện cho việc nắm bắt và phân loại các loại phần mềm chúng ta sẽ đi mô tả phần này theo thứ tự thực hiện của một thiết kế . 2.2.1 Nhập thiết kế Các công cụ hỗ trợ các ph−ơng pháp phổ biến nhất ngày nay để việc tạo ra một thiết kế bao gồm : Nhập thiết kế bằng sơ đồ, bằng ngôn ngữ HDL, bằng việc tích hợp các lõi IP, hỗ trợ mạnh mẽ việc tái sử dụng các lõi IP. Sự đa dạng của việc nhập một thiết kế đã đ−a ra một môi tr−ờng thiết kế dễ sử dụng nhất và cho phép với tất cả các thiết kế logic. Nó bao gồm các công cụ thiết kế sau: Schematic Editor, HDL Editor, State Diagram Editor, Core Generator ™ System, PACE (Pinout and Area Constraint Editor), Architecture Wizard (DCM-Digital Clock Management, MGT- Multi_Gigabit
  61. 61 Transceiver), Xilinx System Generator for DSP. 2.2.2. Tổng hợp thiết kế . ISE cải tiến bộ máy tổng hợp HDL để đ−a ra kết quả tối −u hoá cho việc tổng hợp trên các PLD, đây là một trong các b−ớc cơ bản nhất trong ph−ơng pháp thiết kế. Nó lấy các định nghĩa của thiết kế trên HDL và tạo ra sự mô tả vật lý hoặc logic cho thiết bị silicon đích. Bộ máy tổng hợp tiên tiến đ−a ra một kết quả tối −u hoá cao với một thời gian điều chỉnh và thời gian dịch nhanh. Để phù hợp với yêu cầu này, bộ máy tổng hợp cần phải đ−ợc tích hợp chặt chẽ với công cụ thực hiện vật lý, hơn nữa sự bỏ qua việc thăm dò giữa thông tin thiết kế vật lý và mã thiết kế HDL đã cải thiện đ−ợc thời gian biến đổi thiết kế. Phần mềm ISE đ−a ra một sự tích hợp gắn liền với các bộ máy tổng hợp chủ đạo nh− : Mentor Graphics Leonardo Spectrum, Exempla, Synopsys và Synplicity Synplify/Pro, ABEL, XST ( Xilinx Synthesis Technology ) . 2.2.3. Thực thi và nạp cấu hình Việc thực hiện thiết kế logic lập trình đ−ợc là gán các chức năng logic đ−ợc tạo trong suốt quá trình nhập thiết kế và tổng hợp chúng vào trong tài nguyên vật lý cụ thể. Thuật ngữ " Xắp đặt và định tuyến " đ−ợc sử dụng để mô tả quá trình thực hiện cho FPGA, còn " Lắp đặt " đ−ợc sử dụng cho CPLD. Thực thi chính là nạp cấu hình cho thiết bị, mà sự thực thi này chính là tạo và tải một luồng các bit đ−ợc tạo ra từ thông tin xắp đặt và định tuyến vào trong các
  62. 62 thiết bị đích PLD. Để thực hiện phần này có các công cụ hỗ trợ sau: FloorPlanner, Constraints Editor, Timing Driven Place & Route, Modular Design, Timing Improvent Wizard . 2.2.4. Tích hợp mức Board. Phần mềm ISE đ−a ra sự hỗ trợ mạnh mẽ để giúp ng−ời thiết kế đảm bảo thiết kế logic lập trình làm việc trong một hệ thống. Xilinx dự báo tr−ớc đ−ợc các kết quả chính, chẳng hạn nh− việc xắp đặt một board mạch phức tạp, tích hợp các tín hiệu, giao tiếp Bus tốc độ cao, độ rộng dải thông vào ra, các nhiễu điện từ cho ng−ời thiết kế mức hệ thống. Để có thể dễ dàng thực hiện các b−ớc này Xilinx đã cung cấp các kỹ thuật chủ đạo cho FPGA: - XCITE ( Trở kháng điều khiển đ−ợc số ). - DCM Bộ quản lý đồng hồ số cho thời gian của hệ thống . - EMI Bộ quản lý nhiễu điện từ tr−ờng . - Thông tin đóng gói cho sự tích hợp ở mức Board . - Kiểm tra ở mức Board ISE. Nó bao gồm các phần mềm sau: - IBIS Models. - STAMP Models. - LMG Models. - ChipScope™ ILA 2.2.5. Các kỹ thuật kiểm tra Phần mềm ISE đ−a ra việc kiểm tra mà nó hỗ trợ trong tất cả các giai đoạn của thiết kế, từ khi vào thiết kế cho đến khi tích hợp
  63. 63 chúng trên board. * Kiểm tra tĩnh : Công cụ kiểm tra tĩnh cho phép ng−ời thiết kế kiểm tra thiết kế ngoài yêu cầu. Việc kiểm tra có thể thực hiện ở mọi khía cạnh hoặc kiểm tra theo sự chọn lựa, cho phép tìm lỗi trong quá trình thực thi. Công cụ kiểm tra tĩnh cũng đ−a ra các khả năng gỡ rối và phân tích mạnh mẽ. Các công cụ kiểm tra tĩnh : - Constraint Editor - Delay Calculator - Trace - Timing Analyzer - Prime Time - XPower - Formality - Conformal™ LEC - DRC - Chip Viewer * Kiểm tra động : Bao gồm các công cụ sau - HDL Bencher™ - ModelSim XE - State Bench - HDL Simulation Libraries * Kiểm tra mức Board : Việc sử dụng công cụ kiểm tra tại mức board nhằm để đảm bảo rằng thiết kế thực hiện đúng theo dự định và chúng đ−ợc tích hợp
  64. 64 với phần còn lại của hệ thống. Các công cụ này bao gồm : - IBIS Models - Tau - BLAST - Stamp Models - Impact 2.2.6 Công cụ phần mềm nhúng cho Virtex-II Pro FPGAs Các tuỳ chọn với thiết kế nâng cao của phần mềm ISE chính là nhằm tạo ra các thiết kế với mật độ cao, dễ dàng đ−ợc gắn kết các phần tử logic nhỏ nhất. Thuật ngữ " Công cụ phần mềm nhúng " thông th−ờng đ−ợc ứng dụng cho các công cụ đ−ợc yêu cầu dùng để tạo, soạn thảo, dịch, tải và gỡ rối các mã ngôn ngữ bậc cao nh− C, C++ , đ−ợc dùng để thực hiện trong một bộ máy xử lý nào đó. Có thể lấy mục đích cho các modul thiết kế với Virtex-II Pro Platform FPGA, có thể hoặc là một chip phần cứng silicon hoặc là các ứng dụng phần mềm, bạn có thể chạy bộ xử lý một lõi cứng PowerPC đ−ợc nhúng trong đó. Khi nói đến sự phát triển phần mềm nhúng, Xilinx đ−a ra sự hỗ trợ ở rất nhiều mức. Xilinx hỗ trợ các bộ vi xử lý nhúng trong Virtex-II Pro Platform FPGA với các phiên bản của Xilinx, các công cụ này đ−ợc dùng làm mẫu cho các ứng dụng thực hiện cao và giá thành thấp. Với các kỹ s− phần cứng, họ muốn phát triển các modul thiết kế vào trong phần mềm và chạy trong lõi PowerPC, thì Virtex-II Pro là
  65. 65 một giải pháp rất đơn giản và chi phí thấp của Xilinx. Với các kỹ s− phần mềm, họ muốn có môi tr−ờng với các đặc tính phong phú để có thể phát triển các ứng dụng phức tạp hơn, Xilinx cung cấp khả năng truy cập các công cụ tốt nhất dùng cho mục đích chuyên dụng hoá từ các nhà dẫn đầu công nghiệp nhúng. Bạn có thể đ−a các thiết kế mà bạn đ−ợc thừa h−ởng (Tận dụng lại) một cách dễ dàng vào trong Virtex-II Pro Platform FPGA. 2.3. Lõi sở hữu trí tuệ của Xilinx ( IP_Core ) Các Website của Xilinx có một cơ sở dữ liệu tổng hợp của tất cả các lõi logic (LogicCore) mà các lõi này đã đ−ợc kiểm tra và chạy thử . Bạn có thể tham khảo tại trang Web của trung tâm IP ( Intellectual Property ) www.Xilinx.com/ipcenter. Công cụ CORE Generator từ Xilinx đ−a ra các lõi logic đ−ợc tối −u hoá cao, t−ơng thích với các ph−ơng pháp thiết kế tiêu chuẩn cho Xilinx FPGA. Công cụ này rất dễ sử dụng để tạo ra các lõi linh hoạt, thực hiện cao với một mức độ cho phép định tr−ớc. 2.4. Giới thiệu vμ lập trình ứng dụng trên phần mềm WebPack ISE 6.2 2.4.1. Tổng quan ISE và các công cụ tổng hợp Phần mềm thiết kế ISE có khả năng đ−a thiết kế vào trong các PLD (Programmable Logic Device) đ−ợc chọn lựa cũng nh− các b−ớc thực hiện thiết kế −a dùng. Nhìn chung các b−ớc tiến hành thiết kế cho FPGA và CPLD là giống nhau, ng−ời thiết kế có thể nhập vào một thiết kế d−ới dạng một sơ đồ hoặc dạng HDL (VHDL,
  66. 66 Verilog, hoặc ABEL). Một thiết kế có thể bao gồm cả d−ới dạng sơ đồ và HDL. Phần mềm ISE đ−ợc kết hợp với bộ mô phỏng MXE đ−a ra khả năng mô phỏng và kiểm tra chức năng của VHDL. Bộ mô phỏng MXE đ−a ra một biểu đồ kiểm tra, nó cho phép ng−ời dùng đ−a ra các mẫu thử để test các chức năng trong quá trình tổng hợp (đ−ợc gọi là TestBencher). Quá trình tổng hợp một thiết kế đ−ợc thực hiện theo luồng các b−ớc nh− hình 2.1 d−ới đây. Hình 2.1. Luồng thiết kế cơ bản của CPLD và FPGA Biểu đồ trên chỉ ra sự giống nhau và khác nhau của các b−ớc thực hiện thiết kế một FPGA và một CPLD. Khi một thiết kế hoàn thành, kết quả có thể đ−ợc mô phỏng và tải xuống thiết bị. Để có
  67. 67 một cách nhìn tổng quan và thực hiện tiếp cận các b−ớc thiết kế một cách nhanh nhất, trong mục này chỉ đ−a ra một khái quát sơ l−ợc cơ bản nhất và các mục tiếp theo xin đ−ợc trình bày một ví dụ cụ thể và các b−ớc tiến hành thiết kế trên FPGA và CPLD. Với FPGA : Quá trình thực hiện bao gồm bốn b−ớc cơ bản sau: 1. Translate - Dịch thiết kế và cho chạy kiểm tra theo qui luật thiết kế . 2. Map - Tính toán và cấp phát tài nguyên trong thiết bị đích. 3. Place and Route - Xắp đặt các khối logic, định cấu hình phù hợp với các vị trí logic và sử dụng các tài nguyên định tuyến . 4. Generate Programming File - tạo ra dòng các bit ch−ơng trình (Tạo file.Bit). Với CPLD: Quá trình thực hiện bao gồm ba b−ớc cơ bản sau : 1. Translate - Dịch thiết kế và cho chạy kiểm tra theo qui luật thiết kế 2. Fit - Cấp phát tài nguyên và kết nối . 3. Generate Programming File : Tạo file JED cho ch−ơng trình . Các công cụ phần mềm tổng hợp thiết kế của ISE : * Việc nhập thiết kế có vài cách khác nhau và công cụ để tổng hợp thiết kế chính là tổng hợp mã nguồn đ−ợc viết d−ới dạng VHDL, Verilog, ABEL sang dạng file netlist. Các thiết kế d−ới dạng sơ đồ đ−ợc chuyển đổi sang mã nguồn VHDL hoặc Verilog mà các mã nguồn này đ−ợc tổng hợp bằng XST theo dạng thông th−ờng. * StateCAD là một công cụ phần mềm cho phép nhập thiết kế d−ới dạng đồ hoạ theo nhóm các trạng thái, nhóm các trạng thái này
  68. 68 sẽ đ−ợc dịch ra HDL và đ−ợc đính vào trong phần mềm ISE. * Bộ mô phỏng MXE có thể đ−ợc sử dụng cho việc mô phỏng cả về thời gian và chức năng . * HDL Bencher : Tạo ra các biểu đồ kiểm tra cho phép mô phỏng thiết kế ở dạng test. * Implemention : Công cụ thực thi này có một vài b−ớc và sẽ đ−ợc giới thiệu kỹ hơn trong các phần sau thông qua ví dụ cụ thể . * iMPACT Programmer : Modul này cho phép nạp ch−ơng trình vào thiết bị đích ( Lúc này cáp JTAG cần phải đ−ợc nối với cổng song song của máy tính. ) * CHIP VIEWER : Công cụ này đ−ợc sử dụng để kiểm tra thiết kế sau khi đã thực thi cấu hình, chỉ ra việc kết nối giữa các chân của thiết bị . * Xpower : Cho phép tính toán khả năng tiêu thụ nguồn của thiết kế khi chạy trong thiết bị đích . 2.4.2 . Thiết kế và thực hiện thiết kế trên CPLD và FPGA Để tiếp cận nhanh hơn các công cụ phần mềm tổng hợp thiết kế, ở đây chúng ta sẽ tiến hành thiết kế trên một ví dụ cụ thể. Trong mục này xin giới thiệu một ví dụ chính : "Thiết kế bộ điều khiển đèn tín hiệu giao thông thực hiện trên CoolRunner-II CPLD và Spartan-3 FPGA" 2.4.2.1 Thiết kế trên VHDL và StateCAD 1. Nhập thiết kế: Chọn Start-> Program-> Xilinx ISE 6-> Project Navigator. Chọn New Project trong menu File, đặt project là
  69. 69 Traffic và đặt trong th− mục Traffic. Hình 2.2. Cửa sổ nhập tên Project Nhấn nút Next cửa sổ sau sẽ xuất hiện, chọn thiết bị và các property nh− hình d−ới . ở đây ta chọn CoolRunner II CPLD - xc2c256. Hình 2.3 Cửa sổ nhập New Project Nhấp next và chọn New Source nh− cửa sổ sau. Chọn VHDL
  70. 70 modul và đặt tên file là Counter . Hình 2.4. Cửa sổ chọn mã soạn thảo ch−ơng trình Nhấp chuột vào nút Next và đặt các cổng vào ra nh− sau: - clock : in - reset : in - count : inout [3 down to 0] Bộ đếm 4 bit. Sau đó nhấp nút Next , Next , Finish .
  71. 71 Hình 2.5. Cửa sổ nhập đầu vào ra Cửa sổ Project Navigator sẽ hiện ra nh− sau: Hình 2.6. Cửa sổ soạn thảo mã ch−ơng trình Nhấp đúp chuột vào Counter.vhd trong của sổ Sources in Project bạn sẽ đ−ợc ch−ơng trình tạo ra một khung gồm các từ khoá trong cửa sổ Editor. Bạn có thể sử dụng các mẫu ch−ơng trình có sẵn trong th− viện của Xilinx. Mẫu này đ−ợc gọi là " Language Template". Mẫu này là công cụ hữu dụng, nó trợ giúp cho bạn trong khi viết code ch−ơng trình. Nó bao gồm các modul chức năng thông dụng nh− bộ đếm , bộ chọn kênh, bộ giải mã, thanh ghi dịch Để mở các modul mẫu bạn kích chuột vào menu Edit chọn Language Template, cửa sổ sau xuất hiện.
  72. 72 Hình 2.7. Cửa sổ lấy các mẫu modul chuẩn Chọn VHDL và kích chuột vào dấu cộng của dòng Synthesis Template, chọn modul counter, kéo và thả chúng vào giữa Begin và End của khung ch−ơng trình, sau đó thoát Language Template. Vào Edit chọn Replate và thay clk bằng clock . Xoá phần sau đây và chỉ để lại đoạn code nh− hình 3.8. if CE='1' then if LOAD='1' then COUNT <= DIN; else if DIR='1' then COUNT <= COUNT + 1; else COUNT <= COUNT - 1; end if;
  73. 73 end if; end if; Hình 2.8. Cửa sổ mã ch−ơng trình bộ Counter Nh− vậy trong ch−ơng trình sẽ gồm hai đ−ờng vào là clock và reset, một bus đầu ra count ra 4 bit (3 downto 0). Chức năng của bộ đếm này là đếm tiến khi có mỗi xung Clock đầu vào d−ơng. Tín hiệu reset không đồng bộ và nó đ−ợc xem xét tr−ớc khi xung clock hoạt động. Nhấn nút save để ghi lại Project. 2. Mô phỏng chức năng của bộ đếm: Từ Project Menu chọn New Source, chọn Test Bench Waveform và đặt tên cho file này là counter_tb nh− hình d−ới.
  74. 74 Hình 2.9 Cửa sổ chọn mã nguồn soạn thảo Nhấp nút Next, cửa sổ khởi tạo timer hiện ra và chọn nh− cửa sổ d−ới đây, nhấn ok, biểu đồ kích thích hiện ra để chuẩn bị cho mô phỏng chức năng của bộ đếm. Hình 2.10. Cửa sổ khởi tạo Clock
  75. 75 Hình 2.11. Cửa sổ khởi tạo kích thích đầu vào ra cho TestBench Thiết lập các kích thích vào ra nh− sau: - Đặt đ−ờng Reset ở chu kỳ thứ nhất lên 1 - Đặt đ−ờng Reset ở chu kỳ thứ hai xuống 0 - Kích chuột vào ô mầu vàng của COUNT[3:0] tại chu kỳ thứ nhất và kích vào nút Pattern cửa sổ Pattern Wizard hiện ra nh− sau :
  76. 76 Hình 2.12. Cửa sổ thiết lập bộ đếm Nhấn nút OK , lúc này biểu đồ sóng kích thích sẽ hiện ra : Hình 2.13. Cửa sổ khởi tạo kích thích vào ra cho TestBench Kích vào Save để ghi lại biểu đồ sóng. Nếu muốn thay đổi bạn có thể kích đúp chuột vào file counter_tb.tbw khi đó biểu đồ sóng sẽ hiện ra cho bạn sửa đổi. Bây giờ bạn cho chạy thử biểu đồ sóng
  77. 77 của bộ đếm . Chọn file counter_tb.tbw trong của sổ Sources in Project của môi tr−ờng ISE, kích chuột phải vào Simulate Behavioral VHDL Model chọn Properties, trong tr−ờng Simulation Run Time gõ "-all" bấm OK. Trong cửa sổ Processes for Source kích đúp chuột vào dòng Simulate Behavioral VHDL Model, dạng sóng của bộ đếm sẽ đ−ợc hiện ra nh− sau: Hình 2.14. Biểu đồ sóng đầu ra của bộ đếm Kích vào nút Save để ghi lại dạng sóng d−ới dạng file ".do" kích vào nút Close để thoát ch−ơng trình. 3. Bộ soạn thảo máy trạng thái ( StateCAD ) Với thiết kế bộ điều khiển đèn tín hiệu giao thông, bộ đếm đóng vai trò nh− một timer để xác định thời gian chuyển trạng thái . Máy trạng thái bao gồm bốn trạng thái nh− sau: - Trạng thái một : Đèn đỏ sáng (Red Light)
  78. 78 - Trạng thái hai : Đèn đỏ và đèn vàng sáng ( Red and Amber light ) - Trạng thái ba : Đèn xanh sáng ( Green Light ) - Trạng thái thứ t− : Đèn vàng sáng ( Amber Light ) Để gọi bộ soạn thảo nhóm trạng thái, chọn New Source từ Project Menu. Chọn Modul State Diagram và đặt tên file là stat_mac.dia, kích nút Next sau đó nhấn finish. Cửa sổ New Source hiện ra nh− sau: Hình 2.15. Cửa sổ chọn mã nguồn soạn thảo Môi tr−ờng soạn thảo nhóm trạng thái hiện ra nh− hình vẽ:
  79. 79 Hình 2.16. Cửa sổ soạn thảo máy trạng thái Kích chuột vào biểu t−ợng d−ới có nhãn Draw State Machines, sau đó cửa sổ State Machine Wizard hiện ra nh− hình 3.17. Hình 2.17. Cửa sổ tạo nhóm các trạng thái máy
  80. 80 Chọn số trạng thái là 4, nhấp nút Next sau đó chọn chế độ reset là synchronous, nhấp nút Next để vào cửa sổ chuyển trạng thái, ở đây trong hộp chuyển trạng thái ta gõ TIMER . Hình 2.18. Cửa sổ thiết lập các kích thích chuyển trạng thái Kích chuột vào nút Finish và vẽ các nhóm trạng thái trong trang soạn thảo. Khi nhấn nút finish một khung vuông xuất hiện cùng với mũi tên của con chuột và bạn chỉ việc vẽ một khung trên nền soạn thảo. Lúc này bốn trạng thái xuất hiện và bây giờ ta đi soạn các trạng thái . Kích đúp chuột vào ô Reset State 0 mầu vàng và thay đổi tên của trạng thái này thành "RED", sau đó nhấn vào nút "output Wizard".
  81. 81 Hình 2.19 Cửa sổ soạn thảo trạng thái đơn Thiết kế sẽ bao gồm ba đầu ra đ−ợc đặt tên là RD, AMB, GRN. Trong tr−ờng DOUT của hộp thoại d−ới đây ta gõ vào RD để khai báo đầu ra, đặt đầu ra này với hằng là "1" và chọn là đầu ra của thanh ghi . Kích chuột vào nút OK để quay về hộp thoại Edit State, làm t−ơng tự với ba trạng thái còn lại . - Đổi tên State1 thành "REDAMB" và sử dụng "Output Wizard" thiết lập RD =1 và một đầu ra mới với tên là AMB =1 và đầu ra là một thanh ghi. - Đổi tên State 2 thành "GREEN" và sử dụng "Output Wizard" để thiết lập một đầu ra mới với tên là GRN =1 và đầu ra cũng chọn là thanh ghi. - Đổi tên State 3 thành "AMBER" và sử dụng "Output Wizard" để thiết lập một đầu ra AMBER =1, đầu ra cũng chọn là thanh ghi Khi này nhóm trạng thái phải có nh− hình 3.20:
  82. 82 RESET RED RD = '1'; TIMER TIMER REDAMB AMBER RD = '1'; AMB = '1'; AMB = '1'; TIMER TIMER GREEN GRN = '1'; Hình 2.20. Các nhóm trạng thái trong bộ soạn thảo StateMachine Kích đúp chuột vào đ−ờng chuyển trạng thái giữa trạng thái "RED" và "REDAMB", lúc này bạn phải thiết lập bộ Timer hiện ra nh− cửa sổ hình 3.21, sau đó nhấn OK . Làm t−ơng tự nh− trên với ba đ−ờng còn lại: - Đ−ờng giữa REDAMB và GREEN , TIMER = "0100" - Đ−ờng giữa GREEN và AMBER , TIMER = "0011" - Đ−ờng giữa AMBER và RED , TIMER = "0000"
  83. 83 Hình 2.21. Tạo điều kiện kích thích đầu ra Cuối cùng bạn phải khai báo một vector Timer bởi việc kích vào nút ở bên trái của cửa sổ sạn thảo nhóm trạng thái có biểu t−ợng .Kéo và thả vào cửa sổ soạn thảo, kích đúp vào chúng và đổi tên vector thành TIMER nh− cửa sổ sau. Hình 2.22. Cửa sổ tạo véc tơ chuyển trạng thái Kích nút OK , khi này cửa sổ soạn thảo của bạn phải có hình 3.23.
  84. 84 RESET RED RD = '1'; TIMER[3:0] TIMER="1111" TIMER="0000" REDAMB AMBER RD = '1'; AMB = '1'; AMB = '1'; TIMER="0011" TIMER="0100" GREEN GRN = '1'; Hình 2.23. Các nhóm trạng thái sau khi soạn thảo xong Kích chuột vào nút Generate HDL có biểu t−ợng . Hộp thoại thông báo kết quả sẽ xuất hiện, chú ý dòng chữ "Compiled Perfectly" đóng hộp thoại này, ghi và đóng ch−ơng trình soạn thảo nhóm trạng thái lại. Nhóm các trạng thái này bây giờ đã đ−ợc đính vào ch−ơng trình ISE của chúng ta. Quay lại ISE ta thấy ch−ơng trình đèn giao thông bao gồm hai modul chính là Counter.vhd và Stat_mac.vhd .
  85. 85 4. Thiết kế VHDL mức cao: Nh− vậy trong ch−ơng trình của chúng ta gồm hai modul chính, bây giờ chúng ta phải thể hiện hai modul này trong một lớp trên cùng mà có chứa hai modul này, hay còn đ−ợc gọi là thể hiện chúng trong lớp chính-lớp Top. Từ Project Menu chọn New Source và đặt tên cho chúng là top.vhd Trong cửa sổ Source chọn file counter.vhd, trong cửa sổ Process nhấp đúp chuột vào dòng View VHDL Instantiation Template trong phần Design Entry Utilities. Copy phần sau và dán vào phần khai báo component và phần Instantiation của file top.vhd. COMPONENT counter PORT ( clock : IN std_logic; reset : IN std_logic; count : INOUT std_logic_vector(3 downto 0)); END COMPONENT; Inst_counter: counter PORT MAP (clock => ,
  86. 86 reset => , count => ); Tiếp tục, thực hiện t−ơng tự trong cửa sổ Sources in Project chọn file stat_mac.vhd, trong cửa sổ Source nháy đúp vào View VHDL Instantiation Template. Copy phần khai báo Component và phần Instantiation dán vào file top.vhd. Khai báo một Signal timer : std_logic_vector (3 downto 0) ở d−ới khai báo cấu trúc . Sau khi thực hiện các b−ớc ta sẽ có ch−ơng trình của lớp top nh− sau. library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity top is Port ( clock : in std_logic; reset : in std_logic; red_light : out std_logic; amber_light : out std_logic; green_light : out std_logic); end top; architecture Behavioral of top is signal timer : std_logic_vector (3 downto 0); COMPONENT counter PORT ( clock : IN std_logic; reset : IN std_logic;
  87. 87 count : INOUT std_logic_vector(3 downto 0)); END COMPONENT; COMPONENT stat_mac PORT (TIMER : IN std_logic_vector(3 downto 0); CLK : IN std_logic; RESET : IN std_logic; AMB : OUT std_logic; GRN : OUT std_logic; RD : OUT std_logic); END COMPONENT; begin Inst_counter: counter PORT MAP ( clock => clock, reset => reset, count => timer); Inst_stat_mac: stat_mac PORT MAP ( TIMER => timer, CLK => clock, RESET => reset, AMB => amber_light, GRN => green_light, RD => red_light); end Behavioral; Sau khi có đ−ợc ch−ơng trình nh− trên bạn nhấp nút Save, lúc
  88. 88 này trong cửa sổ Sources in Project sẽ tự động xắp xếp theo thứ tự. Lớp top.vhd là lớp trên cùng có chứa hai modul con. Hình 2.24. Cửa sổ Source của Project Traffic Bây giờ ta có thể đi mô phỏng toàn bộ thiết kế, chọn file top.vhd và trong menu Project chọn New Source, đặt file mô phỏng là top_tb.tbw. Lúc này cần phải cho các kích thích đầu vào của thiết kế. Với đ−ờng tín hiệu vào Reset, trong chu kỳ một đặt là High, từ chu kỳ thứ hai là low . Kéo đ−ờng sọc đứng màu xanh đến chu kỳ thứ 64, hoặc bấm chuột phải vào đ−ờng sọc xanh đó và chọn Set End of Testbench. Ghi lại file testbench này với tên file là top_tb.tbw, đóng cửa sổ soạn thảo biểu đồ kiểm tra lại. Trong cửa sổ Sources in Project chọn file top_tb.tbw. Trong cửa sổ Processes for Source nháy đúp vào dòng Simulate Behavioral VHDL Model lúc này ta thu đ−ợc giản đồ sóng của thiết kế nh− hình 3.25.
  89. 89 Hình 2.25. Dạng sóng đầu ra của Project Traffic Đến đây chúng ta có thể b−ớc sang phần thực thi trên thiết bị , xong ở đây xin giới thiệu một ph−ơng pháp khác để có thể thực hiện đ−ợc thiết kế này. 3.2.2 Thiết kế trên Sơ đồ ( Schematic Design ) Đôi khi để cho dễ hình dung đ−ợc thiết kế, ng−ời ta dùng ph−ơng pháp thiết kế trên sơ đồ. ở đây chúng ta xây dựng thiết kế theo sơ đồ ở mức top, kết nối các khối trong chúng và sử dụng công cụ ECS Schematic. Giả sử ta đã xây dựng đ−ợc hai modul là counter.vhd và stat_mac.vhd nh− hình 3.26. Trong môi tr−ờng ISE chọn menu Project, chọn New Source và đặt tên cho thiết kế lớp đỉnh là Top_SCH.
  90. 90 Hình 2.26. Tạo Project Traffic bởi Schematic Nhấp nút NEXT , lúc này bộ soạn thảo ECS xuất hiện nh− sau: Hình 2.27. Cửa sổ soạn thảo ECS Quay trở lại với môi tr−ờng ISE Project Navigator trong cửa sổ Source chọn file counter.vhd, trong cửa sổ Process, kích đúp vào dòng Creat Schematic Symbol. Thực hiện t−ơng tự với file stat_mac.vhd, quay trở lại với môi tr−ờng ECS ta sẽ thấy hai biểu t−ợng counter và stat_mac trong th− viện symbol.
  91. 91 Trong cửa sổ th− viện nháy đúp vào counter và đặt trỏ chuột vào trong môi tr−ờng soạn thảo, làm t−ơng tự với stat_mac ta sẽ thấy hai symbol thể hiện trong file top_sch nh− sau. Chọn công cụ Add Wire bằng việc kích vào biểu t−ợng , sau đó nối hai đ−ờng clock và reset của hai khối lại, đ−ờng count nối với đ−ờng timer. Sau đó chọn Add Net Name có biểu t−ợng chữ abc , lúc này ô nhập Net xuất hiện, ta gõ clock sau đó ấn Enter, đặt vào net clock, làm t−ơng tự với các net còn lại . Hình 2.28. Project Traffic trong ECS Tiếp theo phải đi đặt các điểm dấu vào ra. Từ menu thanh công
  92. 92 cụ chọn Add I/O Marker, lúc này trong Tab Option sẽ hiện Add an input, Add an output. Nếu Marker là đầu vào thì phải chọn ở đây là Add an input sau đó đặt vào đ−ờng clock và reset. Ghi lại và thoát khỏi bộ soạn thảo ECS. Quay trở lại Project Navigator ta thấy top_sch đã đ−ợc xắp xếp lên trên cùng. Bây giờ bạn có thể nhìn thấy sự thể hiện của top_sch d−ới dạng VHDL bằng cách chọn file top_sch trong cửa sổ Source sau đó chỉ việc nháy đúp vào dòng View VHDL Functional Model trong th− mục Design Entry Utilities của cửa sổ Processes. Tiếp tục đi mô phỏng top_sch, làm t−ơng tự nh− phần tr−ớc ta cũng thu đ−ợc biểu đồ xung nh− hình 3.25 . 2.4.3. Thực thi trên CPLD 2.4.3.1. Tổng hợp và thực thi trên CPLD Sau khi đã mô phỏng thành công thiết kế, quá trình tổng hợp sẽ chuyển các thiết kế dạng text sang file nestlist có đuôi ".NGC". File này bạn không thể đọc đ−ợc, vì đây là file mô tả mạch thực tế và nó đ−ợc thực thi ở mức thấp. Thời điểm thực thi sẽ sử dụng file Nestlist và file rằng buộc ng−ời dùng có đuôi ".ucf". B−ớc đầu tiên chúng ta cần thực hiện là dịch thiết kế. B−ớc này sẽ kiểm tra thiết kế và đảm bảo rằng Nestlist phù hợp với cấu trúc đ−ợc chọn, việc biên dịch cũng kiểm tra file UCF xem có chỗ nào không phù hợp với cấu trúc của CPLD. Sau đó việc ghép nối vào thiết bị đích ( Fitter) sẽ tạo ra file Jedec và nạp ch−ơng trình vào thiết bị đích hoặc board mạch thông qua cáp song song JTAG.Trong cửa sổ Source chọn file
  93. 93 top.vhd hoặc chọn top_sch, còn trong cửa sổ Processes nháy đúp vào Check Syntax. Quá trình tổng hợp sẽ tự nó nhận ra hai modul có thứ tự thấp hơn là file Counter.vhd và stat_mac.vhd .Sau khi thực hiện Check Syntax xong phải đảm bảo không có lỗi nào xuất hiện và phải có chữ V mầu xanh bên trái dòng Synthesize-XST trong th− mục của Implement Design. Trong mục Synthesize-XST bấm chuột phải và chọn Properties, kiểm tra mục Add I/O Buffer trong tab Xilinx Specific Options có đ−ợc chọn hay không, sau đó bấm OK. Để tạo file ".UCF", cần phải có sự rằng buộc về chân và về thời gian của thiết bị đích. Giả sử clock dùng cho thiết bị đích dùng trong ví dụ của chúng ta là 100 MHz và các chân ra đ−ợc xác định tr−ớc trong CoolRunner-II. Trong cửa sổ Source chọn file top.vhd , trong project chọn New Source và đặt tên file này là top_cosntraints. Chọn file này trong cửa sổ Source và trong cửa sổ Processes chọn Assign Package Pins. Hình 2.29 Chọn và tạo file .UCF Nhấp đúp dòng Assign Package Pins, lúc này cửa sổ gán chân PACE sẽ hiện ra nh− sau. Ghi lại công việc thực hiện trên PACE và
  94. 94 EXIT. Hình 2.30 Thiết lập các chân vào ra trong PACE Bây giờ ta có thể xem lại việc gán chân d−ới dạng file text, trong cửa sổ Source chọn file top_cosntraints.ucf, trong cửa sổ Processes kích đúp chuột vào dòng Edit Constraints sẽ thấy cửa sổ file này d−ới dạng text. Hình 2.31 Tạo file .UCF bằng text Tuy nhiên cần phải bổ xung thêm đ−ờng tín hiệu vào tài nguyên toàn cục. Vì vậy bổ xung một bộ đệm clock BUFG . Gõ vào cửa sổ
  95. 95 text ở trên dòng khai báo sau: NET "clock" BUFG=CLK; Ghi lại và thoát khỏi cửa sổ soạn thảo này. B−ớc tiếp theo là gán sự rằng buộc về thời gian. Chọn file UCF trong cửa sổ Source, kích đúp vào dòng Create Timing Constraint trong cửa sổ Processes . Cửa sổ soạn thảo gán sẽ hiện ra nh− hình 3.32. Hình 2.32 Cửa sổ gán rằng buộc thời gian và gán chân thiết bị Nh− chúng ta thấy đ−ờng clock đ−ợc bộ soạn thảo gán nhận ra trong tr−ờng Clock Net Name, bấm chuột phải vào chữ clock trong tr−ờng này và chọn Period, cửa sổ Clock Period xuất hiện. Thiết lập giá trị thời gian là 10nS , thời gian cao là 50% , thời gian thấp là 50%. Việc gán khoảng thời gian đã đ−ợc ghi vào file UCF mà bạn có thể nhìn thấy ở cuối bản kê trong cửa sổ gán. Kích chuột vào PORT tab của bộ soạn thảo gán, bạn sẽ thấy các chân đ−ợc gán trong file UCF ở b−ớc thực hiện tr−ớc đã đ−ợc nhập vào trong cửa sổ soạn thảo. Dùng phím Ctr để chọn các đầu ra, sau đó gõ vào hộp Group
  96. 96 Name chữ lights. Sau đó kích vào nút Create Group, trong hộp Select Group chọn lights và kích vào nút Clock to Pad. Hộp thoại sẽ hiện ra và thiết lập thời gian theo yêu cầu là 15nS, kích nút OK. Khi này việc gán thời gian đã đ−ợc gán vào trong file UCF. Kích chuột vào nút Save và thoát khỏi bộ soạn thảo gán. Quay lại với môi tr−ờng ISE, nhìn trong cửa sổ Processes, b−ớc tiếp theo là phải cho ch−ơng trình hoàn thành việc thực thi thiết kế, có nghĩa là phải đảm bảo có chữ V mầu xanh bên trái dòng Implement Design. Bấm chuột phải vào dòng này và chọn Properties, chọn mục Fitting. ở ví dụ này chúng ta chọn Output Voltage Standard là LVCMOS18 (Tức chuẩn vào ra1,8V), nhấn OK. Nháy đúp chuột vào dòng Implement Design, lúc này toàn bộ thiết kế của chúng ta sẽ đ−ợc thực thi trên thiết bị đích mà không có lỗi. Hình 2.33. Các thông báo hoàn thành việc biên dịch trong cửa sổ Process Khi này bộ phân tích thời gian cũng đ−ợc tự động thực hiện và ch−ơng trình đ−a ra các thông báo của Fitter và Timing. Lúc này bạn
  97. 97 có thể xem các thông báo về lỗi, về logic, đầu vào, đầu ra, danh sách các chân bằng việc kích vào các dòng thông báo bên trái trong cột Fitter Report. Hình 2.34. Các thông báo sau biên dịch của CPLD 2.4.3.2. Nạp ch−ơng trình cho CPLD Dùng cáp Parallel - JTAG và bộ nạp ch−ơng trình iMPACT để tải cấu hình xuống thiết bị. Chú ý Jắc nguồn của cáp phải đ−ợc nối. Trong cửa sổ Source chọn file top.vhd, nháy đúp vào dòng Configure Device (iMPACT) trong cửa sổ Processes, cửa sổ bộ nạp iMPACT hiện ra và thực hiện nạp ch−ơng trình. 2.4.4 Thực thi trên FPGA. Sau khi mô phỏng thành công thiết kế, quá trình tổng hợp sẽ chuyển đổi thiết kế d−ới dạng VHDL sang file Nestlist có đuôi '.NGC '. B−ớc thực thi sẽ lấy file này và file rằng buộc ng−ời dùng để tạo lại thiết kế mà nó sử dụng các tài nguyên cho phép trong FPGA. Sau đó quá trình xắp xếp sẽ phân chia thiết kế với các tài nguyên cho phép trong FPGA, nó sử dụng file .UCF để quản lý thời
  98. 98 gian đ−ợc gán và quyết định đ−a ra xem có thể đ−a thêm hoặc tái tạo lại các đơn vị logic để phù hợp với thời gian đ−ợc yêu cầu. Các b−ớc thực thi trên FPGA gồm bốn b−ớc cơ bản sau đây: - Tổng hợp thiết kế - Lắp đặt - Mô phỏng thời gian - Nạp ch−ơng trình Trong mục này chúng ta sẽ tiếp tục đi thực thi ví dụ bộ điều khiển đèn tín hiệu giao thông trên Spartan-3 FPGA. Quay lại thiết kế với CPLD trong cửa sổ Sources của Project Navigator nháy đúp vào dòng xc2c256-7tq144-XST VHDL và chọn các thông số của FPGA nh− hình sau. Thiết kế nguyên thuỷ cho CPLD bây giờ đã trở thành Project cho FPGA Spartan-3, các chữ V mầu xanh trong cửa sổ Processes biến mất và thay vào đó là những dấu hỏi chấm mầu vàng, hiển thị thiết kế cần phải đ−ợc tổng hợp và thực thi lại. 2.4.4.1. Tổng hợp thiết kế. Trong thiết kế của chúng ta công cụ tổng hợp sẽ nhận ra file
  99. 99 top.vhd gồm hai khối có mức thấp hơn là "counter" và "stat_mac".Trong cửa sổ Processes kích chuột vào dấu "+" và chọn dòng Check Syntax, kích đúp thì chữ V mầu xanh đ−ợc hiển thị, bởi nó đã đ−ợc kiểm tra trong phần thực thi của CPLD. Kích chuột phải vào dòng Synthesize và chọn Properties vào tab của HDL Option chọn mục FSM Encoding Algorithm đặt là one-hot. Trong tab của Xilinx Specific Option phải để mục Add I/O Buffer đ−ợc chọn, kích nút OK. Trong cửa sổ Processes kích đúp vào dòng Synthesize và đảm bảo rằng có chữ V mầu xanh bên trái đ−ợc hiện lên. Vì ta đặt chế độ one-hot nên khi tổng hợp sẽ có thông báo các trạng thái ( red , amber, redamb, và green ) sẽ đ−ợc gán riêng thanh ghi một bit. Synthesizing Unit . Related source file is D:/Traffic/Traffic/STAT_MAC.vhd. Found 1-bit register for signal . Found 1-bit register for signal . Found 1-bit register for signal . Found 1-bit register for signal . Found 1-bit register for signal . Found 1-bit register for signal . Found 1-bit register for signal . 2.4.4.2. File rằng buộc ng−ời dùng (.UCF). Để có đ−ợc sự thực hiện cuối cùng trên thiết bị bạn phải đ−a ra công cụ thực thi thực hiện cái gì và ở đâu. Với thiết kế này giả sử
  100. 100 đ−ợc thực hiện với clock có tần số là 100 MHz, và các chân ra đ−ợc xác định trên FPGA. Trong mục này file top_constraints.ucf cần phải đ−ợc gán các chân mới, vì thiết kế cũ dùng trong CPLD. Trong cửa sổ Source chọn file này, còn trong cửa sổ Processes trong User Constraints kích đúp vào dòng Edit Constraints. Sửa đổi và ghi lại, đóng cửa sổ Constraints. Kích đúp vào dòng Assign Package Pins nh− hình d−ới. Cửa sổ PACE sẽ đ−ợc khởi tạo, chọn các chân gán cho đầu vào và ra nh− sau: Hình 2.35. Gán chân ng−ời dùng trong FPGA Ghi lại và thoát khỏi cửa sổ PACE. Kích đúp vào dòng Create Timing Constraints trong cửa sổ processes, cửa sổ Constraints Editor hiện ra, lúc này các chân đ−ợc gán trong PACE đã đ−ợc
  101. 101 nhập vào trong cửa sổ này. Nháy đúp vào Period trong tab của Port, lúc này cửa sổ định nghĩa chu kỳ clock hiện ra. Hình 2.36. Cửa sổ định nghĩa Clock Đ−a vào chu kỳ là 10nS , kích chuột vào nút OK.Trong tab cuả Port ta thấy các đ−ờng vào ra đã đ−ợc nhập, dùng phím Ctr chọn các đầu ra.Trong tr−ờng Group Name nhập vào chữ lights, nhấn Create Group.Trong hộp Select Group chọn lights và nhấn Clock to Pad.
  102. 102 Trong hộp thoại Clock to Pad đặt Offset =15nS, kích nút OK. Lúc này tr−ờng Clock To Pad đ−ợc điền tự động vào cửa sổ phía d−ới của Constraints Editor . Ghi và đóng cửa sổ Constraints Editor. Kích đúp vào Implement Design trong cửa sổ Processes của Project Navigator, lúc này các tích mầu xanh hiển thị ở dòng Translate, Map, Place and Route . Thiết kế đã hoàn thành giai đoạn thực thi. Mỗi một giai đoạn thực hiện đều có một thông báo. Trong Translate sẽ chỉ ra thông báo về lỗi thiết kế và lỗi rong file UCF,
  103. 103 còn trong Map sẽ đ−a ra thông báo về sự xác nhận tài nguyên đ−ợc sử dụng trong FPGA 2.4.4.3. Tải cấu hình xuống FPGA. Kích chuột phải vào Generate Programming File và kích vào Properties trong tab Startup Options, phải đảm bảo rằng clock khởi động phải đ−ợc đặt là JTAG Clock, nhấn OK. Kích đúp vào Generate Programming File , thao tác này sẽ tạo ra file ".bit" để sử dụng cho ch−ơng trình nạp iMPACT. Mở công cụ Generate Programming File kích đúp vào Configure Device (iMPACT), (Lúc này phải đảm bảo cáp JTAG đã đ−ợc nối với PC ). Nếu nh− các thông số trong thiết kế không đ−ợc tự động đ−a vào từ công cụ ISE thì kích chuột phải vào cửa sổ của iMPACT và chọn Add Xilinx Device, đ−a đ−ờng dẫn của thiết kế và chọn file top.bit sau đó kích vào biểu t−ợng của thiết bị . Từ Menu Operation chọn Program, sau đó sẽ đ−ợc thông báo việc nạp đã thành công. Tuy nhiên với Board Spartan-3 bạn cần l−u ý khi nạp ch−ơng trình , vì trên nó bao gồm một Flash Rom nối tiếp bạn sẽ đ−ợc ch−ơng trình hỏi một số câu hỏi tr−ớc khi nạp.
  104. 104 Ch−ơng III Giới thiệu ngôn ngữ VHDL 3.1. Các cấu trúc cơ bản của ngôn ngữ VHDL. Các thành phần chính xây dựng trong ngôn ngữ VHDL đ−ợc chia ra thành năm nhóm cơ bản nh− sau: - Entity - Architecture - Package - Configuration. - Library. Entity: Trong một hệ thống số, thông th−ờng đ−ợc thiết kế theo
  105. 105 một sự xếp chồng các modul, mà mỗi Modul này t−ơng ứng với một thực thể thiết kế ( Đ−ợc gọi là Entity ) trong VHDL. Mỗi một Entity bao gồm hai phần : - Khai báo thực thể ( Entity). - Thân kiến trúc ( Architecture Bodies ) Một khai báo Entity đ−ợc dùng để mô tả giao tiếp bên ngoài của một phần tử (component), nó bao gồm các khai báo các cổng đầu vào, các cổng đầu ra của phần tử đó. Phần thân của kiến trúc đ−ợc dùng để mô tả sự thực hiện bên trong của thực thể đó. Packages: Các đóng gói chỉ ra thông tin dùng chung, mà các thông tin này đ−ợc sử dụng bởi một vài Entity nào đó. Configuration: Định cấu hình, nó cho phép gắn kết các thể hiện của phần tử nào đó cần dùng của một thiết kế nào đó có dạng một cấu trúc và đ−a các thể hiện này vào trong cặp Entity và Architecture. Nó cho phép ng−ời thiết kế có thể thử nghiệm để thay đổi các sự thực thi khác nhau trong một thiết kế. Mỗi một thiết kế dạng VHDL bao gồm một vài đơn vị th− viện, mà một trong các th− viện này đ−ợc dịch sẵn và cất trong một th− viện thiết kế. 3.1.1 Khai báo Entity: Nh− trên đã đề cập, phần khai báo Entity chỉ đ−a ra một cái nhìn phía bên ngoài cuả một phần tử mà không cung cấp thông tin về sự thực hiện của phần tử đó nh− thế nào. Cú pháp khai báo của một Entity nh− sau:
  106. 106 Entity entity_name is [generic (generic_declaration);] [port (port_declaration);] {entity_declarative_item {constants, types, signals};} end [entity_name]; [] : Dấu ngoặc vuông chỉ ra các tham số có thể lựa chọn. | : Dấu gạch đứng hiển thị một sự lựa chọn trong số các lựa chọn khác. {} : Khai báo một hoặc nhiều các đối t−ợng, mà các đối t−ợng này có thể đ−ợc định nghĩa bởi ng−ời dùng. a. Khai báo Generic dùng để khai báo các hằng mà chúng có thể đ−ợc dùng để điều khiển cấu trúc và sự hoạt động của Entity. Cú pháp của khai báo này nh− sau: generic ( constant_name : type [:=init_value] {;constant_name: type[:=init_value]}); ở đây tên hằng constant_name chỉ ra tên của một hằng dạng generic (hằng dùng chung). Kiểu (Type) đ−ợc dùng để chỉ ra kiểu dữ liệu của hằng. init_value : chỉ ra giá trị khởi tạo cho hằng. b. Khai báo cổng ( Port ): Đ−ợc dùng để khai báo các cổng vào, ra của Entity. Cú pháp của khai báo này nh− sau: Port ( port_name : [mode] type [:= init_value] {; port_name:[mode] type [:=init_value]}); port_name đ−ợc dùng để chỉ ra tên của một cổng, mode
  107. 107 chỉ ra h−ớng vào ra của tín hiệu tại cổng đó. Type chỉ ra kiểu dữ liệu của một cổng và init_value chỉ ra giá trị khởi tạo cho cổng đó. Chú ý ! Với VHDL không phân biệt chữ hoa và chữ th−ờng, chẳng hạn nh− : xyz = xYz = XYZ. * Có bốn mode đ−ợc sử dụng trong khai báo cổng : - in : chỉ có thể đ−ợc đọc, nó chỉ đ−ợc dùng cho các tín hiệu đầu vào ( chỉ đ−ợc phép nằm bên phải phép gán ) - out : Chỉ đ−ợc dùng để gán giá trị, nó chỉ đ−ợc dùng cho các cổng đầu ra ( Nó chỉ đ−ợc nằm bên trái của phép gán ). - inout : Có thể đ−ợc dùng để đọc và gán giá trị. Nó có thể có nhiều hơn một h−ớng điều khiển ( Có thể nằm ở bên trái hoặc bên phải phép gán ). - Buffer : Có thể đ−ợc dùng để đọc và gán giá trị. ( Có thể nằm ở bên trái hoặc bên phải phép gán ). inout là một cổng hai h−ớng, còn Buffer là một cổng không có h−ớng. c. entity_declarative_item : Đ−ợc dùng để khai báo các hằng, kiểu dữ liệu, hoặc tín hiệu mà nó có thể đ−ợc sử dụng trong khi thực hiện của một Entity. d. Ví dụ : * Ví dụ về khai báo các cổng vào ra: entity xxx is port ( A : in integer ; B : in integer ;
  108. 108 C : out integer ; D : inout integer ; E : buffer integer) ; end xxx; architecture bhv of xxx is begin process (A,B) begin C <= A ; ( Câu lệnh đúng: A đ−ợc gán cho C ). A <= B ; ( Câu lệnh sai: A là một đầu vào ). E <= D + 1; ( Câu lệnh đúng: D ở mode inout vì vậy nó có thể đ−ợc gán và đọc ) D <= C + 1; ( Câu lệnh sai : C là cổng đầu ra nên không thể đ−ợc đọc cho đầu vào ). end process; end bhv; * Ví dụ về khai báo Entity:
  109. 109 AB COUTFULL_ADDER CIN SUM Hình trên chỉ ra một giao diện của một bộ cộng một bit. Tên Entity của phần tử này là FULL_ADDER. Nó bao gồm các cổng đầu vào A, B và CIN. Các cổng này có kiểu dữ liệu là kiểu Bit, còn các cổng đầu ra SUM và COUT cũng mang kiểu dữ liệu là kiểu BIT. Ngôn ngữ VHDL dùng để diễn tả giao diện này nh− sau: Entity FULL_ADDER is port ( A, B, CIN : in BIT; SUM, COUT : out BIT ); End FULL_ADDER ; Chúng ta có thể điều khiển cấu trúc cũng nh− thời gian của một Entity bởi việc sử dụng các hằng generic. Ví dụ sau sẽ chỉ ra việc điều khiển này, trong ví dụ này hằng N đ−ợc dùng để chỉ ra số bít của một bộ cộng. Trong quá trình mô phỏng hoặc quá trình tổng hợp, giá trị thực tế cho mỗi hằng dùng chung generic có thể bị thay đổi. entity ADDER is generic (N : INTEGER := 4);
  110. 110 M : TIME := 10ns); port ( A, B : in BIT_VECTOR (N -1 downto 0 ); CIN :in BIT; SUM : out BIT_VECTOR (N-1 downto 0); COUT : out BIT ); end ADDER; Giao diện mô tả bộ cộng này nh− sau: A (3) B (3) A (2) B (2) A (1) B (1) A (0) B (0) COUT CIN FULL _ ADDER SUM (3) SUM (2) SUM (1) SUM (0) 3.1.2. Các kiểu kiến trúc ( ARCHITECTURES ): Một kiến trúc đ−a ra kết cấu bên trong của một Entity. Một Entity có thể có nhiều hơn một kiến trúc, nó chỉ ra quan hệ giữa các đầu vào và đầu ra của một Entity mà quan hệ này đ−ợc diễn tả theo các thuật ngữ sau : - Kiểu hành vi hoạt động ( Behavioral ). - Kiểu hoạt động của các luồng dữ liệu ( Dataflow ). - Kiểu cấu trúc ( Structure ). Một kiến trúc xác định chức năng của một Entity. Nó bao gồm phần khai báo ( Khai báo các các tín hiệu, hằng, khai báo các kiểu, các phần tử, các phần tử, tiếp theo là các phát biểu đồng thời ).