From 637aaad1cb7ee8019eb803a306f68397314f435a Mon Sep 17 00:00:00 2001 From: David Banks Date: Mon, 30 Dec 2019 19:26:07 +0000 Subject: [PATCH] vhdl_YUV: rework design: 63 -> 57 macro cells (v5.A) Change-Id: Idbcdaf7363d0f705a024d91571c102b34b7b9b5c --- vhdl_YUV_6bit/RGBtoHDMI.vhdl | 86 +++++++++------ vhdl_YUV_6bit/YUV_CPLD_v5A.xsvf | Bin 0 -> 53289 bytes vhdl_YUV_6bit/fitting.notes | 179 ++++---------------------------- 3 files changed, 73 insertions(+), 192 deletions(-) create mode 100644 vhdl_YUV_6bit/YUV_CPLD_v5A.xsvf diff --git a/vhdl_YUV_6bit/RGBtoHDMI.vhdl b/vhdl_YUV_6bit/RGBtoHDMI.vhdl index ae4cab45..d65b4166 100644 --- a/vhdl_YUV_6bit/RGBtoHDMI.vhdl +++ b/vhdl_YUV_6bit/RGBtoHDMI.vhdl @@ -49,7 +49,7 @@ architecture Behavorial of RGBtoHDMI is -- Version number: Design_Major_Minor -- Design: 0 = Normal CPLD, 1 = Alternative CPLD, 2=Atom CPLD, 3=YUV6847 CPLD - constant VERSION_NUM : std_logic_vector(11 downto 0) := x"359"; + constant VERSION_NUM : std_logic_vector(11 downto 0) := x"35A"; -- Default offset to start sampling at when using the leading edge of sync constant leading_offset : unsigned(9 downto 0) := to_unsigned(1024 - 512, 10); @@ -66,8 +66,6 @@ architecture Behavorial of RGBtoHDMI is -- Sampling points constant INIT_SAMPLING_POINTS : std_logic_vector(8 downto 0) := "000110000"; - signal colour1 : std_logic_vector(5 downto 0); - signal colour2 : std_logic_vector(5 downto 0); -- The sampling counter runs at 8x pixel clock of 7.15909MHz = 56.272720MHz -- @@ -110,6 +108,13 @@ architecture Behavorial of RGBtoHDMI is signal LL2 : std_logic; signal LH2 : std_logic; + signal AL_next : std_logic; + signal AH_next : std_logic; + signal BL_next : std_logic; + signal BH_next : std_logic; + signal LL_next : std_logic; + signal LH_next : std_logic; + signal AL : std_logic; signal AH : std_logic; signal BL : std_logic; @@ -151,12 +156,46 @@ begin end process; -- Combine the YUV bits into a 6-bin colour value (combinatorial logic) - process(AL, AH, BL, BH, LL, LH, inv_R) + process(AL1, AL2, AL_I, + AH1, AH2, AH_I, + BL1, BL2, BL_I, + BH1, BH2, BH_I, + LL1, LL2, LL_S, + LH1, LH2, LH_S, + filter_C, + filter_L, + inv_R + ) + variable tmp_AL : std_logic; + variable tmp_AH : std_logic; begin - if inv_R = '1' and AH = AL then - colour1 <= BL & LL & not(AL) & BH & LH & not(AH); + if filter_C = '1' then + tmp_AL := (AL1 AND AL2) OR (AL1 AND AL_I) OR (AL2 AND AL_I); + tmp_AH := (AH1 AND AH2) OR (AH1 AND AH_I) OR (AH2 AND AH_I); else - colour1 <= BL & LL & AL & BH & LH & AH; + tmp_AL := AL1; + tmp_AH := AH1; + end if; + if filter_C = '1' then + BL_next <= (BL1 AND BL2) OR (BL1 AND BL_I) OR (BL2 AND BL_I); + BH_next <= (BH1 AND BH2) OR (BH1 AND BH_I) OR (BH2 AND BH_I); + else + BL_next <= BL1; + BH_next <= BH1; + end if; + if filter_L = '1' then + LL_next <= (LL1 AND LL2) OR (LL1 AND LL_S) OR (LL2 AND LL_S); + LH_next <= (LH1 AND LH2) OR (LH1 AND LH_S) OR (LH2 AND LH_S); + else + LL_next <= LL1; + LH_next <= LH1; + end if; + if inv_R = '1' and tmp_AH = tmp_AL then + AL_next <= not tmp_AL; + AH_next <= not tmp_AH; + else + AL_next <= tmp_AL; + AH_next <= tmp_AH; end if; end process; @@ -223,28 +262,16 @@ begin -- sample colour signal if (subsam_C = '0' and counter(2 downto 0) = "000") or (subsam_C = '1' and counter(3 downto 0) = "0100") then - if filter_C = '1' then - AL <= (AL1 AND AL2) OR (AL1 AND AL_I) OR (AL2 AND AL_I); - AH <= (AH1 AND AH2) OR (AH1 AND AH_I) OR (AH2 AND AH_I); - BL <= (BL1 AND BL2) OR (BL1 AND BL_I) OR (BL2 AND BL_I); - BH <= (BH1 AND BH2) OR (BH1 AND BH_I) OR (BH2 AND BH_I); - else - AL <= AL1; - AH <= AH1; - BL <= BL1; - BH <= BH1; - end if; + AL <= AL_next; + AH <= AH_next; + BL <= BL_next; + BH <= BH_next; end if; -- sample luminance signal if counter(2 downto 0) = "000" then - if filter_L = '1' then - LL <= (LL1 AND LL2) OR (LL1 AND LL_S) OR (LL2 AND LL_S); - LH <= (LH1 AND LH2) OR (LH1 AND LH_S) OR (LH2 AND LH_S); - else - LL <= LL1; - LH <= LH1; - end if; + LL <= LL_next; + LH <= LH_next; end if; -- TODO - if more space needed @@ -255,7 +282,7 @@ begin -- -- 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 -- L Sample L0 L1 L2 L3 - -- C Sample C0 C2 + -- C Sample CA CB -- Quad L0/CA/L1 L2/CB/L3 -- @@ -263,12 +290,9 @@ begin quad <= VERSION_NUM; psync <= FS_I; elsif counter(counter'left) = '0' then - if counter(2 downto 0) = "000" then - colour2 <= colour1; - end if; if counter(3 downto 0) = "0000" then - quad(11 downto 6) <= colour1; - quad( 5 downto 0) <= colour2; + quad(11 downto 6) <= BL_next & LL_next & AL_next & BH_next & LH_next & AH_next; + quad( 5 downto 0) <= BL & LL & AL & BH & LH & AH; end if; if counter(3 downto 0) = "0010" then psync <= counter(4); diff --git a/vhdl_YUV_6bit/YUV_CPLD_v5A.xsvf b/vhdl_YUV_6bit/YUV_CPLD_v5A.xsvf new file mode 100644 index 0000000000000000000000000000000000000000..df2fdcdf0910663390fdbe61dc71c85b0dff304f GIT binary patch literal 53289 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 Oa9ikW3LUACR{uZh*QLGy literal 0 HcmV?d00001 diff --git a/vhdl_YUV_6bit/fitting.notes b/vhdl_YUV_6bit/fitting.notes index 3cac220e..6c9d5f45 100644 --- a/vhdl_YUV_6bit/fitting.notes +++ b/vhdl_YUV_6bit/fitting.notes @@ -1,175 +1,32 @@ -1. Atom CPLD: Initial version for home-etched prototype +vhdl_YUV: fix hang when sync threshold too low (v5.8) Function Mcells FB Inps Pterms IO Block Used/Tot Used/Tot Used/Tot Used/Tot -FB1 18/18* 30/54 49/90 8/ 9 -FB2 17/18 26/54 38/90 4/ 9 -FB3 18/18* 30/54 69/90 8/ 9 -FB4 18/18* 32/54 48/90 7/ 7* +FB1 18/18* 30/54 47/90 6/ 9 +FB2 17/18 26/54 35/90 8/ 9 +FB3 18/18* 32/54 70/90 9/ 9* +FB4 18/18* 37/54 65/90 6/ 7 ----- ----- ----- ----- - 71/72 118/216 204/360 27/34 + 71/72 125/216 217/360 29/34 -2. Atom CPLD: Reworked for a 57.272MHz clock +vhdl_YUV: rework design: 71 -> 63 macro cells (v5.9) Function Mcells FB Inps Pterms IO Block Used/Tot Used/Tot Used/Tot Used/Tot -FB1 18/18* 26/54 48/90 8/ 9 -FB2 14/18 23/54 31/90 4/ 9 -FB3 18/18* 30/54 61/90 8/ 9 -FB4 18/18* 29/54 45/90 7/ 7* +FB1 16/18 33/54 63/90 6/ 9 +FB2 12/18 20/54 25/90 8/ 9 +FB3 18/18* 28/54 63/90 9/ 9* +FB4 17/18 36/54 75/90 6/ 7 ----- ----- ----- ----- - 68/72 108/216 185/360 27/34 + 63/72 117/216 226/360 29/34 -3. Atom CPLD: Shave two bits of the counter +vhdl_YUV: rework design: 63 -> 57 macro cells (v5.A) Function Mcells FB Inps Pterms IO Block Used/Tot Used/Tot Used/Tot Used/Tot -FB1 18/18* 30/54 49/90 8/ 9 -FB2 12/18 22/54 27/90 4/ 9 -FB3 18/18* 28/54 60/90 8/ 9 -FB4 18/18* 30/54 44/90 7/ 7* +FB1 12/18 33/54 83/90 6/ 9 +FB2 17/18 27/54 32/90 8/ 9 +FB3 10/18 33/54 81/90 9/ 9* +FB4 18/18* 33/54 71/90 6/ 7 ----- ----- ----- ----- - 66/72 110/216 180/360 27/34 - -4. Atom CPLD: Added back in glitch filtering - -Function Mcells FB Inps Pterms IO -Block Used/Tot Used/Tot Used/Tot Used/Tot -FB1 18/18* 30/54 58/90 8/ 9 -FB2 12/18 24/54 39/90 4/ 9 -FB3 18/18* 27/54 60/90 8/ 9 -FB4 18/18* 31/54 83/90 7/ 7* - ----- ----- ----- ----- - 66/72 112/216 240/360 27/34 - -5. Atom CPLD: Generate CSYNC from HS_N and FS_N - -Function Mcells FB Inps Pterms IO -Block Used/Tot Used/Tot Used/Tot Used/Tot -FB1 18/18* 30/54 58/90 8/ 9 -FB2 13/18 25/54 40/90 4/ 9 -FB3 18/18* 29/54 63/90 8/ 9 -FB4 18/18* 31/54 83/90 7/ 7* - ----- ----- ----- ----- - 67/72 115/216 244/360 27/34 - -6. Atom CPLD: Increase Offset to 4 bits - -Function Mcells FB Inps Pterms IO -Block Used/Tot Used/Tot Used/Tot Used/Tot -FB1 18/18* 29/54 52/90 8/ 9 -FB2 15/18 30/54 41/90 4/ 9 -FB3 18/18* 30/54 69/90 8/ 9 -FB4 18/18* 30/54 72/90 7/ 7* - ----- ----- ----- ----- - 69/72 119/216 234/360 27/34 - -7. Atom CPLD: Clock pixel pipeline every cycle - -Function Mcells FB Inps Pterms IO -Block Used/Tot Used/Tot Used/Tot Used/Tot -FB1 18/18* 28/54 53/90 8/ 9 -FB2 15/18 25/54 28/90 4/ 9 -FB3 18/18* 30/54 69/90 8/ 9 -FB4 18/18* 28/54 39/90 7/ 7* - ----- ----- ----- ----- - 69/72 111/216 189/360 27/34 - -8. Atom CPLD: Send two 4-bit pixels per psync edge - -Function Mcells FB Inps Pterms IO -Block Used/Tot Used/Tot Used/Tot Used/Tot -FB1 18/18* 27/54 46/90 8/ 9 -FB2 11/18 20/54 21/90 4/ 9 -FB3 18/18* 28/54 63/90 8/ 9 -FB4 18/18* 27/54 36/90 7/ 7* - ----- ----- ----- ----- - 65/72 102/216 166/360 27/34 - -9. Atom CPLD: Discriminate normal and bright orange - -Function Mcells FB Inps Pterms IO -Block Used/Tot Used/Tot Used/Tot Used/Tot -FB1 18/18* 28/54 46/90 8/ 9 -FB2 15/18 24/54 25/90 5/ 9 -FB3 18/18* 28/54 63/90 8/ 9 -FB4 18/18* 29/54 39/90 7/ 7* - ----- ----- ----- ----- - 69/72 109/216 173/360 28/34 - -10. Atom CPLD: Discriminate dark green/dark orange text background - -Function Mcells FB Inps Pterms IO -Block Used/Tot Used/Tot Used/Tot Used/Tot -FB1 18/18* 28/54 48/90 8/ 9 -FB2 15/18 24/54 25/90 5/ 9 -FB3 18/18* 28/54 63/90 8/ 9 -FB4 18/18* 29/54 39/90 7/ 7* - ----- ----- ----- ----- - 69/72 109/216 175/360 28/34 - -10. Atom CPLD: Made C/L noise filters configurable - -Function Mcells FB Inps Pterms IO -Block Used/Tot Used/Tot Used/Tot Used/Tot -FB1 18/18* 29/54 49/90 8/ 9 -FB2 17/18 26/54 29/90 5/ 9 -FB3 18/18* 28/54 63/90 8/ 9 -FB4 18/18* 31/54 44/90 7/ 7* - ----- ----- ----- ----- - 71/72 114/216 185/360 28/34 - -11. Atom CPLD: Added two cycles of skew to PSYNC - -Function Mcells FB Inps Pterms IO -Block Used/Tot Used/Tot Used/Tot Used/Tot -FB1 18/18* 29/54 49/90 8/ 9 -FB2 17/18 26/54 29/90 5/ 9 -FB3 18/18* 28/54 63/90 8/ 9 -FB4 18/18* 31/54 44/90 7/ 7* - ----- ----- ----- ----- - 71/72 114/216 185/360 28/34 - -13. Atom CPLD: Use sixbit pixels, with a new mapping of colours - -Function Mcells FB Inps Pterms IO -Block Used/Tot Used/Tot Used/Tot Used/Tot -FB1 18/18* 32/54 59/90 8/ 9 -FB2 17/18 26/54 29/90 5/ 9 -FB3 18/18* 32/54 76/90 8/ 9 -FB4 18/18* 33/54 45/90 7/ 7* - ----- ----- ----- ----- - 71/72 123/216 209/360 28/34 - -14. Atom CPLD: Changed .ucf file for PCB v2 - -Function Mcells FB Inps Pterms IO -Block Used/Tot Used/Tot Used/Tot Used/Tot -FB1 18/18* 33/54 63/90 9/ 9* -FB2 18/18* 35/54 47/90 7/ 9 -FB3 18/18* 32/54 76/90 9/ 9* -FB4 17/18 18/54 23/90 3/ 7 - ----- ----- ----- ----- - 71/72 118/216 209/360 28/34 - -15. Atom CPLD: Adjust start offset by one pixel to allow perfect centering (now v2.3) - -Function Mcells FB Inps Pterms IO -Block Used/Tot Used/Tot Used/Tot Used/Tot -FB1 18/18* 33/54 63/90 9/ 9* -FB2 18/18* 35/54 47/90 7/ 9 -FB3 18/18* 32/54 77/90 9/ 9* -FB4 17/18 18/54 23/90 3/ 7 - ----- ----- ----- ----- - 71/72 118/216 210/360 28/34 - -16. Atom CPLD: Adjust colour sampling point (now v2.4) - -Function Mcells FB Inps Pterms IO -Block Used/Tot Used/Tot Used/Tot Used/Tot -FB1 18/18* 33/54 63/90 9/ 9* -FB2 18/18* 35/54 47/90 7/ 9 -FB3 18/18* 32/54 75/90 9/ 9* -FB4 17/18 18/54 23/90 3/ 7 - ----- ----- ----- ----- - 71/72 118/216 208/360 28/34 + 57/72 126/216 267/360 29/34