程序源码:
Signal h_cnt :integer range 0 to 800;
Signal v_cnt :integer range 0 to 525;
CNT:Process(Clk)
Begin
If(Clk'event And Clk = '1') Then
-- horizontal-counter work
If h_cnt < 800 Then
h_cnt <= h_cnt + 1;
Hs <= '0';
Else
h_cnt <= 0;
Hs <= '1';
End If;
-- vertical-counter work
If v_cnt < 525 Then
v_cnt <= v_cnt + 1;
Vs <= '0';
Else
v_cnt <= 0;
Vs <= '1';
End If;
End If;
End Process;
但时序仿真时,出现以下现象(见图)
------好像,图片显示不出-------
也就是,计数器h_cnt和v_cnt都只能计数到255和127,之后又从0开始重新计数,依旧是到255和127,如此循环。问题是:我设置的是计数额度是800和525,但没有计数到~
请问:各位前辈,高手,这问题出在哪,要怎么修改呢?
在此,先谢谢各位了。
------解决方案--------------------
不要用Integer,用std_logic_vector
------解决方案--------------------
除非你vector位宽不对
------解决方案--------------------
很明显是位宽的问题吧