⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rt_window_monitor.vhd

📁 FPGA之间的LVDS传输
💻 VHD
📖 第 1 页 / 共 3 页
字号:
                     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 + -