Доброго всем времени суток.
Несколько дней как начал изучать IP integrator и встроенный ARM в Zynq.
Что-то (hello world) начало получаться, сделал схему сложнее и возникло непреодолимое препятствие.
Проц имеет свой 1 ГБ DDR, который мэппится в 0x00000000-0x3FFFFFFF.
Через Gen.Purp. Master AXI порт проц соединяется с AXI Interconnect, в который воткнута всякая мелочь для отладки типа GPIO Switch, GPIO Leds. Адреса в Address Editor меняются как угодно, главное, чтобы были старше 0x40000000.
Поигравшись с простой схемой, я наворотил в IP Integrator'е что-то, напоминающее будущий проект, в том числе MIG (вторая планка DDR, не ARMовская, а ПЛИСовая) и через AXI Interconnect этот, второй DDR также виден процу.
Так вот, назначение адреса на 2-й DDR не происходит, т.к. САПР утверждает, что и для этого DDR адреса должны начинаться с 0x00000000. Странная вещь, почему нельзя назначить после 0x40000000?
Получается, что без трансляции (переноса) адресов второй DDR я не могу соединить с процом.
Конечно, я могу сделать custom ip block, который меняет старшие битики адреса, но мне кажется, что моя задача настолько стандартная, что уже решена. Может кто-то сможет подсказать как её решить и пояснить, почему нельзя менять адреса для MIG-DDR, а для остального можно?
Golikov A.
Jul 15 2014, 18:58
Потому что вероятно есть разница между физическим адресом данных в памяти ДДР, и тем как система может обращаться к этим данным.
Если задавать адресное пространство MIG - DDR, то оно может идти только от нуля до размера DDR, потому что это реальный физические линии. А вот задавать адресное пространство Ядро - MIG вполне возможно, у меня на 4 вкладке Axi parameter задается базовый адрес и размер... Это именно параметры мапинга ДДР на шину а не ддр на контроллер
Цитата(Golikov A. @ Jul 15 2014, 22:58)

Потому что вероятно есть разница между физическим адресом данных в памяти ДДР, и тем как система может обращаться к этим данным.
Если задавать адресное пространство MIG - DDR, то оно может идти только от нуля до размера DDR, потому что это реальный физические линии. А вот задавать адресное пространство Ядро - MIG вполне возможно, у меня на 4 вкладке Axi parameter задается базовый адрес и размер... Это именно параметры мапинга ДДР на шину а не ддр на контроллер
Какой версией пользуетесь?
К сожалению, у меня на этой вкладке базовый адрес не выставляется.
Нашёл вот ещё что:
http://forums.xilinx.com/t5/MIG-Memory-Int...can/td-p/394531
Golikov A.
Jul 16 2014, 08:33
я в Platform Studio и ISE ядра делал, в вивадо не скажу. Может для цинку пока что-то глючит...
стоило открыть UG585 на главе 4.1 Address map как всё стало ясно
порт M_AXI_GP0 - 0x40000000+
порт M_AXI_GP1 - 0x80000000+