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

📄 pm5337_eos_demo.tcl

📁 用于EOS芯片的驱动程序, 供参考 参考
💻 TCL
📖 第 1 页 / 共 4 页
字号:
    # VC_SQ[5:0] = 0x00
    # Group Tag[4:0] = Ethernet Channel = 0x0
    # Inhibit = 0x0
    # Prov/Mode[1:0] =  0x2
    set vc_sq 0x2
    set group_tag 0
    set inhibit 0x0
    set prov_mode 0x2
    set mem_data0 [expr [expr $vc_sq << 10]|[expr $group_tag << 4]|[expr $inhibit << 3]|$prov_mode]
                         
    admwr $devID 0xE50A $mem_data0	;# bit 15 to 0
    admwr $devID 0xE50B 0x0000	;# bit 31 to 16
    admwr $devID 0xE50C 0x0000	;# bit 47 to 32
    admwr $devID 0xE50D 0x0000	;# bit 63 to 48
      
    ### v. Trigger Indirect Write Access ###
    # MEM_BUSY = 1
    # MEM_RWB = 0
    # MEM_SEL = 0x0
    admwr $devID 0xE508 0x8000    
                               
    #############################
    ### Configuring Channel 3 ###
    #############################  
    set sts3_ind 3
    set sts1_ind 0 
    
    ### ii. Poll MEM_BUSY Bit in 0xE508 ###
    Poll_BUSY_Bit $devID 0xE508 15
 
    ### iii. Calculate and Set MEM_ADDR  ###    
    # MEM_ADDR = STS3_index*3 + STS1_index, where STS3_index ranges
    # from 0 to 3, and STS1_index ranges from 0 to 2.        
    set mem_addr [expr ($sts3_ind * 3) + $sts1_ind]         
    admwr $devID 0xE509 $mem_addr
     
    ### iv. Setting Link Configuration Table Memory Value ###   
    # VC_SQ[5:0] = 0x00
    # Group Tag[4:0] = Ethernet Channel = 0x0
    # Inhibit = 0x0
    # Prov/Mode[1:0] = VCAT non LCAS = 0x2
    set vc_sq 0x3
    set group_tag 0
    set inhibit 0x0
    set prov_mode 0x2 
    set mem_data0 [expr [expr $vc_sq << 10]|[expr $group_tag << 4]|[expr $inhibit << 3]|$prov_mode]
                         
    admwr $devID 0xE50A $mem_data0	;# bit 15 to 0
    admwr $devID 0xE50B 0x0000	;# bit 31 to 16
    admwr $devID 0xE50C 0x0000	;# bit 47 to 32
    admwr $devID 0xE50D 0x0000	;# bit 63 to 48
      
    ### v. Trigger Indirect Write Access ###
    # MEM_BUSY = 1
    # MEM_RWB = 0
    # MEM_SEL = 0x0
    admwr $devID 0xE508 0x8000    
            
              
  # Enabling TVCP block  
  # Mode 0, 1 and 3 carry SONET traffic; therefore,
  # set SONET_SDH_SEL = 0, TVCP_ENABLE = 1, PTR == 522, SS = 10
  admwr $devID 0xE500 0x920A

}

#------------------------------------------------------------------------------
# SCRIPT NAME:	EOS_VCG_STS3C_Demo
#
# DESCRIPTION:	This procedure configures the EOS Subsystem to map 4 FE/GE port to 
#               4 STS-3c.
#		
# PARAMETERS:   devID - This parameter is used to specify the device 
#                       under configuration
#                 
# NOTES:  
#
#   4 FE/GE --> 4x STS-3c
#
#   timeslot : 1  2  3  4  5  6  7  8  9 10 11 12
#   sts3_ind : 0  1  2  3  0  1  2  3  0  1  2  3
#   sts1_ind : 0  0  0  0  1  1  1  1  2  2  2  2 
#   channel  : 0  1  2  3  0  1  2  3  0  1  2  3 
#------------------------------------------------------------------------------

