我试图创建一个非常简单的手表(我不会在我的FPGA上使用“#34;时钟"以避免误解”这个词(它显示秒,分和小时)一个任务和我的一个朋友给了我一些代码,当我在我的FPGA上合成它时实际工作,但我不明白为什么。这是主要过程。
main: process(clk)
begin
if((clk='1' and clk'event) and en='1') then
if(init = '0') then
sec <= conv_integer(seconds_in);
min <= conv_integer(minutes_in);
hour <= conv_integer(hours_in);
init <= '1';
else
count <= count + 1;
if(count = 1000000) then
sec <= sec+1;
count <= 0;
if(sec=59) then
min <= min+1;
sec <= 0;
if(min=59) then
hour <= hour+1;
min <= 0;
if(hour=23) then
hour <= 0;
count <= 0;
end if;
end if;
end if;
end if;
end if;
end if;
end process main;
首先将整数sec
,min
和hour
初始化为用户设置的初始值。然后,它执行每隔一分钟,每分钟或每小时递增变量的实际工作。 clk
的频率为1 MHz。
阅读代码时,似乎hour
(对于istance)应该在min
转到59之后递增,而不是等待整整一分钟。但是,当我在FPGA上合成它时,它正常工作,就像你期望的那样。不幸的是,我无法进行模拟。也许这与流程的安排有关?我还是初学者,也许我错过了什么。
[编辑]
感谢您的评论,我注意到上面代码中的一个小错误(count
未正确重置)。修好了!