일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- verilog HDL
- baekjoon
- Vivado
- Xilinx
- Bus
- amba
- C++
- verilog
- 백준
- java
- 정처기
- 자격증
- 리눅스
- 코딩테스트
- chip2chip
- vitis
- Backjoon
- axi
- 정보처리기사
- boj
- hdl
- Zynq
- AMBA BUS
- linux
- HDLBits
- Beakjoon
- UNIX
- 실기
- SQL
- FPGA
- Today
- Total
Hueestory
AMBA Bus Summary(txt) 본문
<Bus>
- 여러 Block들이 상호 Data를 전송하기 위해 이들을 전기적으로 연결한 공유 신호선
장점
- 인터페이스의 간소화 : IP Block들을 wire로 point-to-point 방식으로 잇게 되면 선이 많고 복잡함
- 확장성 : IP Block을 추가할 때 Bus에만 연결하면 됨
<AMBA>
- APB, AHP, AXI : Performance를 위해 Bus 분리
- 빠른 동작이 필요 없는 것들은 APB와 같은 저속 Bus에 연결
- 빠른 동작이 필요한 것들은 AHB와 같은 고속 Bus에 연결
<APB>
- 전력 소비를 최소화하고 인터페이스의 복잡성을 줄이기 위해 최적화된 저가형 인터페이스
- 고성능을 요구하지 않는 주변 장치를 위한 Bus
- 인터페이스의 간소화, 확장성
- APB Process
1. Master는 여러 Slave 중 자신이 접근하고 싶은 Slave(DRAM)를 고르고 -> PSEL
2. Write를 할 거라는 신호를 보냄 -> PWRITE : 1
3. DRAM 메모리의 어디부분에 적을 건지에 대한 주소 -> PADDR
4. 쓸 데이터 -> PWDATA
5. Master가 위와 같은 신호들의 준비를 모두 끝마치고 전송 가능하다는 신호를 보냄 -> PENABLE
6. 전송 받을 수 있는지에 대한 Slave to Master 신호 -> PREADY
<AHB>
- Arbiter : 여러 Master가 Bus를 쓰고 싶어할 때 우선순위에 따라 중재하는 역할
- AHB Signals
HCLK(Bus clock) : This clock times all bus transfers. all signal timings are related to the rising edge of HCLK.
HRESETa(Reset) : The bus reset signal is active LOW and is used to reset the system and the bus. This is the only active LOW signal.
HADDR(Address bus) : The 32-bit system address bus.
HTRANS(Transfer type) : Indicates the type of the current transfer, which cna be NONSEQUENTIAL, SEQUENTIAL, IDLE or BUSY.
HWRITE(Transfer direction) : When HIGH this signal indicates a write transfer and when LOW a read transfer.
HSIZE(Tranfer size) : 전송의 크기, 1024bit 까지 지원
HBURST(Burst type) : Burst의 전송 유형을 나타냄(4-8-16 bit와 Incrementing 또는 Wrapping)
HPROT(Protection control) : The protection control signals provide additional information about a bus access and are primarily intended for use by any module that wishes to implement some level of protection.
HWDATA(Wirte data bus), HSELx(Slave select), HRDATA(Read data bus), HREADY(Transfer done), HRESP(Transfer response)
- Arbitration Signals
HBUSREQx(Bus request) : Bus를 필요로 하는 Master가 Bus Arbiter로 보내는 신호
HLCOKx(Locked transfers) : HIGH 일 때 LOW가 되기 전까지 다른 Master들이 해당 Bus를 사용할 수 없음
HGRANTx(Bus grant) : 해당 Master가 Bus의 최우선순위임을 나타냄
HMASTER(Master number) : Bus를 점유하고 있는 Master를 나타냄
HMASTLOCK(Locked sequence) : 현재 Transfer가 Locked Sequence임을 나타냄
HSPLITx(Split completion request) : SPLIT이 일어나 Transfer가 끊겼을 때, Slave는 이 신호로 다시 완료할 수 있는 Bus Master를 나타냄
- Burst : 여러 Transfer를 연속적으로 하는 것
- HTRANS
01(Idle) : Bus 소유권을 쥐고 있는 Master가 Data transfer를 하지 않는 상황
01(Busy) : Bus Master가 Burst Tranfer 중간에 Burst 동작을 잠시 멈추는 상황
10(NONSEQ) : 첫번째 Transfer
11(SEQ) : NONSEQ를 제외한 나머지 Transfer
- HBURST
beat : Transfer의 단위(횟수)
Undefined Length Burst : Incrementing Burst를 하겠다는 선언을 한 후 Address를 늘려가면서 Transfer를 하는 것, beat가 정해지지 않음
Incrementing Burst : Address를 Sequential하게 늘려가면서 Transfer를 진행
Wrapping Burst : Burst Type과 Transfer Size를 범위를 만들어 그 범위 안에서 Burst Transfer 진행
HSIZE : Transfer의 Size
- HRESP[1:0]
00(OKAY) : Transfer의 성공적인 완료
01(ERROR) : Transfer에서 Error가 발생
10(RETRY) : Trnasfer가 완료될 때 까지 재시도
11(SPLIT) : Master가 Bus에 대한 권한을 다시 부여받을 때 Transfer 재시도
- RETRY : 기존 Priority를 유지하므로, 더 높은 우선순위를 가진 Master만 Burst를 끊고 Bus에 Access 할 수 있음
- SPLIT : Arbiter가 우선순위를 조정해 더 낮은 우선순위를 가진 Master도 Burst를 끊고 Bus에 Access 할 수 있음
- SPLIT Process
1. SPLIT Response를 지원하는 Slave만 가능
2. Master는 Transfer 당시 Address와 Control Signal을 기억해야 함
3. Slave는 HMASTER[3:0] 번호를 통해 Master를 기억해야 함
4. Arbiter는 우선순위 조정을 통해 다른 Master에게 Bus 사용을 허가
5. Slave가 전송할 준비를 오나료하면 HSPLITx의 신호를 통해 Arbiter에게 Master의 번호를 알려줌
6. Arbiter는 이 번호를 보고 Master의 우선순위를 복원
7. Master에 Bus 소유권을 부여하고 Master는 기억해둔 Address와 Control Signal을 통해 Transfer를 진행
8. Transfer가 완료되면 Slave는 OKAY Response를 보냄
<AXI>
- AHB보다 높은 Performance와 Frequency가 필요한 Design을 타겟으로 한 Interface, Handshake를 통해 통신
- Write Address/Data Channel : Master가 준비가 되면 VALID를 보내고 Slave가 받을 준비가 되면 READY를 보냄
- Write Response Channel : Slave가 준비가 되면 VALID를 보내고 Master가 받을 준비가 되면 READY를 보냄
- RLAST : Burst Transfer 중 마지막 Transfer가 완료될 때 HIGH가 되어 Burst Transfer가 완료되었음을 나타냄
- AHB와의 차이점 : Burst 시작 Address와 몇번의 Transfer를 할 지 Burst Length(ARLEN),
한번에 몇 Byte를 Transfer 할 지 Burst Size(ARSIZE)를 결정하면 그에 맞게 Address를 계산해 접근
- Multiple Outstanding Address : 기존 Transfer가 끝나기 전에 다음으로 Transfer할 Address를 미리 발행할 수 있음
- Out of Order : Address를 발행한 순서대로 처리하지 않고 Transfer 순서를 벗어날 수 있음
- Salve가 Interleave를 지원하는 Slave는 드물기 때문에 Write 시에는 대부분 Address를 발행한 순서대로 Transfer됨
- RRESP/BRESP
0b00(OKAY) : Read/Write가 잘 되었음을 나타냄
0b01(EXOKAY) Exclusive Okay : Exclusive Access가 잘 되었음을 나타냄
0b10(SLVERR) Slave Error : Access는 정상적으로 이루어졌지만 Error가 발생했음을 나타냄
0b11(DECERR) Decode Error : 해당 Address에 Access할 Slave가 없는 상황(주소가 잘못됨)
- RRESP : Read 시에 Read Data Channel을 통해 Response가 전달됨
- BRESP : Write 시에 Slave는 Write Address와 Data를 모두 주는 입장이므로 Slave로 보내는 Write Response Channel이 따로 존재함
- Exclusive Access
1. CPU는 read-modify-write 방식으로 Data를 관리함
2. 다른 Master들의 Memory Access는 막을 수 없으므로, 다른 Master가 Access 중인 경우 Exclusive Access가 취소됨
'FPGA(중단) > verilog' 카테고리의 다른 글
AXI block design (0) | 2023.02.24 |
---|---|
AXI protocol (0) | 2023.02.24 |
grammer (0) | 2023.02.17 |