FPGA là một thiết bị cấu trúc logic có thể được người sử dụng lập trình trực tiếp mà không phải sử dụng bất kỳ một công cụ chế tạo mạch tích hợp nào.. Bước 5: Bước tiếp theo trong hệ thố
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
-
Nguyễn Văn Thi
NGHIÊN CỨU TÌM HIỂU CÔNG NGHỆ FPGA
NGƯỜI HƯỚNG DẪN KHOA HỌC :
TS NGUYỄN NAM QUÂN
Hà Nội – Năm 2010
Trang 2Môc lôc
Lêi cam ®oan……… ………… 5
Danh môc c¸c ký hiÖu, c¸c ch÷ viÕt t¾t……… …… 6
Danh môc h×nh vÏ……… ……… …… 7
Lêi më ®Çu……… 9
Ch−¬ng 1 : Giíi thiÖu tæng quan vÒ asic lËp tr×nh ®−îc……… ……… 11
1.1 Tæng quan vÒ c«ng nghÖ thiÕt kÕ vi m¹ch……….… 11
1.2 Giới thiệu về c«ng nghệ ASIC……… … 11
1.2.1 Full - Custom ASICs……….……12
1.2.2 Semicustom ASICs………13
1.2.3 C¸c linh kiÖn logic lËp tr×nh ®−îc……… 14
Ch−¬ng 2: T×m hiÓu c«ng nghÖ fpga cña Xilinx ………19
2.1 CÊu tróc chung cña FPGA h·ng Xilinx……….19
2.1.1 CLB(Configurable Logic Block)……… 20
2.1.2 C¸c nguån kÕt nèi……….20
2.1.3 IOB (Input/Output Blocks)……… …22
2.2 C¸c b−íc thiÕt kÕ víi FPGA………22
2.3 C¸c c«ng nghÖ lËp tr×nh FPGA……… ……24
2.3.1 C«ng nghÖ lËp tr×nh dïng RAM tÜnh……… ….24
2.3.2 C«ng nghÖ lËp tr×nh dïng cÇu ch× nghÞch(anti-fuse)……….26
2.3.3 C«ng nghÖ lËp tr×nh dïng EPROM vµ EEPROM……… 28
2.3.4 Tãm t¾t c¸c c«ng nghÖ lËp tr×nh cho FPGA……… 29
2.4 Mét sè lo¹i FPGA trªn thÞ tr−êng……… ….30
2.5 øng dông cña FPGA……… 32
2.6 −u nh−îc ®iÓm cña c«ng nghÖ FPGA……… ….33
Ch−¬ng 3 Giíi thiÖu ng«n ng÷ m« t¶ phÇn cøng vhdl… ……….….……34
3.1 Giíi thiÖu vÒ VHDL……… …….…….34
3.1.1 øng dông cña ng«n ng÷ VHDL……….36
Trang 33.1.2 Quy trinh thiết kế với VHDL……….36
3.1.3 Công cụ EDA……….37
3.1.4 Chuyển mã VHDL vào mạch……….38
3.2 Cấu trúc mã VHDL……… 40
3.2.1 Các đơn vị VHDL cơ bản……… ………40
3.2.2 Khai báo Library………40
3.2.3 Entity ( thực thể)……….42
3.2.4 ARCHITECTURE ( cấu trúc)………42
3.3 Kiểu dữ liệu……… 43
3.3.1 Các kiểu dữ liệu tiền định nghĩa……….44
3.3.2 Kiểu dữ liệu có dấu và không ………44
3.3.3 Chuyển đổi dữ liệu……….45
3.3.4 Tóm tắt các kiểu dữ liệu……….46
3.4 Toán tử và thuộc tính………46
3.4.1 Toán tử………46
3.4.2 Thuộc tính……… 48
3.4.3 Thuộc tính được định nghĩa bởi người dùng ……… 48
3.4.4 GENERIC……… 49
3.5 Mã song song……… 49
3.5.1 Song song và tuần tự……… 49
3.5.2 GENERATE……… 50
3.5.3 BLOCK……… 51
3 6 Mã tuần tự……… 53
3.6.1 PROCESS……… 53
3.6.2 Signals và Variables……… 53
3.6.3 IF……… 54
3.6.4 WAIT………54
3.6.5 CASE……….54
Trang 43.6.6 LOOP………55
3.7 Signal và Variables……… 55
3.7.1 CONSTANT……… 56
3.7.2 SIGNAL……….56
3.7.3 VARIABLE……… 57
3.8 Máy trạng thái……… 57
3.8.1 Giới thiệu……… 57
3.8.2 Thiết kế theo kiểu 1 (thiết kế theo mô hình máy moore)……… 60
3.8.3 Thiết kế kiểu 2……… 63
Chương 4 Thiết kế mạch điện tử trên kit Xilinx Spartan 3E……… 66
4.1 Giới thiệu kit Xilinx Spartan 3E……… 66
4.1.1 Các thành phần chính của Kit……… 66
4.1.2 Sơ đồ chân của XC3S500E……… 67
4.1.3 Bộ tạo dao động trên KIT……….68
4.1.4 Các nút chuyển mạch, nút nhấn và led……….69
4.1.5 Nguồn cấp……….70
4.1.6 Nạp chương trình cho FPGA……… 70
4.2 Tổng quan về cấu trúc SPARTAN - 3E……… 70
4.2.1 Input/Output Blocks (IOBs)……… 71
4.2.2 Configurable Logic Blocks (CLBs): Khối chức năng logic………….….……71
4.3 Thiết kế một số mạch điện tử ……….….……75
4.3.1 Giới thiệu vi điều khiển PicoBlaze……….……75
4.3.2 Thiết kế ALU……….… …79
4.3.3 Bộ đếm hai chữ số thập phân từ 00 đến 99 hiển thị LED 7 thanh……….……81
4.3.4 Bộ cộng có nhớ 8 bit không dấu……….……83
4.3.5 Bộ điều khiển đèn giao thông (TLC)……….85
4.3.6 Thiết kế đồng hồ thời gian thực dùng vi điều khiển PicoBlaze……… 88
Kết luận……… ……… …… …96
Tài liệu tham khảo ……… 97
Trang 5LờI CAM ĐOAN
Tôi xin cam đoan rằng những số liệu và kết quả nghiên cứu trong luận văn này là trung thực và ch−a hề sử dụng để bảo vệ một học vị nào
Mọi sự giúp đỡ cho việc hoàn thành luận văn đã đ−ợc cảm ơn và các thông tin trích dẫn đều đ−ợc chỉ rõ nguồn gốc
Trang 6Danh môc c¸c ký hiÖu, c¸c ch÷ viÕt t¾t
ASIC Application-specific Integrated Circuit
ASIC s Application Specific Integrated Circuits
CAD Computer-aided Design
CAE Computer Aided Tool
CLB Configurable Logic Block
CPU Central Processing Unit
CMOS Complementary Metal-Oxide-Semiconductor
CICC IEEE Custom Intergrated Circuits Conference)
CPLD Complex Programble Logic Device
CLB Configurable Logic Blocks
DCMs Digital clock Managers
EDA Electronic Design Automation
FPGA Field Programmable Gate Arrays
IOBs Input/Output Blocks IOBs
IEEE IEEE International ASIC conference
LUT Look-Up Table
LSI Large-scale integrated
MSI Medium-scale integrated
SSI Small-scale integrated
PLA Programable Logic Array
PLD Programmable Logic Device
RAM Random Access Memory
ROM Read-Only Memory
VHDL Very high speed Intergrated Circuit Hardware Description Language VLSI Very large-scale integrated
VHSIC Very High Speed Intergrated Circuit
Trang 7Danh mục hình vẽ
Hình 1.1 Kiến trúc một Full – Custom ASICs
Hình 1.2 Kiến trúc một Cell-Based ASIC
Hình 1.3 Kiến trúc một PLA
Hinh 1.4 Cấu trúc một macrocell
Hình 2.1 Cấu trúc tổng quát của FPGA
Hình 2.2 Cấu trúc của một CLB hãng Xilinx
Hình 2.10 Các loại kiến trúc FPGA
Hình 2.11 Kiến trúc tổng quát FPGA của Xilinx
Hình 3.1 Tóm tắt quy trình thiết kế với VHDL
Hinh 3.2 Sơ đồ tổng quát về bộ cộng đầy đủ
Hình 3.3 Các sơ đồ mạch có thể thực hiện bộ cộng đầy đủ
Hình 3.4 Các thành phần cơ bản của một đoạn mã VHDL
Hình 3.5 Các phần cơ bản của một Library
Hình 3.6 Sơ đồ máy trạng thái
Hình 4.1 Kit Xilinx Spartan-3E
Hình 4.2 Bộ tạo dao động trên Kit
Hình 4.3 Cấu trúc IOBs của SPARTAN - 3E
Hình 4.4 Vị trí CLB trong SPARTAN - 3E
Hình 4.5 Bộ nhân chuyên dụng trong SPARTAN - 3E
Trang 8Hình 4.6 Bộ quản lý xung trong SPARTAN - 3E
Hình 4.8 Sơ đồ khối cấu trúc vi điều khiển PicoBlaze
Hình 4.9 Sơ đồ cấu trúc vi điều khiển PicoBlaze
Hình 4.10 Kết quả mô phỏng ALU
Hình 4.12 Kết quả mô phỏng bộ cộng có nhớ 8 bit không dấu
Hình 4.13 Sơ đồ nguyên lý và đồ hình trạng thái của TLC
Hình 4.14 Kết quả mô phỏng TCL ở chế độ hoạt động bình thường
Hình 4.15 Kết quả mô phỏng TCL ở chế độ kiểm tra
Trang 9Lời mở đầu
Cùng với sự phát triển chung của khoa học kỹ thuật, việc tự động hóa thiết kế các mạch điện tử đóng vai trò quan trọng trong sự thúc đẩy sự phát triển của ngành công nghiệp sản xuất, chế tạo mạch điện tử Từ những năm 50 của thế kỷ trước quá trình phát triển của kỹ thuật điện tử đã trải qua nhiều giai đoạn: từ bóng đèn điện tử đến bóng bán dẫn, các vi mạch tích hợp vừa và nhỏ đến những vi mạch có độ tích hợp siêu lớn Ví dụ điển hình là các bộ vi xử lý Việc thiết kế những mạch có độ tích hợp lớn không thể thực hiện một cách thủ công mà phải có sự trợ giúp của máy tính
Công nghệ ASIC( Application Specific Integrated Circuit) đòi hỏi nhiều thời gian và chi phí cho nghiên cứu và thiết kế và chế tạo Một công nghệ mới ra đời với mục đích làm giảm thời gian, chi phí thiết kế và thử nghiệm các hệ thống số đó là công nghệ FPGA( Field Programmable Gate Array) Các sản phẩm FPGA và PLD(Complex Programmable Logic Devices) đang được nhiều công ty trên thế giới sản xuất dẫn đầu
là công ty Xilinx Sử dụng FPGA hay CPLD thì có thể tối thiểu hóa được nhiều công
đoạn thiết kế, lắp ráp vì hầu hết được thực hiện trên máy tính Các ngôn ngữ lập trình sử dụng trong thiết kế HDL( Hardware Description Languages) như VHDL, Verilog, ABEL, Schematic…cho phép thiết kế và mô phỏng hoạt động của mạch bằng chương trình Các chương trình mô phỏng cho phép xác định lỗi thiết kế một cách dễ dàng và kết quả thực hiện chương trình là một file bit cấu hình ( bitstream) để nạp vào FPGA và CPLD để nó hoạt động theo thiết kế
Hiện nay hệ thống nhúng đang được phát triển mạnh mẽ trên thế giới và bước
đầu đang phát triển tại Việt Nam với những ứng dụng rộng rãi trong công nghiệp và đời sống Theo các chuyên gia, ước tính hết năm 2010, doanh số của thị trường phần mềm cho hệ thống nhúng toàn cầu sẽ đạt cột mốc 6 tỷ đô-la Mỹ Điều dự báo nói trên, cùng với sự xuất hiện ngày càng nhiều các đối tác lớn trong lĩnh vực này tại Việt Nam, đã
mở ra một hướng đi mới cho thị trường phần mềm của chúng ta trong tương lai
Trang 10
Việt Nam cần phải đẩy mạnh hơn nữa vấn đề định hướng nghiên cứu và phát triển cho ngành hệ thống nhúng từ trong trường đại học, cao đẳng và các trung tâm nghiên cứu, cũng như trang bị được những kiến thức tổng quát về lĩnh vực này cho những sinh viên trẻ, đáp ứng được nhu cầu ngày càng cao của nhà tuyển dụng
Để đáp ứng được nhu cầu cung cấp nguồn nhân lực có chất lượng cao cho xã hội, hiện nay các trường đại học và cao đẳng đã và đang đưa vào giảng dạy các môn học về thiết kế hệ thống số Học tập môn học này tương đối khó và trừu tượng cần thiết phải có những modul thí nghiệm, hệ thống các bài tập thí nghiệm phù hợp đặc biệt là chương trình đào tạo Người học phải có kiến thức cơ bản tốt về kỹ thuật số, bổ sung kiến thức về phần cứng, về hệ thống nhúng, ngôn ngữ sử dụng trong thiết kế
Dưới sự hướng dẫn của thầy giáo - TS Nguyễn Nam Quân, trong khuôn khổ luận văn này em tìm hiểu và nghiên cứu về công nghệ FPGA của hãng Xilinx Trong luận văn của mình em sử dụng kit Xilinx Spartan 3E để thiết kế một số mạch đơn giản: thiết
kế ALU, bộ đếm hiển thị hai chữ số thập phân, điều khiển đèn giao thông Em cũng đã tìm hiểu về vi điều khiển PicoBlaze được nhúng trong Kit để ứng dụng thiết kế đồng hồ thời gian thực hiển thị LCD có thể điều chỉnh thay đổi giờ, phút, giây, ngày, tháng, năm Trên cơ sở đó có thể phát triển các hệ thống điều khiển theo thời gian thực khác Nội dung luận văn bao gồm 4 chương trong đó:
Chương 1: Giới thiệu tổng quan về asic lập trình được
Chương 2: Tìm hiểu công nghệ fpga của Xilinx
Chương 3: Tìm hiểu ngôn ngữ mô tả phần cứng vhdl
Chương 4: Thiết kế mạch điện tử trên kit Xilinx Spartan 3E
Do thời gian và khả năng có hạn nên luận văn có thể sẽ còn nhiều thiếu sót Rất mong được sự góp ý và thông cảm của các thầy cô giáo
Hà Nội ngày 25 tháng 10 năm 2010
Học viên
Nguyễn Văn Thi
Trang 11Chương 1 giới thiệu tổng quan về asic lập trình được
1.1 Tổng quan về công nghệ thiết kế vi mạch
Hiện nay có 3 xu hướng thiết kế IC căn bản là: thiết kế IC Analog, Digital và Mix-signal SoC
*Thiết kế analog:
Đây là một lĩnh vực rất phức tạp đòi hỏi người thiết kế phải có hiểu biết rất sâu
về các mức của linh kiện bán dẫn như cấu trúc vật lý, các tham số đặc trưng, layout…
*Thiết kế digital:
Về căn bản thiết kế digital vẫn có thể bắt đầu đi từ mức thấp nhất CMOS nhưng thông thường người thiết kế tập trung vào việc phân tích hệ thống ở mức RTL sau đó sử dụng các ngôn ngữ bậc cao như Verilog, VHDL , Stystem C để thiết kế chứ không cần quan tâm nhiều đến layout
* Thiết kế Mix-Signal:
Một hệ thống thường xuyên cần thiết sự tồn tại của cả hai khối analog và digital Việc thiết kế theo hướng SoC (System on Chip ) đang được phát triển Các chíp PsoC(Programable Sytem on Chip) đang được ưa chuộng bởi bởi khả năng cấu hình rất mềm dẻo so với các họ vi điều khiển MCS51,PIC, AVR,ARM…
1.2 Giới thiệu về công nghệ ASIC
Hiện nay vi mạch điện tử chuyên dụng có nhu cầu thị trường rất cao, chiếm khoảng 65% thị trường IC thế giới và trong những năm tới sẽ chiếm khoảng 85% ASIC (Application Specific IC) là vi mạch tích hợp ứng dụng chuyên biệt
* Full-Custom ASICs (Application specific IC):
Các khối logic (logic cells) được thiết kế sẵn (được định nghĩa trong thư viện cell), các lớp mặt nạ được tạo ra bởi người thiết kế Gồm hai loại: Standard-cell based
và Gate-array-based ASICs
* Các linh kiện logic lập trình được (Programmable logic devices):
Trang 12Tất cả các khối logic được thiết kế sẵn và không cần phải thiết kế lớp mặt nạ nào Gồm hai loại : PLD (Programmable Logic Device) và FPGA (Field Programmable Gate Array)
1.2.1 Full - Custom ASICs
Đối với mỗi một chíp ASIC người thiết kế phải thiết kế toàn bộ các khối logic, mạch điện và layout Full-custom ICs là loại đắt nhất để chế tạo và thiết kế, thời gian chế tạo một IC (không kể thời gian thiết kế) là 8 tuần
Dùng khi:
• Không có các khối logic có sẵn trong thư viện
• Các khối logic hiện có không đủ nhanh
• Các khối logic hiện có có kích thước lớn
• Các khối logic hiện có tiêu thụ công suất lớn
• Chíp ASIC cần thiết kế quá đặc biệt dẫn tới nhiều mạch phải được thiết
kế một cách tuỳ biến
Hỡnh 1.1: Kiến trỳc một Full – Custom ASICs
Trang 131.2.2 Semicustom ASICs
1.2.2.1 Cell-Based ASIC (CBIC)
Sử dụng các khối logic đ−ợc thiết kế sẵn (AND gates, OR gates, multiplexers, flip-flops, ) Vùng khối logic chuẩn bao gồm các hàng khối logic chuẩn Vùng khối logic chuẩn có thể kết hợp với các khối khác lớn hơn đ−ợc thiết kế sẵn nh− vi điều khiển, vi xử lý, các khối này đ−ợc gọi là megacell
• Thời gian chế tạo là 8 tuần
• Do các cell đ−ợc thiết kế độc lập nên giảm rủi ro, giá thành hạ
Trang 14* Đặc điểm
• Các cổng logic được nối với nhau bởi các lớp kết nối Việc kết nối giữa các cổng logic được thực hiện bởi mặt nạ do người thiết kế tạo ra
• Thời gian chế tạo từ vài ngày đến 2 tuần
• Giá thành rẻ hơn các loại ASIC khác
1.2.3 Các linh kiện logic lập trình được (Programmable logic devices)
Gồm hai loại : PLD (Programmable Logic Device) và FPGA (Field Programmable Gate Array).Việc phân biệt giữa hai loại ASIC này chưa được chuẩn hoá Sự khác nhau thực tế chỉ là sự kế thừa của chúng.Các PLD bắt đầu từ từ những thiết bị nhỏ dùng thay thế một phần họ IC TTL và chúng phát triển tương tự như FPGA, chỉ khác nhau về công nghệ chế tạo
*Đặc điểm:
• Logic cell và mask layer có sẵn (không theo yêu cầu của user)
• Interconnect lập trình được
• Ma trận cac macrocell bao gồm PAL+FF hoặc Latch
• Thời gian thiết kế hoàn chỉnh khá nhanh ( khoảng vài giờ)
• Field-programmable: PROM, EPROM, EEPROM, UVPROM
• Mask-programmable: Mask- programmable ROM (Masked ROM)
Field-programmable: Các kết nối dùng chuyển mạch lập trình được( ví dụ cầu chì,
CMOS transistor) nên hoạt động chậm hơn các kết nối cứng nhưng có ưu điểm là rẻ hơn khi sản xuất với số lượng ít và thời gian lập trinh nhanh
Mask-programmable: các kết nối bên trong thực hiện cứng nên khi sản xuất phải lập
trình mất vài tháng song giá thành giảm khi sản xuất số lượng lớn
1.2.3.1 PLD tổ hợp
• PROM
Trang 15
PROM được sử dụng với mục đích là thiết bị nhớ lưu trữ cố định các bít nhị phân Quá trình lập trình liên quan đến việc đốt cháy các cầu chì Có thể xem PROM là các mảng AND cố định và OR lập trình được
AND array
PAL có mảng các phần tử logic AND lập trình được và các mảng phần tử OR cố định Các mảng AND được lập trình cung cấp các minterms cho các chức năng logic sau đó chúng được tổng hợp lại trong mảng cổng OR
Hỡnh 1.3: Kiến trỳc một PLA
Trang 16• PLA
PLA có kết nối có thể lập trình đ−ợc cho cả hai mảng phần tử AND và OR Đây
là PLD linh hoạt nhất, nó khá giống PROM tuy nhiên nó không cung cấp đầy đủ giả mã của các biến đầu vào Bộ giải mã đ−ợc thay thế bằng các mảng các phần tử AND có thể lập trình đ−ợc để tạo ra các minterm theo yêu cầu Các minterm sau đó đ−ợc kết nối
có chọn lọc đến phần tử OR để cung cấp tổng cho chức năng logic mong muốn
Trang 17Hinh 1.4 Cấu trúc một macrocell
Phía bên trái là PLA, bên phải có một FF và các bộ dồn kênh hình thang Bộ dồn kênh MUX ES không thể hiện rõ đường lựa chọn của chúng khi bits làm việc Sự lựa chọn được lưu trong bộ nhớ và được thay đổi bởi sự lập trình bên trong các tế bào nhớ (netrnal nonvolatile memory cells ) FF có thể được cấu hình như loại D,T,transparent latch Clock có thể xảy ra(occur) theo sườn khác nhau(either edge) Set
có thể chọn từ GND,a product term set signal(PTA),a control term set(CTS),the global set/reset signal(GSR)
• CPLD
Khi sự phức tạp trong thiết kế phần cứng tăng lên việc chuyển sang sử dụng PLD VLSI
là một tất yếu, nó cho phép các hệ thống số chứa hàng ngàn cổng logic được thực hiện trong một IC duy nhất Các PLD VLSI đã mở rộng kháI niện của PLD lên mức cao hơn của sự tích hợp nhằm tăng khả năng hoạt động của hệ thống, sử dụng ít không gian bo mạch, tăng độ tin cậy và giảm được chi phí
Trang 18ThiÕt bÞ logic phøc hîp lËp tr×nh ®ưîc CPLD lµ mét s¶n phÈm cña PLD VLSI Nghiªn cøu mét chip CPLD ®iÓn h×nh lµ XC95108 dßng XC9500 cña h·ng Xilinx
XC95108 chøa 6 khèi chøc n¨ng cã thÓ cÊu h×nh ®ưîc(CFB: Configurable Function Block) mµ mçi CFB tư¬ng ®ư¬ng víi 18 macrocells víi 36 ®Çu vµo vµ 18 ®Çu
ra chóng håi tiÕp vÒ mét ma trËn kÕt nèi tæng thÓ( global interconnection matritx), Xilinx gäi lµ ma trËn chuyÓn m¹ch kÕt nèi nhanh(Fast Connect Switch Matrix) Mçi CFB nhËn 36 ®Çu vµo vµ håi tiÕp vÒ tõ 6x18=108 macrocells ®ưa vµo ma trËn chuyÓn m¹ch KÕt qu¶ lµ mét b¶n thiÕt kÕ cã tõng ch©n cña CPLD ®ưîc mét macrocells ®iÒu khiÓn thùc hiÖn mét hµm logic lín víi rÊt nhiÒu ®Çu vµo CPLD sö dông bé nhí kh«ng mÊt th«ng tin(Nonvolative Flash) dùa trªn c¸c phÇn tö nhí nªn cã thÓ lưu gi÷ chư¬ng tr×nh khi mÊt nguån
Trang 19Chương 2 tìm hiểu công nghệ fpga của xilinx
Đây là công nghệ tiên tiến đã được nghiên cứu nhiều và có ứng dụng rộng rãi trên thế giới Công nghệ FPGA (Field-Programmable Gate Array) đã xuất hiện như một giải pháp cơ bản cho vấn đề tranh thủ thời gian và chi phí ban đầu thấp Nó cho phép chế tạo ngay và giá thành sản phẩm thấp, tạo nên sức cạnh tranh lớn trên thị trường FPGA là một thiết bị cấu trúc logic có thể được người sử dụng lập trình trực tiếp
mà không phải sử dụng bất kỳ một công cụ chế tạo mạch tích hợp nào
2.1 Cấu trúc chung của FPGA hãng Xilinx
FPGA được công ty Xilinx giới thiệu đầu tiên vào năm 1985 Hiện nay FPGA
đã được nhiều công ty phát triển là Xilinx, AcTel, Altera, Plus Logic, AMD…
Giống như MPGA, một FPGA gồm một dãy các phần tử rời rạc có thể được kết nối với nhau theo một cách chung Và cũng giống như PLD, các kết nối giữa các phần
tử có thể lập trình được
Gồm một dãy 2 chiều các CLB(Configurable Logic Block) có thể được kết nối
Hình 2.1 Cấu trúc tổng quát của FPGA
Trang 20bằng các nguồn kết nối chung Các nguồn kết nối gồm các đoạn dây nối (segment) có thể có chiều dài khác nhau Bên trong các kết nối là các chuyển mạch lập trình
đ−ợc SM (Switching Matrix) dùng để nối các CLB với các đoạn dây hoặc các đoạn dây với nhau Mạch logic đ−ợc cài đặt trong FPGA bằng cách ánh xạ logic vào các logic block riêng lẻ và sau đó nối các logic block cần thiết qua các chuyển mạch
2.1.1 CLB(Configurable Logic Block)
CLB đ−ợc thiết kế theo nhiều cách khác nhau Một số khối logic có thể chỉ là các cổng NAND 2 đầu vào, tuy nhiên cũng có thể nó là một bộ dồn kênh (multiplexer) Trong một số loại FPGA các khối logic có thể có cấu trúc hoàn toàn giống nh− PAL Hầu hết các khối logic chứa một số loại flip-flop để hỗ trợ cho việc thực hiện các mạch tuần tự
Hình 2.2 Cấu trúc của một CLB hãng Xilinx
Trang 21Một CLB gồm 4 logic logic- cell, Logic cell gồm 2 LUT giống nhau, mỗi LUT gồm 4 đầu vào, tín hiệu điều khiển và FF-D Một CLB gồm hai bộ điều khiển đầu ra 3 trạng thái BUFT Mỗi BUFT có chân điều khiển đầu vào độc lập
Các chuyển mạch lập trình đ−ợc có thể có nhiều cấu tạo khác nhau nh− pass transistor đ−ợc điều khiển bởi cell SRAM, các cầu chì nghịch (anti-fuse), EPROM transistor và EEPROM transistor Giống nh− logic block có thể nhiều cách khác nhau để thiết kế các kiến trúc routing Một số FPGA cung cấp nhiều kết nối đơn giản giữa các logic block, một số khác cung cấp ít các kết nối hơn nên routing phức tạp hơn
Các loại kết nối:
Trang 222.1.3 IOB (Input/Output Blocks)
Tín hiệu vào qua 1 bộ đệm, tín hiệu ra qua bộ đệm 3 trạng thái, theo các chuẩn,
bộ nhớ giao tiếp BUS Mỗi IOB gồm 3 FF chung một tín hiệu clock và các tín hiệu CE(clock Enable) điều khiển độc lập cho từng FF
2.2 Các bước thiết kế với FPGA
Người thiết kế muốn tạo ra một FPGAs phải sử dụng hệ thống CAD (Computer-Aided-Design) Hình 2.5 thể hiện các bước trong hệ thống CAD tiêu biểu
để tạo ra một FPGA
Bước 1: Điểm bắt đầu cho quá trình thiết kế là mạch logic ban đầu cần thiết kế Bước
này đòi hỏi một sơ đồ biểu diễn mạch hay mô tả VHDL hoặc đặc tả các biểu thức Boolean Từ các tín hiệu vào ban đầu, mô tả mạch được chuyển thành dạng chuẩn như
là các biểu thức Boolean
Hình 2.4 Cấu trúc một IOB
Trang 23Bước 2: Các biểu thức Boolean sau đó được xử lý bằng công cụ tối ưu logic, chúng rút
gọn các biểu thức Mục đích là biến đổi các biểu thức này để tối ưu về diện tích hay tốc
độ cuả mạch cuối cùng Cả 2 yêu cầu về diện tích và tốc độ cùng có thể cùng đặt ra
Bước 3: Tiếp theo các biểu thức boolean đã tối ưu được truyền tới mạch logic block
cuả FPGA thông qua chương trình ánh xạ công nghệ (technology mapping) Bộ ánh xạ
cố gắng tối thiểu số khối được dùng, tức là tối ưu diện tích hoặc có thể được tối thiểu số lượng tầng logic block hoặc giảm đường dẫn tức là tối ưu về thời gian trễ
Bước 4: Khi ánh xạ mạch vào các logic block, cần phải quyết định đặt mỗi khối ở đâu
trong dãy FPGAs Chương trình Placement được sử dụng để giải quyết vấn đề này Các giải thuật placement đặc thù cố gắng tối thiểu tổng số độ dài các dây nối yêu cầu để tạo
ra kết quả
Bước 5: Bước tiếp theo trong hệ thống CAD được thực hiện bằng phần mềm routing,
chúng ấn định các đoạn dây FPGA và chọn các chuyển mạch có thể lập trình phù hợp với các kết nối trong logic block Phần mềm routing phải thực hiện 100% các kết nối
Hình 2.5 Hệ thống CAD tiêu biểu cho FPGAs
Trang 24yêu cầu nếu không thì mạch không thể thiết kế được trong một FPGA Hơn nữa cần phải routing sao cho trễ lan truyền tại các kết nối là tối thiểu
Bước 6: Sau khi thực hiện thành công các bước placement và routing, đầu ra
cuả hệ thống CAD được nạp vào đơn vị lập trình tạo ra chip FPGA cuối cùng Toàn bộ quá trình cài đặt mạch trong FPGA mất khoảng vài phút đến một giờ, phụ thuộc vào loại FPGA đang dùng
2.3 Các công nghệ lập trình FPGA
Thuật ngữ "chuyển mạch" để chỉ các phần tử lập trình (programming
element) cho phép các kết nối có thể lập trình được giữa các đoạn dây nối Có nhiều cách thực hiện các phần tử lập trình, các công nghệ lập trình hiện đang sử dụng là: RAM tĩnh, cầu chì nghịch (anti-fuse), EPROM transistor, và EEFPROM transistor Mặc dù các công nghệ lập trình này khác nhau, tất cả các phần tử lập trình đều có
chung tính chất là có thể cấu hình được ở một trong 2 trạng thái: ON hoặc OFF Các phần tử lập trình được dùng để thực hiện các kết nối lập trình được giữa các logic block cuả FPGA và một FPGA thông thường có thể hơn 100.000 phần tử lập trình Vì vậy, các phần tử lập trình phải có các tính chất sau:
• Chiếm càng ít diện tích của chip càng tốt
• Có kháng trở thấp khi ở trạng thái ON và trở kháng rất cao khi ở trạng thái OFF
• Có điện dung ký sinh thấp khi kết nối các đoạn dây
• Có thể chế tạo một cách tin cậy số lượng lớn phần tử lập trình trên một chip
Tùy thuộc vào ứng dụng FPGA, các phần tử lập trình có thể có các đặc tính khác nhau Ví dụ các phần tử lập trình không bay hơi hay có thể lập trình lại được Về mặt
chế tạo các phần tử lập trình nếu có thể chế tạo theo công nghệ CMOS chuẩn thì rất tốt 2.3.1 Công nghệ lập trình dùng RAM tĩnh
Công nghệ lập trình dùng SRAM được sử dụng trong các FPGA của nhiều công ty như: Algotronix, Concurrent Logic, Plessey semiconductors, Xilinx Trong các FPGA này các kết nối lập trình được làm bằng các transistor truyền (pass-transistor), các cổng cho phép truyền (pass-gates), hay các bộ dồn kênh (multiplexer),
Trang 25tất cả đều được điều khiển bằng các ô nhớ (cell) SRAM Cách dùng SRAM cell để
điều khiển các CMOS pass-transistor,cổng truyền đầy đủ hay bộ dồn kênh
Trong trường hợp pass-transistor và pass-gates ở hình trên, SRAM cell
điều khiển cổng truyền on hay off Khi off giữa 2 dây nối với pass gate sẽ có một trở kháng rất cao Khi on nó sẽ tạo ra một trở kháng thấp kết nối giữa 2 dây nối Đối với bộ dồn kênh, SRAM cell điều khiển ngõ nhập nào cuả multiplexer sẽ được kết nối với ngõ ra của nó Cách này thường dùng để kết nối tùy chọn từ một hay nhiều ngõ nhập của một khối logic
Trong các FPGA, sử dụng công nghệ lập trình SRAM, các logic-block có thể được kết nối với nhau qua cách kết hợp cả multiplexer và pass-gate Vì SRAM là bộ nhớ bay hơi, các FPGA này phải được tái cấu hình mỗi khi cấp nguồn cho chip Điều này có nghĩa là hệ thống sử dụng các chip này phải có một số cơ chế lưu trữ thường trực cho các bit cuả RAM cell, chẳng hạn Rom hay đĩa từ Các bit của RAM cell có thể được nạp vào FPGA một cách tuần tự hay định địa chỉ như một phần tử của mảng (theo cách thông thường của một RAM) Các chip được thực hiện theo công nghệ SRAM có diện tích khá lớn, bởi vì cần ít nhất transistor cho mỗi RAM cell cũng như các
Hình 2.6 Công nghệ lập trình dùng RAM tĩnh
Trang 26transistor cần thêm cho pass-gate hay multiplexer Ưu điểm chính của kỹ thuật này cho phép FPGA có thể được tái cấu hình ngay trên mạch rất nhanh và nó có thể được chế tạo bằng công nghệ CMOS chuẩn
2.3.2 Công nghệ lập trình dùng cầu chì nghịch(anti-fuse)
Công nghệ lập trình anti-fuse được sử dụng trong các FPGA của Actel Corp, QuickLogic và Cross Point Solution Anti-fuse được sử dụng trong các loại FPGA này có cấu tạo khác nhau, nhưng chức năng của chúng là như nhau Một anti-fuse bình thừơng sẽ ở trạng thái trở kháng cao, nhưng có thể bị "nóng chảy" thành trạng thái điện trở thấp khi được lập trình ở điện thế cao Dưới đây sẽ giới thiệu cấu tạo của các anti-fuse của Actel và QuickLogic
Anti- fuse của Actel được gọi là PLICE Nó có cấu trúc hình chữ nhật gồm 3 lớp: lớp dưới cùng chứa silic mang nhiều điện tích dương (n+diffusion), lớp giữa
là một lớp điện môi (oxinitơ oxi cách điện ) và lớp trên cùng là polysilic Anti fuse PLICE được lập trình bằng cách đặt một điện thế cao thích hợp(18V) giữa 2
-đầu của anti-fuse và dòng điều khiển khoảng 5 mA qua thiết bị Dòng và áp này tạo
ra một nhiệt lượng đủ nóng bên trong lớp điện môi làm nó nóng chảy và tạo ra một liên kết dẫn điện giữa poly silic và n+ diffusion Các transistor chịu được điện thế
Hình 2.7 Công nghệ lập trình cầu chì nghịch PLICE
Trang 27cao được chế tạo bên trong FPGA để đáp ứng cho dòng và điện áp đủ lớn Cả 2 lớp dưới cùng và trên cùng của anti-fuse được nối với các dây kim loại để khi được lập trình, anti-fuse sẽ tạo ra một kết nối có trở kháng thấp (300 đến 500 ohm) giữa 2 dây kim loại PLICE anti-fuse được chế tạo bằng cách thêm 3 mặt nạ đặc biệt vào quy trình chế tạo CMOS thông thường
Anti-fuse của QuickLogic được gọi là ViaLink Nó tương tự như PLICE, cũng có 3 lớp kim loại Tuy nhiên ViaLink sử dụng kim loại một cho lớp dưới cùng, một hợp kim silic vô định hình cho lớp giữa và kim loại mức 2 cho lớp trên cùng Khi ở trạng thái không được lập trình, anti-fuse có trở kháng hàng giga ohm, nhưng khi được lập trình, nó sẽ tạo ra một kết nối giữa 2 lớp kim loại có kháng trở khoảng 80 ohm Anti-fuse được chế tạo bằng cách thêm vào 3 mặt nạ đặc biệt trong quy trình chế tạo CMOS thông thường ViaLink Anti-fuse được lập trình bằng cách đặt một điện thế 10V giữa các đầu của nó Khi dòng được cấp đủ, trạng thái của silic vô định hình sẽ thay đổi và tạo ra một liên kết dẫn điện giữa 2 lớp kim loại Diện tích các chip sử dụng kỹ thuật anti-fuse rất nhỏ so với các công nghệ khác Tuy nhiên, bù lại cần phải có không gian lớn cho các transistor điện thế cao cần để giữ cho dòng và áp cao lúc lập trình Nhược điểm của anti-fuse là qui trình chế tạo chúng cần phải thay đổi so với quy trình chế tạo CMOS
Hình 2.8 Công nghệ lập trình cầu chì nghịch ViaLink
Trang 282.3.3 Công nghệ lập trình dùng EPROM và EEPROM
Công nghệ lập trình EPROM được sử dụng trong các FPGA của Altera Corp và Plus Logic Công nghệ này giống như sử dụng trong bộ nhớ EPROM Không giống MOS transistor đơn giản, một EPROM transistor gồm 2 cổng, một cổng treo (loating -gate) và một cổng chọn (select-gate) Cổng treo được đặt giữa cổng chọn và kênh của transistor, nó được gọi như thế vì nó không có kết nối điện đến bất kỳ mạch nào
ở trạng thái bình thường không được lập trình, không có điện tích giữa cổng treo và transistor có thể được chuyển sang trạng htái ON một cách bình thường bằng cổng chọn Khi transistor được lập trình bằng một dòng điện lớn chạy giữa nguồn và kênh, một điện tích được giữ lại ở cổng treo Điện tích này làm transistor chuyển sang trạng thái OFF Bằng cách này, EPROM transistor có thể có chức năng của một phần tử lập trình được Một EPROM transistor có thể được tái lập trình bằng cách hủy bỏ lớp điện tích được giữ lại ở cổng treo (phơi dưới ánh sáng cực tím sẽ kích hoạt các electron chuyển từ cổng vào chất nền của transistor)
EPROM transistor được sử dụng trong FPGA theo cách khác so với SRAM và anti-fuse Thay vì dùng cho lập trình kết nối 2 dây, EPROM transistor được sử dụng để "kéo xuống " các đầu vào của logic block Như hình vẽ một đường dây gọi
Hình 2.9 Công nghệ lập trình EPROM
Trang 29là "world line" (theo thuật ngữ bộ nhớ) được nối với cổng chọn của EPROM transistor Khi transistor chưa được lập trình ở trạng thái ON , "world line" có thể làm cho "bit line" không được nối với một đầu vào của logic block vì bị kéo về ở mức logic 0 Nhiều EPROM transistor ứng với nhiều world line khác nhau được nối với cùng một bit line, khi một điện trở kéo lên nguồn nối với bit line, mô hình này không những cho EPROM transistor thực hiện các kết nối mà còn thực hiện các chức năng logic AND nối dây (wired-AND) Nhược điểm của phương pháp này là các điện trở tiêu tốn năng lượng cố định
Một ưu điểm của EPROM transistor là chúng có thể tái lập trình mà không cần
bộ nhớ bên ngoài Tuy nhiên không giống SRAM, EPROM transistor không thể
được tái lập trình ngay trên board mạch (in-circuit)
Phương pháp dùng EPROM (được sử dụng trong các FPGA của Advanced Micro Devices - AMD) tương tự công nghệ EPROM, ngoại trừ EEPROM transistor tốn gấp đôi diện tích chip so với EPROM transistor và cần nhiều nguồn điện thế (để tái lập trình) mà các loại khác không cần
2.3.4 Tóm tắt các công nghệ lập trình cho FPGA
Công nghệ
lập trình
Tính bay hơi
Có thể lập trình
Diện tích chíp
R (Ohm) (pF) C
Trang 302.4 Một số loại FPGA trên thị trường
Các loại FPGA cuả nhiều công ty khác nhau có đặc tính riêng, tuy nhiên chúng có thể được chia thành 4 loại chính: cấu trúc mảng đối xứng (symmetrical array), cấu trúc hàng (row-based), cấu trúc PLD phân cấp (hierarchical PLD), và cấu trúc đa cổng (sea-of-gates)
Hình 2.10 Các loại kiến trúc FPGA
Trang 31C«ng ty KiÕn tróc tæng qu¸t KiÓu khèi logic C«ng nghÖ lËp tr×nh
Xilinx Symmetrical Array Lock-up table Static RAM
QuickLogic Symmetrical Array Multiplexer-based Anti-fuse
Algotronic Sea-of-gates Multiplexer&Based
Concurrent Sea-of-gates Multiplexer&Based gates Static RAM
Crosspoint Sea-of-gates Multiplexer&Based gates Anti-fuse
B¶ng 2.4.2 Mét sè lo¹i FPGA trªn thÞ tr−êng
H×nh 2.11 KiÕn tróc tæng qu¸t FPGA cña Xilinx
Trang 322.5 ứng dụng của FPGA
FPGA có thể sử dụng trong hầu hết các ứng dụng hiện đang dùng MPGA, PLD và các mạch tích hợp nhỏ (SSI)
• Các mạch tích hợp là ứng dụng đặc biệt (ASICs)
FPGA là một phương tiện tổng quát nhất để thực hiện các mạch logic số Chúng
đặc biệt thích hợp cho việc thực hiện các ASICs Một số ví dụ ứng dụng đã được công bố: FIFO một megabit, giao tiếp vi kênh IPM PS/2, bộ truyền /nhận dạng T1,
• Thiết kế mạch số tổ hợp
Mạch logic tổ hợp thường được thưc hiện bằng PAL Nếu tốc độ cuả mạch không
đòi hỏi khắt khe (các PAL nhanh hơn hầu hết các FPGA) thì mạch có thể được thực hiện bằng FPGA Hiện nay, FPGA có thể thực hiện một mạch cần từ 10 đến 20 PAL
• Thay thế các chip SSI cho mạch tổ hợp
Các mạch hiện tại trong các sản phẩm thương mại thường chứa nhiều chip SSI Trong nhiều trường hợp các chip SSI này có thể được thay thế bằng FPGA và kết quả là giảm diện tích cuả bo mạch
• Chế tạo mẫu
FPGA rất lý tưởng cho các ứng dụng tạo mẫu sản phẩm Giá thành thực hiện thấp và cần thời gian ngắn để thực hiện vật lý một thiết kế,cung cấp nhiều ưu điểm hơn so với các phương pháp truyền thống để chế tạo mẫu phần cứng Các bản mẫu ban đầu có thể
được thực hiện rất nhanh và những thay đổi sau đó được thực hiện dễ dàng và ít tốn kém
• Máy tính dựa trên FPGA
Một loại máy tính hoàn toàn mới có thể được chế tạo với các FPGA có thể tái lập trình ngay trên mạch FPGA Các máy này có một mạch chứa các FPGA với các chân
bo nối với các chip lân cận giống như thông thường ý tưởng là một chương trình phần mềm có thể được "biên dịch "(sử dụng kỹ thuật tổng hợp mức cao,mức logic và mức sơ
Trang 33đồ hoặc bằng tay) vào ngay phần cứng Phần cứng này sẽ được thực hiện bằng cách lập trình bo mạch FPGA
Phương pháp này có 2 ưu điểm chính:
+ Một là không cần quá trình lấy lệnh như các bộ vi xử lý truyền thống vì phần cứng
đã gộp cả các lệnh Kết quả là tốc độ có thể tăng lên hàng trăm lần
+ Hai là môi trường tính toán có thể được thực hiện song song mức cao, làm tăng tốc thêm nữa
• Tái cấu hình phần cứng trực tuyến
FPGA cho phép có thể thay đổi theo mong muốn cấu trúc của một máy đang hoạt động Một ví dụ là các thiết bị máy tính từ xa có thể được thay đổi trực tuyến để khắc phục sự cố hay có lỗi thiết kế Kiểu FPGA thích hợp nhất cho các ứng dụng này
là những FPGA có các chuyển mạch lập trình được.Tóm lại FPGAs có thể sử dụng
có hiệu quả trong nhiều ứng dụng thực tế
2.6 ưu nhược điểm của công nghệ FPGA
2.6.1 ưu điểm
• Thời gian thực hiện thiết kế nhanh
• Có thể thay đổi thiết kế dễ dàng
• Chi phí thấp
2.6.2 Nhược điểm
• Tốc độ thấp
• Chỉ hiệu quả trong thiết kế các mạch số
• Không thay thế được các linh kiện ASIC
Tuy nhiên hiện nay các nhược điểm này đang được khắc phục mạnh mẽ nhờ sự tiến
bộ về công nghệ do đó công nghệ FPGA đang và sẽ được sử dụng rộng rãi trong mọi lĩnh vực của đời sống
Trang 34
Chương 3 tìm hiểu ngôn ngữ mô tả phần cứng vhdl
3.1 Giới thiệu về VHDL
Hiện nay thuật ngữ thiết kế số (Digital Design) đã không còn xa lạ nữa Cùng với sự phát triển nhanh chóng của các loại thiết bị logic lâp trình được (FPLD: Field Programmable Logic Device), các ngôn ngữ lập trình cho các loại thiết bị đó được gọi
là ngôn ngữ mô tả phần cứng (HDL) cũng ngày càng xuất hiện nhiều như VHDL, Verilog HDL, ABEL HDL, State Machine Editor, Schematicditor… Đối với người thiết kế dùng công nghệ FPGA thì ngôn ngữ lập trình là khâu cơ bản, quyết định và tốn nhiều thời gian nhất Trong khuôn khổ luận văn tốt nghiệp này tôi chỉ đề cập đến ngôn ngữ mô tả phần cứng VHDL
VHDL là ngôn ngữ mô tả phần cứng cho các mạch tích hợp tốc độ rất cao, là một loại ngôn ngữ mô tả phần cứng được phát triển dùng cho trương trình VHSIC( Very High Speed Itergrated Circuit) của bộ quốc phòng Mỹ Mục tiêu của việc phát triển VHDL là có được một ngôn ngữ mô phỏng phần cứng tiêu chuẩn và thống nhất cho phép thử nghiệm các hệ thống số nhanh hơn cũng như cho phép dễ dàng đưa các hệ thống đó vào ứng dụng trong thực tế Ngôn ngữ VHDL được ba công ty Intermetics, IBM và Texas Instruments bắt đầu nghiên cứu phát triển vào tháng 7 năm 1983 Phiên bản đầu tiên được công bố vào tháng 8-1985 Sau đó VHDL được đề xuất để tổ chức IEEE xem xét thành một tiêu chuẩn chung Năm 1987 đã đưa ra tiêu chuẩn về VHDL( tiêu chuẩn IEEE-1076-1987)
VHDL được phát triển để giải quyết các khó khăn trong việc phát triển, thay đổi
và lập tài liệu cho các hệ thống số VHDL là một ngôn ngữ độc lập không gắn với bất
kỳ một phương pháp thiết kế, một bộ mô tả hay công nghệ phần cứng nào Người thiết
kế có thể tự do lựa chọn công nghệ, phương pháp thiết kế trong khi chỉ sử dụng một ngôn ngữ duy nhất Và khi đem so sánh với các ngôn ngữ mô phỏng phần cứng khác ta thấy VHDL có một số ưu điểm hơn hẳn là:
Trang 35- Thứ nhất là tính công cộng:
VHDL được phát triển dưới sự bảo trợ của chính phủ Mỹ và hiện nay là một tiêu chuẩn của IEEE VHDL được sự hỗ trợ của nhiều nhà sản xuất thiết bị cũng như nhiều nhà cung cấp công cụ thiết kế mô phỏng hệ thống
- Thứ hai là khả năng được hỗ trợ bởi nhiều công nghệ và nhiều phương pháp
thiết kế:
VHDL cho phép thiết kế bằng nhiều phương pháp ví dụ phương pháp thiết kế từ trên xuống, hay từ dưới lên dựa vào các thư viện sẵn có VHDL cũng hỗ trợ cho nhiều loại công cụ xây dựng mạch như sử dụng công nghệ đồng bộ hay không đồng bộ, sử dụng ma trận lập trình được hay sử dụng mảng ngẫu nhiên
- Thứ ba là tính độc lập với công nghệ:
VHDL hoàn toàn độc lập với công nghệ chế tạo phần cứng Một mô tả hệ thống dùng VHDL thiết kế ở mức cổng có thể được chuyển thành các bản tổng hợp mạch khác nhau tuỳ thuộc công nghệ chế tạo phần cứng mới ra đời nó có thể được áp dụng ngay cho các hệ thống đã thiết kế
- Thứ năm là khả năng trao đổi kết quả:
Vì VHDL là một tiêu chuẩn được chấp nhận, nên một mô hình VHDL có thể chạy trên mọi bộ mô tả đáp ứng được tiêu chuẩn VHDL Các kết quả mô tả hệ thống có thể được trao đổi giữa các nhà thiết kế sử dụng công cụ thiết kế khác nhau nhưng cùng tuân theo tiêu chuẩn VHDL Cũng như một nhóm thiết kế có thể trao đổi mô tả mức cao của các hệ thống con trong một hệ thống lớn (trong đó các hệ con đó được thiết kế
độc lập)
Trang 36
- Thứ sáu là khả năng hỗ trợ thiết kế mức lớn và khả năng sử dụng lại các thiết kế:
VHDL được phát triển như một ngôn ngữ lập trình bậc cao, vì vậy nó có thể
được sử dụng để thiết kế một hệ thống lớn với sự tham gia của một nhóm nhiều người Bên trong ngôn ngữ VHDL có nhiều tính năng hỗ trợ việc quản lý, thử nghiệm và chia
sẻ thiết kế Và nó cũng cho phép dùng lại các phần đã có sẵn
3.1.1 ứng dụng của ngôn ngữ VHDL
Hiện nay 2 ứng dụng chính và trực tiếp của VHDL là các ứng dụng trong các thiết bị logic có thể lập trình được (Programmable Logic Devices – PLD) (bao gồm các thiết bị logic phức tạp có thể lập trình được và các FPGA - Field Programmable Gate Arrays) và ứng dụng trong ASICs(Application Specific Integrated Circuits)
Khi chúng ta lập trình cho các thiết bị thì chúng ta chỉ cần viết mã VHDL một lần, sau đó ta có thể áp dụng cho các thiết bị khác nhau (như Altera, Xilinx, Atmel, ) hoặc có thể để chế tạo một con chip ASIC Hiện nay, có nhiều sản phẩm thương mại phức tạp (như các vi điều khiển) được thiết kế theo dựa trên ngôn ngữ VHDL
3.1.2 Quy trinh thiết kế với VHDL
Như đề cập ở trên, một trong số lớn các ứng dụng của VHDL là chế tạo các mạch hoặc hệ thống trong thiết bị có thể lập trình được (PLD hoặc FPGA) hoặc trong ASIC Việc chế tao ra vi mạch sẽ được chia thành 3 giai đoạn như sau:
- Giai đoạn 1:
Chúng ta bắt đầu thiết kế bằng viết mã VHDL Mã VHDL này sẽ được lưu vào file có đuôi là vhd và có tên cùng với tên thực thể Mã VHDL sẽ được mô tả ở tầng chuyển đổi thanh ghi
Trang 37Hình 3.1 Tóm tắt quy trình thiết kế với VHDL
- Giai đoạn 2: Giai đoạn chế tạo:
Bước đầu tiên trong quá trình chế tạo là biên dịch Quá trình biên dịch sẽ chuyển mã VHDL vào một netlist ở tầng cổng Bước thứ 2 của quá trình chế tạo là tối ưu Quá trình tối ưu được thực hiện trên netlist ở tầng cổng về tốc độ và phạm vi Trong giai
đoạn này, thiết kế có thể được mô phỏng để kiểm tra phát hiện những lỗi xảy ra trong quá trình chế tạo
- Giai đoạn 3:
Là giai đoạn ghép nối đóng gói phần mềm ở giai đoạn này sẽ tạo ra sự sắp xếp vật lý cho chip PLD/FPGA hoặc tạo ra mặt nạ cho ASIC
3.1.3 Công cụ EDA
Các công cụ phục vụ cho quá trình thiết kế vi mạch sẽ là:
- Công cụ Active – HDL: Tạo mã VHDL và mô phỏng
Trang 38- Công cụ EDA (Electronic Design Automation): là công cụ tự động thiết kế mạch điện tử Công cụ này được dùng để phục vụ cho việc chế tạo, thực thi và mô phỏng mạch sử dụng VHDL
- Công cụ cho đóng gói: Các công cụ này sẽ cho phép tổng hợp mã VHDL vào các chip CPLD/FPGA của Altera hoặc hệ ISE của Xilinx, for Xilinx’s CPLD/FPGA chips)
3.1.4 Chuyển mã VHDL vào mạch
Từ mã VHDL mạch vật lý được tạo ra Tuy nhiên có nhiều cách để thực hiện chương trình được miêu tả trong ARCHITECTURE OF, vì vậy mạch thực tế sẽ phụ thuộc vào bộ biên dịch, bộ tối ưu đang được sử dụng và đặc biệt phụ thuộc mục đích công nghệ Ví dụ xét một bộ cộng đầy đủ được mô tả trong hình dưới đây:
Hinh 3.2 Sơ đồ tổng quát về bộ cộng đầy đủ
Trong đó, a , b là các bit vào cho bộ cộng, cin là bit nhớ Đầu ra s là bit tổng, cout là bit nhớ ra
s = a ⊕ b ⊕ c Cout =a.b+a.Cin+b.Cin
Từ công thức tính s và cout ta viết đoạn mã VHDL như dưới đây:
Trang 40nếu mục đích công nghệ là ASIC, thì chúng ta có thể sử dụng hình (d) Hình d sử dụng công nghệ CMOS với các tầng transistor và các mặt nạ phủ
3.2 Cấu trúc mã VHDL
3.2.1 Các đơn vị VHDL cơ bản
Một đoạn Code chuẩn của VHDL gồm tối thiểu 3 mục sau:
• Khai báo LIBRARY: chứa một danh sách của tất cả các thư viện được sử dụng trong thiết kế Ví dụ: ieee, std, work…
• ENTITY: Mô tả các chân vào ra (I/O pins) của mạch
• ARCHITECTURE: chứa mã VHDL, mô tả mạch sẽ họat động như thế nào Một LIBRARY là một tập các đọan Code thường được sử dụng Việc có một thư viện như vậy cho phép chúng được tái sử dụng và được chia sẻ cho các ứng dụng khác Mã thường được viết theo các định dạng của FUNCTIONS, PROCEDURES, hoặc COMPONENTS, được thay thế bên trong PACKAGES và sau đó được dịch thành thư viện đích
3.2.2 Khai báo Library
Để khai báo Library, chúng ta cần hai dòng mã sau, dòng thứ nhất chứa tên thư
viện, dòng tiếp theo chứa một mệnh đề cần sử dụng:
LIBRARY library_name;
USE library_name.package_name.package_parts;
Thông thường có 3 gói, từ 3 thư viện khác nhau thường được sử dụng trong thiết kế:
• ieee.std_logic_1164 (from the ieee library)
• standard (from the std library)
• work (work library)