Jump to content

    

Проблемы с Xilinx AMM AXI Bridge

Коллеги, помогите, пожалуйста, решить проблему.

Сделал Block Design, но он почему-то не работает.

Сигнал waitrequest на любой из шин Avalon всегда в 1.

Если принудительно выставить write или read, то waitrequest переключает в 0 и дает записать/считать некоторое количество данных, но после этого возвращается в 1 и намертво зависает.

 

P.S.

Hardware Manager пишет, что контроллер успешно проходит калибровку, так что видимо дело в остальной части схемы.

post-7056-1535020715_thumb.png

Share this post


Link to post
Share on other sites

Здравствуйте,

Пытаюсь использовать похожую схему, но только с DDR3.
Сделал как в примере этой IP - вначале выставляются read/write, а потом уже ожидается валидность waitrequest.
Так же как и у вас проходит несколько операций и все зависает (смотрел только моделирование).
Вам удалось проверить этот блок на реальном железе или как-то решить проблему?

 

Share this post


Link to post
Share on other sites

1. waitrequest имеет право быть активным и это не повод не начинать транзакцию, но нельзя ее заканчивать.

2. Я сейчас не помню наверняка, но не должен ли сигнал aresetn быть синхронным с соответсвующим клоком? А у вас ресет внешний, а клок с ядра ддр идет.

Share this post


Link to post
Share on other sites

Приветствую!

44 minutes ago, alexadmin said:

waitrequest имеет право быть активным и это не повод не начинать транзакцию, но нельзя ее заканчивать

На сколько я помню  если waitrequest активен то начинать транзакцию нельзя. 

Хотя Avlaon в спецификациях  на сигналы этом  абсолютно непредсказуем (в отличии от AXI)   - надо смотреть какая конкретно логика реализована в конкретном slave. 

В случае TC  особого смысла гадать по фото  нет. Ему надо воткнуть ILA на  шины между birdge, clock_converter и DDR controller  и посмотреть что там с сигналами. И все сразу станет понятнее.

Удачи! Rob.

Share this post


Link to post
Share on other sites
8 minutes ago, RobFPGA said:

На сколько я помню  если waitrequest активен то начинать транзакцию нельзя.

A slave asserts waitrequest when unable to respond to a read or write request. Forces the master to wait until the interconnect is ready to proceed with the transfer. At the start of all transfers, a master initiates the transfer and waits until waitrequest is deasserted. A master must make no assumption about the assertion state of waitrequest when the master is idle: waitrequest may be high or low, depending on system properties.When waitrequest is asserted, master control signals to the slave must remain constant except for beginbursttransfer. For a timing diagram illustrating the beginbursttransfer signal, refer to the figure in Read Bursts.An Avalon-MM slave may assert waitrequest during idle cycles. An Avalon-MM master may initiate a transaction when waitrequest is asserted and wait for that signal to be deasserted. To avoid system lockup, a slave device should assert waitrequest when in reset.

Share this post


Link to post
Share on other sites

Я решил эту проблему, только уже не помню как :(

Надо поискать в архиве проектов.

Помню, только то, что у Xilinx Avalon сделан немного не по спецификации.

Share this post


Link to post
Share on other sites

Нашел.

Во вложении пример работающий с Avalon от Xilinx.

Проверено на железе в Vivado 2018.3.

av_adapter.sv

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now