Files
Imants Pulkstenis d18a10f6ea Initial commit
Uploading to GitHub
2019-07-11 18:01:21 +03:00

110 lines
3.3 KiB
Verilog

module overlay #(
parameter CAM_DATA_WIDTH = 12,
CAM_LINE = 9,
CAM_PIXEL = 10
) (
input clk,
input enable,
// input form camera
input i_we,
input [CAM_DATA_WIDTH-1:0] i_data,
input [CAM_LINE-1:0] i_line,
input [CAM_PIXEL-1:0] i_pixel,
// image size and does it need to be resized
input [CAM_LINE-1:0] i_imag_depth,
input [CAM_PIXEL-1:0] i_imag_width,
input i_imag_resized,
output [CAM_LINE-1:0] o_imag_depth,
output [CAM_PIXEL-1:0] o_imag_width,
output o_imag_resized,
// output
output o_we,
output [CAM_DATA_WIDTH-1:0] o_data,
output [CAM_LINE-1:0] o_line,
output [CAM_PIXEL-1:0] o_pixel
);
//------------Internal variables and constants-----------
reg [CAM_LINE-1:0] r_line = 0;
reg [CAM_PIXEL-1:0] r_pixel = 0;
reg [CAM_DATA_WIDTH-1:0] r_data = 0;
reg r_we = 0;
//------------ syncronus logic----------------------------
always@(posedge clk) begin
if(i_imag_resized) begin
if (enable) begin
if (i_line == 40 ||
i_line == 80 ||
i_line == 120 ||
i_line == 160 ||
i_line == 200 ||
i_pixel == 40 ||
i_pixel == 80 ||
i_pixel == 120 ||
i_pixel == 160 ||
i_pixel == 200 ||
i_pixel == 240 ||
i_pixel == 280 ) begin
r_line <= i_line;
r_pixel <= i_pixel;
r_data <= 12'h0f0;
r_we <= i_we;
end else begin
r_line <= i_line;
r_pixel <= i_pixel;
r_data <= i_data;
r_we <= i_we;
end
end else begin
r_line <= i_line;
r_pixel <= i_pixel;
r_data <= i_data;
r_we <= i_we;
end
end
else begin
if (enable) begin
if (i_line == 80 ||
i_line == 160 ||
i_line == 240 ||
i_line == 320 ||
i_line == 400 ||
i_pixel == 80 ||
i_pixel == 160 ||
i_pixel == 240 ||
i_pixel == 320 ||
i_pixel == 400 ||
i_pixel == 480 ||
i_pixel == 560
) begin
r_line <= i_line;
r_pixel <= i_pixel;
r_data <= 12'h0f0;
r_we <= i_we;
end else begin
r_line <= i_line;
r_pixel <= i_pixel;
r_data <= i_data;
r_we <= i_we;
end
end else begin
r_line <= i_line;
r_pixel <= i_pixel;
r_data <= i_data;
r_we <= i_we;
end
end
end
//------------ output logic -----------------------------
assign o_we = r_we;
assign o_line = r_line;
assign o_pixel = r_pixel;
assign o_data = r_data;
assign o_imag_depth = i_imag_depth;
assign o_imag_width = i_imag_width;
assign o_imag_resized = i_imag_resized;
endmodule