1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

THIẾT kế bộ lọc NHIỄU để KHÔI PHỤC ẢNH TRÊN nền CÔNG NGHỆ FPGA (có code)

73 312 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 73
Dung lượng 3,45 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Hình 2-2: Ba độ phân giải phổ biến của một khung ảnh hiện nay[5].2.1.4 Quan hệ giữa các điểm ảnh: Một ảnh số sẽ được biểu diễn trong không gian ảnh 2 chiều bằng hàm toán họcfx, y.. gian

Trang 1

THIẾT KẾ BỘ LỌC NHIỄU ĐỂ KHÔI PHỤC ẢNH TRÊN NỀN CÔNG NGHỆ

FPGA

Trang 2

ADC Analog to Digital Converter

AMBA Advanced Microcontroller Bus ArchitectureASIC Application Specific Integrated Circuit

BUS Bus System

CLB Configurable Logic Blocks

CPU Central Processing Unit

VHDL VHSIC Hardware Description Language

VHSIC Very High Speed Integrated Circuit

Trang 3

CHƯƠNG 1 KHÁI QUÁT VỀ ĐỀ TÀI

1.1 Giới thiệu

Thiết kế bộ lọc nhiễu để khôi phục ảnh trên nền công nghệ FPGA

 Nghiên cứu về công nghệ FPGA:

- Kiến trúc của FPGA

- Phân biệt các loại FPGA

- Công nghệ FPGA có các đặc tính lập trình như thế nào?

- Sự khác nhau giữa các công nghệ khác với FPGA

 Tìm hiểu về hình ảnh:

- Khái quá về hình ảnh

- Nguyên nhân gây ra nhiễu

- Phân biệt các loại nhiễu ảnh

- Cách xử lý nhiễu ảnh

 Áp dụng công nghệ FPGA để tạo chip xử lý ảnh nhiễu

1.2 Phương thức nghiên cứu:

Trang 4

Hình 2-1: Một pixel trong một khung ảnh[5]

Mỗi điểm ảnh là một phần tử của ảnh số tại tọa độ (x, y) với độ xám và màu nhấtđịnh Khoảng các và kích thước mỗi điểm ảnh phải được chọn sao cho phù hợp đêmắt người nhìn thấy không bị mất cảm nhận về sự liên tục của bức ảnh về khônggian hay màu sắc so với ảnh thật Mỗi phần tử trng ma trận ảnh được gọi là phần tửảnh

Trang 5

Hình 2-2: Ba độ phân giải phổ biến của một khung ảnh hiện nay[5].

2.1.4 Quan hệ giữa các điểm ảnh:

Một ảnh số sẽ được biểu diễn trong không gian ảnh 2 chiều bằng hàm toán họcf(x, y) Tập hợp con các điểm ảnh là S quan hệ giữa các cặp điểm ảnh được gọi là

p, q Thì các lân cận của điểm ảnh sẽ được xét như sau:

Giả sử điểm ảnh p tại tọa độ (x, y) Thì lân cận p có 4 điểm theo chiều đứng vàngang:

N4(p) = {(x - 1, y); (x + 1, y); (x, y - 1); (x, y + 1)}

Trang 6

Và 4 điểm lân cận theo phương chéo:

(X-1, Y-1) (X, Y-1) (X+1, Y-1)

Hình 2-3: : Các lân cận của điểm ảnh.

2.1.5 Ảnh nhị phân:

Là ảnh có chỉ có hệ thống màu đơn giản

nhất chỉ được mô tả hai màu đen và trắng

trong một pixel, nên chỉ cần biểu diễn bằng

một bit là 21 mức khác nhau, nói các khác

mỗi điểm ảnh của ảnh nhị phân chỉ có thể là 0

hoặc 1 Ảnh nhị phân thường thấy là ảnh văn

bản, kiến trúc hoặc dấu vân tay

2.1.6 Ảnh Gay sacle:

Là ảnh có một hệ thống màu đơn giản với

256 cấp độ xám biến thiên từ màu đen đến màu trắng Người ta chia mức đen trắng

đó thành L mức Nếu được sử dụng số bit là B = 8bits để mã hóa mức xám thì Lđược xác định như sau:

L = 2B = 28 = 256 mức

Hình 2-4: Ảnh nhị phân[5].

Trang 7

Như vậy mỗi pixel được biểu diễn bằng 1byte hoặc 8bits Ảnh này thường được

sử dụng trong công nghiệp in ấn lẫn trong y khoa (ảnh X-ray)

2.1.7 Ảnh màu:

