ISP/isp.v

98 lines
2.3 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 isp #(
parameter IN_WIDTH = 1936,
parameter IN_HEIGHT = 1088,
parameter OUT_WIDTH = 640,
parameter OUT_HEIGHT = 480,
parameter COLOR_DEPTH = 8,
parameter RAW_TYPE = 3 // 0:grbg 1:rggb 2:bggr 3:gbrg
) (
// 基本信号
input wire clk,
input wire reset,
// 数据输入信号
input wire data_en,
input reg [15:0] data_in [2:0], // 数据输入线0、1、2分别表示第一、二、三行
output reg data_que, // 数据请求线,高电平:请求三个数据,直到读取完才拉低
output wire out_clk,
output wire out_en,
output reg [3 * COLOR_DEPTH - 1:0] data_out
);
// 三通道合成RGB图像
wire rgb_en;
wire [15:0] im_red, im_green, im_blue;
// 任意比例缩放图像
reg scale_in_en;
wire scale_in_que; // scaler 请求数据
reg [3 * COLOR_DEPTH - 1:0] scale_in_data;
// 写入RAM
// wire RAM_in_en;
// wire RAM_in_que; // RAM 请求数据
// wire [3 * COLOR_DEPTH - 1:0] RAM_in_data;
always @(clk)
out_clk <= clk;
demosaic2 #(
.IM_WIDTH(IN_WIDTH),
.IM_HEIGHT(IN_HEIGHT),
.RAW_TYPE(RAW_TYPE)
) CFA (
.clk(clk),
.reset(reset),
.data_en(data_en),
.data_in(data_in),
.data_que(data_que),
.out_en(rgb_en),
.out_r(im_red),
.out_g(im_green),
.out_b(im_blue)
);
chanels_to_RGB merge_toRGB(
.clk(clk),
.reset(reset),
.in_en(rgb_en),
.data_in({im_red, im_green, im_red}),
.data_que(scale_in_que),
.out_en(scale_in_en),
.data_out(scale_in_data)
);
crop #(
.OUT_WIDTH(OUT_WIDTH),
.OUT_HEIGHT(OUT_HEIGHT),
.COLOR_DEPTH(COLOR_DEPTH)
) crop_process (
.clk(clk),
.reset(reset),
.in_en(scale_in_en),
.in_que(scale_in_que),
.data_in(scale_in_data),
.out_en(out_en),
.data_out(data_out)
);
// RGB_to_RAM write_to_RAM (
// .clk(clk),
// .reset(reset),
// .in_en(RAM_in_en),
// .in_que(RAM_in_que),
// .data_in(RAM_in_data),
// .write_que(out_que),
// .write_en(out_en),
// .data_write(data_out)
// );
endmodule