📄 rt_window_monitor.vhd
字号:
IF (COUNT_VALUE1 < "1111110") THEN NEXT_STATE <= COMPARE_MINUS2; ELSE IF (DATA_MASTER = (NOT DATA_MONITOR)) THEN NEXT_STATE <= RECORD_1_2; ELSE NEXT_STATE <= RECORD_0_2; END IF; END IF; END IF; WHEN RECORD_0_2 => NEXT_STATE <= INC_3; -- -2 POSITION HAD ERRORS WHEN RECORD_1_2 => NEXT_STATE <= INC_3; -- -2 POSITION WAS ERROR FREE WHEN INC_3 => --INCREMENT THE MONITOR TO THREE IDELAY TAPS MORE (+1) IF (COUNT_VALUE1 = "0000010") THEN NEXT_STATE <= WAIT7_2; ELSE NEXT_STATE <= INC_3; END IF; WHEN WAIT7_2 => --WAIT FOR LATENCY TO SETTLE IF (COUNT_VALUE0 > "0000111") THEN NEXT_STATE <= COMPARE_PLUS1; ELSE NEXT_STATE <= WAIT7_2; END IF; WHEN COMPARE_PLUS1 => --COMPARE THE +1 POSITION IF (DATA_MASTER /= (NOT DATA_MONITOR)) THEN NEXT_STATE <= RECORD_0_3; ELSE IF (COUNT_VALUE1 < "1111110") THEN NEXT_STATE <= COMPARE_PLUS1; ELSE IF (DATA_MASTER = (NOT DATA_MONITOR)) THEN NEXT_STATE <= RECORD_1_3; ELSE NEXT_STATE <= RECORD_0_3; END IF; END IF; END IF; WHEN RECORD_0_3 => NEXT_STATE <= INC_1; -- +1 POSITION HAD ERRORS WHEN RECORD_1_3 => NEXT_STATE <= INC_1; -- +1 POSITION WAS ERROR FREE WHEN INC_1 => NEXT_STATE <= WAIT7_3; -- INCREMENT THE MONITOR TO 1 IDELAY TAP MORE (+2) WHEN WAIT7_3 => --WAIT FOR LATENCY TO SETTLE IF (COUNT_VALUE0 > "0000111") THEN NEXT_STATE <= COMPARE_PLUS2; ELSE NEXT_STATE <= WAIT7_3; END IF; WHEN COMPARE_PLUS2 => --COMPARE THE +2 POSITION IF (DATA_MASTER /= (NOT DATA_MONITOR)) THEN NEXT_STATE <= RECORD_0_4; ELSE IF (COUNT_VALUE1 < "1111110") THEN NEXT_STATE <= COMPARE_PLUS2; ELSE IF (DATA_MASTER = (NOT DATA_MONITOR)) THEN NEXT_STATE <= RECORD_1_4; ELSE NEXT_STATE <= RECORD_0_4; END IF; END IF; END IF; WHEN RECORD_0_4 => NEXT_STATE <= IDLE; -- +2 POSITION HAD ERRORS WHEN RECORD_1_4 => NEXT_STATE <= IDLE; -- +2 POSITION WAS ERROR FREE WHEN IDLE => NEXT_STATE <= BEGIN_ADJUST; WHEN BEGIN_ADJUST => --BASED ON THE 5 POSITION SAMPLING WINDOW, ADJUST DATA CHANNEL CASE SAMPLE_WINDOW IS WHEN "00001" => NEXT_STATE <= INC_ALL; -- INCREMENT ENTIRE DATA BUS BY 1 WHEN "00011" => NEXT_STATE <= INC_ALL; -- INCREMENT ENTIRE DATA BUS BY 1 WHEN "00111" => NEXT_STATE <= INC_ALL; -- INCREMENT ENTIRE DATA BUS BY 1 WHEN "01111" => NEXT_STATE <= INC_ALL; -- INCREMENT ENTIRE DATA BUS BY 1 WHEN "10000" => NEXT_STATE <= DEC_ALL; -- DECREMENT ENTIRE DATA BUS BY 1 WHEN "11000" => NEXT_STATE <= DEC_ALL; -- DECREMENT ENTIRE DATA BUS BY 1 WHEN "11100" => NEXT_STATE <= DEC_ALL; -- DECREMENT ENTIRE DATA BUS BY 1 WHEN "11110" => NEXT_STATE <= DEC_ALL; -- DECREMENT ENTIRE DATA BUS BY 1 WHEN OTHERS => NEXT_STATE <= DEC_2; -- DO NOT ADJUST DATA BUS AT ALL; RETURN MONITOR TO CENTER END CASE; WHEN INC_ALL => NEXT_STATE <= DEC_2; -- DATA AND MONITOR GET INCREMENTED BY 1 WHEN DEC_ALL => NEXT_STATE <= DEC_2; -- DATA AND MONITOR GET DECREMENTED BY 1 WHEN DEC_2 => --MONITOR DECREMENTED BY 2 TO RETURN TO INITIAL STATE IF (COUNT_VALUE1 = "0000001") THEN NEXT_STATE <= DONE; ELSE NEXT_STATE <= DEC_2; END IF; WHEN DONE => --WAIT IN THIS STATE UNTIL NEXT CHANNEL CAN START IF (START = '0') THEN NEXT_STATE <= DONE; ELSE NEXT_STATE <= INIT; END IF; WHEN OTHERS => NEXT_STATE <= INIT; END CASE; END PROCESS; --OUTPUT LOGIC PROCESS (CURRENT_STATE) BEGIN CASE CURRENT_STATE IS WHEN INIT => COUNT0 <= '0'; UD0 <= '0'; COUNT1 <= '0'; UD1 <= '0'; INC_MONITOR <= '0'; ICE_MONITOR <= '0'; INC_DATABUS <= '0'; ICE_DATABUS <= '0'; STORE_STATUS(0) <= '1'; -- +2 STORE_STATUS(1) <= '1'; -- +1 STORE_STATUS(2) <= '1'; -- 0 STORE_STATUS(3) <= '1'; -- -1 STORE_STATUS(4) <= '1'; -- -2 STATUS <= '0'; WHEN WAIT128 => COUNT0 <= '1'; UD0 <= '1'; COUNT1 <= '0'; UD1 <= '0'; INC_MONITOR <= '0'; ICE_MONITOR <= '0'; INC_DATABUS <= '0'; ICE_DATABUS <= '0'; STORE_STATUS(0) <= '0'; -- +2 STORE_STATUS(1) <= '0'; -- +1 STORE_STATUS(2) <= '0'; -- 0 STORE_STATUS(3) <= '0'; -- -1 STORE_STATUS(4) <= '0'; -- -2 STATUS <= '0'; WHEN COMPARE_0 => COUNT0 <= '0'; UD0 <= '0'; COUNT1 <= '1'; UD1 <= '1'; INC_MONITOR <= '0'; ICE_MONITOR <= '0'; INC_DATABUS <= '0'; ICE_DATABUS <= '0'; STORE_STATUS(0) <= '0'; -- +2 STORE_STATUS(1) <= '0'; -- +1 STORE_STATUS(2) <= '0'; -- 0 STORE_STATUS(3) <= '0'; -- -1 STORE_STATUS(4) <= '0'; -- -2 STATUS <= '0'; WHEN RECORD_0_0 => COUNT0 <= '0'; UD0 <= '0'; COUNT1 <= '0'; UD1 <= '0'; INC_MONITOR <= '0'; ICE_MONITOR <= '0'; INC_DATABUS <= '0'; ICE_DATABUS <= '0'; STORE_STATUS(0) <= '0'; -- +2 STORE_STATUS(1) <= '0'; -- +1 STORE_STATUS(2) <= '1'; -- 0 STORE_STATUS(3) <= '0'; -- -1 STORE_STATUS(4) <= '0'; -- -2 STATUS <= '0'; -- ERRORS WHEN RECORD_1_0 => COUNT0 <= '0'; UD0 <= '0'; COUNT1 <= '0'; UD1 <= '0'; INC_MONITOR <= '0'; ICE_MONITOR <= '0'; INC_DATABUS <= '0'; ICE_DATABUS <= '0'; STORE_STATUS(0) <= '0'; -- +2 STORE_STATUS(1) <= '0'; -- +1 STORE_STATUS(2) <= '1'; -- 0 STORE_STATUS(3) <= '0'; -- -1 STORE_STATUS(4) <= '0'; -- -2 STATUS <= '1'; -- ERROR FREE WHEN DEC_1_0 => COUNT0 <= '0'; UD0 <= '0'; COUNT1 <= '0'; UD1 <= '0'; INC_MONITOR <= '0'; ICE_MONITOR <= '1'; INC_DATABUS <= '0'; ICE_DATABUS <= '0'; STORE_STATUS(0) <= '0'; -- +2 STORE_STATUS(1) <= '0'; -- +1 STORE_STATUS(2) <= '0'; -- 0 STORE_STATUS(3) <= '0'; -- -1 STORE_STATUS(4) <= '0'; -- -2 STATUS <= '0'; WHEN WAIT7_0 => COUNT0 <= '1'; UD0 <= '1'; COUNT1 <= '0'; UD1 <= '0'; INC_MONITOR <= '0'; ICE_MONITOR <= '0'; INC_DATABUS <= '0'; ICE_DATABUS <= '0'; STORE_STATUS(0) <= '0'; -- +2 STORE_STATUS(1) <= '0'; -- +1 STORE_STATUS(2) <= '0'; -- 0 STORE_STATUS(3) <= '0'; -- -1 STORE_STATUS(4) <= '0'; -- -2 STATUS <= '0'; WHEN COMPARE_MINUS1 => COUNT0 <= '0'; UD0 <= '0'; COUNT1 <= '1'; UD1 <= '1'; INC_MONITOR <= '0'; ICE_MONITOR <= '0'; INC_DATABUS <= '0'; ICE_DATABUS <= '0'; STORE_STATUS(0) <= '0'; -- +2 STORE_STATUS(1) <= '0'; -- +1 STORE_STATUS(2) <= '0'; -- 0 STORE_STATUS(3) <= '0'; -- -1 STORE_STATUS(4) <= '0'; -- -2 STATUS <= '0'; WHEN RECORD_0_1 => COUNT0 <= '0'; UD0 <= '0'; COUNT1 <= '0'; UD1 <= '0'; INC_MONITOR <= '0'; ICE_MONITOR <= '0'; INC_DATABUS <= '0'; ICE_DATABUS <= '0'; STORE_STATUS(0) <= '0'; -- +2 STORE_STATUS(1) <= '0'; -- +1 STORE_STATUS(2) <= '0'; -- 0 STORE_STATUS(3) <= '1'; -- -1 STORE_STATUS(4) <= '0'; -- -2 STATUS <= '0'; -- ERRORS WHEN RECORD_1_1 => COUNT0 <= '0'; UD0 <= '0'; COUNT1 <= '0'; UD1 <= '0'; INC_MONITOR <= '0'; ICE_MONITOR <= '0'; INC_DATABUS <= '0'; ICE_DATABUS <= '0'; STORE_STATUS(0) <= '0'; -- +2 STORE_STATUS(1) <= '0'; -- +1 STORE_STATUS(2) <= '0'; -- 0 STORE_STATUS(3) <= '1'; -- -1 STORE_STATUS(4) <= '0'; -- -2 STATUS <= '1'; -- ERROR FREE WHEN DEC_1_1 => COUNT0 <= '0'; UD0 <= '0'; COUNT1 <= '0'; UD1 <= '0'; INC_MONITOR <= '0'; ICE_MONITOR <= '1'; INC_DATABUS <= '0'; ICE_DATABUS <= '0'; STORE_STATUS(0) <= '0'; -- +2 STORE_STATUS(1) <= '0'; -- +1 STORE_STATUS(2) <= '0'; -- 0 STORE_STATUS(3) <= '0'; -- -1 STORE_STATUS(4) <= '0'; -- -2 STATUS <= '0'; WHEN WAIT7_1 => COUNT0 <= '1'; UD0 <= '1'; COUNT1 <= '0'; UD1 <= '0'; INC_MONITOR <= '0'; ICE_MONITOR <= '0'; INC_DATABUS <= '0'; ICE_DATABUS <= '0';
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -