ISP/isp.v

95 lines
2.3 KiB
Coq
Raw Normal View History

2024-05-09 22:56:32 +08:00
`timescale 1ns/1ps
module isp #(
2024-05-10 20:13:58 +08:00
parameter IN_WIDTH = 1936,
parameter IN_HEIGHT = 1088,
parameter OUT_WIDTH = 640,
parameter OUT_HEIGHT = 480,
parameter COLOR_DEPTH = 8,
2024-05-10 20:13:58 +08:00
parameter RAW_TYPE = 3 // 0:grbg 1:rggb 2:bggr 3:gbrg
2024-05-09 22:56:32 +08:00
) (
2024-05-10 20:13:58 +08:00
// 基本信号
input clk,
input reset,
2024-05-09 23:23:23 +08:00
2024-05-10 20:13:58 +08:00
// 数据输入信号
input data_en,
input [15:0] data_in [2:0], // 数据输入线012分别表示第一三行
output reg data_que, // 数据请求线高电平请求三个数据直到读取完才拉低
output reg data_line, // 新一行请求数据线高电平请求九个数据直到读取完才拉低
2024-05-13 10:49:15 +08:00
input out_que,
output out_en,
output [15:0] data_out
2024-05-09 22:56:32 +08:00
);
2024-05-11 21:53:35 +08:00
// 三通道合成RGB图像
wire rgb_en;
wire [15:0] im_red, im_green, im_blue;
2024-05-10 20:13:58 +08:00
2024-05-11 21:53:35 +08:00
// 任意比例缩放图像
wire scale_in_en;
wire scale_in_que; // scaler 请求数据
wire [3 * COLOR_DEPTH - 1:0] scale_in_data;
2024-05-13 10:49:15 +08:00
// 写入RAM
wire RAM_in_en;
wire RAM_in_que; // RAM 请求数据
wire [3 * COLOR_DEPTH - 1:0] RAM_in_data;
2024-05-11 21:53:35 +08:00
demosaic2 #(
.IM_WIDTH(1936),
.IM_HEIGHT(1088),
) CFA (
2024-05-10 20:13:58 +08:00
.clk(clk),
.reset(reset),
.data_en(data_en),
.data_in(data_in),
.data_que(data_que),
.data_line(data_line),
2024-05-11 21:53:35 +08:00
.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[0](im_red[11:0]),
.data_in[1](im_green[11:0]),
.data_in[2](im_red[11:0]),
.data_que(scale_que),
.out_en(scale_en),
.data_out(scale_in_data)
);
2024-05-13 10:49:15 +08:00
crop crop_process (
.clk(clk),
.reset(reset),
.in_en(scale_en),
.in_que(scale_que),
.data_in(scale_in_data),
.out_en(RAM_in_en),
.out_que(RAM_in_que),
.data_out(RAM_in_data)
);
RGB_to_RAM write_to_RAM (
.clk(clk),
.reset(reset),
2024-05-12 22:09:23 +08:00
2024-05-13 10:49:15 +08:00
.in_en(scale_en),
.in_que(scale_que),
.data_in(scale_in_data),
2024-05-11 21:53:35 +08:00
2024-05-13 10:49:15 +08:00
.write_que(out_que),
.write_en(out_en),
.data_write(data_out)
2024-05-10 20:13:58 +08:00
);
2024-05-09 22:56:32 +08:00
2024-05-10 21:41:47 +08:00
endmodule