Global Data


 

--        Packages Used

ieee.STD_LOGIC_1164
ieee.STD_LOGIC_SIGNED
ieee.NUMERIC_STD
GTS.gts_pack
 

--        Interface

L1A : out std_logic_vector (15 downto 0);
reset : out std_logic ;
event_num : out std_logic_vector (23 downto 0);
bcast_strobe : out std_logic ;
bcast_out : out std_logic_vector (7 downto 0);
L1A_arrived : out std_logic ;
bclk : in std_logic ;
lreset : in std_logic ;
nib : in std_logic_vector (0 to 3);
outofsync : in std_logic ;
refclksel : out std_logic ;
 

--        Local Signals

signal index : unsigned (3 downto 0) ;
signal nib_count : unsigned (3 downto 0) ;
signal payload : std_logic_vector (63 downto 0) ;
 

--        Controls

Initial State: S11
-------------------
Machine:         Synchronous
Clock:           bclk
Clock Enable:    -
Clock Polarity:  Rising
Reset:           lreset
Reset Mode:      Asynchronous
Reset State:     S11
Reset Polarity:  High
State Transition Process:   Synchronous
State Selection:  Case
Transition Selection:  If
     
 

--        Current State


Current Signal Name: visual_S11_current
Next Signal Name: visual_S11_next
Type: enumeration
Hierarchy Mode: Flat
Encoding: User Defined
S11         =>   
S0          =>   
S1          =>   
S2          =>   
S9          =>   
S3          =>   
S4          =>   
S5          =>   
S6          =>   
S8          =>   
 

--        States and Transitions

 
Initial State: S11
-------------------
 
State: S11
Enter Action:
  refclksel<='0';
Transitions of state S11:
T17 to S0
 
State: S0
Enter Action:
  index <="0000";
  L1A_arrived<='0';
  reset<='0';
Transitions of state S0:
T1 to S0
T2 to S9
  Guard:
    nib="1111" and outofsync='0'-- start of frame
 
State: S1
Enter Action:
  nib_count <= unsigned (nib);
Transitions of state S1:
T3 to S2
 
State: S2
Enter Action:
  index<=index+1;
  case index is
    when "0000" => payload(3 downto 0) <= nib;
    when "0001" => payload(7 downto 4) <=nib;
    when "0010" => payload(11 downto 8)<=nib;
    when "0011" => payload(15 downto 12) <= nib;
    when "0100" => payload(19 downto 16) <=nib;
    when "0101" => payload(23 downto 20)<=nib;
    when "0110" => payload(27 downto 24) <= nib;
    when "0111" => payload(31 downto 28) <=nib;
    when "1000" => payload(35 downto 32)<=nib;
    when "1001" => payload(39 downto 36) <= nib;
    when "1010" => payload(43 downto 40) <=nib;
    when "1011" => payload(47 downto 44)<=nib;
    when "1100" => payload(51 downto 48) <= nib;
    when "1101" => payload(55 downto 52) <=nib;
    when "1110" => payload(59 downto 56)<=nib;
    when "1111" => payload(63 downto 60)<=nib;
    when others => payload<=(others =>'0');
  end case;
Transitions of state S2:
T5 to cmd_exec
  Priority: 1
  Guard:
    index = nib_count
T18 to S2
 
State: S9
Transitions of state S9:
T12 to S1
 
State: cmd_exec
Hierarchical: Yes
Subdesign: cmd_exec
Transitions of state cmd_exec:
T6 to S0
 
Subdesign cmd_exec
---------------
 
Initial State: S3
-------------------
 
State: S3
Transitions of state S3:
T0 to S4
  Guard:
    payload(3 downto 0) = C_L1A
T11 to S6
  Guard:
    payload(3 downto 0) = C_SRESET
T8 to G2
 
State: S4
Enter Action:
  L1A<= payload(19 downto 4);
  event_num<= payload(43 downto 20);
  L1A_arrived<='1';
Transitions of state S4:
T4 to S5
 
State: S5
Transitions of state S5:
T10 to G1
 
State: S6
Enter Action:
  reset<='1';
  bcast_strobe<='1';
  bcast_out(3 downto 0)<= C_SRESET;
  bcast_out(7 downto 4)<="0000";
Transitions of state S6:
T13 to S8
 
State: S8
Enter Action:
  refclksel<='0';
  bcast_strobe<='0';
Transitions of state S8:
T14 to G4