Trong thế giới màu sắc chúng ta thường lấy 3 màu đỏ, lục, lam (red, green,blue: RGB) làm màu cơ bản để tạo nên thế giới màu, trong ảnh số chúng được tậphợp lại thành khối lập phương đơn vị, trên đường chéo chính thể hiện cấp độ tỷ lệtương đương của 3 màu sắc cơ bản ứng với mức độ xám từ đen (0, 0, 0) đến trắng(1, 1, 1)

Hình 2-5: Mô hình màu RGB.

Biểu diễn ảnh màu:

Ảnh màu được biểu diễn bằng 3. vector 3 chiều gồm fR (x, y), fG (x, y), fB(x, y) thể hiện màu RGB của một pixel tại vị trí (x,y):

f(x, y) = { f R (x, y), f G (x, y), f B (x, y)}

Màu sắc còn có thể biễu diễn với các mô hình khác như:

 Mô hình HSV (Hue - Saturation – Value) là mô hình dựa trên HSV làkhông gian màu được dùng nhiều trong việc chỉnh sửa ảnh, phân tíchảnh và một phần của lĩnh vực thị giác máy tính Hệ không gian nàydựa vào 3 thông số sau để mô tả màu sắc H = Hue: màu sắc, S =

Trang 8

Saturation: độ đậm đặc, sự bảo hòa, V = value: giá trị cường độ sáng.Không gian màu này thường được biểu diễn dưới dạng hình trụ hoặchình nón.

 Mô hình CMY (Cyan – Magenta - Yellow) là không gian màu được

sử dụng phổ biến trong ngành công nghiệp in ấn Ý tưởng cơ bản của

hệ không gian này là dùng 4 màu sắc cơ bản để phục vụ cho việc phatrộn mực in Trên thực tế, người ta dùng 3 màu là C=Cyan: xanh lơ,M=Magenta: hồng xẫm, và Y=Yellow: vàng để biểu diễn các màu sắckhác nhau

2.2 Khái niệm về một số loại nhiễu trong ảnh:

Như chúng ta đã biết, ở mọi nơi truyền thông tin đều có nhiễu Nhiễu ảnhhưởng đến độ chính xác và tin cậy của thông tin Trong hình ảnh cũng vậy, nhiễuảnh hưởng đến chất lượng của hình ảnh, làm sai lệch về màu sắc làm cho bức ảnhtruyền tải đến người xem không rõ Một số loại nhiễu chúng ta thường gặp là:

2.2.1 Nhiễu Gauss:

Nhiễu Gauss được gọi là nhiễu. điện tử vì nó gây ra trong các bộ khuếch đạihoặc máy dò Nhiễu Gauss là nhiễu cộng và độc lập Nhiễu phân tán Gauss đượcdiễn tả bởi độ lệch chuẩn hoặc phương sai Mỗi pixel trong ảnh có giá trị đúng vàngẫu nhiên, vì vậy nhiễu Gauss phân bố đều và ngẫu nhiên Những dao. động ngẫunhiên của tín hiệu có mực độ xác suất là:

Trang 9

Hình 2-8: Hàm mật độ xác suất nhiễu Erlang.[6]

2.2.2 Nhiễu Rayleigh:

Khoảng cách và vận tốc truyền ảnh của

radar chứa nhiễu có thể được thể hiện bởi

2.2.3 Nhiễu Gamma (Erlang):

Nhiễu Gamma thường. thấy xảy ratrong các thiết bị máy chiếu Nó tuântheo phân phối Gamma

¿[6]

ễn Exponentical:

Thiết Kế Bộ Lọc Nhiễu Để Khôi Phục

Ảnh Trên Nền Công Nghệ FPGA

Hình 2-7: Hàm biểu diễn nhiễu Rayleigh.[6]

Trang 10

Đây là trường hợp đặc biệt của nhiễu Erlang khi b=1

a2

2.2.5 Nhiễu Photon (nhiễu Poisson):

Nhiễu này thường xuất hiện do sóng điện từ như tia X, ánh sáng nhìn thấy haytia gamma Các nguồn phát tia X, tia gamma sẽ phát ra số lượng photon trên mộtđơn vị thời gian Trong các máy ảnh tia X và tia gamma y tế, những tia này đượcđưa vào cơ thể bệnh nhân từ nguồn phát xạ Những nguồn này có sự dao động ngẫunhiên của các photon Kết quả thu thập hình ảnh có ngẫu nhiên không gian và thờigian Nhiễu này còn được gọi là nhiễu lượng tử (photon) hoặc nhiễu bắn Nhiễu nàytuân theo phân phối Poisson sau:

P (k , λ)= λ

k eλ

k !

2.2.6 Nhiễu xung (nhiễu muối tiêu):

