2013-01-08 5 views
1

Я работаю над подключением DMA между Xilinx FPGA и ПК через PCIe. Однако передача DMA от FPGA к компьютеру не работает. Я выбросил пакет PCIe посланный FPGA с помощью ChipScope:FPGA PCIe DMA write не меняет CPU RAM

(заголовок) 0x6000_0002,0x0600_01FF, (адрес) 0x0000_0000,0x3740_0000 (данные) 0x0000_0001,0x0000_0002

, который должен написать 0x1,0x2 в адрес памяти 0x3740_0000, но писать не было. С другой стороны, чтение с того же адреса работало отлично. Я пробовал как 32-битный, так и 64-битный адрес, ни один из них не может быть успешным. Компьютер, над которым я работаю, является 64-разрядной машиной AMD. Что я упустил?

+0

Возможно, вам повезло с просьбой ответить на http://electronics.stackexchange.com/ – Marty

+0

Разве вы не задали тот же вопрос здесь: http://stackoverflow.com/questions/14217311/pcie-interrupt-routing – FarhadA

ответ

1

Я вижу, что вы пытаетесь написать в 64-разрядном режиме и режиме 2. Просто, чтобы упростить задачу, попробуйте 1 длину с 32-разрядным addr (не забудьте изменить байт, включите 0x0F для 1 DW write tlp, проверьте, не trn_tdst_rdy_n идет высоко в любой точке). Вы выделили эту память с помощью программы и какую программу вы использовали для этого? Я думаю, что ваша проблема связана с управлением памятью, потому что успешная операция чтения подразумевает, что вы безопасны со стороны fpga.