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 1THIẾT KẾ BỘ LỌC NHIỄU ĐỂ KHÔI PHỤC ẢNH TRÊN NỀN CÔNG NGHỆ
FPGA
Trang 2ADC 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 3CHƯƠ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 4Hì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 5Hì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 6Và 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 7Như 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 8Saturation: độ đậ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 9Hì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 11Hì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 12Tỷ 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 13CHƯƠ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 14FPGA 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 15Lậ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 16I/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 23Trong 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 24Hì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 25VHDL (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 26Mộ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 274.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 độ baud và tố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 29Truyề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 31Cử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 32Bộ 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 33o_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 344.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 35CHƯƠ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 36Hì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.