proc EOS_VCG_STS3C_Demo {devID} {   

  # Enable Add EOS to Drop EOS loopback
  admwr $devID 0xE005 0x1   

  EOS_Payload_Config $devID STS-3c
  
  # Subsystem level configuration (Fixes code error on EOS_Payload_Config)
  admwr $devID 0xE030 0x200F000F
  admwr $devID 0xE031 0x000F000F
  for {set stm1 1} {$stm1 <= 4} {incr stm1} {
    for {set tug3 1} {$tug3 <= 3} {incr tug3} {
      for {set tug2 1} {$tug2 <= 7} {incr tug2} {
        for {set tu 1} {$tu <= 4} {incr tu} {
            
          set stm1 [dec2hex $stm1]
          set tug3 [dec2hex $tug3]
          set tug2 [dec2hex $tug2]
          set tu [dec2hex $tu]
            
          # Set TRIB_RESET to '1'
          admindwr $devID EOS::LOHO_SONET::TTOP336_EOS 0x8030 0xE382 $stm1 $tug3 $tug2 $tu
          
        }
      }
    }
  } 
  
  admwrb $devID 0xE340 0 1 
  admwrb $devID 0xE341 0 1
  admwrb $devID 0xE342 0 1
  admwrb $devID 0xE343 0 1
  admwrb $devID 0xE344 0 0
  admwrb $devID 0xE345 0 0
  admwrb $devID 0xE346 0 0
  admwrb $devID 0xE347 0 0
  admwrb $devID 0xE348 0 0
  admwrb $devID 0xE349 0 0
  admwrb $devID 0xE34A 0 0
  admwrb $devID 0xE34B 0 0
  
  #######################################################################
  ###      Initializing TVCP - Far End Sink (MST) Buffer and Group    ###
  ###                    Context Memory                               ###
  #######################################################################
  
  ##### 1. Initializing MST Buffer #####
  # Note: All MST must be initialized to FAIL when provisioning the
  #       first member for a group or if all the members in the group
  #       are in IDLE.
    
  for {set grouptag 0} {$grouptag <= 7} {incr grouptag} {
    for {set wordoffset 0} {$wordoffset <= 7} {incr wordoffset} {
  
      ### i. Poll MEM_BUSY Bit in 0xE508 ###
      Poll_BUSY_Bit $devID 0xE508 15
  
      ### ii. Calculate and Set MEM_ADDR  ###
      # MEM_ADDR = Group-Tag *8 + Word Offset
      set mem_addr [expr $grouptag*8 + $wordoffset]            
      admwr $devID 0xE509 $mem_addr
      
      ### iii. Setting FE SK MST Value ###
      admwr $devID 0xE50A 0x00FF	;# bit 15 to 0
      admwr $devID 0xE50B 0x0000	;# bit 31 to 16
      admwr $devID 0xE50C 0x0000	;# bit 47 to 32
      admwr $devID 0xE50D 0x0000	;# bit 63 to 48
      
      ### iv. Trigger Indirect Write Access ###
      # MEM_BUSY = 1
      # MEM_RWB = 0
      # MEM_SEL = 0x1
      admwr $devID 0xE508 0x8001      
    }
  }
  
  ##### 2. Initializing Group Context Memory #####
  # Note: GID_SEED allows software to program an initial seed
  #       for the GID generation of each group, which should
  #       be done prior to provisioning the first member for the
  #       group.  A unique and non-zero seed for each group should
  #       be set.  In the following example, the group seed is set
  #       to be equal to the grouptag (i.e. channel #)

  set wordoffset 0x2    
  for {set grouptag 0} {$grouptag <= 7} {incr grouptag} {
 
      ### i. Poll MEM_BUSY Bit in 0xE508 ###
      Poll_BUSY_Bit $devID 0xE508 15
  
      ### ii. Calculate and Set MEM_ADDR  ###
      # MEM_ADDR = Group-Tag *3 + Word Offset
      set mem_addr [expr $grouptag*3 + $wordoffset]            
      admwr $devID 0xE509 $mem_addr
      
      ### iii. Randomly asign GID seed = grouptag ###
      admwr $devID 0xE50A $grouptag	;# bit 15 to 0 	
      admwr $devID 0xE50B 0x0000   	;# bit 31 to 16
      admwr $devID 0xE50C 0x0000   	;# bit 47 to 32
      admwr $devID 0xE50D 0x0000   	;# bit 63 to 48
      
      ### iv. Trigger Indirect Write Access ###
      # MEM_BUSY = 1
      # MEM_RWB = 0
      # MEM_SEL = 0x2
      admwr $devID 0xE508 0x8002      
  }      
  
  #######################################################################
  ##### Initializing RVCP - Near End Source (MST) Buffer and Group  #####
  #####                    Configuration Table Memory Structure     #####
  #######################################################################

  ##### 1. Initializing MST Buffer #####
  # Note: All MST must be initialized to FAIL when provisioning the
  #       first member for a group or if all the members in the group
  #       are in IDLE.
    
  for {set grouptag 0} {$grouptag <= 7} {incr grouptag} {
 
    ### i. Poll MEM_BUSY Bit  ###
    Poll_BUSY_Bit $devID 0xE410 15
  
    ### ii. Calculate and Set MEM_ADDR  ###
    # MEM_ADDR = Group-Tag            
    admwr $devID 0xE411 $grouptag
      
    ### iii. Setting NE SK MST Value ###
    admwr $devID 0xE412 0x00FF	;# bit 15 to 0
    admwr $devID 0xE413 0x0000	;# bit 31 to 16
    admwr $devID 0xE414 0x0000	;# bit 47 to 32
    admwr $devID 0xE415 0x0000	;# bit 63 to 48
    admwr $devID 0xE416 0x0000	;# bit 79 to 64
    admwr $devID 0xE417 0x0000	;# bit 95 to 80
    admwr $devID 0xE418 0x0000	;# bit 111 to 96
    admwr $devID 0xE419 0x0000	;# bit 127 to 112
      
    ### iv. Trigger Indirect Write Access ###
    # MEM_BUSY =1
    # MEM_RWB = 0
    # MEM_SEL = 0xB
    admwr $devID 0xE410 0x800B
       
  }
  
  #####################################################################
  #####    Configuring Group Configuration Table Memory Structure #####     
  #####################################################################
           
  for {set grouptag 0} {$grouptag <= 7} {incr grouptag} {
 
    ### i. Poll MEM_BUSY Bit  ###
    Poll_BUSY_Bit $devID 0xE410 15
  
    ### ii. Calculate and Set MEM_ADDR  ###
    # MEM_ADDR = Group-Tag            
    admwr $devID 0xE411 $grouptag         
                
    admwr $devID 0xE412 0xFFFF	;# bit 15 to 0
    admwr $devID 0xE413 0x3	;# bit 31 to 16
    admwr $devID 0xE414 0x0000	;# bit 47 to 32
    admwr $devID 0xE415 0x0000	;# bit 63 to 48
    admwr $devID 0xE416 0x0000	;# bit 79 to 64
    admwr $devID 0xE417 0x0000	;# bit 95 to 80
    admwr $devID 0xE418 0x0000	;# bit 111 to 96
    admwr $devID 0xE419 0x0000	;# bit 127 to 112
      
    ### iv. Trigger Indirect Write Access ###
    # MEM_BUSY =1
    # MEM_RWB = 0
    # MEM_SEL = 0x1
    admwr $devID 0xE410 0x8001     
  }                 
  
  #######################################################################
  ###     Provisioning VCG Member for Mode 0 (STS-1)                  ###  
  #######################################################################          
  #   timeslot : 1  2  3  4  5  6  7  8  9 10 11 12
  #   sts3_ind : 0  1  2  3  0  1  2  3  0  1  2  3
  #   sts1_ind : 0  0  0  0  1  1  1  1  2  2  2  2 
  #   channel  : 0  1  2  3  0  1  2  3  0  1  2  3 
  
  
  #################################################################
  ###    Configurating Transmit Link Configuration Table (TVCP) ###
  #################################################################
  
  #############################
  ### Configuring Channel 0 ###
  #############################  
  set sts3_ind 0
  set sts1_ind 0 
  
  ### ii. Poll MEM_BUSY Bit in 0xE508 ###
  Poll_BUSY_Bit $devID 0xE508 15
 
  ### iii. Calculate and Set MEM_ADDR  ###    
  # MEM_ADDR = STS3_index*3 + STS1_index, where STS3_index ranges
  # from 0 to 3, and STS1_index ranges from 0 to 2.        
  set mem_addr [expr ($sts3_ind * 3) + $sts1_ind]         
  admwr $devID 0xE509 $mem_addr
   
  ### iv. Setting Link Configuration Table Memory Value ###   
  # VC_SQ[5:0] = 0x00
  # Group Tag[4:0] = Ethernet Channel = 0x0
  # Inhibit = 0x0
  # Prov/Mode[1:0] = Transparent = 0x3
  set vc_sq 0x0
  set group_tag 0
  set inhibit 0x0
  set prov_mode 0x3 
  set mem_data0 [expr [expr $vc_sq << 10]|[expr $group_tag << 4]|[expr $inhibit << 3]|$prov_mode]
                       
  admwr $devID 0xE50A $mem_data0	;# bit 15 to 0
  admwr $devID 0xE50B 0x0000	;# bit 31 to 16
  admwr $devID 0xE50C 0x0000	;# bit 47 to 32
  admwr $devID 0xE50D 0x0000	;# bit 63 to 48
    
  ### v. Trigger Indirect Write Access ###
  # MEM_BUSY = 1
  # MEM_RWB = 0
  # MEM_SEL = 0x0
  admwr $devID 0xE508 0x8000    
  
  #############################
  ### Configuring Channel 1 ### 
  #############################
  
  set sts3_ind 1
  set sts1_ind 0  
  
  ### ii. Poll MEM_BUSY Bit in 0xE508 ###
  Poll_BUSY_Bit $devID 0xE508 15
 
  ### iii. Calculate and Set MEM_ADDR  ###    
  # MEM_ADDR = STS3_index*3 + STS1_index, where STS3_index ranges
  # from 0 to 3, and STS1_index ranges from 0 to 2.        
  set mem_addr [expr ($sts3_ind * 3) + $sts1_ind]         
  admwr $devID 0xE509 $mem_addr
   
  ### iv. Setting Link Configuration Table Memory Value ###   
  # VC_SQ[5:0] = 0x00
  # Group Tag[4:0] = Ethernet Channel = 0x0
  # Inhibit = 0x0
  # Prov/Mode[1:0] = TRANSPARENT = 0x3
  set vc_sq 0x0
  set group_tag 1
  set inhibit 0x0
  set prov_mode 0x3
  set mem_data0 [expr [expr $vc_sq << 10]|[expr $group_tag << 4]|[expr $inhibit << 3]|$prov_mode]
                       
  admwr $devID 0xE50A $mem_data0	;# bit 15 to 0
  admwr $devID 0xE50B 0x0000	;# bit 31 to 16
  admwr $devID 0xE50C 0x0000	;# bit 47 to 32
  admwr $devID 0xE50D 0x0000	;# bit 63 to 48
    
  ### v. Trigger Indirect Write Access ###
  # MEM_BUSY = 1
  # MEM_RWB = 0
  # MEM_SEL = 0x0
  admwr $devID 0xE508 0x8000    
  
  #############################
  ### Configuring Channel 2 ### 
  #############################
  
  set sts3_ind 2
  set sts1_ind 0  
  
  ### ii. Poll MEM_BUSY Bit in 0xE508 ###
  Poll_BUSY_Bit $devID 0xE508 15
 
  ### iii. Calculate and Set MEM_ADDR  ###    
  # MEM_ADDR = STS3_index*3 + STS1_index, where STS3_index ranges
  # from 0 to 3, and STS1_index ranges from 0 to 2.        
  set mem_addr [expr ($sts3_ind * 3) + $sts1_ind]         
  admwr $devID 0xE509 $mem_addr
   
  ### iv. Setting Link Configuration Table Memory Value ###   
  # VC_SQ[5:0] = 0x00
  # Group Tag[4:0] = Ethernet Channel = 0x0
  # Inhibit = 0x0
  # Prov/Mode[1:0] = TRANSPARENT = 0x3
  set vc_sq 0x0
  set group_tag 2
  set inhibit 0x0
  set prov_mode 0x3
  set mem_data0 [expr [expr $vc_sq << 10]|[expr $group_tag << 4]|[expr $inhibit << 3]|$prov_mode]
                       
  admwr $devID 0xE50A $mem_data0	;# bit 15 to 0
  admwr $devID 0xE50B 0x0000	;# bit 31 to 16
  admwr $devID 0xE50C 0x0000	;# bit 47 to 32
  admwr $devID 0xE50D 0x0000	;# bit 63 to 48
    
  ### v. Trigger Indirect Write Access ###
  # MEM_BUSY = 1
  # MEM_RWB = 0
  # MEM_SEL = 0x0
  admwr $devID 0xE508 0x8000    
                             
  #############################
  ### Configuring Channel 3 ###
  #############################  
  set sts3_ind 3
  set sts1_ind 0 
  
  ### ii. Poll MEM_BUSY Bit in 0xE508 ###
  Poll_BUSY_Bit $devID 0xE508 15
 
  ### iii. Calculate and Set MEM_ADDR  ###    
  # MEM_ADDR = STS3_index*3 + STS1_index, where STS3_index ranges
  # from 0 to 3, and STS1_index ranges from 0 to 2.        
  set mem_addr [expr ($sts3_ind * 3) + $sts1_ind]         
  admwr $devID 0xE509 $mem_addr
   
  ### iv. Setting Link Configuration Table Memory Value ###   
  # VC_SQ[5:0] = 0x00
  # Group Tag[4:0] = Ethernet Channel = 0x0
  # Inhibit = 0x0
  # Prov/Mode[1:0] = VCAT non LCAS = 0x2
  set vc_sq 0x0
  set group_tag 3
  set inhibit 0x0
  set prov_mode 0x3 
  set mem_data0 [expr [expr $vc_sq << 10]|[expr $group_tag << 4]|[expr $inhibit << 3]|$prov_mode]
                       
  admwr $devID 0xE50A $mem_data0	;# bit 15 to 0
  admwr $devID 0xE50B 0x0000	;# bit 31 to 16
  admwr $devID 0xE50C 0x0000	;# bit 47 to 32
  admwr $devID 0xE50D 0x0000	;# bit 63 to 48
    
  ### v. Trigger Indirect Write Access ###
  # MEM_BUSY = 1
  # MEM_RWB = 0
  # MEM_SEL = 0x0
  admwr $devID 0xE508 0x8000    
         
  
  
  ################################################################        
  ### 2. Configurating Receive Link Configuration Table (RVCP) ### 
  ################################################################
  
  #############################
  ### Configuring Channel 0 ###
  #############################
  set sts3_ind 0

⌨️ 快捷键说明

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