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# 31851

Endpoint Block Plus Wrapper v1.9 for PCI Express - PIO design file PCI_EP_MEM_ACCESS.vhd corrupts block RAM data when checking byte enables


Known Issue: 1.9, 1.8, 1.7.1, 1.7, 1.6.1, 1.6, 1.5.2, 1.5.1, 1.5, 1.4, 1.3, 1.2

In the VHDL PIO example design, the file PCI_EP_MEM_ACCESS reads the data being addressed from the block RAM in order to ensure only enabled bytes are written. However, byte 2 and byte 0 get swapped in the process.


The problem is in the following code:

w_pre_wr_data_b3 <= pre_wr_data(31 downto 24);

w_pre_wr_data_b0 <= pre_wr_data(23 downto 16);

w_pre_wr_data_b1 <= pre_wr_data(15 downto 08);

w_pre_wr_data_b2 <= pre_wr_data(07 downto 00);

which should be changed to:

w_pre_wr_data_b3 <= pre_wr_data(31 downto 24);

w_pre_wr_data_b2 <= pre_wr_data(23 downto 16);

w_pre_wr_data_b1 <= pre_wr_data(15 downto 08);

w_pre_wr_data_b0 <= pre_wr_data(07 downto 00);

Revision History

10/28/2008 - Initial Release

AR# 31851
Date Created 10/28/2008
Last Updated 12/15/2012
Status Active
Type General Article