Турбо АГАТ-9/16 (ЦП 65C802, 5 Махов, dual-port SRAM).
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Делал так - в итоге получаю глитчи в реале из-за асинхронности счётчиков и полный разлад всего видеотракта, поскольку возникают "левые" импульсы для счётчика строк. Первоначально я так и было, но при проверке оно работало через раз - наблюдалась вот такая вот картина на счётчиках:
![]()
"Байт-48"
На картинке не вижу ничего "нехорошего", нет других сигналов, от которых зависят счётчики...
На всякий случай напомню о синхронности: у счётчиков строк и столбцов должен быть один (!), единственный (!!), общий (!!!) клок, и это должен быть пиксельклок. А вот разрешения клока у счётчиков столбцов и строк должны быть разными, являющимися комбинаторной функцией от предыдущего состояния. Причём, функция разрешения счёта/сброса счётчика столбцов должна являться переменной для функции разрешения счёта/сброса счётчика строк. Вот посмотри и проникнись:
Результат здесь.Код:module HVSync ( input wire PixClock, output reg HSync, output reg VSync, output reg [2:0] R, output reg [2:0] G, output reg [2:0] B); parameter HVA = 1024; // Visible Area parameter HFP = 24; // Front Porch parameter HST = 136; // Sync Time parameter HBP = 160; // Back Porch parameter VVA = 768; // Visible Area parameter VFP = 3; // Front Porch parameter VST = 6; // Sync Time parameter VBP = 29; // Back Porch //variables reg [10:0] PC = 0; // Pixel Counter (Column, X) reg [9:0] LC = 0; // Line Counter (Row, Y) wire VA = (PC <HVA) & (LC < VVA); // Visible Area on screen always @(posedge PixClock) begin // VA <= ((PC < HVA-1) | (PC == HVA+HFP+HST+HBP-1)) & ((LC < VVA) | (LC == VVA+VFP+VST+VBP-1)); HSync <= (PC >= HVA+HFP-1) & (PC < HVA+HFP+HST-1); if (PC < (HVA+HFP+HST+HBP-1)) PC <= PC + 1'b1; else begin PC <= 0; VSync <= (LC >= VVA+VFP-1) & (LC < VVA+VFP+VST-1); if (LC < (VVA+VFP+VST+VBP-1)) LC <= LC + 1'b1; else LC <= 0; end end // Color Image always @(posedge PixClock) begin if (VA) begin if ((PC[7:0]==0) | (PC[7:0]==255) | (LC[7:0]==0) | (LC[7:0]==255)) begin R <= 7; G <= 7; B <= 7; end else begin if (LC[7:6]==0) begin R <= ~PC[9:7]; G <= 0; B <= 0; end if (LC[7:6]==1) begin R <= 0; G <= PC[8:6]; B <= 0; end if (LC[7:6]==2) begin R <= 0; G <= 0; B <= ~PC[7:5]; end if (LC[7:6]==3) begin R <= PC[6:4]; G <= PC[6:4]; B <= PC[6:4]; end end end else begin R <= 0; G <= 0; B <= 0; end end endmodule
Последний раз редактировалось LeoN65816; 12.07.2018 в 09:44.
Турбо АГАТ-9/16 (ЦП 65C802, 5 Махов, dual-port SRAM).
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)