From 5bced87dfe204ccf2fb93af55d32bb4de743166d Mon Sep 17 00:00:00 2001 From: sorgelig Date: Sat, 20 Mar 2021 18:34:40 +0800 Subject: [PATCH] Update sys. --- sys/gamma_corr.sv | 4 +++- sys/video_freak.sv | 30 +++++++++++++++++++----------- 2 files changed, 22 insertions(+), 12 deletions(-) diff --git a/sys/gamma_corr.sv b/sys/gamma_corr.sv index 7fd9368..321b83f 100644 --- a/sys/gamma_corr.sv +++ b/sys/gamma_corr.sv @@ -32,8 +32,10 @@ always @(posedge clk_vid) begin reg [7:0] R_gamma, G_gamma; reg hs,vs,hb,vb; reg [1:0] ctr = 0; + reg old_ce; - if(ce_pix) begin + old_ce <= ce_pix; + if(~old_ce & ce_pix) begin {R_in,G_in,B_in} <= RGB_in; hs <= HSync; vs <= VSync; hb <= HBlank; vb <= VBlank; diff --git a/sys/video_freak.sv b/sys/video_freak.sv index b2ce6f1..18beb03 100644 --- a/sys/video_freak.sv +++ b/sys/video_freak.sv @@ -73,14 +73,13 @@ always @(posedge CLK_VIDEO) begin arx <= ARX; ary <= ARY; - vsize <= vcrop; + vsize <= vcrop ? vcrop : vtot; mul_start <= 0; if(!vcrop || !ary || !arx) begin arxo <= arx; aryo <= ary; - vsize <= vtot; end else if (vcalc) begin if(~mul_start & ~mul_run) begin @@ -182,7 +181,7 @@ always @(posedge CLK_VIDEO) begin div_start <= 0; mul_start <= 0; - if (!SCALE || !ary_i || !arx_i) begin + if (!SCALE || (!ary_i && arx_i)) begin arxf <= arx_i; aryf <= ary_i; end @@ -210,48 +209,57 @@ always @(posedge CLK_VIDEO) begin 2: begin oheight <= mul_res[11:0]; + if(!ary_i) begin + cnt <= 8; + end + end + + 3: begin mul_arg1 <= mul_res[11:0]; mul_arg2 <= arx_i; mul_start <= 1; end - 3: begin + 4: begin div_num <= mul_res; div_den <= ary_i; div_start <= 1; end - 4: begin + 5: begin div_num <= div_res; div_den <= hsize; div_start <= 1; end - 5: begin + 6: begin mul_arg1 <= hsize; mul_arg2 <= div_res[11:0] ? div_res[11:0] : 12'd1; mul_start <= 1; end - 6: if(mul_res <= HDMI_WIDTH) cnt <= 8; - else begin + 7: if(mul_res <= HDMI_WIDTH) begin + cnt <= 10; + end + + 8: begin div_num <= HDMI_WIDTH; div_den <= hsize; div_start <= 1; end - 7: begin + 9: begin mul_arg1 <= hsize; mul_arg2 <= div_res[11:0] ? div_res[11:0] : 12'd1; mul_start <= 1; end - 8: begin + 10: begin narrow <= ((div_num[11:0] - mul_res[11:0]) <= (wideres - div_num[11:0])) || (wideres > HDMI_WIDTH); wres <= wideres; end - 9: begin + 11: begin case(SCALE) 2: arxf <= {1'b1, mul_res[11:0]}; 3: arxf <= {1'b1, (wres > HDMI_WIDTH) ? mul_res[11:0] : wres};