Добрый день уважаемые форумчане,
Начал осваивать разработку ПЛИС,
и вроде простые примеры начали получаться,
Тестовая задача была принимать изображение с камеры,
для наложения на него информации и все это выводить на монитор,
Для этого были изучены рефересные дизайн DVI-OUT, а также позаимствованы блоки для инициализации и настройки камеры.
И даже получились синтезировать рабочие проекты, которые собирались, но картинка с камеры была не в том разрешений. Захотел все переделать так что бы все блоки были мне понятны, то есть написаны с нуля.
Начал с замены модуля генерации развертки vga_gen.
И он таки получился и заработал, но затем я решил создать проект с нуля.
И скопировал туда этот блок, в итоге при синтезе блок собирается не, верно,
Сигнал вертикальной сигнализации почему-то тупо зануляется.
Прошу помощи в чем тут проблема?
В логах вот такие сообщения: WARNING:Xst:1293 - FF/Latch <v_count_0> has a constant value of 0 in block <vga_gen>. This FF/Latch will be trimmed during the optimization process.
Код модуля:
module vga_gen(
// Clock input
input wire pixel_clk,
// output's
output wire h_sync,
output wire v_sync,
output wire video_enable,
// pixel data
output reg [23:0] pixel_addres,
output reg pixel_get
);
// VGA timings https://timetoexplore.net/blog/video-timings-vga-720p-1080p
localparam HS_STA = 40; // horizontal sync start
localparam HS_END = 168; // horizontal sync end
localparam HA_STA = 296; // horizontal active pixel start
localparam VS_STA = 1; // vertical sync start
localparam VS_END = 5; // vertical sync end
localparam VA_STA = 28; // vertical active pixel start
localparam VA_END = 628; // vertical active pixel end
localparam LINE = 1096; // complete line (pixels)
localparam SCREEN = 628; // complete screen (lines)
reg [9:0] h_count; // line position
reg [9:0] v_count; // screen position
assign h_sync = ((h_count >= HS_STA) & (h_count < HS_END));
assign v_sync = ((v_count >= VS_STA) & (v_count < VS_END));
// active: high during active pixel drawing
assign video_enable = ((h_count >= HA_STA) &
(v_count >= VA_STA) &
(v_count <= VA_END));
initial
begin
h_count <= 0;
v_count <= 0;
end
always @ (posedge pixel_clk)
begin
if (h_count == LINE) // end of line
begin
h_count <= 0;
v_count <= v_count + 1;
end
else
h_count <= h_count + 1;
if (v_count == SCREEN) // end of screen
v_count <= 0;
end
endmodule