Forum Discussion
Altera_Forum
Honored Contributor
11 years agoOn further investigation, it seems that the core only allows reads and writes of 4 bytes or less. Changing memcpy_fromio to a loop over ioread32 now actually reads successfully. However, there is still an issue of the core producing invalid TLP packets.
Looks like what is happening is that some extra data is being sent with the abort status, which is not allowed. The header is generated on like 606 of altpcieav_dma_rxm.sv: assign tx_tlp_empty[1:0] = addr_bit2_reg? 2'b10 : 2'b01; Changing this to: assign tx_tlp_empty[1:0] = is_valid_read_reg ? (addr_bit2_reg? 2'b10 : 2'b01) : 2'b10; seems to solve the problem, as the protocol analyzer now lists the packet has having a valid LCRC.