Một trong các loại nhiễu thường làm hỏng hình ảnh kỹ thuật số nhiễu xung.Nhiễu xung có thể được phân thành hai loại: nhiễu xung có giá trị cố định và nhiễuxung ngẫu nhiên Nhiễu xung có giá trị cố định còn được gọi là nhiễu muối tiêu mà

độ xám của pixel có ảnh hưởng bởi nhiễu là tối thiểu hoặc tối đa theo độ xám củaảnh Độ xám của các điểm ảnh bị ảnh hưởng nhiễu bởi nhiễu xung ngẫu nhiên có độxám được phân bố đồng đều trong khoảng [0,255] của ảnh, mật độ xác suất là:

Trang 11

Hình 2-10: Hàm mật độ nhiễu muối tiêu.

2.3 Bộ lọc median:

Lọc trung vị là lọc phi tuyến Một phép lọc phi tuyến là một kết quả không thểthu được từ một tổng trọng số của các điểm ảnh (Pixel) lân cận Sau khi đã địnhnghĩa kích thước vùng lân cận, giá trị điểm ảnh (Pixel) trung tâm được thay bằngtrung vị tức là giá trị chính giữa của tất cả các giá trị của các điểm trong vùng lâncận

Cho một dãy số X1, X2, X3, , Xn được sắp xếp theo thứ tự tăng dần hoặc giảmdần Khi đó XM được tính bởi công thức:

 Trong khóa luận này chúng ta sẽ thiết kế bộ lọc trung vị để lọc nhiễu cho

ảnh, vì bộ lọc này thích hợp để lọc nhiễu muối tiêu

2.4 Tỷ số tín hiệu trên nhiễu (PSNR):

Trang 12

Tỷ số tín hiệu trên nhiễu thường được gọi là PSNR (Peak signal-to-noise ratio)được dùng để so sánh sự ảnh hưỡng của nhiễu so với ảnh góc Công thức tính là:

Trang 13

CHƯƠNG 3 TÌM HIỂU FIELD-PROGRAMMABLE GATE ARRAY

(FPGA)

3.1 Khái quát về FPGA:

Field-programmable gate array (FPGA) là một loại mạch tích hợp dùng cấutrúc mảng phần tử logic mà người dùng có thể lập trình được mà không phụ thuộcvào dây chuyền sản xuất phức tạp của nhà máy bán dẫn

Bộ nhớ tĩnh đầu tiên dựa trên FPGA (thường được gọi là SRAM trên nềnFPGA) được đề xuất bởi Wahlstrom vào năm 1967 Sau đó bản thương mại củaFPGA được Xilinx giới thiệu vào năm 1984 Lúc này nó gồm có một mảng của cáckhối logic có thể tái cấu hình – Configurable Logic Blocks (CLBs) và các đầu vào

ra – I/O (input/output) Chip FPGA đầu tiên chứa 64 CLBs và 58 I/Os Ngày nay,FPGA có thể chứa khoảng 330,000 CLBs và khoảng 1100 I/Os Phần lớn các sảnphẩm FPGA trên thị trường hiện nay đều dựa trên công nghệ SRAM với 2 hãng sảnxuất lớn nhất là Xilinx và Altera Ngoài ra còn có các hãng khác sản xuất FPGAnhưng với mục đích chuyên dụng (Atmel, Actel, Lattice, SiliconBlue )

Hình 3-11: (a) Spartan XC3S400 của hãng Xilinx, có 400.000 cổng và tần số 50MHz-80Mhz.

(b) Dòng FPGA Stratix của hãng Altera[4].

(b) (a)

Trang 14

FPGA là một loại vi mạch bán dẫn ASIC, nhưng FPGA không đựợc tối ưu nhưASIC, và hạn chế trong khả năng thực hiện những tác vụ đặc biệt phức tạp, tuy vậyFPGA ưu việt hơn ở chỗ có thể tái cấu trúc lại khi đang sử dụng, công đoạn thiết kếđơn giản do vậy chi phí giảm, rút ngắn thời gian đưa sản phẩm vào sử dụng.

So với các dạng vi mạch bán dẫn lập trình được dùng cấu trúc mảng phần tửlogic như PLA, PAL, CPLD thì FPGA ưu việt hơn như: việc tái lập trình thực hiệnđơn giản hơn, khả năng lập trình linh động hơn, đặt biệt là kiến trúc của FPGA chophép nó có khả năng chứa khối lượng lớn cổng logic (logic gate) so với các vi mạchbán dẫn lập trình có trước nó

Thiết kế hay lập trình cho FPGA được thực hiện chủ yếu bằng các ngôn ngữ mô

tả phần cứng HDL như VHDL, Verilog, AHDL

3.1.1 Cấu trúc của FPGA:

