VHDL VGA同步电路 [英] VHDL VGA sync circuit
问题描述
有人可以告诉我这个电路如何增加h_count_reg和v_count_reg吗?我真的没看到.另外,输出被完全缓冲意味着什么呢?只是延迟了一个像素?也不是真的.谢谢!
Can some one please tell me how this circuit increments h_count_reg and v_count_reg?? I don't really see it. Also what do they mean by the output is buffered exactly? It's just delayed by one pixel? don't really see that either. thanks!
推荐答案
垂直和水平计数器分布在两个进程中:
The vertical and horizontal counters are spread across two processes:
--register
process(clk,reset)
begin
if (reset='1') then
mod2_reg <='0';
v_count_reg <=(others=>'0');
h_count_reg <=(others=>'0');
v_sync_reg <='0';
h_sync_reg <='0';
elsif(clk'event and clk='1')then
mod2_reg <=mod2_next;
v_count_reg <=v_count_next;
h_count_reg <=h_count_next;
v_sync_reg <=v_sync_next;
h_sync_reg <=h_sync_next;
end if;
end process;
在elsif条件下,计数器是从v_count_next
和h_count_next
加载的,它们是通过两个不同的过程生成的:
Where in the elsif condition the counters are loaded from v_count_next
and h_count_next
, which are produced in two different processes:
-- mod-800 horizontal sync counter
process(h_count_reg,h_end,pixel_tick)
begin
if (pixel_tick='1') then --25 MHz tick
if h_end='1' then
h_count_next <= (others=>'0');
else
h_count_next <= h_count_reg+1;
end if;
else
h_count_next <= h_count_reg;
end if;
end process;
-- mode-525 vertical sync counter
process(v_count_reg,h_end,v_end,pixel_tick)
begin
if (pixel_tick='1' and h_end='1') then
if (v_end='1') then
v_count_next <= (others=>'0');
else
v_count_next <= v_count_reg+1;
end if;
else
v_count_next <= v_count_reg;
end if;
end process;
(大约现在,您可以想象对流程语句进行实际标记是个好主意).
(And about now you could imagine it's a good idea to actually label process statements).
就缓冲"而言:
--To remove
--potential glitches, output buffers are inserted for the hsync and vsync signals. This leads
--to a one-clock-cycle delay. add a similar buffer for the rgb signal in the pixel
--generation circuit to compensate for the delay.
-- output buffer
signal v_sync_reg, h_sync_reg: std_logic;
signal v_sync_next ,h_sync_next : std_logic;
--status signal
signal h_end , v_end , pixel_tick: std_logic;
这是上面--register
流程中的最后两个任务.从评论中可以看出,通过触发器的一个时钟延迟是为了消除由关系运算符引起的组合毛刺:
Those are the last two assignments in the --register
process above. And from the comments the one clock delay through flip flops is to remove combinatoric glitches caused by relational operators:
h_sync_next <=
'1' when (h_count_reg >= (HD+HF)) --656
and (h_count_reg <= (HD+HF+HR-1)) else --751
'0';
v_sync_next <=
'1' when (v_count_reg >= (VD+VF)) --490
and (v_count_reg <= (VD+VF+VR-1)) else --491
'0';
这篇关于VHDL VGA同步电路的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!