You are on page 1of 19

KRISHNA UNIVERSITY

COLLEGE OF ENGINEERING AND TECHNOLOGY

DEPARTMENT OF ELECTRONICS AND COMMUNICATION ENGINEERING


VLSI ARCHITECTURE OF
THE BILATERAL-FILTER
FOR IMAGE DE-NOISING

Under the Guidance of Team Members

Mr. K. G. VENKATA KRISHNA A. SUPRIYA (Y20ECE279002)


Asst. Prof. (Cont.) CH.PAVAN KUMAR (Y20ECE279016)
Dept. of E.C.E. D.KARIMULLA (Y20ECE279018)
KRUCET R.AKHIL (L21ECE279017)
A B STRACT

A low-cost VLSI architecture of the bilateral filter for


real-time image processing is proposed. Based on the
techniques of distance-oriented grouping and hardware
resource sharing, the usage of multipliers can decrease 4 8 %
as compared to the previous approach.Besides, an efficient
quantization method is applied to reduce the size of required
look up tables.
CONTENTS
● Introduction

● Bi-lateral filter

● Softwares used

● Verilog HDL & Modellings

● 8x3 Binary Encoder


Programming code & O/P Waveforms
INTRODUCTION
● Image denoising in image processing refers to
the process of reducing or eliminating unwanted
noise from an image.

● This noise can be caused by various factors


during image acquisition or transmission.
BI-LATERAL FILTER
● The bilateral filter is a technique in image processing
used for denoising.

● This dual filtering process helps preserve edges while


reducing noise, making it effective for enhancing
image quality.

● The bilateral filter is a weighted average of nearby pixels,


in a manner very similar to Gaussian convolution.
SOFTWARES USED

VIVADO TOOL
EDA PLAYGROUND:

● ‘EDA’ means Exploratory data analysis, it is a free IDE tool


for system verilog and VHDL.

● This “EDA Playground” allows users to edit,simulate &


Synthesize and share their HDL.

● In this tool we can get the O/P waveforms without any


software.
Verilog HDL
● Verilog is a HARDWARE DESCRIPTION LANGUAGE (HDL).

● Verilog's syntax is similar to C, making it easier for those with a background in C or C-like
languages.

● VHDL, on the other hand, has a more verbose syntax and strong typing, which some
designers may find more structured and easier to understand.

● For our project we used Verilog HDL due to its easy syntax.
Verilog HDL supports 5 Modellings:-
 Switch Level Modelling
 Gate Level Modelling
 Data-Flow Modelling
 Behavioural Modelling
 Structural Modelling
VHDL Modellings
Switch Level Modelling:
* This model is degined by using PMOS & NMOS Switches, this model is very difficult
compared to other models.
Gate Level Modelling:
* Gate level modeling is used to implement the lowest-level modules in a design, such as
multiplexers, full-adder, etc.
Data-Flow Modelling:
* The data flow modeling provides a way to design circuits depending on how data flow
between the registers and how data is processed.

Behavioural Modelling:
* The Verilog provides the facility to represent the behavior of design at a high-level
abstraction similar to C language programming.

Structural Modelling:
* Structural Modelling is used to build top module by using sub module.
8x3 Binary Encoder
Gate Level Modelling
Gate level modeling is used to implement the lowest-level modules in a
design, such as multiplexers, full-adder, etc.

Programming code:

module binary_encoder 8x3 (d0,d1,d2,d3,d4,d5,d6,d7,x,y,z);


input d0,d1,d2,d3,d4,d5,d6,d7;
output x,y,z;
or gate1(x,d4,d5,d6,d7);
or gate2(y,d2,d3,d6,d7);
or gate3(z,d1,d3,d5,d7);
endmodule
Behavioural Modelling
Programming code:
module encoder (din, dout);
input [7:0] din;
output [2:0] dout;
reg [2:0] dout;
always @(din)
begin
if (din ==8'b00000001) dout=3'b000;
else if (din==8'b00000010) dout=3'b001;
else if (din==8'b00000100) dout=3'b010;
else if (din==8'b00001000) dout=3'b011;
else if (din==8'b00010000) dout=3'b100;
else if (din ==8'b00100000) dout=3'b101;
else if (din==8'b01000000) dout=3'b110;
else if (din==8'b10000000) dout=3'b111;
else dout=3'bX;
end
endmodule
Structural Modelling
Programming code:

g5 (wa0, din6_not, din4_not, din[3]),


module enco 8x3(DOUT, D);
g6 (wa1, din5_not, din4_not, din[3]),
output [2:0] DOUT;
g7 (wa2, din5_not, din4_not, din[2]),
input [7:0] din;
g8 (wa3, din6_not, din[5]),
wire din7_not, din6_not, din5_not,
g9 (wa4, din6_not, din4_not,
din4_not, din2_not;
din2_not, din[1]);
wire wa0, wa1, wa2, wa3, wa4;;
or g11(dout[2], din[7], din[6], din[5],
//instanitate gates
din[4]),
not g0 (din7_not, din[7]),
g12(dout[1], din[7], din[6], wa1, wa2),
g1 (din6_not, din[6]),
g13(dout[0], din[7], wa0, wa3, wa4),
g2 (din5_not, din[5]),
g14(V, din[0], din[1], din[2], din[3],
g3 (din4_not, din[4]),
din[4], din[5], din[6], din[7]);
g4 (din2_not, din[2]);
endmodule
Switch Level Modelling
Programming Code:
module encoder_8x3 (reg,data);
input [7:0] data;
output reg [2:0] encoded_output;
always @(data)
begin
case (data)
8'b00000001: encoded_output = 3'b000; // Encode 1
8'b00000010: encoded_output = 3'b001; // Encode 2
8'b00000100: encoded_output = 3'b010; // Encode 4
8'b00001000: encoded_output = 3'b011; // Encode 8
8'b00010000: encoded_output = 3'b100; // Encode 16
8'b00100000: encoded_output = 3'b101; // Encode 32
8'b01000000: encoded_output = 3'b110; // Encode 64
8'b10000000: encoded_output = 3'b111; // Encode 128
default: encoded_output = 3'b000; // Default is zero
endcase
end
endmodule
Data Flow Modelling
Programming code: Testbench Code:
module binary_encoder(y,d); module tb;
input [7:0] D; reg [7:0] D;
output [2:0] y); wire [2:0] y;
assign y[2] = D[4] | D[5] | D[6] | D[7]; int i;
assign y[1] = D[2] | D[3] | D[6] | D[7]; binary_encoder bin_enc(D, y);
assign y[0] = D[1] | D[3] | D[5] | D[7]; initial begin
endmodule D=8'b1; #1;
for(i=0; i<8; i++) begin
Output: $display("D = %h(in dec:%0d) -> y = %0h", D, i, y);
D = 01(in dec:0) -> y = 0 D=D<<1; #1;
D = 02(in dec:1) -> y = 1 end
D = 04(in dec:2) -> y = 2 intial begin
D = 08(in dec:3) -> y = 3 $dumpfile(“dump.vcd”);
D = 10(in dec:4) -> y = 4
$dumpvars(1);
D = 20(in dec:5) -> y = 5
D = 40(in dec:6) -> y = 6
end
D = 80(in dec:7) -> y = 7 endmodule
O/P Waveforms
Summary
● A Low -cost and real-time VLSI architecture of a Bi-Lateral Filter is
proposed.

● Distance - Oriented grouping , resource sharing & LUT reduction are


applied to reduce the required multipliers & memory space.
THANK YOU

You might also like