đặt vấn đề, 3 chƣơng, kết luận và tài liệu tham khảo. Chƣơng I: Tổng quan về công nghệ FPGA Chƣơng này trình bày tổng quan về công nghệ FPGA, các lĩnh vực ứng dụng của công nghệ này và các công cụ phát triển, hỗ trợ lập trình trên FPGA. Chƣơng II Một số kỹ thuật xử lý hình ảnh Chƣơng này trình bày các khái niệm cơ bản về hình ảnh, các loại nhiễu và giới thiệu một số phƣơng pháp xử lý hình ảnh, đánh giá hiệu quả của các phƣơng pháp xử lý dữ liệu hình ảnh. Chƣơng III Ứng dụng công nghệ FPGA xử lý dữ liệu đa phƣơng tiện dạng ảnh Thực hiện thiết kế lõi IP xử lý nâng cao chất lƣợng hình ảnh, cụ thể lõi IP sẽ xác định các điểm ảnh bị lỗi và sửa chúng, xác định màu bằng phƣơng pháp nội suy, sửa ma trận màu.
Phần kết luận của luận văn trình bày các kết quả đạt đƣợc và những hạn chế của luận văn, hƣớng phát triển của luận văn trong các nghiên cứu tiếp theo. LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 3 CHƢƠNG I: TổNG QUAN VỀ CÔNG NGHỆ FPGA 1. Lịch sử ra đời FPGA Năm 1984 Ross Freeman là ngƣời đầu tiên thiết kế PFGA và cũng là ngƣời sáng lập công ty Xilinx. Kiến trúc mới của FPGA cho phép tích hợp số lƣợng lớn các phần tử bán dẫn vào một vi mạch so với kiến trúc trƣớc đó là CPLD.
FPGA có khả năng chứa từ 100.000 đến vài tỷ cổng logic, trong khi CPLD chỉ chứa từ 10.000 cổng logic, con số này đối với PAL vá PLA còn thấp hơn rất nhiều chỉ đạt vài nghìn đến 10. SPLD thƣờng là một mảng logic AND/OR lập trình đƣợc có kích thƣớc xác định và chứa một số lƣợng hạn chế các phần tử nhớ đồng bộ (clocked register). Cấu trúc này hạn chế khả năng thực hiện những hàm phức tạp và thông thƣờng hiệu xuất làm việc của vi mạch phụ thuộc vào cấu trúc cụ thể của vi mạch hơn là vào yêu cầu bài toán. Kiến trúc của FPGA là kiến trúc mảng các khối logic, khối logic nhỏ hơn nhiều nếu đem so sánh với một khối SPLD, ƣu điểm này giúp FPGA có thể chứa nhiều hơn các phần tử logic và phát huy tối đa khả năng lập trình của các phần tử logic và hệ thống mạch kết nối, để đạt đƣợc mục đích này thì kiến trúc của FPGA phức tạp hơn nhiều so với CPLD.
Một điểm khác biệt với CPLD là trong những FPGA hiện đại đƣợc tích hợp nhiều những bộ logic số học đã sơ bộ tối ƣu hóa hỗ trợ RAM, ROM tốc độ cao, hay các bộ nhân. Ngoài khả năng tái cấu trúc vi mạch toàn cục, FPGA hiện tại còn hỗ trợ tái cấu trúc một bộ phận riêng lẻ trong khi vẫn đảm bảo hoạt động bình thƣờng cho các bộ phận khác. Sự phát triển của FPGA Các thiết bị lập trình đƣợc, gọi chung là các thiết bị khả trình, có vai trò rất quan trọng trong thiết kế phần cứng số. Chúng là các chíp đa dụng có thể đƣợc cấu hình theo nhiều cách cho nhiều ứng dụng khác nhau.
LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 4 + Loại đầu tiên của thiết bị khả trình đƣợc sử dụng rộng rãi là Programmable read-only Memory-PROM. PROM là thiết bị lập trình chỉ đƣợc một lần gồm một dãy các ô nhớ chỉ đọc. PROM có thể thực hiện bất kỳ một hàm logic theo bảng sự thật nào đó, bằng cách sử dụng các đƣờng địa chỉ nhƣ các ngõ nhập vào và ngõ xuất đựơc xác định nội dung các bít nhớ. Có hai loại PROM cơ bản là Mask-Programmable và Field-Programmable.
- Mask-Programmable là loại thiết bị đƣợc lập trình bởi nhà sản xuất. Các chíp này thƣờng sản xuất các chíp lôgíc tốc độ cao vì các kết nối bên trong thiết bị đƣợc thực hiện bằng phần cứng ngay từ khi sản xuất. - Field-Programmable là thiết bị đƣợc lập trình bởi ngƣời dùng. Các kết nối bên trong của Field-Programmable luôn cần đến một số chuyển mạch lập trình đƣợc (cầu chì, transistor truyền…) vì vậy tốc độ truyền chậm hơn của thiết bị nối cứng ( Mask-Programmable).
Tuy nhiên nó có nhiều ƣu điểm nhƣ:. Các chíp Field-Programmable có thể lập trình trong thời gian ngắn (khoảng vài phút hay vài giờ đồng hồ) còn các chíp Mask-Programmable khi sản xuất phải thực hiện trong thời gian dài (hàng tuần hay hàng tháng). Các chíp Field-Programmable rẻ hơn nhiều so với Mask- Programmable khi sản xuất với số lƣợng nhỏ. Hai biến thể của PROM là EPROM chúng đều có chung ƣu điểm là có khả năng xoá và lập trình lại nhiều lần.
Tiếp đến là các thiết bị PLD, chúng thông thƣờng có cấu tạo gồm một dãy các cổng AND đƣợc nối với một dãy các cổng OR. Loại cơ bản của PLD là PAL, PAL gồm một khối các cổng AND lập trình đƣợc nối đến các khối cổng OR cố định. Một loại nữa của PLD linh hoạt hơn PAL là PLA. PLA cũng có cấu trúc giống PAL nhƣng các kết nối khả trình.
Trong PLA cũng có hai loại là Mask-Programmable và Field-Programmable. Cả hai loại PLD trên cho phép thực hiện các mạch logic có tốc độ cao tuy nhiên cấu trúc đơn giản của chúng chỉ cho phép thực hiện đƣợc các mạch logic cỡ nhỏ. LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 5 Loại thiết bị khả trình tổng quát nhất gồm dãy các phần tử rời rạc có thể kết nối với nhau theo mô tả của ngƣời sử dụng, đƣợc gọi là Mask-Programmable Gate Array (MPGA) chúng có cấu trúc cơ bản nhất là gồm các hàng transistor có thể đƣợc kết nối với nhau để thực hiện các mạch logic. Các kết nối do ngƣời dùng định nghĩa này có thể trong cả hàng và cả cột.
Ƣu điểm chính của MPGA so với PLD là nó cung cấp các kiến trúc tổng quát cho phép thực hiện các mạch logic lớn hơn. Vì cấu trúc của chúng có thể mở rộng lớn hơn cùng với số lƣợng logic lớn hơn. FPGA đã kết hợp khả năng lập trình của PLD và kết cấu nối có thể mở rộng của MPGA. Do đó các thiết bị lập trình loại này có mật độ logíc cao hơn.
FPGA đƣợc công ty Xilinx giới thiệu lần đầu tiên vào năm 1985 và đến nay đã có nhiều công ty phát triển nhƣ: Actel, Altera, Plessey, Plus logic, Quick. Cấu trúc FPGA Hình 1-1. Cấu trúc FPGA LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 6 FPGA là mạch tích hợp chứa nhiều (64 đến hơn 10.000) ô logic (logic cell) giống nhau có thể xem là các thành phần chuẩn. Mỗi ô logic giữ một hay một số chức năng độc lập (Hình 1-1).
Các ô giống nhau đƣợc kết nối bởi một ma trận đƣờng dẫn và các chuyển mạch khả trình. Ngƣời thực hiện thiết kế bằng các đặc trƣng lôgic đơn của mỗi ô và lựa chọn đóng các chuyển mạch trong ma trận kết nối. Mảng của các ô lôgic và kiểu kết nối là kết cấu xây dựng khối cơ bản trong mạch lôgic. Các thiết kế phức tạp đƣợc tạo ra bằng cách kết hợp các khối cơ bản để tạo ra các mạch đƣợc mô tả.
Mô hình tổng quát của FPGA gồm một dãy hai chiều các khối lôgic (logic block) có thể đƣợc kết nối bằng các nguồn kết nối chung. Các nguồn kết nối gồm các đoạn kết 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 dùng để nối các khối lôgic với các đoạn dây, các khối vào/ra hay các đoạn dây với nhau. Mạch lôgic cài đặt trong FPGA bằng cách ánh xạ lôgic vào các khối lôgic riêng rẽ và sau đó nối các khối lôgic cấu hình (Configurable logic Block) cần thiết qua các chuyển mạch.
Các khối CLB cung cấp các phần tử chức năng với cấu trúc sử dụng logic. Các khối vào/ra (I/O Block) cung cấp giao diện giữa các gói chân và các đƣờng tín hiệu bên trong. Tài nguyên kết nối khả trình cung cấp các bộ phận truyền dẫn tới kết nối đầu vào và đầu ra của các CLB và các IOB trong mạng riêng. Vậy cấu trúc FPGA gồm ba phần tử chính: Các khối lôgic cấu hình (CLB), các khối vào/ra (IOB) và các kết nối.
Các khối lôgic cấu hình: Cấu trúc và nội dung của logic block đƣợc gọi theo kiến trúc của nó. Kiến trúc của khối lôgic có thể thiết kế theo nhiều cách khác nhau, có thể là các cổng AND 2 ngõ nhập, các bộ dồn kênh (Multiplexer) hay các bảng tìm kiếm (Lock- up Table). Ngoài ra có thể chứa các Flip-Flop để hỗ trợ cho việc thực hiện một cách tuần tự. Các nguồn kết nối : Các nguồn kết nối có cấu trúc và nội dung đƣợc gọi là kiến trúc đƣờng LUAN VAN CHAT LUONG download : add luanvanchat@agmail.
Kiến trúc Routing gồm các đoạn đây nối và các chuyển mạch khả trình. Các chuyển mạch khả trình có cấu tạo khác nhau nhƣ pass- transistor, đƣợc điều khiển bởi các cell SRAM, các phần tử cầu chì nghịch, EPROM transistor và EEROM transitor. Giống nhƣ các khối lôgic có nhiều cách khác nhau để thiết kế các kiến trúc routing. Một số FPGA cung cấp nhiều kết nối đơn giản giữa các khối logic, một số khác cung cấp ít kết nối hơn nên routing phức tạp hơn.
Phân loại FPGA FPGA có nhiều loại khác nhau có cấu trúc và đặc tính riêng tuỳ theo từng hãng sản xuất, tuy nhiên chúng có bốn loại chính sau: cấu trúc mảng đối xứng (Symmetrical Array), cấu trúc PLD phân cấp (hierachircal PLD), cấu trúc hàng (Row base) và cấu trúc đa cổng (Sea of Gate) mô tả dƣới đây.2 Các loại cấu trúc FPGA LUAN VAN CHAT LUONG download : add luanvanchat@agmail. Các công nghệ lập trình FPGA 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à EEROM transistor. Mặc dù công nghệ lập trình 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 trong một trong hai 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 khối lôgic của các FPGA, còn 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ó những tính chất sau: - Chiếm càng ít diện tích của chíp càng tốt. - Có trở kháng thấp khi ở trạng thái ON và trở kháng 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 chíp.
Có thể tuỳ thuộc vào ứng dụng cụ thể và có các số lƣợng phần tử lập trình có thể có các đặc tính khác.