📄 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 + -