State Chart - LUN - mandatory

L_Idle
  1. lunStatus6 set to true
  2. Event: tl_SR6.lunID!true
  3. lunReturnState set to L_Idle
1. tl.lunID.targRequest -> L_Idle_TargetRequest

L_Idle_TargetRequest
1. tl.lunID.reset -> L_RST_Execute
2. tl_WP.lunID?writeProtect
  • isWriteProtected set to writeProtect
-> L_WP_Update
3. tl_setSR6.lunID?SR6value
  • lunStatus6 set to SR6value
-> L_SR_Update
4. tl.lunID.statusRequest -> L_Status_Execute
5. tl.lunID.outputBufferOff -> L_Idle
6. tl.lunID.clearPageRegRequest -> L_Idle_ClearPageReg
7. tl.lunID.invalidatePageRegRequest -> L_Idle_InvalidPageReg
8. tl_programRequest.lunID?addr3BlockIn?addr2PageIn?addr1ColHIn?addr0ColLIn -> L_PP_Execute
9. tl_erase.lunID?addr -> L_BE_Execute
10. tl_readPage.lunID?addr3BlockIn?addr2PageIn?addr1ColHIn?addr0ColLIn -> L_RD_WaitForCmd
11. tl.lunID.retrieveParameters -> L_Idle_RdPp

L_WP_Update
1. Unconditional -> LUN_Return

L_SR_Update
1. Unconditional -> LUN_Return

L_Idle_ClearPageReg pageRegister set to true
1. Unconditional -> LUN_Return

L_Idle_InvalidPageReg
1. Unconditional -> LUN_Return

L_Idle_RdPp
  1. lunReturnState set to L_Idle_RdPp
  2. Event: li.lunID!read
  3. pageRegister set to false
1. tl_sync.lunID -> li.lunID.readDone -> L_Idle_RdPp_End
2. tl.lunID.targRequest -> tl.lunID.statusRequest -> L_Status_Execute

L_Idle_RdPp_End Event: tl.lunID!readPageComplete
1. Unconditional -> L_Idle_Rd

L_Idle_Rd
  1. lunStatus6 set to true
  2. Event: tl_SR6.lunID!true
  3. lunReturnState set to L_Idle_Rd
1. li.lunID.readDone -> L_Idle_Rd_Finish
2. tl_selectColumn.lunID?addr0ColLIn?addr1ColHIn -> L_Idle_Rd_ColSelect
3. tl.lunID.readRequest -> L_Idle_Rd_Xfer
4. tl.lunID.targRequest -> L_Idle_TargetRequest

L_Idle_Rd_Finish lunStatus5 set to true
1. Unconditional -> L_Idle_Rd

L_Idle_Rd_Xfer Event: tl_io.lunID!false
1. Unconditional -> L_Idle_Rd

L_Idle_Rd_ColSelect
1. Unconditional -> L_Idle_Rd

L_Status_Execute
1. tl.lunID.statusValue -> L_Status_Value
2. tl_cmd.lunID.cmd78h -> L_Status_Enhanced
3. tl_cmd.lunID.cmd70h -> L_Status_Legacy

L_Status_Value
1. Unconditional (if lunbInterleave == false) -> L_Status_Lun

L_Status_Enhanced
1. (if lunID == lunID) -> L_Status_Record_78h
2. (if lunID != lunID) -> L_Status_Output_Off

L_Status_Record_78h
  1. lunStatusCmd set to cmd78h
  2. lunStatusIlv set to false
1. Unconditional -> LUN_Return

L_Status_Output_Off
1. (if lunReturnState == L_Idle_Rd) -> L_Idle
2. (if lunReturnState != L_Idle_Rd) -> LUN_Return

L_Status_Legacy lunStatusCmd set to cmd70h
1. Unconditional -> LUN_Return

L_Status_Lun Event: tl_io.lunID!lunStatus6
1. Unconditional -> LUN_Return

L_RST_Execute
  1. lunStatus6 set to false
  2. Event: tl_SR6.lunID!false
  3. Event: li.lunID!li_reset
  4. lunbInterleave set to false
  5. lunReturnState set to L_RST_Execute
  6. Event: li_progress.lunID?progress
  7. Event: tl_progress.lunID!progress
1. tl_sync.lunID -> li.lunID.li_resetDone -> L_RST_Complete
2. tl.lunID.targRequest -> tl.lunID.statusRequest -> L_Status_Execute

L_RST_Complete
  1. lunStatus0 set to false
  2. lunStatus1 set to false
  3. lunStatus6 set to true
  4. Event: tl_SR6.lunID!true
  5. Event: tl.lunID.reset_done