FPGA được thiết kế bởi 3 thành phần chính: Configurable Logic Blocks (CLBs)

là khối logic thực hiện các chức năng logic, chúng ta có thể lập trình cấu trúc được,Programmable Interconnect có thể lập trình để kết nối các đầu vào và đầu ra củacác CLB và các khối I/O bên trong, I/O Blocks cung cấp giao tiếp giữa các ngoại vivới các tín hiêu bên trong

Hình 3-12: Kiến trúc tổng quan của FPGA[4].

Trang 15

Lập trình khối logic trong FPGA nhầm cung cấp các tính toán và các phần tửnhớ cơ bản được sử dụng trong hệ thống số Một phần tử logic cơ bản gồm một.

mạch tổ hợp có thể lập trình, một Flip-Flop hoặc một chốt (latch) Ngoài khối logic

cơ bản đó, nhiều Chip FPGA còn có một hỗn hợp các khối khác nhau dùng cho cácchức năng cụ thể, chẳng hạn như các khối bộ nhớ chuyên dụng, các bộ nhân(multipliers) hoặc các bộ ghép kênh (multiplexers) Cấu hình bộ nhớ được sử dụngtrên tất cả các khối logic để điều khiển các chức năng cụ thể của mỗi phần tử bêntrong khối đó

Hình 3-13: Ví dụ về một CLBs được thiết kế[4].

Programmable Interconnect:

Các liên kết trong một FPGA dùng để liên kết các khối logic và I/O lại vớinhau để tạo thành một thiết kế Bao gồm bộ ghép kênh, các transistor và cổngđệm ba trạng thái Nhìn chung, các transistor và bộ ghép kênh được dùngtrong một cụm logic để kết nối các phần tử logic lại với nhau, trong khi đó cả

ba đều được dùng cho các cấu trúc định tuyến bên trong FPGA Một số FPGAcung 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 ítkết nối hơn nên định tuyến phức tạp hơn

I/O Blocks:

Trang 16

I/O cung cấp giao tiếp giữa các khối logic và kiến trúc định tuyến đến cácthành phần bên ngoài Một trong những vấn đề quan trọng nhất trong thiết kếkiến trúc I/O là việc lựa chọn các tiêu chuẩn điện áp cung cấp và điện áp thamchiếu sẽ được hỗ trợ.

Theo thời gian, các kiến trúc FPGA cơ bản càng được phát triển hơn thôngqua việc bổ sung các khối chức năng đặc biệt có thể lập trình, như bộ nhớtrong (Block RAMs), logic số học (ALU), bộ nhân, DSP-48 và thậm chí là bộ

vi xử lý nhúng được thêm vào do nhu cầu của các nguồn tài nguyên cho mộtứng dụng Kết quả là nhiều FPGA ngày nay có nhiều nguồn tài nguyên hơn sovới các FPGA trước đó

3.1.2 Phân loại FPGA

FPGA có rất nhiều loại khác nhau với cấu trúc và đặc tính riêng được phát triểntheo từng hãng sản xuất, tuy nhiên chúng đều được phát triển từ bốn cấu trúc chínhsau: mảng đối xứng (Symmetrical Array), PLD phân cấp (hierachircal PLD), cấutrúc hàng (Row base) và đa cổng (Sea of Gate) như hình 3-4

Hình 3-14: Phân loại FPGA [4]

3.1.3 Công nghệ lập trình FPGA:

Công nghệ lập trình dùng RAM tĩnh:

Trang 17

- Công nghệ lập trình dùng RAM tĩnh (SDRAM) sử dụng công nghệ CMOStiêu chuẩn Các kết nối lập trình được điều khiển bằng các transistor kháctrên chip hoặc bật (On) các transistor truyền dẫn cũng như các cổngtransistor để tạo một kết nối hay tắt (Off) để ngắt kết nối Trong các FPGA

