这是个10进制计数器的简单例子 书上写PROCESS里的语句是顺序执行的,并且下面程序中的CQI是变量而不是信号,关于CQI的值应该是顺序实时的才对,08行中,如果CQI = 9,则CQI= 0,这时应该产生进位信号,那么为什么程序中第12行产生进位信号的时候判断条件是IF CQI = 9 而不是 CQI = 0 呢?难道变量也要等下一个时钟周期才能完成赋值?自己想不通,烦请释疑
01 PROCESS(CLK,RST,EN) 02 VARIABLE CQI :STD_LOGIC_VECTOR(3 DOWNTO 0); 03 BEGIN 04 IF RST = '1' THEN CQI := (OTHERS=>'0'); 05 ELSIF CLK'EVENT AND CLK = '1' THEN 06 IF EN = '1' THEN 07 IF CQI < 9 THEN CQI := CQI + 1; 08 ELSE CQI := (OTHERS=>'0'); 09 END IF; 10 END IF; 11 END IF; 12 IF CQI = 9 THEN COUT <= '1'; 13 ELSE COUT <= '0'; 14 END IF; 15 CQ <= CQI; 16 END PROCESS; |