AXI narrow write operation

RTL 2010. 11. 24. 17:50
SoC에서 AXI bus를 사용할 경우
mater component는 narrow write operation을 수행하게 되는 경우가 종종 있다.

이러한 경우 과연 master가
AWADDR, AWSIZE, WSTRB, WDATA를 어떤 식으로 보내줘야 하는지 헷갈릴 때가 있다.
이를 예로 살펴보도록 한다.

예)
AXI specification
AWADDR: 32bit width
WDATA: 64bit width (DATA width에 종속적으로 WSTRB: 8bit)
일 때

메모리 0x00000004에 32bit짜리 데이터(0x12345678)를 적어주고 싶은 경우
AWADDR: 0x00000004
AWSIZE: 2'b10 (note that 2'b10 means 32bit transfer. (2'b00: 8bit, 2'b01: 16bit, 2'b10: 32bit, 2'b11: 64bit))

WSTRB: 0xF0
WDATA: 0x12345678_00000000

을 보내주면 된다.

결론)
AWADDR, AWSIZE는 보내고자 하는 데이터에 종속적으로 보내준다.
(보낼 데이터가 32bit데이터이고 0x00000004에 보내는 것이라면
AWADDR, AWSIZE는 bus의 specification과는 무관하게 정해진다)

하지만 WSTRB, WDATAbus의 specification에 종속적으로 보내준다.
(bus의 specification에서 데이터 width가 64bit이라고 하였으므로
보내고자하는 데이터가 상위 32bit에 해당한다면 64bit 중 상위 32bit에 맞추어 데이터를 보내야한다.
물론 WSTRB signal도 상위 32bit을 지칭하는 0xF0을 띄어야 한다.)

'RTL' 카테고리의 다른 글

Dump 받기  (0) 2011.02.11
Clock Control  (0) 2011.02.10
SystemVerilog Syntax vi Plug-in  (0) 2010.06.14
Testbench 작성시 @(posedge CLK)의 유의 사항  (0) 2010.05.12
Verilog Language Reference Manual  (0) 2010.04.21
Posted by sunshowers
,