You are on page 1of 5

`timescale 1ns / 1ps

//////////////////////////////////////////////////////////////////////////////////
// Company:
// Engineer:
//
// Create Date: 22:03:59 12/13/2018
// Design Name:
// Module Name: sobel_edge_detect
// Project Name:
// Target Devices:
// Tool versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//////////////////////////////////////////////////////////////////////////////////
module sobel_edge_detect(
input clk,rst,
input [15:0] b,
input [3:0]e,
input [16:0]f,
output reg[4:0] y
);
reg [7:0]m[0:7][0:7];
reg [7:0]n[0:2][0:2];
reg [7:0]c[0:2][0:2];
reg [7:0]a[0:2][0:2];
reg [15:0]o[0:4][0:4];
reg [15:0]p[0:4][0:4];
reg [3:0]s1,s3;
reg [15:0]s2,s4;
integer i1,j1,i2,j2,k,l,s,t,r,q,i3,j3,i4,j4,r1,i5,j5;
always@(posedge clk)
begin
if(rst==1)
begin
s1<=4'd0;s2<=16'd0;s3<=4'd0;s4<=16'd0;

q<=0;i5<=0;j5<=0;

i1<=0;
j1<=0;
r<=0;
y<=15'd0;
s<=t+2;
i2<=0;
k<=0;
l<=2;
t<=0;
j2<=0;
i3<=0;j3<=0;i4<=0;j4<=0;r1<=0;
end
else
begin
if(j1<=7&&r==0)
begin
j1<=j1+1;
m[i1][j1]<=b;
if(j3<=2&&j4<=2&&r==0)
begin
j3<=j3+1;
j4<=j4+1;
c[i3][j3]<=e;
a[i4][j4]<=f;
if(j3==2&&j4==2&&r==0)
begin
j3<=0;
j4<=0;
if(i3<=2&&i3<=2&&r==0)
begin
i3<=i3+1;
i4<=i4+1;
if(i3==2&&i4==2&&r==0)
begin
i3<=3;
j3<=3;
i4<=3;
j4<=3;
end
end
end
end
if(j1==7&&r==0)
begin
j1<=0;
if(i1<=7&&r==0)
begin
i1<=i1+1;
if(i1==7&&r==0)
begin
i1<=8;
j1<=8;
r<=r+1;

end
end
end
end

if(r==1)
begin
i1<=0;
j1<=0;
j2<=0;
i2<=0;
s1<=0;
s2<=0;s4<=0;
s3<=0;
r<=r+1;
end
if(r==2)
begin
if(j2<=2&&j1<=l&&r==2)
begin
j1<=j1+1;
j2<=j2+1;
n[i2][j2]=m[i1][j1];
s1=s1+(n[i2][j2]*c[i2][j2]);
s2=s2+(n[i2][j2]*a[i2][j2]);

if(j2==2&&j1==l&&r==2)
begin

j2<=0;
j1<=k;

if(i2<=2&&i1<=s&&r==2)
begin
i2<=i2+1;
i1<=i1+1;

if(i2==2&&i1==s&&r==2)
begin
s3=s1;
s4=s2;
i1<=q;
i2<=0;
j1<=k+1;
j2<=0;
k<=k+1;
l<=l+1;
t<=t+1;
s1=4'd0;
s2=4'd0;
if(j1==7&&i1==2&&r==2)
begin

i1<=1;
i2<=0;
j1<=0;
j2<=0;
l<=2;
k<=0;
s<=3;
t<=0;
q<=q+1;
end
else if(j1==7&&i1==3&&r==2)

begin
i1<=2;
i2<=0;
j1<=0;
j2<=0;
l<=2;
k<=0;
s<=4;
t<=0;
q<=q+1;
end
else if(j1==7&&i1==4&&r==2)
begin
i1<=3;
i2<=0;
j1<=0;
j2<=0;
l<=2;
k<=0;
s<=5;
t<=0;
q<=q+1;
end
else if(j1==7&&i1==5&&r==2)
begin
i1<=4;
i2<=0;
j1<=0;
j2<=0;
l<=2;
k<=0;
s<=6;
t<=0;
q<=q+1;
end
else if(j1==7&&i1==6&&r==2)
begin
i1<=5;
i2<=0;
j1<=0;
j2<=0;
l<=2;
k<=0;
s<=7;
t<=0;
q<=q+1;
end
else if(j1==7&&i1==7&&r==2)

begin
i1<=5;
i2<=5;
j1<=5;
j2<=5;
l<=2;
k<=2;
s<=2;
t<=2;
end
else
begin
if(j5<=4&&r==2)
begin

p[i5][j5]<=s4;
o[i5][j5]<=s3;
j5<=j5+1;
if(j5==4&&r==2)
begin
j5<=0;

if(i5<=4&&r==2)
begin
i5<=i5+1;

if(i5==4&&r==2)
begin
i5<=5;
j5<=5;
end
end
end
end
end
end
end
end
end
end

end
end
//end
//end

endmodule

You might also like