VHDL语句的执行时间顺序问题 1.和软件语言的重要差异。 2.很令人惑的问题!! 3.眼见为实,先看 example
VHDL语句的 执行时间顺序 问题 1. 和 软件语言的 重要差异。 2. 很令人困惑 的 问题!! 3. 眼见为实,先看 example:
=?(B+C) =?(B+A YE?(B+C )执行时间:例子 YE?(B+C) 1. PROCESS(A, B, C, D)1. PROCESS(A, B, C) 2. VARIABLE D STD LOGIC VECTOR(3 DOWNTO O) 2. BEGIN 3. BEGIN D<=A: D=A X<=B+D 5 X<=B+D D<=C D:=C Y<=B+Dr Y<=B+D 7. END PROC 8. END PRO 详细参见: 详细参见: xd p35 ex3 1A/ x31
执行时间:例子 1. PROCESS( A, B, C, D ) 2. BEGIN 3. D <= A; 4. X <= B + D; 5. D <= C; 6. Y <= B + D; 7. END PROCESS 1. PROCESS(A,B,C) 2. VARIABLE D : STD_LOGIC_VECTOR(3 DOWNTO 0); 3. BEGIN 4. D := A ; 5. X <= B + D; 6. D := C; 7. Y <= B + D; 8. END PROCESS 详细参见: xd_p35_ex3_1A 详细参见: xd_p35_ex3_1B X= ? (B+A) Y=? (B+C) X= ? (B+C) Y=? (B+C)
结论: 关于VHDL代码的 执行时间版序问题 1.sgna和 variable代入语句的执行的间不同 2. variab|e代入后,其数值立即发生改变! 3.sgna代入后,数值不立即改变,只有在下次 PROCESS启动后才改变。 4.利用sgan的特性可设计 多级缓冲器电路(更多论述 参考
结论: 关于 VHDL代码的 执行时间 顺序问题 1. signal 和 variable 代入语句的执行时间不同 2. variable 代入后,其数值立即发生改变! 3. signal 代入后,数值不立即改变,只有在下次 PROCESS启动后才改变。 4. 利用siganl的特性可设计 多级缓冲器电路 更多论述 参考
8位4级缓冲器电路 PROCESS(CLK, RESET) 2 BEGIN 电路图 3 IF(RESET=0 ) THEN SgIDATA1<=X00 SqIDATA2<=X 00 56789 sg|DATA3<=×"00 SqIDATA4<=X 00 ELSIF(CLKevent AND CLK=0) THEN SgIDATA1<= IDATA 10 Signal SqlDATA2 < SqIDATA1 sgIDATA3 < sgIDATA2 12 SgIDATA4 <= SgIDATA3 13 END F ODATA<= SgIDATA4 详细参见: END PROCESS Hfuto1 buffer4
8位4级 缓冲器电路 1. PROCESS( CLK,RESET ) 2. BEGIN 3. IF( RESET = '0 ') THEN 4. sgIDATA1 <= X"00"; 5. sgIDATA2 <= X"00"; 6. sgIDATA3 <= X"00"; 7. sgIDATA4 <= X"00"; 8. ELSIF ( CLK'event AND CLK='0') THEN 9. sgIDATA1 <= IDATA; 10. sgIDATA2 <= sgIDATA1; 11. sgIDATA3 <= sgIDATA2; 12. sgIDATA4 <= sgIDATA3; 13. END IF; 14. ODATA <= sgIDATA4; 15. END PROCESS; 详细参见: Hfut01_buffer4 电路图 Signal ?
8位4级缓冲器电路:电路图 DAT17.0501070590797.510TA4 IDATA . OD CLR CLR CLR RESET 代码参见: Hfuto1 buffer4
8位4级 缓冲器电路:电路图 代码参见: Hfut01_buffer4