- 신규로 표시
- 북마크
- 구독
- 소거
- RSS 피드 구독
- 강조
- 인쇄
- 부적절한 컨텐트 신고
I have an Avalon master with a 32-bit data bus connected to an Avalon slave with a 64-bit data bus. SOPC builder allows me to do this, and automatically inserts a sopc_system_burst module between these two interfaces.
When the master issues a burst write command, the auto generated SOPC module breaks up the burst into individual 1-word accesses, severely reducing the throughput. Is this the expected behavior? Or should the module correctly convert my 32-bit burst into an equivalent 64-bit burst? I did notice that burst reads are converted without a problem. Anyone have any ideas why the burst writes are not working across different data-widths?링크가 복사됨
- 신규로 표시
- 북마크
- 구독
- 소거
- RSS 피드 구독
- 강조
- 인쇄
- 부적절한 컨텐트 신고
This behavior is expected, there is no packing logic built into the fabric. The reason why you see it for reads is that it is just as easy to perform a wide read than two narrow ones, but this is not the case for writes.
If you need high bandwidth I would either increase the master width or use a half-rate bridge (which does the packing that you are looking for).- 신규로 표시
- 북마크
- 구독
- 소거
- RSS 피드 구독
- 강조
- 인쇄
- 부적절한 컨텐트 신고
Thanks for your response.
The half-rate bridge isn't quite what I want - it converts single accesses into half-wide bursts, and cannot convert burst accesses into wider burst accesses. I'd be curious to know if the Qsys Merlin Burst Adapter can deal with this situation (the documentation suggests that it can).- 신규로 표시
- 북마크
- 구독
- 소거
- RSS 피드 구독
- 강조
- 인쇄
- 부적절한 컨텐트 신고
Oops I meant 2x rate bridge (narrow to wide).
It's been a while but last time I checked Qsys didn't support transaction packing. That may have changed by now but I haven't seen it yet.- 신규로 표시
- 북마크
- 구독
- 소거
- RSS 피드 구독
- 강조
- 인쇄
- 부적절한 컨텐트 신고
What is the 2x rate bridge? Is that a standard Altera SOPC component? I don't see any reference to it in the documentation or in the Altera library of memory mapped components.
- 신규로 표시
- 북마크
- 구독
- 소거
- RSS 피드 구독
- 강조
- 인쇄
- 부적절한 컨텐트 신고
There isn't one shipped in the ACDS but I think there was one floating around somewhere (hopefully not in the old Nios II forum that crashed....) Building a 2x bridge is pretty easy to do manually though. You just store multiple beats inside the bridge and glue them together into a single wide access. The tricky part is to implement a timeout mechanism in case the additional beats never arrive (don't want to stall forever).
- 신규로 표시
- 북마크
- 구독
- 소거
- RSS 피드 구독
- 강조
- 인쇄
- 부적절한 컨텐트 신고
I put together a simple test system in Qsys and I can confirm that the burst adapter it uses *does* perform the proper narrow-to-wide burst conversion. It does not break up the bursts into single accesses like it does in SOPC.
- 신규로 표시
- 북마크
- 구독
- 소거
- RSS 피드 구독
- 강조
- 인쇄
- 부적절한 컨텐트 신고
Thanks for the update, I was unaware that it was added.