sử dụng công nghệ lập trình SRAM, các khối logic có thể được kết hợp vớinhau qua cách kết hợp cả bộ dồn kênh (Multiplexer) và cổng truyền dẫn(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 khicấp nguồn cho chip Vì vậy ta cần bộ phận lưu trữ riêng như ROM hay đĩa

từ

- Các chip được thực hiện theo công nghệ SDRAM có diện tích khá lớn, bởi vìcần ít nhất 5 transistor cho mỗi RAM Cell cũng như các transistor cần thêmcho cổng truyền dẫn hay bộ dồn kênh Ưu điểm của kỹ thuật này là cho phépFPGA có thể được tái cấu hình ngay trên mạch rất nhanh và nó có thể đượcchế tạo bằng công nghệ CMOS chuẩn

Các thiết bị lập trình 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,Quick Logic và Cross Point Solution

- Tuy 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 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

Ứng dụng của công nghệ FPGA là thế hệ sau của IC khả trình nên chúng có thểứng dụng trong hầu hết các ứng dụng hiện nay đang dùng MPGA, PLD và các mạchtích hợp loại nhỏ (SSI)

Trang 18

- Các mạch tích hợp là ứng dụng đặc biệt FPGA là thiết bị tổng quát nhất đểthực hiện các mạch lôgic số Chúng đặc biệt thích hợp cho các mạch tích hợpchuyên dụng đặc biệt (ASIC) như bộ cộng, bộ điều khiển logic Flip-Flop

- Thiết kế mạch ngẫu nhiên mạch logic ngẫu nhiên thường được thực hiệnbằng PAL Nếu tốc độ của mạch không đòi hỏi khắt khe (các PAL nhanhhơn hầu hết các FPGA) thì mạch có thể thực hiện bằng FPGA Hiện nay mộtFPGA cần từ 10 đến 20 PAL

Bảng 3-1 Các đặc tính của công nghệ lập trình [2]

Công nghệ lập

trình

Tính bayhơi

Có thể lậptrình Diện tích chíp R(Kohm) C(pf)Static RAM

EEPROM Không Trong mạch 2xEPROM 2-4 10-20

- Thay thế các chip SSI bằng FPGA để giảm diện tích bo mạch

- Giá thành thực hiện thấp và thời gian thiết kế vật lý ngắn, cung cấp các ưuđiểm hơn nhiều so với các phương tiện truyền thống khác để chế tạo mẫuphần cứng Các mẫu ban đầu có thể thực hiện rất nhanh và những thay đổisau đó được thực hiện rất nhanh và ít tốn kém

- Một loại máy tính dựa trên FPGA có thể tái lập trình ngay trên FPGA Cácmáy này có một bo mạch chứa các FPGA với các chân nối với các chip lâncận giống như thông thường Ý tưởng là một chương trình phần mềm có thể

Trang 19

đượ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ơ

đồ bằng tay) vào ngay phần cứng Phần cứng này sẽ được thực hiện bằngcách lập trình bo mạch FPGA Lợi ích là không cần quá trình lấy lệnh nhưcác bộ xử lý truyền thống vì phần cứng đã gộp cả lệnh nên tốc độ có thể tănglên hàng trăm lần và môi trường tính toán có thể thực hiện song song mứccao, làm tăng tốc thêm nữa

- Tái cấu hình thành phần trực tiếp FPGA cho phép có thể thay đổi theo mongmuốn cấu trúc của một máy đang hoạt động

3.1.4 So sánh FPGA với các công nghệ khác

FPGA với CPLD

Bảng 3-2 So sánh FPGA và CPLD [3]

Giống nhau

Đều là loại vi mạch logic lập trình được

Đều được là cell logic

Đều được kết hợp từ khối logic và Flip-Flop

Khác nhau

Là linh kiện fine-grain

Có nhiều cell logic với các khối logic nhỏ

Là linh kiện grain", nghĩa là có rất ít cell logic so với FPGA các khối logic lớn

"coarse-Giống RAM Giống EEPROM

Có nhiều tài nguyên định tuyến đặc biệt để thực hiện các chức năng toán học như các

bộ đếm, bộ cộng, bộ so sánh, v.v…

Không có

Trang 20

FPGA với ASIC

Kit DE2 cung cấp cho người sử dụng nhiều đặc điểm linh hoạt để học tập và có thểphát triển nhiều dự án đa phương tiện khác nhau Chúng được thiết kế không nhữngphù hợp cho môi trường họp tập ở các trường đại học và cao đẳng mà còn phù hợpvới cả trong môi trường làm việc công nghiệp Các khối thiết kế ứng dụng trên KITđược chọn lọc dựa trên những thiết kế phổ biến nhất trong các sản phẩm đa phươngtiện như DVD, VCD, MP3 player và nhiều ứng dụng điều khiển khác Kit DE2cho phép người dùng nhanh chóng thấu hiểu được những thủ thuật để thiết kế các

dự án công nghiệp Ngoài ra nó còn cung cấp một nền tảng kiến thức cơ bản chongười dùng đam mê trong lĩnh vực thiết kế vi mạch như phát triển những hệ thống

kỹ thuật số tinh vi

Trang 21

- Vi mạch FPGA Altera Cyclone IV E

- Vi mạch Altera Serial Configuration – EPCS16

- Bộ giải mã TV và cổng nối TV-in

- Bộ điều khiển USB Host/Slave với cổng USB kiểu A và kiểu B

Trang 22

- Cổng giao tiếp RS-232 và cổng nối 9-pin.

- Cổng giao tiếp hồng ngoại

