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