1. Unconditional -> L_Idle

L_BE_Execute lunbInterleave set to false
1. Unconditional -> L_BE_WaitForCmd

L_BE_WaitForCmd
1. tl_cmd.lunID.cmdD0h -> L_BE_Erase

L_BE_Erase
  1. lunStatus6 set to false
  2. If lunbInterleave==true then lunStatus5 set to false
  3. Event: tl_SR6.lunID!false
  4. lunLastConfirm set to cmdD0h
  5. Event: li.lunID!erase
1. Unconditional -> L_BE_Erase_Wait

L_BE_Erase_Wait
  1. lunReturnState set to L_BE_Erase_Wait
  2. Event: li_progress.lunID?progress
1. li.lunID.eraseDone (if (lunbInterleave==false)) -> L_BE_Sts
2. tl.lunID.clearPageRegRequest (if progress==false) -> L_Idle_ClearPageReg
3. tl.lunID.targRequest -> tl.lunID.statusRequest (if progress==false) -> L_Status_Execute

L_BE_Sts
  1. lunStatus0 set to false
  2. lunStatus6 set to true
  3. Event: tl_SR6.lunID!true
1. Unconditional -> L_Idle

L_RD_WaitForCmd lunbInterleave set to false
1. tl_cmd.lunID?cmd:{cmd30h,cmd35h}
  • lunLastConfirm set to cmd
-> L_RD_ArrayRead

L_RD_ArrayRead
  1. lunStatus5 set to false
  2. lunStatus6 set to false
  3. Event: tl_SR6.lunID!false
  4. Event: li.lunID!read
  5. Event: li_progress.lunID?progress
  6. lunReturnState set to L_RD_ArrayRead
1. li.lunID.readDone -> L_RD_Complete
2. tl.lunID.targRequest -> tl.lunID.statusRequest (if progress==false) -> L_Status_Execute

L_RD_Complete
  1. lunStatus5 set to true
  2. lunStatus6 set to true
  3. Event: tl_SR6.lunID!true
1. Unconditional -> L_Idle_Rd

L_PP_Execute lunbInterleave set to false
1. Unconditional -> L_PP_Addr

L_PP_Addr
1. Unconditional -> L_PP_WaitForData

L_PP_WaitForData lunReturnState set to L_PP_WaitForData
1. tl_io.lunID?data
  • dataBit set to data
-> L_PP_AcceptData
2. tl_cmd.lunID.cmd10h -> L_PP_Prog
3. tl_selectColumn.lunID?addr0ColLIn?addr1ColHIn -> L_PP_ColSelect

L_PP_AcceptData pageRegister set to dataBit
1. Unconditional -> L_PP_WaitForData

L_PP_Prog
  1. lunStatus5 set to false
  2. lunStatus6 set to false
  3. Event: tl_SR6.lunID!false
  4. lunLastConfirm set to cmd10h
  5. Event: li.lunID!pageProgram
1. Unconditional -> L_PP_Prog_Wait

L_PP_Prog_Wait
  1. lunReturnState set to L_PP_Prog_Wait
  2. Event: li_progress.lunID?progress
1. li.lunID.pageProgramDone (if (lunbInterleave == false)) -> L_PP_Sts
2. tl.lunID.targRequest ->tl.lunID.statusRequest (if progress==false) -> L_Status_Execute

L_PP_Sts
  1. lunStatus1 set to true
  2. lunStatus0 set to true
  3. lunStatus6 set to true
  4. lunStatus5 set to true
  5. Event: tl_SR6.lunID!true
1. Unconditional -> L_Idle

L_PP_ColSelect
1. Unconditional -> L_PP_WaitForData

LUN_Return
1. (if lunReturnState == L_Idle) -> L_Idle
2. (if lunReturnState == L_Idle_RdPp) -> L_Idle_RdPp
3. (if lunReturnState == L_Idle_Rd) -> L_Idle_Rd
4. (if lunReturnState == L_RST_Execute) -> L_RST_Execute
5. (if lunReturnState == L_BE_Erase_Wait) -> L_BE_Erase_Wait
6. (if lunReturnState == L_RD_ArrayRead) -> L_RD_ArrayRead
7. (if lunReturnState == L_PP_WaitForData) -> L_PP_WaitForData
8. (if lunReturnState == L_PP_Prog_Wait) -> L_PP_Prog_Wait

Valid XHTML 1.0 Strict

HTML generated on 2010-02-16T15:43:13.056Z