Hình 3-16: Sơ đồ khối Kit DE2-115[5].

Trang 23

Trong khóa luận này, những khối sẽ được sử dụng là: USB Blaster, Vi mạchFPGA Altera Cyclone IV E, Cổng giao tiếp RS-232, nút nhấn, LED và Bộ dao động50-MHz Là những khối được viền đỏ như hình 3-6.

3.2.3 Một vài ứng dụng kit DE2[5]

 Ứng dụng làm TV box:

Hình 3-17: Ứng dụng TV box [5]

 Ứng dụng USB Paint Brush:

Hình 3-18: Ứng dụng USB Paint Brush.[5]

 Ứng dụng USB Device:

Trang 24

Hình 3-19: Ứng dụng USB Device.[5]

 Ứng dụng Karaoke:

Hình 3-20: Ứng dụng Karaoke [5]

3.3 Ngôn ngữ mô tả phần cứng (Hardware Description Language-HDL):

Ngôn ngữ mô tả phần cứng. bao gồm VHDL, Verilog, SystemC và Handle-C thường được sử dụng để lập trình FPGA VHDL và Verilog phát triển như là một chuẩn công nghiệp và là hai ngôn. ngữ phổ biến nhất hiện nay Xilinx ISE và Altera Quartus là 2 phần mền đều hỗ trợ VHDL và Verilog Trong khóa luận này chúng. ta sử dụng ngôn ngữ VHLD để lập trình cho Kit DE2 trên phần mền Quartus.

Trang 25

VHDL (VHSIC hardware description language) là một ngôn ngữ lập trình dùng để diễn tả phần cứng, dùng trong. thiết kế điện tử tự động, để diễn tả những hệ. thống điện tử dùng trong FPGA và IC.

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).

Cấu trúc mô hình mô tả bằng VHDL:

Thông thường một mô hình VHDL. bao gồm ba phần: thực thể, kiến trúc

và các cấu hình Đôi khi ta xử dụng các gói (packages) và mô hình kiểm tra hoạt động của hệ thống (testbench).

3.3.1.1 Thực thể (entity) của mô hình:

Phần khai báo thực thể chỉ rõ tên và liệt kê các I/O có dạng như sau:

Entity <tên thực thể> is

Generic <khai báo Generic>;

Port<khai báo các tín hiệu I/O>;

End<tên thực thể>;

Trang 26

Một thực thể luôn bắt đầu với từ khóa entity, theo sau là tên của thực thể

và từ khóa is Rồi đến các khai. báo cổng với từ khóa port Một thực thể luôn kết thúc với từ khóa end và tên của thực thê.

 Tên thực thể là tên của thực thể người lập trình đặt.

 Các tín hiệu I/O: tên của các. tín hiệu do người lập trình đặt, ngăn cách bởi dấu phẩy, chỉ ra các tín hiệu nối với bên ngoài.

 Các chế độ của tín hiệu khai. báo trong port chỉ ra chiều của

tín hiệu, có các mode sau:

- in: dùng cho tín hiệu đi vào thực thể.

- out: dùng cho tín hiệu đi ra khỏi thực thể.

- budder: dùng cho tín hiệu đi ra và có thể được đọc cả bên

trong thực thể.

- inout: dùng cho tín. hiệu vào và ra khỏi thực thể.

3.3.1.2 Kiến trúc của mô hình:

Cấu trúc của nó như thế sau:

Achitecture <tên kiến trúc> of <tên thực thể> is

[các phần khai báo: signal, component…]

Begin

[code]

End <tên kiến trúc>;

Trong kiến trúc mô hình chúng ta. có thể khai báo tất cả mọi thứ liên quan tới chương trình, trong đó có các process, các chương trình con với lời gọi hàm component, khai báo các signal. và các lệnh port map để kết nối các thành phần con có trong kiến trúc

CHƯƠNG 4 THIẾT KẾ BỘ LỌC NHIỄU MEDIAN

Trang 27

4.1 TRÊN CÔNG NGHỆ FPGA

Phần này, chúng ta nghiên cứu thiết kế bộ lọc nhiễu trên nền FPGA Nhiệm

vụ là lấy dữ liệu hình ảnh trắng đen bị nhiễu từ máy tính thông qua Matlab

và xử lý nhiễu bằng bộ lọc trung vị (Median) sau đó truyền lại hiển thị trênmáy tính

4.2 Nguyên lý hoạt động của bộ lọc nhiễu Media:

Dữ liệu của ảnh sẽ được tạo nhiễu từ Matlab sau đó sẽ được truyền đến FPGAthông qua cổng UART đưa đế bộ nhớ SDRAM để lưu trữ Sau đó dữ liệu sẽđược truyền đến Median filter để xử lý nhiễu rồi truyền đến RAM, rồi truyền lạimáy tính thông qua UART

