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