VHDL:正在处理的时间间隔没有"等待"

时间:2017-12-19 18:40:52

标签: time process vhdl

作为作业的一部分,我预计会编写一个跨越一定时间的流程。但是,我们不允许同时使用wait forafter语句。

由于我已经获得了一个周期为250ms的时钟,我试图创建一个计数器,每当时钟完成一个完整的周期时加1,然后将它乘以250以获得时间毫秒,但在测试时,ab的值是在流程开始时定义的值,而不是根本更新。

时钟从1开始,因此为什么我以-1开始计数器。

process_1: process


variable t1: integer := 3000;
variable t2: integer := 10000;
variable t3: integer := 13000;
variable t4: integer := 23000;
variable counter: integer := -1;

begin

a <= "001";
b <= "100";

if (sensor = '1' and clk = '1' and clk'event) then

    while (250*counter < t4) loop
       --updates the counter
        if (clk = '1') then counter := counter+1; end if;

        --0 to 3000 ms
        if (250*counter < t1) then
            a <= "010";
            b <= "100";


        --3000 to 10000 ms
        elsif (250*counter < t2) then
            a <= "100";
            b <= "001";

        --10000 to 13000 ms
        elsif (250*counter < t3) then
            a <= "100";
            b <= "010";

        --13000 to 23000 ms
        else 
            a <= "001";
            b <= "100";
        end if;
    end loop;

end if;

wait until (sensor = '1');
end process;

有什么想法吗?如何在不使用wait for的情况下按时间间隔设置流程?

0 个答案:

没有答案