Hình 4-21: Sơ đồ tổng quan bộ lọc Median.

Sơ đồ khối gồm có:

 Khối UART (universal asynchronous receiver-transmitter) nhận tínhiệu nối tiếp từ máy tính xử lý đưa vào FIFO

 Median Filter là bộ lọc trung vị dùng để xử lý, lọc nhiễu ảnh

 SDRAM (Synchronous dynamic random-access memory) là bộ nhớtruy xuất dữ liệu

 Khối FIFO (First-In-First-Out) là một khối nhớ đệm đặc biệt, dùnglàm các khối đệm cho việc lưu trữ, dữ liệu sẽ được nhận từ UART

Trang 28

đưa vào SDRAM sau đó lấy dữ liệu từ SDRAM chuyển đến bộ lọc để

xử lý lọc nhiễu rồi truyền lại SDRAM, và lấy dữ liệu đã được xử lýtruyền lại đến UART để hiển thị lên máy tính

 Khối PC (Personal Computer) được thiết kế giao diện phần mền đểtruyền và nhận dữ liệu từ board mạch

4.2.1 Khối UART:

UART là bộ giao tiếp không đồng bộ, bao gồm có 2 đường truyền và nhận dữ liệu

Hình 4-22: Giao tiếp UART

Nguyên lý hoạt động:

 Tính toán tốc độ baud và tốc độ lấy mẫu: Tốc độ baud là tốc độ truyền

dữ liệu theo bit trên giây Tỷ lệ lấy mẫu là số lần mạch thu nhận lấymẫu đầu vào nhận trong mỗi chu kỳ Chúng ta cần hai bộ đếm đểđồng bộ thời gian lấy mẫu và tốc độ truyền dữ liệu

tỷ lệ lấy mẫu= tần số

tốc độ baudtốc độ truyền= t ỷ l ệ lấ y mẫ u

s ố mẫ u trong c h u k ỳ

Hình 4-23: Khung dữ liệu.

Trang 29

Truyền tín hiệu: Khi tx_ena được xác nhận, dữ liệu trên tx_data được chốt vàothanh ghi dịch Tại thời điểm này, bit chẵn lẻ cũng được tính toán bằng cách sửdụng logic XOR và được chốt vào thanh ghi, cùng với các bit start và stop Sau đóđược truyền đi đến chân tx tx_busy cho biết quá trình truyền hoàn tất và mạch đãsẵn sàng nhận dữ liệu mới.

 Nhận tín hiệu: khi có xung lấy mẫu mạch sẽ nhận tín hiệu Nếu pháthiện mức logic thấp, mạch bắt đầu đếm và nhận bit start đến khi pháthiện đủ số lượng bit truyền đến khi có tín hiệu thấp liên tục đượctruyền Tại thời điểm này, nó bắt đầu dịch chuyển các bit từ rx vàothanh ghi thay dịch theo tốc độ baud, bằng cách đếm xung lấy mẫu.sau đó sẽ được kiểm tra lấy mẫu

4.2.2 Khối FIFO:

FIFO (First-In-First-Out) là một khối nhớ đặc biệt, rất hay ứng dụng trongcác hệ thống truyền dẫn số, dùng làm các khối đệm trong các thiết bị lưu trữ… Đặcđiểm duy nhất cũng là yêu cầu khi thiết kế khối này là dữ liệu nào vào trước thì khiđọc sẽ ra trước Đối với FIFO không còn khái niệm địa chỉ mà chỉ còn các cổngđiểu khiển đọc và ghi dữ liệu Tùy theo yêu cầu cụ thể mà FIFO có thể được thiết

kế bằng các cách khác nhau Sơ đồ đơn giản và tổng quát nhất của FIFO là sơ đồ sửdụng khối RAM đồng bộ hai cổng đọc ghi độc lập

- Khối xác định trạng thái FIFO (FIFO_STATE) tạo ra hai tín hiệu FIFO_FULL, vàFIFO_EMPTY để thông báo về tình trạng dầy hoặc rỗng tương ứng của bộ nhớ Đểtạo ra các tín hiệu này sử dụng một bộ đếm, ban đầu bộ đếm được khởi tạo bằng 0

Bộ đếm này thay đổi như sau:

- Nếu có thao tác đọc mà không ghi thì giá trị bộ đếm giảm xuống 1

- Nếu có thao tác ghi mà không đọc thì giá trị bộ đếm tăng lên 1

- Nếu có thao tác đọc và ghi thì giá trị bộ đếm không thay đổi

Bằng cách đó:

