finish GammaCorrection and pass simmulation
This commit is contained in:
@@ -207,11 +207,15 @@ int sc_main(int argc, char* argv[]) {
|
||||
sc_signal<bool> out_receive;
|
||||
sc_signal<uint32_t> out_data;
|
||||
|
||||
sc_signal<bool> color_correction;
|
||||
sc_signal<bool> blender_enable;
|
||||
sc_signal<uint32_t> gain_red;
|
||||
sc_signal<uint32_t> gain_green;
|
||||
sc_signal<uint32_t> gain_blue;
|
||||
|
||||
sc_signal<bool> gamma_enable;
|
||||
sc_signal<uint32_t> gamma_inverse;
|
||||
sc_signal<uint32_t> gamma_table[256];
|
||||
|
||||
sc_signal<bool> flag_done;
|
||||
|
||||
// Construct the Verilated model, from inside Visp.h
|
||||
@@ -236,12 +240,22 @@ int sc_main(int argc, char* argv[]) {
|
||||
isp->gain_red(gain_red);
|
||||
isp->gain_green(gain_green);
|
||||
isp->gain_blue(gain_blue);
|
||||
isp->color_correction(color_correction);
|
||||
isp->blender_enable(blender_enable);
|
||||
|
||||
color_correction.write(true); // enable color correction
|
||||
gain_red.write((uint32_t)(color_gain.red * std::pow(2, 8)));
|
||||
gain_green.write((uint32_t)(color_gain.green * std::pow(2, 8)));
|
||||
gain_blue.write((uint32_t)(color_gain.blue * std::pow(2, 8)));
|
||||
isp->gamma_enable(gamma_enable);
|
||||
// isp->gamma_inverse(gamma_inverse);
|
||||
|
||||
blender_enable = true; // enable color correction
|
||||
gain_red = (uint32_t)(color_gain.red * std::pow(2, 8));
|
||||
gain_green = (uint32_t)(color_gain.green * std::pow(2, 8));
|
||||
gain_blue = (uint32_t)(color_gain.blue * std::pow(2, 8));
|
||||
|
||||
gamma_enable = true;
|
||||
gamma_inverse = (uint32_t)((1.0 / gamma_value) * std::pow(2, 8));
|
||||
for (int i = 0; i < 256; i++) {
|
||||
isp->gamma_table[i](gamma_table[i]);
|
||||
gamma_table[i] = (uint32_t)(255 * pow(i / 255.0, 1.0 / gamma_value));
|
||||
}
|
||||
|
||||
// Construct testbench module
|
||||
TB_ISP tb_isp("tb_isp");
|
||||
|
||||
Reference in New Issue
Block a user