TÔNG QUAN VỀ CÔNG NGHỆ FPGA
Lịch sử ra đời FPGA
Năm 1984, Ross Freeman đã thiết kế PFGA và sáng lập công ty Xilinx, đánh dấu bước ngoặt trong công nghệ FPGA Kiến trúc FPGA mới cho phép tích hợp hàng triệu phần tử bán dẫn vào một vi mạch, vượt trội hơn so với CPLD, vốn chỉ chứa từ 10.000 đến 100.000 cổng logic Trong khi đó, FPGA có khả năng chứa từ 100.000 đến vài tỷ cổng logic, cho thấy sự tiến bộ vượt bậc so với các công nghệ cũ như PAL và PLA, chỉ đạt vài nghìn đến 10.000 cổng logic.
SPLD là một mảng logic AND/OR có thể lập trình với kích thước xác định, bao gồm một số lượng giới hạn các phần tử nhớ đồng bộ Cấu trúc này hạn chế khả năng thực hiện các hàm phức tạp, và hiệu suất làm việc của vi mạch thường phụ thuộc vào cấu trúc cụ thể của nó hơn là vào yêu cầu của bài toán.
Kiến trúc FPGA được thiết kế với các khối logic nhỏ hơn nhiều so với SPLD, cho phép chứa nhiều phần tử logic hơn và tối ưu hóa khả năng lập trình Điều này khiến kiến trúc FPGA phức tạp hơn CPLD Ngoài ra, các FPGA hiện đại còn tích hợp nhiều bộ logic số học đã được tối ưu hóa, hỗ trợ RAM, ROM tốc độ cao và các bộ nhân, nâng cao hiệu suất và khả năng xử lý.
FPGA không chỉ cho phép tái cấu trúc vi mạch toàn cục mà còn hỗ trợ tái cấu trúc các bộ phận riêng lẻ, đồng thời đảm bảo các bộ phận khác vẫn hoạt động bình thường.
Sự phát triển của FPGA
Các thiết bị lập trình được, hay còn gọi là thiết bị khả trình, đóng vai trò quan trọng trong thiết kế phần cứng số Chúng là các chip đa dụng có khả năng cấu hình linh hoạt cho nhiều ứng dụng khác nhau.
Thiết bị khả trình đầu tiên được sử dụng phổ biến là Bộ nhớ chỉ đọc có thể lập trình (PROM) PROM là thiết bị lập trình một lần, bao gồm một dãy ô nhớ chỉ đọc, có khả năng thực hiện bất kỳ hàm logic nào theo bảng sự thật thông qua các đường địa chỉ như ngõ vào và xác định nội dung các bít nhớ Hai loại PROM cơ bản là PROM lập trình bằng mặt nạ (Mask-Programmable) và PROM lập trình tại chỗ (Field-Programmable).
Mask-Programmable là thiết bị được lập trình bởi nhà sản xuất, thường được sử dụng để sản xuất các chip logic tốc độ cao Các kết nối bên trong thiết bị này được thực hiện bằng phần cứng ngay từ giai đoạn sản xuất.
Field-Programmable là thiết bị cho phép người dùng lập trình, với các kết nối bên trong cần sử dụng chuyển mạch lập trình được như cầu chì và transistor truyền Mặc dù tốc độ truyền của nó chậm hơn so với thiết bị nối cứng (Mask-Programmable), Field-Programmable vẫn mang lại nhiều ưu điểm nổi bật.
Chíp Field-Programmable có khả năng lập trình nhanh chóng, chỉ mất vài phút đến vài giờ, trong khi chíp Mask-Programmable yêu cầu thời gian sản xuất lâu hơn, thường từ vài tuần đến vài 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
Thiết bị PLD (Programmable Logic Device) thường bao gồm một dãy các cổng AND kết nối với một dãy các cổng OR Loại cơ bản của PLD là PAL (Programmable Array Logic), trong đó có một khối các cổng AND có thể lập trình được, được nối đến các khối cổng OR.
PLA là một loại mạch logic lập trình được sử dụng trong thiết kế điện tử, có cấu trúc tương tự như PAL nhưng linh hoạt hơn nhờ vào khả năng kết nối có thể lập trình PLA được chia thành hai loại chính: Mask-Programmable và Field-Programmable, cho phép tùy chỉnh các kết nối để đáp ứng nhu cầu cụ thể trong các ứng dụng khác nhau.
Cả hai loại PLD đều hỗ trợ việc xây dựng các mạch logic tốc độ cao, nhưng do cấu trúc đơn giản, chúng chỉ có khả năng thực hiện các mạch logic cỡ nhỏ.
Thiết bị khả trình tổng quát nhất là Mask-Programmable Gate Array (MPGA), bao gồm dãy các phần tử rời rạc có thể kết nối theo mô tả của người sử dụng MPGA có cấu trúc cơ bản là các hàng transistor có khả năng kết nối để thực hiện các mạch logic, với các kết nối do người dùng định nghĩa cả trong hàng và cột Ưu điểm chính của MPGA so với PLD là khả năng cung cấp kiến trúc tổng quát cho phép thực hiện các mạch logic lớn hơn, nhờ vào cấu trúc có thể mở rộng và số lượng logic lớn hơn.
FPGA kết hợp khả năng lập trình của PLD với cấu trúc kết nối mở rộng của MPGA, mang lại mật độ logic cao hơn Được giới thiệu lần đầu bởi công ty Xilinx vào năm 1985, FPGA đã trở thành sản phẩm phổ biến với sự phát triển từ nhiều công ty khác như Actel, Altera, Plessey, Plus Logic và Quick.
FPGA (Field-Programmable Gate Array) là mạch tích hợp với từ 64 đến hơn 10.000 ô logic giống nhau, hoạt động như các thành phần chuẩn Mỗi ô logic thực hiện một hoặc nhiều chức năng độc lập và được kết nối qua một ma trận đường dẫn cùng với các chuyển mạch khả trình Người thiết kế sử dụng đặc trưng lôgic của từng ô và lựa chọn kết nối các chuyển mạch trong ma trận Cấu trúc này tạo thành khối cơ bản của mạch lôgic, cho phép phát triển các thiết kế phức tạp bằng cách kết hợp nhiều khối cơ bản để hình thành các mạch mô tả.
Mô hình tổng quát của FPGA bao gồm dãy hai chiều các khối lôgic (logic block) được kết nối qua các nguồn kết nối chung Các nguồn kết nối này gồm các đoạn kết nối (segment) với chiều dài khác nhau, bên trong có các chuyển mạch lập trình để nối các khối lôgic với dây, khối vào/ra và các đoạn dây khác Mạch lôgic trong FPGA được cài đặt bằng cách ánh xạ lôgic vào các khối lôgic riêng biệt và kết nối các khối lôgic cấu hình (Configurable Logic Block) qua các chuyển mạch Các khối CLB cung cấp các phần tử chức năng dựa trên cấu trúc logic, trong khi các khối vào/ra (I/O Block) tạo giao diện giữa các chân kết nối và đườ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à 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 a Các khối lôgic cấu hình:
Cấu trúc và nội dung của khối lôgic được xác định theo kiến trúc của nó, có thể thiết kế theo nhiều cách khác nhau như sử dụng cổng AND với 2 ngõ nhập, bộ dồn kênh (Multiplexer) hoặc bảng tìm kiếm (Lock-up Table) Bên cạnh đó, khối lôgic còn có thể bao gồm các Flip-Flop để hỗ trợ thực hiện các tác vụ một cách tuần tự.
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
Kiến trúc Routing bao gồm các đoạn dây nối và các chuyển mạch khả trình, với cấu tạo đa dạng như pass-transistor, được điều khiển bởi các cell SRAM, phần tử cầu chì nghịch, EPROM transistor và EEROM transistor Tương tự như các khối logic, có nhiều phương pháp thiết kế khác nhau cho kiến trúc routing Một số FPGA cung cấp kết nối đơn giản giữa các khối logic, trong khi một số khác lại có ít kết nối hơn, dẫn đến việc routing trở nên phức tạp hơn.
FPGA có nhiều loại khác nhau với cấu trúc và đặc tính riêng tùy theo từng hãng sản xuất Tuy nhiên, có bốn loại chính của FPGA, bao gồm cấu trúc mảng đối xứng (Symmetrical Array), cấu trúc PLD phân cấp (Hierarchical PLD), và cấu trúc hàng.
(Row base) và cấu trúc đa cổng (Sea of Gate) mô tả dưới đây
Hình 1.2 Các loại cấu trúc FPGA
1.2.3 Các công nghệ lập trình FPGA
Các lĩnh vực ứng dụng của công nghệ FPGA
FPGA là thế hệ tiếp theo của IC khả trình, cho phép ứng dụng rộng rãi trong nhiều lĩnh vực hiện đang sử dụng MPGA, PLD và các mạch tích hợp loại nhỏ (SSI) Các mạch tích hợp này được thiết kế cho các ứng dụng đặc biệt, mang lại hiệu suất cao và linh hoạt trong việc tùy chỉnh.
FPGA là thiết bị linh hoạt nhất để thực hiện các mạch lôgic số, đặc biệt phù hợp cho các ứng dụng mạch tích hợp chuyên dụng (ASIC) như bộ cộng và bộ điều khiển lôgic Flip-Flop Thiết kế mạch ngẫu nhiên với FPGA mang lại hiệu suất cao và khả năng tùy biến linh hoạt.
Mạch lôgic ngẫu nhiên thường được thực hiện bằng cách sử dụng PAL, tuy nhiên, nếu yêu cầu về tốc độ không quá khắt khe, FPGA có thể là một lựa chọn phù hợp vì chúng nhanh hơn hầu hết các PAL Hiện nay, một FPGA cần khoảng từ 10 đến 20 PAL để thực hiện các chức năng cần thiết, điều này cho thấy sự thay thế các chíp SSI bằng mạch ngẫu nhiên là khả thi và hiệu quả.
Các sản phẩm thương mại thường sử dụng nhiều chip SSI trong các mạch hiện tại Tuy nhiên, việc thay thế chip SSI bằng FPGA có thể giúp giảm diện tích bo mạch hiệu quả Chế tạo mẫu là một bước quan trọng trong quá trình này.
FPGA là giải pháp lý tưởng cho việc tạo mẫu sản phẩm nhờ vào chi phí thấp và thời gian thiết kế ngắn So với các phương pháp truyền thống, FPGA mang lại nhiều ưu điểm trong việc chế tạo mẫu phần cứng Việc phát triển các mẫu ban đầu diễn ra nhanh chóng, và các thay đổi sau đó có thể thực hiện dễ dàng và tiết kiệm chi phí Máy tính dựa trên FPGA cũng góp phần nâng cao hiệu quả trong quy trình thiết kế.
Một loại máy tính dựa trên FPGA cho phép tái lập trình trực tiếp trên FPGA, với bo mạch chứa các FPGA được kết nối với các chip lân cận Ý tưởng là phần mềm có thể được "biên dịch" vào phần cứng thông qua kỹ thuật tổng hợp ở nhiều mức khác nhau Phương pháp này mang lại hai ưu điểm chính: đầu tiên, không cần quá trình lấy lệnh như các bộ xử lý truyền thống, giúp tăng tốc độ lên hàng trăm lần; thứ hai, môi trường tính toán có khả năng thực hiện song song ở mức cao, từ đó tăng cường hiệu suất tính toán.
FPGA cho phép điều chỉnh cấu trúc của máy đang hoạt động theo nhu cầu Ví dụ, các thiết bị máy tính từ xa có thể được thay đổi trực tiếp để khắc phục sự cố hoặc lỗi thiết kế FPGA với các chuyển mạch lập trình được là loại phù hợp nhất cho các ứng dụng này.
Qui trình thiết kế FPGA
Quy trình thiết kế tổng quát trên FPGA được trình bày trong sơ đồ dưới đây [1,19]:
Hình 1-7 Sơ đồ quy trình thiết kế FPGA
Mô tả thiết kế (Design specification)
Trong giai đoạn này, kiến trúc sư sẽ phát triển tổng thể kiến trúc dựa trên các yêu cầu thiết kế và khả năng của công nghệ hiện tại Điều này có nghĩa là họ cần phải mô phỏng và hình dung toàn bộ cấu trúc thiết kế một cách chi tiết và sáng tạo.
- Thiết kế có những khối nào?
- Mỗi khối có chức năng gì?
- Hoạt động của thiết kế và của mỗi khối ra sao ?
- Phân tích các kỹ thuật sử dụng trong thiết kế và các công cụ, phần mềm hỗ trợ thiết kế
Một thiết kế có thể được mô tả bằng ngôn ngữ mô tả phần cứng như VHDL hoặc Verilog HDL, hoặc thông qua bản vẽ mạch (schematic capture) Thiết kế này có thể bao gồm cả bản vẽ mạch để thể hiện sơ đồ khối tổng quát và sử dụng ngôn ngữ HDL để mô tả chi tiết các khối trong sơ đồ.
Mô phỏng chức năng (Function simulation):
Sau khi hoàn thiện mô tả thiết kế, nhà thiết kế cần tiến hành mô phỏng tổng thể để kiểm tra xem thiết kế có hoạt động đúng với các chức năng yêu cầu hay không.
Tổng hợp logic (Logic Synthesis)
Tổng hợp logic là quá trình chuyển đổi các mô tả thiết kế thành sơ đồ bố trí mạch (netlist) thông qua hai bước chính Bước đầu tiên là chuyển đổi mã RTL và mã HDL thành các biểu thức đại số Boolean Tiếp theo, dựa trên các biểu thức này, kết hợp với thư viện tế bào chuẩn sẵn có để tạo ra một thiết kế tối ưu.
Hiệu chỉnh các kết nối (Datapath Schematic)
Nhập netlist và ràng buộc thời gian vào công cụ phân tích thời gian để tách rời các kết nối thiết kế và tính toán độ trễ Dựa trên báo cáo từ công cụ, xác định các kết nối không thỏa mãn yêu cầu về thời gian Tùy thuộc vào nguyên nhân, có thể điều chỉnh mã nguồn hoặc cập nhật ràng buộc để cải thiện kết quả.
Chúng tôi đã hoàn thiện sơ đồ bố trí netlist, mô tả tổng thể thiết kế ở mức cổng, bao gồm các cổng logic cơ bản và các mạch logic như MUX Quá trình này sẽ được thực hiện trên chip, được gọi là quá trình thực thi (Device Implementation).
Quá trình thiết kế FPGA bao gồm các bước quan trọng như ánh xạ (mapping) để chuẩn bị dữ liệu đầu vào và xác định kích thước các khối Những khối này cần phải phù hợp với cấu trúc tế bào cơ bản của FPGA, bao gồm nhiều cổng logic, và được đặt ở vị trí tối ưu để thuận lợi cho việc chạy dây Bước tiếp theo là đặt khối và định tuyến (Place & Route) để hoàn thiện thiết kế.
+ Đặt khối: đặt các khối ánh xạ vào các tế bào (cell) ở vị trí tối ƣu cho việc chạy dây
Định tuyến là bước quan trọng trong việc nối dây các tế bào, yêu cầu thông tin vật lý về thư viện tế bào như kích thước, điểm kết nối, định thời và các trở ngại Một netlist tổng hợp sẽ chi tiết hóa các instance và mối quan hệ kết nối, bao gồm cả các đường dẫn bị hạn chế trong thiết kế Ngoài ra, cần tuân thủ các yêu cầu của tiến trình cho các lớp kết nối, bao gồm luật thiết kế, trở kháng, điện dung, tiêu thụ năng lượng và dẫn điện trong mỗi lớp.
Quá trình Nạp (download) và lập trình (program)
- Sau quá trình thực hiện, thiết kế cần được nạp vào FPGA dưới dạng dòng bit (bit stream)
Quá trình nạp thiết kế vào FPGA thường sử dụng bộ nhớ bay hơi như SRAM để lưu trữ thông tin cấu hình Dòng bit được truyền trong quá trình này chứa định nghĩa các khối logic và kết nối của thiết kế Tuy nhiên, cần lưu ý rằng SRAM sẽ mất dữ liệu khi mất nguồn, do đó thiết kế không thể được lưu giữ cho phiên làm việc tiếp theo.
Lập trình là quá trình nạp chương trình vào các bộ nhớ không bay hơi như PROM, giúp lưu trữ thông tin cấu hình ngay cả khi mất nguồn.
Ngôn ngữ lập trình trong FPGA
Có nhiều ngôn ngữ lập trình cho FPGA như VHDL, Verilog và C, mỗi ngôn ngữ đều có những ưu điểm và nhược điểm riêng Verilog, được phát triển chủ yếu ở Mỹ, gần gũi với ngôn ngữ C, giúp người đã quen với C dễ dàng tiếp cận Ngược lại, VHDL phổ biến hơn ở châu Âu, mang lại cho người sử dụng cái nhìn sâu sắc về phần cứng.
VHDL (VHSIC Hardware Description Language) là ngôn ngữ mô tả phần cứng được phát triển cho chương trình VHSIC của Bộ Quốc phòng Mỹ, nhằm tạo ra một ngôn ngữ tiêu chuẩn cho việc mô phỏng và thử nghiệm các hệ thống số tốc độ cao Được nghiên cứu và phát triển bởi ba công ty IBM, Intermetics và Texas Instruments từ tháng 7 năm 1983, phiên bản đầu tiên của VHDL được công bố vào tháng 8 năm 1985 VHDL sau đó đã được đề xuất cho tổ chức IEEE để xem xét và chính thức trở thành tiêu chuẩn IEEE-1076-1987 vào năm 1987.
VHDL được phát triển nhằm giải quyết những 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ố Hệ thống số thường có nhiều tài liệu mô tả, và để bảo trì, sửa chữa hiệu quả, việc hiểu rõ các tài liệu này là rất quan trọng Nhờ vào khả năng mô phỏng phần cứng, việc xem xét tài liệu trở nên dễ dàng hơn, vì chúng có thể được thực thi để mô phỏng hoạt động của hệ thống Điều này cho phép chúng ta quan sát toàn bộ các phần tử của hệ thống hoạt động trong một mô hình thống nhất.
VHDL là một ngôn ngữ độc lập, không ràng buộc với bất kỳ phương pháp thiết kế, bộ mô tả hay công nghệ phần cứng nào Điều này cho phép các nhà thiết kế tự do lựa chọn công nghệ và phương pháp thiết kế, chỉ cần sử dụng một ngôn ngữ duy nhất So với các ngôn ngữ mô phỏng phần cứng khác, VHDL có nhiều ưu điểm nổi bật, giúp tối ưu hóa quá trình thiết kế và phát triển hệ thống.
VHDL, được phát triển dưới sự bảo trợ của chính phủ Mỹ, hiện nay đã trở thành một chuẩn của IEEE Nó nhận được sự hỗ trợ từ nhiều nhà sản xuất thiết bị và các nhà cung cấp công cụ thiết kế mô phỏng hệ thống, góp phần vào sự phổ biến và ứng dụng rộng rãi của ngôn ngữ này trong thiết kế điện tử.
VHDL hỗ trợ đa dạng công nghệ và phương pháp thiết kế, cho phép người dùng áp dụng các phương pháp thiết kế từ trên xuống hoặc từ dưới lên dựa vào các thư viện có sẵn Ngoài ra, VHDL còn tương thích với nhiều công cụ xây dựng mạch, bao gồm công nghệ đồng bộ và không đồng bộ, cũng như việc sử dụng ma trận lập trình được và mảng ngẫu nhiên.
VHDL là ngôn ngữ độc lập với công nghệ chế tạo phần cứng, cho phép mô tả hệ thống ở mức cổng Điều này có nghĩa là một thiết kế VHDL có thể được chuyển đổi thành các bản tổng hợp mạch khác nhau, tùy thuộc vào công nghệ mới, và có thể áp dụng cho các hệ thống đã được thiết kế trước đó.
VHDL có khả năng mô tả hoạt động của phần cứng từ mức hệ thống số đến mức cổng, sử dụng một cú pháp chặt chẽ và thống nhất cho mọi mức Điều này cho phép mô phỏng một bản thiết kế bao gồm cả các hệ thống con được mô tả chi tiết.
VHDL là một tiêu chuẩn được công nhận, cho phép mô hình VHDL chạy trên mọi bộ mô tả tuân thủ tiêu chuẩn này Nhờ đó, các kết quả mô tả hệ thống có thể dễ dàng trao đổi giữa các nhà thiết kế sử dụng các công cụ thiết kế khác nhau Hơn nữa, trong một nhóm thiết kế, các mô tả mức cao của các hệ thống con trong một hệ thống lớn có thể được chia sẻ, mặc dù các hệ thống con này được thiết kế độc lập.
Khả năng hỗ trợ thiết kế mức lớn và khả năng tái sử dụng lại các thiết kế:
VHDL là một ngôn ngữ lập trình bậc cao, lý tưởng cho việc thiết kế hệ thống lớn với sự hợp tác của nhiều người Ngôn ngữ này tích hợp nhiều tính năng hỗ trợ quản lý, thử nghiệm và chia sẻ thiết kế, đồng thời cho phép tái sử dụng các thành phần đã có.
Cấu trúc mô hình hệ thống mô tả bằng VHDL
Trong bài viết này, tôi sẽ giới thiệu cấu trúc khung cơ bản của VHDL khi mô tả một mô hình thiết kế thực Mô hình VHDL thường bao gồm ba phần chính: thực thể (entity), kiến trúc (architecture), và các cấu hình Đôi khi, chúng ta cũng sử dụng các gói (packages) và mô hình kiểm tra hoạt động của hệ thống (testbench).
Thực thể (entity) là thành phần chứa các khai báo thực thể, đóng vai trò như các cổng giao tiếp giữa FPGA và các tín hiệu bên ngoài Những cổng này được sử dụng như lớp vỏ cho kiến trúc thiết kế Ngoài ra, thực thể còn có thể bao gồm các tùy chọn “generic”, cho phép khai báo chung có thể dễ dàng chỉnh sửa khi cần thiết.
Phần thứ hai trong mô hình VHDL là khai báo kiến trúc, yêu cầu mỗi khai báo thực thể phải có ít nhất một kiến trúc tương ứng VHDL cho phép tạo nhiều kiến trúc cho một thực thể, bao gồm các khai báo tín hiệu, phần tử trong hệ thống, cũng như các hàm và thủ tục mô tả hoạt động Tên kiến trúc được đặt tùy theo người sử dụng, và có hai cách mô tả: mô hình hoạt động (Behaviour) và mô tả theo mô hình cấu trúc (Structure) Một hệ thống có thể kết hợp cả hai mô tả này.
Mô tả kiến trúc theo mô hình hoạt động
Mô hình hoạt động của hệ thống mô tả cách thức mà hệ thống phản ứng với các tín hiệu đầu vào và tạo ra kết quả đầu ra Các hoạt động này được thể hiện thông qua các cấu trúc ngôn ngữ lập trình bậc cao như PROCESS, WAIT, IF, CASE và FOR-LOOP.
Mô tả kiến trúc theo mô hình cấu trúc
Mô hình cấu trúc của một phần tử hoặc hệ thống có thể bao gồm nhiều cấp độ, từ cổng logic đơn giản đến mô tả một hệ thống hoàn chỉnh Việc mô tả theo mô hình cấu trúc tập trung vào các phần tử con bên trong hệ thống và sự kết nối giữa chúng Chẳng hạn, mô hình cấu trúc của flip-flop RS, được xây dựng từ hai cổng NAND, có thể mô tả cổng NAND tương tự như cổng NOT và sau đó thể hiện sơ đồ kết nối các phần tử NAND để tạo thành flip-flop RS.
Process là khối cơ bản của việc mô tả theo hoạt động Process đƣợc xét đến nhƣ là một chuỗi các hoạt động đơn trong suốt quá trình dịch
S: Mô hình cấu trúc B: Mô hình hoạt động S/B: Mô hình kết hợp Cấu trúc tổng quát
Trong đó các phần đặt trong dấu [] thì có thể có hoặc không
Process label: (nhãn lệnh) là tùy thuộc người lập trình đặt tên
sensitive_lish: Danh sách các yếu tố kích thích hoạt động
Môi trường kiểm tra ( testbench )
Một số kỹ thuật xử lý ảnh
Kỹ thuật nâng cấpảnh
Nâng cao chất lượng ảnh là bước quan trọng trong xử lý ảnh, giúp làm nổi bật các đặc tính như độ tương phản, lọc nhiễu, nổi biên và làm trơn biên ảnh Có nhiều loại nhiễu khác nhau, và mỗi loại yêu cầu phương pháp lọc phù hợp để đạt hiệu quả tối ưu.
Các thuật toán triển khai việc nâng cao chất lƣợng ảnh hầu hết dựa trên các kỹ thuật trên miền điểm, không gian và tần số
Xử lý điểm ảnh thực chất là biến đổi giá trị của một điểm ảnh dựa vào giá trị của chính nó mà không dựa vào các điểm ảnhkhác
Có hai phương pháp chính để áp dụng toán tử điểm: phương pháp đầu tiên là sử dụng hàm biến đổi để chuyển đổi giá trị mức xám của điểm ảnh sang một giá trị mức xám khác, trong khi phương pháp thứ hai là sử dụng lƣợc đồ mức xám (Gray Histogram) Về mặt toán học, toán tử điểm là sự ánh xạ từ giá trị cường độ ánh sáng u(m,n) tại tọa độ (m,n) sang giá trị cường độ ánh sáng khác v(m,n) thông qua hàm f(.), tức là: v(m,n) = f(u(m,n)) Toán tử điểm chủ yếu được ứng dụng để biến đổi độ tương phản của ảnh, với nhiều dạng toán tử điểm khác nhau được giới thiệu.
2.1.1.1 Kỹ thuật biến đổi âmbản
O(m,n) = 255 – I(m,n ) Với O(m,n): Giá trị điểm ảnh đầu ra tại vịtrí(m,n).I(m,n): Giá trị điểm ảnh đầu vào tại vị trí(m,n).
2.1.1.2 Kỹ thuật thay đổi độxám
C = const, Cmax= 255 và Cmin= -255 Nếu C dương : Tăng độ sáng NếuCâm: Giảm độsáng
Độ tương phản trong ảnh số là sự khác biệt về độ sáng giữa các điểm ảnh, ảnh hưởng đến cách mà mắt người cảm nhận hình ảnh Hai đối tượng có cùng độ sáng nhưng trên nền khác nhau sẽ tạo ra cảm nhận khác biệt Do đó, độ tương phản thể hiện sự nổi bật của điểm ảnh hoặc vùng ảnh so với nền Nếu ảnh có độ tương phản kém, chúng ta có thể điều chỉnh để cải thiện theo ý muốn.
Ta có công thức thay đổi độ tương phản nhƣ sau: O(m,n) = a*I(m,n) + C
2.1.2 Toán tử không gian Đây là toán tử khi tác động vào điểm ảnh thì nó quan tâm tới các điểm lân cận.
Toán tử đƣợc thực hiện thông qua một phép nhân chập và mẫu
Giả sử ta có ảnh I(x,y), một mẫu T(k,l), khi đó ảnh I nhân chập với mẫu
T đƣợc định nghĩa nhƣ sau:
Một số kỹ thuật lọc nhiễu
Trong quá trình xử lý ảnh, việc loại bỏ nhiễu và làm rõ các chi tiết như đường biên là rất quan trọng Các toán tử không gian trong kỹ thuật tăng cường ảnh được phân loại theo chức năng, bao gồm làm trơn nhiễu và nổi biên Để tách nhiễu, người ta thường sử dụng các bộ lọc tuyến tính như lọc trung bình và lọc thông thấp, hoặc các bộ lọc phi tuyến như lọc trung vị Do nhiễu thường tương ứng với tần số cao, các bộ lọc thông thấp được áp dụng để lọc nhiễu, trong khi các bộ lọc thông cao như lọc Laplace được sử dụng để làm nổi cạnh Hiểu rõ về nhiễu và các loại nhiễu là điều cần thiết để áp dụng hiệu quả các phương pháp lọc.
Nhiễu là những phần tử trong ảnh có giá trị vượt trội so với các phần tử xung quanh và thường có tần số cao hơn Trong ảnh, các loại nhiễu phổ biến thường gặp bao gồm nhiều dạng khác nhau.
Nhiễu cộng là loại nhiễu phân bố đều trong toàn bộ ảnh Nếu gọi ảnh quan sát là X_qs, ảnh gốc là X_gốc và nhiễu là η, thì ảnh thu được có thể được biểu diễn bằng công thức liên quan đến các thành phần này.
Nhiễu nhân là hiện tượng thường xuất hiện trong toàn bộ bức ảnh Nếu gọi bức ảnh quan sát được là X_qs, bức ảnh gốc là X_gốc và nhiễu là η, thì bức ảnh thu được có thể được biểu diễn như sau:
Nhiễu xung : Là sự kết hợp của nhiễu muối và nhiễu tiêu Có 2 loại:
Nhiễu xung đơn cực và nhiễu xung lƣỡng cực Nhiễu xung lƣỡng cực có hàm phân bố là:
Nếu b>a, mức xám b xuất hiện nhƣ là điểm sáng của ảnh, a là điểm tối Nếu a>b, ngƣợc lại a=b=0 là nhiễu xung đơn cực
Nhiễu muối tiêu (Salt-pepper noise) là một dạng nhiễu xung đặc trưng, thể hiện rõ tính chất “đột biến” của nó Các điểm ảnh bị nhiễu có thể nhận giá trị cực đại hoặc cực tiểu trong khoảng [0, 255] Đối với ảnh mức xám, điểm ảnh có giá trị cực đại (255) tạo ra đốm trắng, giống như hạt “muối”, trong khi giá trị cực tiểu (0) tạo ra đốm đen, giống như “tiêu” Do đó, loại nhiễu này còn được gọi là ảnh muối tiêu Thông thường, khi đề cập đến ảnh nhiễu muối tiêu 30%, điều này có nghĩa là 15% điểm ảnh có giá trị cực tiểu và 15% có giá trị cực đại.
Nhiễu Gaussian được ứng dụng rộng rãi trong thực tiễn nhờ vào khả năng dễ dàng áp dụng toán học của nó trong cả lĩnh vực không gian và tần số Hàm phân bố của nhiễu Gaussian là một yếu tố quan trọng trong việc phân tích và xử lý tín hiệu.
Trong đú, z biểu diễn mức xỏm, à là giỏ trị trung bỡnh của z,σ là độ lệch tiờu chuẩn, σ 2 là phương sai của z trong đó:
Nhiễu Uniform : Đƣợc cho bởi:
2.2.1 Kỹ thuật lọc trung bình
Với lọc trung bình, mỗi điểm ảnh đƣợc thay thế bằng trung bình trọng số của các điểm lân cận
Thuật toán lọc trung bình sử dụng một cửa sổ lọc 3x3 để quét từng điểm ảnh của ảnh đầu vào Tại mỗi vị trí điểm ảnh, giá trị của các điểm ảnh trong vùng 3x3 của ảnh gốc được đưa vào ma trận lọc Giá trị điểm ảnh của ảnh đầu ra được tính bằng giá trị trung bình của tất cả các điểm ảnh trong cửa sổ lọc Quá trình này bao gồm hai bước đơn giản: tính tổng các thành phần trong cửa sổ lọc và chia tổng này cho số lượng phần tử của cửa sổ lọc.
Lọc trung bình có trọng số chính là thực hiện chập ảnh đầu vào với nhân chập H Nhân chập H trong trường hợp này có dạng:
Trong lọc trung bình, việc bảo vệ biên của ảnh khỏi bị mờ là ưu tiên hàng đầu Các kiểu mặt nạ được áp dụng tùy thuộc vào từng trường hợp cụ thể Các bộ lọc này là bộ lọc tuyến tính, trong đó điểm ảnh ở trung tâm cửa sổ sẽ được thay thế bằng tổ hợp của các điểm lân cận kết hợp với mặt nạ Giả sử đầu vào được biểu diễn bằng ma trận I.
5 7 6 1 2 Ảnh số thu đƣợc bởi lọc trung bình Y=H⊗I có dạng:
Phương pháp lọc trung bình giúp giảm nhiễu đồng đều trên toàn ảnh, làm mờ các điểm ảnh và giảm sự khác biệt về mức sáng giữa ảnh gốc và các điểm ảnh bị nhiễu Bộ lọc trung bình hoạt động như một bộ lọc thông cao, cân bằng cường độ sáng của các điểm ảnh So với lọc trung vị, phương pháp này cho kết quả nhanh hơn vì không cần sắp xếp thứ tự các điểm ảnh Lọc trung bình đặc biệt hiệu quả với các loại nhiễu ngẫu nhiên như nhiễu Gaussian và nhiễu Uniform.
2.2.2 Kỹ Thuật lọc trung vị
Các bộ lọc phi tuyến thường được áp dụng trong kỹ thuật tăng cường ảnh, bao gồm bộ lọc trung vị, giả trung vị và lọc ngoài Bộ lọc trung vị thay thế điểm ảnh đầu vào bằng trung vị của các điểm ảnh lân cận, trong khi bộ lọc giả trung vị sử dụng giá trị trung bình của hai giá trị “trung vị” (tức là trung bình cộng của giá trị lớn nhất và nhỏ nhất) Công thức tính trung vị được sử dụng trong quá trình này.
Kỹ thuật này yêu cầu các giá trị điểm ảnh trong cửa sổ được sắp xếp theo thứ tự tăng hoặc giảm so với giá trị trung vị Kích thước cửa sổ thường được chọn là số lẻ, phổ biến là 3x3, 5x5 hoặc 7x7.
Nếu y(m) = {2, 3, 8, 4, 2} và cửa sổ W=(-1, 0, 1), ảnh thu đƣợc sau lọc trung vị sẽ là: v(m) = (2, 3, 4, 4, 2) do đó: v[0] = 2 v[1] = trungvi(2,3,8)=3 v[2]=Trungvi(3,4,8)=4 v[3]=Trungvi(8,4,2)=4 v[4] = 2
Tính chất của lọc trung vị:
- Lọc trung vị là loại lọc phi tuyến
- Có lợi cho việc loại bỏ các điểm ảnh hay các hàng mà vẫn bảo tòan độ phân giải
- Hiệu quả giảm khi số điểm trong cửa sổ lớn hay bằng một nửa số điểm trong cửa sổ
Phương pháp lọc trung vị là giải pháp hiệu quả cho nhiễu sạn, nhờ vào khả năng thay thế các điểm nhiễu bằng thông tin từ các điểm lân cận Với xác suất cao của các điểm gần nhiễu trở thành trung vị, phương pháp này có thể áp dụng cho nhiều loại ảnh có nhiễu khác nhau mà không làm ảnh hưởng nhiều tới chất lượng ảnh gốc So với các bộ lọc làm mờ tuyến tính, lọc trung vị ít làm mờ ảnh hơn, tuy nhiên, yêu cầu cần sắp xếp các điểm ảnh theo thứ tự tăng dần hoặc giảm dần.
Kỹ thuật phân ngƣỡng
2.3.1 Kỹ thuật phân ngưỡng tự động
Kỹ thuật này được xây dựng dựa trên nguyên lý vật lý, đặc biệt là nguyên lý entropy trong thống kê Nó áp dụng toán học và các điểm cực trị địa phương để thực hiện quá trình tách biệt.
- Giả sử có ảnh I(MxN)
- G là số mức xám của ảnh (trên lý thuyết)
- Gọi t(g) là số điểm ảnh có mức xám ≤ g momen quán tính trung bình có mức xám nhỏ hơn hoặc bằng các mức xám g
Hàm f: g -> f(g) Hàm đƣợc tính nhƣ sau:
Tìm ra một giá trị θ nào đó sao cho f đạt max khi đó θ là ngƣỡng cần tìm (f(θ) max => θ là ngƣỡng)
2.3.2 Kỹ Thuật sử dụng các điểm biên Điểm biên là điểm mà ở đó có sự thay đổi đột ngột về giá trị mức xám Nó là điểm nằm ở biên giới của các đối tƣợng ảnh hay giữa các đối tƣợng ảnh và nền
Biểu đồ mức xám của các điểm biên cung cấp thông tin chính xác hơn về các vùng tốt hơn so với biểu đồ mức xám tổng thể.
Xác định ngưỡng bằng toán tử dò biên vô hướng Laplace là một phương pháp hiệu quả Đầu tiên, ngưỡng được xác định thông qua việc tính toán Laplace của ảnh đầu vào Phương pháp đơn giản nhất để thực hiện điều này là nhân chập với mặt nạ thích hợp.
Chúng ta sẽ tập trung vào biểu đồ mức xám của ảnh gốc, chỉ chọn những điểm ảnh có giá trị Laplace lớn Những điểm ảnh thuộc nhóm 85% trở lên sẽ được hiển thị trong biểu đồ này, trong khi các điểm ảnh khác sẽ không được xem xét Ngưỡng cần thiết sẽ được xác định từ biểu đồ mức xám đã phân tích.
Bộ lọc màu bayer pattern và thuật toán Demosaic
Bộ lọc Bayer là thành phần quan trọng trong hầu hết các camera kỹ thuật số, camcorder và máy quét, giúp tạo ra ảnh màu Lưới lọc này cho phép ba màu cơ bản đi qua là Đỏ (R), Xanh lá (G) và Xanh dương (B), trong đó 50% là màu Xanh lá, 25% là màu Đỏ và 25% là màu Xanh dương.
Hình 2-1 : Bộ lọc bayer trên cảm biến ảnh
Giải thuật Demosaicing của bộ lọc Bayer:
Demosaicing là quá trình chuyển đổi lưới màu Bayer thành hình ảnh hoàn chỉnh bằng cách xử lý các ô 2x2 chứa màu Red, Green và Blue Mặc dù phương pháp này hiệu quả, hầu hết các máy ảnh hiện đại áp dụng thêm các bước để thu thập thông tin hình ảnh bổ sung từ lưới lọc màu Nếu máy ảnh chỉ nhận diện màu theo ô 2x2, độ phân giải thu được sẽ chỉ đạt một nửa so với độ phân giải thực tế của cảm biến, cả về chiều dọc lẫn chiều ngang.
Có những thuật toán demosaic khác giúp đạt độ phân giải cao hơn, mang lại hình ảnh ít nhiễu hơn và tính toán chính xác hơn cho từng vị trí hình ảnh.
Ma trận sửa màu
Do có nhiều biến đổi khác nhau do khó khăn trong việc tái hiện màu trong các hệ thống ảnh, cụ thể:
- Các đặc trƣng quang phổ của ống kính, bộ lọc
- Thay đổi nguồn chiếu sáng nhƣ ánh sáng tự nhiên, đèn huỳnh quang, đèn sợi đốt
- Các đặc điểm của các bộ lọc màu của cảm biến
Ma trận sửa màu là một phương pháp hiệu quả để điều chỉnh dữ liệu ảnh, hoạt động dựa trên hệ RGB Chẳng hạn, màu xanh dương trong hệ thống xử lý ảnh được tạo ra từ sự kết hợp của các photon xanh, kết hợp với đáp ứng của bộ lọc màu xanh và silicon Tuy nhiên, sự khác biệt giữa đáp ứng của bộ lọc và silicon so với mắt người dẫn đến màu xanh của cảm biến không hoàn toàn giống với màu xanh mà con người nhìn thấy.
Sự khác biệt này có thể được khắc phục và tái tạo gần chính xác như cái nhìn của con người Lõi ma trận sửa màu điều chỉnh giá trị điểm ảnh bằng cách sử dụng hệ số tăng cường hoặc suy yếu, nhằm tạo ra kết quả hiệu quả Đồng thời, màu xanh được pha trộn thêm với màu xanh lá và màu đỏ, với công thức tính màu xanh như sau: [out_b] = a1*R + a2*G + a3*B.
Trong đó a1, a2, a3 là các tỉ lệ pha trộn của các màu đỏ, xanh lá, và xanh dương để tạo ra màu xanh ở đầu ra
Mỗi màu trong ma trận 3x3 được áp dụng song song, với tỉ lệ pha trộn màu được xác định rõ ràng.
ỨNG DỤNG CÔNG NGHỆ FPGA XỬ LÝ DỮ LIỆU ĐA PHƯƠNG TIỆN dạng ảnh
Thiết lập bài toán thử nghiệm
Trong hệ thống xử lý ảnh, ba thành phần cơ bản bao gồm bộ thu thập dữ liệu, bộ xử lý và bộ hiển thị hình ảnh Dữ liệu hình ảnh được thu trực tiếp từ camera thường xuất hiện các điểm ảnh lỗi (nhiễu) với nhiều mức độ khác nhau, bao gồm nhiễu ngẫu nhiên, nhiễu cố định và nhiễu dải Nhiễu ngẫu nhiên thường khó loại bỏ mà không làm giảm chất lượng ảnh, khiến cho máy tính gặp khó khăn trong việc phát hiện Ngoài ra, nhiễu cũng có thể phát sinh từ các yếu tố như màu sắc và độ sáng Tuy nhiên, các loại nhiễu này có thể được loại bỏ thông qua các thuật toán xử lý ảnh.
Xử lý ảnh và video trên máy tính thường kém hiệu quả do yêu cầu xử lý lượng dữ liệu lớn với tốc độ cao Tuy nhiên, FPGA là giải pháp lý tưởng cho vấn đề này nhờ khả năng xử lý song song, cho phép xử lý dữ liệu lớn chỉ trong vài chu kỳ clock.
Vì những lý do trên trong luận văn này em thực hiện thiết kế hệ thống xử lý ảnh bằng công nghệ FPGA.
Lựa chọn phần cứng và công cụ thử nghiệm
Kit DE2 là giải pháp tối ưu cho nghiên cứu kỹ thuật số, cấu trúc máy tính và FPGA, tích hợp công nghệ tiên tiến trong xử lý ảnh và công cụ CAD Kit này hỗ trợ nghiên cứu nhiều ứng dụng khác nhau, với các tính năng phù hợp cho phát triển hệ thống số thông thường và hệ thống multimedia phức tạp Các linh kiện chính của Kit DE2 đảm bảo hiệu suất cao trong các dự án nghiên cứu và phát triển.
Chip Cyclone II 2C35 FPGA với 672 chân cho phép người dùng dễ dàng điều khiển tất cả các linh kiện trên kit đã được kết nối sẵn Điều này tạo điều kiện thuận lợi cho việc sử dụng và phát triển ứng dụng liên quan đến FPGA.
Rom EPCS16 – Dùng thiết lập cấu hình ban đầu cho thiết bị, hoạt động nối tiếp
USB Blaster – Dùng để cài đặt chương trình từ computer cho FPGA, hỗ trợ 2 chế độ: JTAG và AS ( Active Serial )
Khe cắm thẻ nhớ SD card
LED hiển thị kí tự dùng LCD (16x2 character displays)
Nguồn xung clock 50 MHz và 27 MHz
24-bit CD-quality audio CODEC với những đầu cắm line-in, line-out, và
VGA DAC (10-bit high-speed triple DACs) với đầu cắm VGA-out
TV Decoder ( NTSC/PAL) với đầu cắm TV-in
Giao tiếp chuẩn RS-232 với đầu cắm 9 pin
Giao tiếp chuẩn PS/2 cho chuột và bàn phím
Giao tip USB 2.0 ( cả host lẫn device )
Giao tiếp hồng ngoại (IrDA)
Hai cổng kết nối header cho phép giao tiếp với các thiết bị ngoại vi mà người dùng muốn kết nối vào kit Ngoài các đặc tính phần cứng, Altera cung cấp các giao tiếp I/O chuẩn và bảng điều khiển để truy xuất các linh kiện trên KIT thông qua phần mềm DE2 Control Panel.
Hình dưới mô tả các thành phần trên Kit DE2 của hãng Altera
Hình 3-1 Sơ đồ khối Kit DE2
Chip Cyclone II 2C23 FPGA gồm các bộ phận:
– 33216 Les – 105 khối nhớ M4K – 483840 bít nhớ – 35 embeded multipliers – PLLs
– 475 I/O pins – Fineline BGA 672 – pin package
Serial configuration device và USB blaster circuit:
Rom EPCS16 swerial configuration device, USB blaster for programing và user API control, JTAG và AS programming modes
Chip nhớ SRAM 512 Kbyte được tổ chức theo cấu trúc 256K x 16 bits, cho phép truy cập như một bộ nhớ cho vi xử lý Nios II hoặc thông qua bảng điều khiển Control Panel.
8 Mbyte single data rate synchronous dynamic RAM, Đƣợc tổ chức 1M x
16 bits x 4 Banks Có thể truy cập nhƣ là bộ nhớ cho vi xử lí Nios II hoặc truy cập thông qua bảng điều khiển Control Panel
Bộ nhớ flash NOR 4 Mbyte với bus dữ liệu 8 bit có thể được truy cập như một bộ nhớ cho vi xử lý Nios II, hoặc thông qua bảng điều khiển Control Panel.
Khe cắm thẻ nhớ SD card:
Truy xuất SD card bằng mode SPI, có thể truy cập nhƣ là bộ nhớ cho vi xử lí Nios II với DE2 SD card driver
Bài viết mô tả việc sử dụng 4 công tắc bấm để hồi phục tín hiệu thông qua mạch Schmitt trigger Trong trạng thái bình thường, tín hiệu duy trì ở mức cao; khi nhấn công tắc, tín hiệu sẽ tạo ra một xung tích cực ở mức thấp và sau đó trở lại trạng thái bình thường ở mức cao.
18 toggle switches Khi switch ở vị down thì tín hiệu ở mức thấp, ngƣợc lại thì tín hiệu ở mức cao
- Nguồn xung clock 50MHz, Nguồn xung clock 27MHz Có thể sử dụng nguồn xung clock ngoài thông qua chân SMA
The Wolfson WM8731 is a 24-bit sigma-delta audio CODEC featuring Line-in, Line-out, and Microphone-in connections It supports a sample rate range of 8 to 96 KHz, making it ideal for use in MP3 players, recorders, PDAs, smartphones, and voice recorders.
The ADV7123 is a high-speed 240 MHz triple 10-bit video DAC featuring a 15-pin high-density D-sub connector, capable of supporting a resolution of 1600x1200 at a 100 Hz refresh rate It can be integrated with the Cyclone II FPGA to implement a high-speed TV encoder For NTSC/PAL TV decoding, the ADV7181B multi-format SDTV video decoder is utilized, supporting various formats including NTSC (M, J, 4.43) and PAL (B, D, G, H, I, M, N).
SECAM Tích hợp 3 ADC 9 bit 54MHz, hoạt động với nguồn xung clock 27 MHz, hỗ trợ composite video, hỗ trợ ngõ ra digital (8bit/16bit
Tích hợp MAC và PHY với giao tiếp vi xử lý thông thường, hỗ trợ đường truyền 100 Base-T và 10 Base-T, cho phép hoạt động kép tại tốc độ 10Mb/s và 100Mb/s với tính năng auto-MDIX Thiết bị hoàn toàn tương thích với cấu hình IEEE 802.3u và hỗ trợ tạo và kiểm tra checksum cho IP/TCP/UDP.
USB 2.0, hỗ trợ truyền dữ liệu tốc độ cao và tốc độ thấp, hỗ trợ USB chủ/khách, hai cổng USB Cung cấp giao tiếp song song đến bộ vi xử lí, hỗ trợ Nios II bởi Terasic driver, hỗ trợ Programmed I/O (PIO) và Direct Memory Access (DMA)
Gồm 2 cổng: một cổng giao tiếp RS-232, một cổng giao tiếp PS/2
Cổng giao tiếp hồng ngoại:
Bộ truyền nhận tín hiệu 115.2kb/s, dòng điều khiển LED 32mA, tín hiệu ngõ vào đƣợc xác nhận bởi tích cực cạnh
Hai đầu nối mở rộng:
2x40 pin của 2 đầu nối mở rộng đƣợc kết nối với 72 pin của Cyclone II I/O và 8 pin power và mass Đầu nối 40 pin có thể tương thích với cable chuẩn
40 pin dùng cho ổ cứng IDE
3.2.2 Giới thiệu phần mềm Quartus II
Quartus II là công cụ phần mềm phát triển của hãng Altera, cung cấp môi trường thiết kế toàn diện cho các thiết kế SOPC (hệ thống trên 1 chip khả trình - system on a programmable chip) Đây là phần mềm đóng gói tích hợp đầy đủ phục vụ cho thiết kế logic với các linh kiện logic khả trình PLD, FPGA của Altera, gồm các dòng APEX, Cyclone, FLEX, MAX, Stratix Quatus II cung cấp các khả năng thiết kế sau:
Môi trường thiết kế gồm các bản vẽ, sơ đồ khối, công cụ soạn thảo các ngôn ngữ: AHDL, VHDL, và Verilog HDL
Là công cụ mạnh để tổng họp logic
Khả năng mô phỏng chức năng và thời gian
Phân tích logic nhúng với công cụ phân tích SignalTap® II
Cho phép xuất, tạo và kết nối các file nguồn để tạo ra các file chương trình
Tự động định vị lỗi
Khả năng lập trình và nhận diện linh kiện
Phần mềm Quartus II tích hợp công nghệ NativeLink® cho phép truyền thông tin liền mạch giữa Quartus và các công cụ thiết kế phần cứng EDA khác, nâng cao hiệu quả trong quá trình thiết kế.
Quartus II cũng có thể đọc các file mạch (netlist) EDIF chuẩn, VHDL và Verilog HDL cũng nhƣ tạo ra các file netlist này
Quartus II có môi trường thiết kế đồ họa giúp nhà thiết kế dễ dàng viết mã, biên dịch, soát lỗi, mô phỏng
Với Quartus có thế kết hợp nhiều kiểu file trong 1 dự án thiết kế phân cấp
The Quartus Block Editor can be utilized to create high-level design block diagrams, which can then be transformed into lower-level design components using various formats such as AHDL Text Design Files (.tdf), EDIF Input Files (.edfh), VHDL Design Files (.vhd), and Verilog HDL Design Files.
Quartus II cho phép làm việc với nhiều file ở cùng thời điểm, soạn thảo file thiết kế trong khi vấn có thế biên dịch hay chạy mô phỏng các dự án khác Công cụ biên dịch Quartus II nằm ở trung tâm hệ thống, cung cấp quy trình thiết kế mạnh cho phép tùy biến đế đạt đƣợc thiết kế tối ƣu trong dự án Công cụ định vị lỗi tự động và các bàn tin cảnh báo khiến việc phát hiện và sửa lỗi trở nên đơn giản hơn.
Xây dựng thử nghiệm
Hệ thống xử lý hình ảnh trên FPGA bao gồm ba khối chính: khối thu thập dữ liệu, khối xử lý hình ảnh và khối hiển thị hình ảnh Hệ thống cho phép thay đổi độ phân giải hình ảnh đầu vào và đầu ra để phù hợp với màn hình hiển thị, hỗ trợ các chế độ dữ liệu đầu vào 8 bit, 10 bit và 12 bit Nó tương thích với chuẩn Avalon Streaming với ready_latency = 1 và có tốc độ xung clock vượt trội.
100 MHz, tốc độ lấy mẫu dữ liệu lên đến trên 30 Msampe/s
Hình 3-2 Mô hình hệ thống thử nghiệm
Khối thu thập dữ liệu từ camera ghi vào SRAM, nhưng do thiếu thiết bị, trong mô phỏng trên kit DE2, tôi sử dụng ảnh tĩnh được chuyển thành định dạng RAW và nạp vào SRAM qua Control panel DE2.
Khối xử lý ảnh bao gồm ba module chính: khử nhiễu (Defect pixel correction), nội suy màu (Interpolation) và sửa màu (Color correction) Dữ liệu được lấy từ SRAM vào FIFO, sau đó được khử nhiễu qua module defect correction và ghi lại vào FIFO Tiếp theo, dữ liệu được đọc từ FIFO, nội suy màu bằng module color interpolation và ghi vào FIFO Cuối cùng, dữ liệu được xử lý màu qua module color correction trước khi ghi vào FIFO Dữ liệu được truyền theo chuẩn Avalon-ST, và các module được kích hoạt bằng các switch trên Kit DE2 Thiết kế khối xử lý hình ảnh được minh họa trong hình 3-3.
Hình 3-3 Sơ đồ thiết kế bộ xử lý ảnh
Tất cả các module đều đƣợc thiết kế theo chuẩn Avalon-ST do đó các module đều có các tín hiệu vào ra nhƣ nhau cụ thể:
Tên tín hiệu Độ rộng (bit) Hướng Mô tả clock 1 in Avalon Clock and Reset resetn 1 in Avalon Clock and Reset enable 1 In Avalon Conduit
Sink_data_in 3*DW in Avalon ST – Sink - data
Sink_sop_in 1 in Avalon ST – Sink – start of packet
Sink_eop_in 1 in Avalon ST – Sink – end of packet
Sink_valid_in 1 in Avalon ST – Sink – data valid
Sink_ready_out 1 out Avalon ST – Sink – data ready Source_data_out 3*DW out Avalon ST – Source – data Source_sop_out 1 out Avalon ST – Source – start of packet Source_eop_out 1 out Avalon ST – Source – end of packet Source_valid_out 1 out Avalon ST – Source – data valid Source_ready_in 1 in Avalon ST – Source – data ready
Bảng 3-1 Bảng mô tả các tín hiệu vào ra theo chuẩn Avalon-ST
Dữ liệu được lấy từ SRAM và đưa vào FIFO, sau đó chuyển đến khối xử lý dữ liệu ảnh để loại bỏ điểm ảnh chết thông qua module Defect Pixel Correction Hình 3-4 minh họa quá trình truyền dữ liệu từ FIFO đến module Defect Pixel Correction.
Hình 3-4 Sơ đồ truyền dữ liệu module Defect Pixel Correction
The Sink valid and full protect signals are essential for writing data into the FIFO, allowing for the recording of N+2 bits when conditions are met The clken signal controls the data transfer from FIFO to the Defect Pixel Correction module Data transmission halts if the FIFO at the input of the module is empty or if the output FIFO is full The Source ready in signal facilitates the reading of data from the output FIFO, which is subsequently synchronized by the Valid Synch component.
Module Defect Pixel Correction nhận dữ liệu đầu vào là các điểm ảnh và có nhiệm vụ xác định các điểm ảnh lỗi Sau đó, module này sẽ thực hiện sửa chữa các điểm ảnh lỗi theo thuật toán được mô tả trong hình 3-5 dưới đây.
Hình 3-5: Sơ đồ khối giải thuật xác định điểm ảnh lỗi
Thuật toán đề xuất sử dụng cửa sổ trung bình và so sánh ngưỡng, kết hợp với cận trên và cận dưới để phát hiện điểm ảnh lỗi Nếu giá trị điểm ảnh đầu vào gần cận trên (245) hoặc cận dưới (10) và độ sai lệch với giá trị trung bình của các điểm ảnh xung quanh vượt ngưỡng (40 - 80), thì điểm ảnh đó được xác định là lỗi và sẽ được sửa chữa bằng giá trị trung bình của các điểm ảnh lân cận.
Sơ đồ chi tiết đƣợc thể hiện trên hình 3-6
Hình 3-6 Sơ đồ chi tiết module Defect Pixel Correction
Dữ liệu được nhập vào theo 5 dòng và được tính toán lại bằng thuật toán đã nêu, sử dụng cửa sổ kích thước 5x5 Quá trình tạo cửa sổ 5x5 được minh họa trong hình 3-7.
Hình 3-7: Sơ đồ window creator
Các dữ liệu ảnh này sau khi đƣợc loại bỏ các điểm ảnh bị lỗi đƣợc truyền sang FIFO theo chuẩn avalon-ST để tiếp tục xử lý
Sau khi hoàn tất quá trình loại bỏ các điểm ảnh lỗi, dữ liệu sẽ được chuyển sang module Color Interpolation theo tiêu chuẩn Avalon-ST Tại đây, dữ liệu hình ảnh sẽ được điều chỉnh màu sắc bằng cách sử dụng bộ lọc trung bình.
Mặt nạ trung bình có độ phức tạp thấp và tốc độ xử lý nhanh trong FPGA, vì vậy bài viết tập trung vào việc chọn giải thuật mặt nạ lọc trung bình và so sánh ngưỡng để thực hiện thiết kế hiệu quả.
Việc sử dụng mặt nạ lọc có thể làm giảm chất lượng hình ảnh, đặc biệt ở các vùng cạnh Do đó, cần có biện pháp hạn chế áp dụng mặt nạ lọc cho toàn bộ ảnh Như đã phân tích, các điểm ảnh bị lỗi có hai trường hợp: điểm nóng (điểm bị kẹt ở mức cao) và điểm lạnh (điểm tín hiệu luôn ở mức thấp) Vì vậy, việc so sánh với các cận trên và dưới sẽ giúp áp dụng mặt nạ lọc một cách hợp lý hơn.
Một điểm quan trọng cần lưu ý là cách sắp xếp các điểm ảnh đặc trưng cho các màu sắc trong mẫu Bayer là khác nhau, dẫn đến việc mỗi màu sẽ có các cửa sổ trung bình riêng biệt Cụ thể, có hai cửa sổ được sử dụng cho mặt nạ lọc trung bình.
Mặt nạ trung bình cho điểm ảnh R&B
Mặt nạ trung bình cho điểm ảnh G
Tổng trọng số của cả 2 cửa sổ đƣợc chọn để có đƣợc tổng là lũy thừa của
2, để tiện cho việc tính toán trong FPGA
Cuối cùng, dữ liệu ảnh được chuyển đến module Matrix Color Correction để thực hiện xử lý cuối cùng trước khi hiển thị Trong quá trình này, các điểm ảnh sẽ được điều chỉnh màu sắc để phù hợp với cảm nhận của mắt người, đảm bảo hình ảnh hiển thị chính xác và tự nhiên Các màu sắc được tính toán theo một công thức nhất định để đạt được hiệu quả tối ưu.
Trong module này, các phép cộng và nhân được thực hiện bằng kỹ thuật pipeline, trong khi phép chia được tối ưu hóa thông qua phép dịch bit để nâng cao tốc độ xử lý Hình 3-8 minh họa chi tiết cách sử dụng ma trận sửa màu.
Hình 3-8 Sơ đồ chi tiết Color Correction Matrix
Sau nhiều thực nghiệm với các ma trận có trọng số khác nhau, ma trận cho ra màu sắc tốt nhất với các trọng số cụ thể nhƣ sau:
Khối hiển thị: Chuyển dữ liệu ảnh từ hệ màu RGB sang hệ màu CMY và hiện thị lên màn hình
Việc kiểm tra chức năng của hệ thống xử lý ảnh đƣợc thực hiện trên modelsim để đảm bảo các module chạy đúng theo chuẩn giao tiếp Avalon-ST