- FIFO_EMPTY = 1 nếu giá trị bộ đếm bằng 0

Trang 30

- FIFO_FULL = 1 nếu giá trị bộ đếm bằng giá trị tổng số ô nhớ của RAM là2addr_width – 1

- Khối điều khiển ghi vào FIFO (WRITE_FIFO) thực hiện tiền xử lý cho thao tácghi dữ liệu trên một kênh cố định trong khối RAM Địa chỉ của kênh này được khởitạo bằng 0 và được tăng thêm 1 sau mỗi lần ghi dữ liệu Khi giá trị địa chỉ đạt tớigiá trị cao nhất bằng 2addr_width – 1 thì đƣợc trả lại bằng 0 Thao tác ghi dữ liệuđược thực hiện chỉ khi FIFO chưa đầy (FIFO_FULL = 0)

- Khối điều khiển đọc vào FIFO (READ_FIFO) thực hiện tiền xử lý cho thao tácđọc dữ liệu theo kênh còn lại của khối RAM Địa chỉ của kênh này được khởi tạobằng 0 và được tăng thêm 1 sau mỗi lần đọc dữ liệu Khi giá trị địa chỉ đạt tới giátrị cao nhất bằng 2addr_width – 1 thì đƣợc trả lại bằng 0 Thao tác đọc dữ liệu đượcthực hiện chỉ khi FIFO chưa đầy (FIFO_EMPTY = 0)

Hình 4-24: Sơ đồ khối FIFO [3].

4.3 Cửa sổ trượt:

Trang 31

Cửa sổ trượt có công dụng dùng để trượt qua ảnh để lấy giá trị trên ảnh đưa đếnMedian filter để xử lý Cửa sổ trượt là khối 3x3 hoạt độ trượt trên thanh ghi 2D, dữliệu sẽ được truyền như sau:

- Lưu trữ dữ liệu từ vị trí (2,3) và vị trí (3,3) đến ô nhớ 1 và ô nhớ 2trong thanh ghi

- Dữ liệu bắt đầu dịch theo cột trên cửa sổ trượt

- Lấy dữ liệu mới vào ô nhớ (3,3)

- Lấy dữ liệu đã được lưu ở ô nhớ 2 cửa thanh ghi đưa đến vị trí(2,3) của cửa sổ trượt

- Lấy dữ liệu đã được lưu ở ô nhớ 1 cửa thanh ghi đưa đến vị trí(1,3) của cửa sổ trượt

Hình 4-25: Cửa sổ trượt[7].

4.4 Median filter:

Trang 32

Bộ lọc trung vị sử dụng phép so sánh để tìm ra giá trị ở vị trí trung bình khi đượcsắp xếp theo thứ tự từ nhỏ đến lớn của các pixel ở các vị trí lân cận, để làm giá trịcho pixel trung tâm Ở đây ta sử dụng cửa sổ 3x3 để so sánh

Hình 4-26: Ví dụ về Median filter.

Như ví dụ trên, chúng sẽ được sắp xếp tăng dần: 23,34,35,39,45,46,53,56,65.Sau đó ta sẽ chọn giá trị ở vị trí trung bình để gán vào cho pixel I(i,j) = 45

Trang 33

o_data i_data

add en rst

Hình 4-27: So sánh 2 giá trị trong bộ lọc.

Hình 4-28: Sau khi kết hợp các basic node để tạo ra bộ so sánh 9 giá trị, để tìm ra giá trị

Thiết Kế Bộ Lọc Nhiễu Để Khôi Phục

Ảnh Trên Nền Công Nghệ FPGA

Median Filter

Trang 34

4.5 Sử dụng GUI trên Matlab:

Matlab sẽ giúp tao nhiễu cho ảnh, sau đó truyền và nhận hình ảnh từ kit DE2-115 đểhiển thị so sánh sự thay đổi của ảnh trước và sao khi lọc nhiễu

Thiết Kế Bộ Lọc Nhiễu Để Khôi Phục

Start

Chọn ảnh

Add nhiễu muối tiêu

Lọc nhiễu bằng Matlab

Lọc nhiễu bằng FPGA

So sánh với ảnh góc

Hiển thị kếtquả ra GUI

Trang 35

CHƯƠNG 5 KẾT QUẢ5.1 Mô phỏng trên Matlab:

Hình 5-31:Xử lý ảnh trắng đen.

Hình 5-32: Xử lý ảnh màu.

5.2 Chạy mô phong trên phần mền Modelsim:

Trang 36

Hình 5-33: Mô phỏng bộ lọc Median filter.

Hình 5-34: Mô phỏng lấy dữ liệu từ RAM.

Ngày đăng: 22/03/2019, 20:32

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w