하만(Harman) 세미콘 반도체 설계 과정/SoC를 위한 Peripheral 설계

AXI 프로토콜 / HandShake

semicon_circuitdesigner 2024. 6. 26. 14:26
HandShake 방식
  • HandShake란?
     - 통신 과정에서, 수신부와 송신부의 특정 조건이 맞을 때 정보가 교환되는 방식
  • AXI에서의 HandShake
    • Master와 Slave에서 Valid, Ready 신호를 이용하여 Handshake 진행
       - Valid 신호: 데이터의 전송이 가능함을 알리는 Source의 신호
       - Ready 신호: 데이터의 수신이 가능함을 알리는 Destination의 신호
    • Valid와 Ready가 모두 HIGH일 때(Beat 상태) 데이터, 주소 등의 정보가 전송됨
    • Source는 Ready 신호와 상관 없이 Valid를 1로 설정할 수 있으며, 이 값은 HandShake 발생 시까지 유지돼야 함
  • AXI Read에서 HandShake
    Read Channel Block Diagram

    출처: AMD - Soft ECC Proxy LogiCORE IP Product Guide (PG337)
     
    • Read Address 전송 과정
      1. Master가 ARADDR에 주소를 출력하고, 신호를 보낼 준비가 완료되어 ARVALID를 1로 설정
      2. Slave가 신호를 받을 준비가 완료되면 ARREADY를 1로 설정
      3. T2에서 Beat 상태가 되어 Read Address 전송 후 Master은 ARVALID를, Slave는 ARREADY를 0으로 설정
    • Read Data(A0) 전송 과정
      1. T4에서 Slave는 Read Data를 받을 준비가 완료되어 RREADY값이 1, Master은 Read Data를 보낼 준비가 되지 않아 RVALID가 0이므로 데이터 전송 X
      2. T5~T6에서 Master가 Read Data를 받을 준비가 완료되어 RDATA에 데이터를 출력하고, RVALID를 1로 설정
      3. T6에서 Beat 상태가 되어 데이터 A0이 전송된 뒤 Master은 RVALID를, Slave는 RREADY를 0으로 설정
  • AXI Write에서 HandShake
    Write Channel Block Diagram
    출처: AMD - Soft ECC Proxy LogiCORE IP Product Guide (PG337)
     
    • Write Address 전송 과정
      1. Master가 AWADDR에 주소를 출력하고, 신호를 보낼 준비가 완료되어 AWVALID를 1로 설정
      2. Slave가 신호를 받을 준비가 완료되면 AWREADY를 1로 설정
      3. T2에서 Beat 상태가 되어 Write Address 전송 후 Master은 AWVALID를, Slave는 AWREADY를 0으로 설정
    • Write Data(A0) 전송 과정
      1. T2~T3에서 Master는 Write Data를 보낼 준비가 완료되어 WDATA에 Write Data를 출력하고 WVALID 값이 1, Slave는 Write Data를 받을 준비가 되지 않아 WVALID가 0이므로 데이터 전송 X
      2. T3~T4에서 Slave가 Write Data를 받을 준비가 되어 WREADY를 1로 설정

      3. T4에서 Beat 상태가 되어 Write Data 전송 후 Master은 WVALID를, Slave는 WREADY를 0으로 설정
    • Response 전송 과정
      1. Master에서는 T2~T3부터 Response를 받을 준비가 되어 BREADY를 1로 설정
      2. Write Data 전송이 완료된 뒤 T9~T10에서 Slave가 Response를 보낼 준비가 되어 BVALID를 1로 설정하고 BRESP에 Response 신호 출력
      3. T10에서 Beat 상태가 되어 Response 전송 후 Master은 BREADY를, Slave는 BVALID를 0으로 설정

 

AXI(Adv. eXtensible Interface)
  • AXI 프로토콜 구성 채널: 5개의 독립적인 채널
    • Write Channels
       - Write Address Channel
       - Write Data Channel
       - Write Response Channel
    • Read Channels
       - Read Address Channel
       - Read Data Channel
  • Write 작업
    1. Write Address Channel
       - Master에서 Write Address Channel을 통해 쓰기 요청 전송
       - AWADDR 신호로 쓰기 주소 전송
    2. Write Address Channel Handshake
       - Master에서 AWVALID 신호를 전송한 뒤, Slave에서 AWREADY 신호를 보내면 쓰기 주소 전송
    3. Write Data Channel
       - Master에서 Write Data Channel을 통해 실제 데이터 전송
       - WDATA 신호로 데이터 전송
    4. Write Data Channel Handshake
       - Master에서 WVALID 신호를 전송한 뒤, Slave에서 WREADY 신호를 보내면 쓰기 데이터 전송
    5. Write Response Channel
       - Slave에서 Write Response Channel을 통해 쓰기 완료 신호 전송
       - Slave에서 보낸 신호를 통해 Master에서 쓰기 작업의 완료 여부 확인
    6. Write Response Channel Handshake
       - Slave에서 BVALID 신호를 전송한 뒤, Master에서 BREADY 신호를 보내면 Write 상태 전송
  • Read 작업
    1. Read Address Channel
       - Master에서 Read 요청을 보내기 위해 Read Address Channel을 통해 주소 전송
       - ARADDR 신호로 읽기 주소 전송
    2. Read Address Channel Handshake
       - Master에서 ARVALID 신호를 전송한 뒤, Slave에서 ARREADY 신호를 보내면 읽기 주소 전송
    3. Read Data Channel
       - Slave에서 요청된 데이터를 Read Data Channel을 통해 전송
       - RDATA 신호를 통해 데이터 전송
    4. Read Data Channel Handshake
       - Slave에서 RVALID 신호를 보내면 Master에서 RREADY 신호를 보내 Read 데이터 전송