UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

AR# 20119

8.1 EDK, XMD - XMD breaks up PLB/OPB byte/half-word mwr/mrd transactions on PowerPC into multiple single-byte transactions

Description

XMD splits up half-word transactions into 2 single-byte transactions on the PLB/OPB. This is unnoticed when accessing many peripherals such as on-chip block RAM in which two single-byte transactions are correctly masked. Due to this, a mwr/mrd command using the 'h' transaction size qualifier for half-word transfers in XMD will not be equivalent to a 'short' type access to a memory mapped I/O in C-code.

How do I work around this issue?

Solution

Perform the same operations using 'short' data types or XIO_In16 and XIO_Out16 functions in C-code. Note that single-byte and full-word XMD operations are performed correctly in one transaction.

This has been fixed in EDK 7.1. Note that the XMD debugconfig -memory_datawidth_matching enable command should be used for byte and half-word transactions to be bus accurate as it is not enabled by default.

In EDK 8.1i the debugconfig -memory_datawidth_matching enable will be enabled by default, thus the user does not need to use this command when doing byte or half-word transactions.

In EDK 8.2i the debugconfig -memory_datawidth_matching enable will be removed such that whatever type operation (word/half/byte) is requested.

"mrd <addr> 1 b" -> Does Byte transfers

"mrd <addr> 1 h" -> Does Halfword transfers

"mrd <addr> 1 w" -> Does word transfers (also the default).

Each operation will be preformed in a single transaction.

AR# 20119
Date Created 09/03/2007
Last Updated 12/15/2012
Status Active
Type General Article