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

📄 statecnt.vhd

📁 Matlab 与 modelsim 协同仿真的例程设置好modelsim运行环境后
💻 VHD
字号:
-----------------------------------------------------  Top Level: Manchester Receiver (manchester.vhd)--  This Level: State Counter (statecnt.vhd)--  Dependency: none----  Controller for Manchester Receiver--  --  Input Ports--   adj(2) <- Phase Adjustment (from decode)--   clk    <- Sample Clock (approx 16x Data Clock)--   reset  <- Reset to initial state--   --  Output Ports--   sync   -> clk enable indicating decoded data value--              This will occur approximately every 16 sample clocks--   i_wf   ->    --   q_wf   ->----  Copyright 2002-2004 The MathWorks, Inc.--  $Revision: 1.4.4.3 $  $Date: 2005/06/30 17:22:00 $---------------------------------------------------LIBRARY IEEE;USE IEEE.std_logic_1164.all;ENTITY statecnt ISPORT (  clk    : IN std_logic ;    -- Clock (Sample Clock) (rising edge)  enable : IN std_logic ;    -- Sync Clock Enable (active high)  reset  : IN std_logic ;    -- Sync Reset(active high)  		  adj    : IN std_logic_vector (1 downto 0);  -- Data Rate adjust "00","01" or "10"		  sync   : OUT std_logic;   -- Data clock (approx freq(sclk)/16)  i_wf : OUT std_logic;   -- Inphase Decoding Waveform (to iqconv)  q_wf : OUT std_logic );   -- Quadrature Decoding Waveform (to iqconv)END statecnt ;---------------------------------------ARCHITECTURE behavioral OF statecnt ISTYPE state_type IS (LEAD_START,  -- Extra cycle (17) if lead detected                    NORMAL_START, -- Normal                     LAG_START,                    STATE_3,STATE_4,                    STATE_5,STATE_6,STATE_7,STATE_8,                    STATE_9,STATE_A,STATE_B,STATE_C,                    STATE_D,STATE_E,STATE_F,                    DECODE_ME);  -- Last cycle  SIGNAL state, next_state : state_type ;    SIGNAL sync_i : std_logic;              BEGIN-- OR Gate  sync <= reset OR sync_i;  -- State register Updateseq: PROCESS(clk)  BEGIN  IF (rising_edge(clk)) THEN    IF reset = '1' THEN      state <= NORMAL_START AFTER 1 ns;    ELSIF enable = '1' THEN      state <= next_state AFTER 1 ns;    END IF;  END IF;  END PROCESS seq;  -- Next State and Ouput Logiccom: PROCESS(state,adj)  BEGIN   CASE state IS    WHEN LEAD_START   => next_state <= NORMAL_START AFTER 1 ns;    WHEN NORMAL_START => next_state <= LAG_START AFTER 1 ns;    WHEN LAG_START    => next_state <= STATE_3 AFTER 1 ns;        WHEN STATE_3      => next_state <= STATE_4 AFTER 1 ns;    WHEN STATE_4      => next_state <= STATE_5 AFTER 1 ns;            WHEN STATE_5      => next_state <= STATE_6 AFTER 1 ns;    WHEN STATE_6      => next_state <= STATE_7 AFTER 1 ns;    WHEN STATE_7      => next_state <= STATE_8 AFTER 1 ns;    WHEN STATE_8      => next_state <= STATE_9 AFTER 1 ns;        WHEN STATE_9      => next_state <= STATE_A AFTER 1 ns;    WHEN STATE_A      => next_state <= STATE_B AFTER 1 ns;    WHEN STATE_B      => next_state <= STATE_C AFTER 1 ns;    WHEN STATE_C      => next_state <= STATE_D AFTER 1 ns;        WHEN STATE_D      => next_state <= STATE_E AFTER 1 ns;    WHEN STATE_E      => next_state <= STATE_F AFTER 1 ns;    WHEN STATE_F      => next_state <= DECODE_ME AFTER 1 ns;    WHEN DECODE_ME    =>      IF adj = "00" THEN        next_state <= NORMAL_START AFTER 1 ns;      ELSIF adj = "01" THEN        next_state <= LAG_START AFTER 1 ns;      ELSE        next_state <= LEAD_START AFTER 1 ns;      END IF;    WHEN OTHERS => next_state <= NORMAL_START AFTER 1 ns;  END CASE;    CASE state IS     WHEN LEAD_START =>       i_wf <= '0' AFTER 1 ns;      q_wf <= '1' AFTER 1 ns;      sync_i <= '0' AFTER 1 ns;    WHEN NORMAL_START | LAG_START | STATE_3 | STATE_4 =>      i_wf <= '1' AFTER 1 ns;      q_wf <= '1' AFTER 1 ns;      sync_i <= '0' AFTER 1 ns;    WHEN STATE_5 | STATE_6 | STATE_7 | STATE_8  =>      i_wf <= '1' AFTER 1 ns;      q_wf <= '0' AFTER 1 ns;      sync_i <= '0' AFTER 1 ns;    WHEN STATE_9 | STATE_A | STATE_B | STATE_C  =>      i_wf <= '0' AFTER 1 ns;      q_wf <= '0' AFTER 1 ns;      sync_i <= '0' AFTER 1 ns;    WHEN STATE_D | STATE_E | STATE_F =>       i_wf <= '0' AFTER 1 ns;      q_wf <= '1' AFTER 1 ns;      sync_i <= '0' AFTER 1 ns;    WHEN DECODE_ME =>      i_wf <= '0' AFTER 1 ns;      q_wf <= '1' AFTER 1 ns;      sync_i <= '1' AFTER 1 ns;    WHEN OTHERS =>      i_wf <= '0' AFTER 1 ns;      q_wf <= '1' AFTER 1 ns;      sync_i <= '0' AFTER 1 ns;  END CASE;END PROCESS com;END behavioral;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -