70 lines
2.1 KiB
Verilog
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

`timescale 1ns / 1ps
module Image_XYCrop(
input clk,
input rst_n,
//CMOS
input image_in_vsync,
input image_in_href,
input image_in_data,
output image_out_vsync,
output image_out_href_left,
output image_out_data_left,
output image_out_href_right,
output image_out_data_right
);
//-----------------------------------
reg image_in_href_r = 0;
reg image_in_vsync_r = 0;
reg image_in_data_r = 0;
always@(posedge clk or negedge rst_n) begin
if(!rst_n) begin
image_in_vsync_r <= 0;
image_in_href_r <= 0;
image_in_data_r <= 0;
end
else begin
image_in_vsync_r <= image_in_vsync;
image_in_href_r <= image_in_href;
image_in_data_r <= image_in_data;
end
end
//-----------------------------------
//Image Ysize Crop
reg [11:0] image_ypos = 0;
wire image_in_href_negedge = (image_in_href_r & ~image_in_href) ? 1'b1 : 1'b0;
always@(posedge clk or negedge rst_n) begin
if(!rst_n)
image_ypos <= 0;
else if(image_in_vsync == 1'b1) begin
if(image_in_href_negedge == 1'b1) //行同步信号的下降沿一行信号赋值完成后image_ypos累加1
image_ypos <= image_ypos + 1'b1;
else
image_ypos <= image_ypos;
end
else
image_ypos <= 0;
end
assign image_out_vsync = image_in_vsync_r; // image_out_vsync是打一拍后的 image_in_vsync的信号延时了一个时钟周期
//-----------------------------------
//Image Hsize Crop
reg [11:0] image_xpos = 0;
always@(posedge clk or negedge rst_n) begin
if(!rst_n)
image_xpos <= 0;
else if(image_in_href == 1'b1)
image_xpos <= image_xpos + 1'b1;
else
image_xpos <= 0;
end
assign image_out_href_right = ((image_in_href_r == 1'b1) && (image_xpos > 10'd640) && (image_xpos < 12'd1280)) ? 1'b1 : 1'b0;
assign image_out_data_right = (image_out_vsync & image_out_href_right) ? image_in_data_r : 1'd0;
assign image_out_href_left = ((image_in_href_r == 1'b1) && (image_xpos <= 10'd640)) ? 1'b1 : 1'b0;
assign image_out_data_left = (image_out_vsync & image_out_href_left) ? image_in_data_r : 1'd0;
endmodule