VHDL - 无法理解为什么这段代码适用于我的FPGA

时间:2017-02-05 18:18:17

标签: vhdl fpga

我试图创建一个非常简单的手表(我不会在我的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;

首先将整数secminhour初始化为用户设置的初始值。然后,它执行每隔一分钟,每分钟或每小时递增变量的实际工作。 clk的频率为1 MHz。

阅读代码时,似乎hour(对于istance)应该在min转到59之后递增,而不是等待整整一分钟。但是,当我在FPGA上合成它时,它正常工作,就像你期望的那样。不幸的是,我无法进行模拟。也许这与流程的安排有关?我还是初学者,也许我错过了什么。

[编辑] 感谢您的评论,我注意到上面代码中的一个小错误(count未正确重置)。修好了!

0 个答案:

没有答案