作为作业的一部分,我预计会编写一个跨越一定时间的流程。但是,我们不允许同时使用wait for
和after
语句。
由于我已经获得了一个周期为250ms的时钟,我试图创建一个计数器,每当时钟完成一个完整的周期时加1,然后将它乘以250以获得时间毫秒,但在测试时,a
和b
的值是在流程开始时定义的值,而不是根本更新。
时钟从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
的情况下按时间间隔设置流程?