wolfman 0 15 декабря, 2017 Опубликовано 15 декабря, 2017 · Жалоба Здравствуйте. Использую Макс 10-ый, возникла идея вместо внешней флешки использовать UFM Макса. Подцепил корку в QSYS, загрузил Mif-файл,все вроде бы читается, но есть нюанс. Порядок байт не такой как в MIf-файле. Т.е. в Mif- по нулевому адресу лежат такие данные: 0x1D05DE20, а читается из UFM 0x201d05de. Сначала подумал что проблема в отображении, т.к. читаю через i2c, начал вычитывать побайтно, таже хрень, в нулевом адресе сидит не "1D" или "20", как можно было бы ожидать, а "DE", "1D" сидит по 2-му адресу. Смотрел в сигналтапе, адреса выставляются верно, а данные с таким вот смещением. В чём может быть дело? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DmitryR 0 18 декабря, 2017 Опубликовано 18 декабря, 2017 · Жалоба Было бы здорово, если бы вы описали систему чуть боле подробно. Какие в ней компоненты, как взаимодействуют, чем тактируются (с какой частотой). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
wolfman 0 18 декабря, 2017 Опубликовано 18 декабря, 2017 · Жалоба Было бы здорово, если бы вы описали систему чуть боле подробно. Какие в ней компоненты, как взаимодействуют, чем тактируются (с какой частотой). Система, в общем-то простая: доступ внешнего CPU к регистрам внутри Макса(чтение состояний, статистики, управление светодиодами, вентиляторами и прочее, ничего сверхъестественного). Модули практически все самописные, есть несколько модулей памяти, они штатные альтеровские. Всё подключено на шину Авалон-ММ, частота 50 МГц, данные 8 бит, адрес 16 бит. Доступ к регистрам на шине Авалон, через I2C: с одной стороны I2C слейв, с другой Авалон-ММ мастер. Модуль I2C проверен и работает в примерно таком же проекте. В Сигналтапе вижу, что данные с UFM выходят правильно, а вот в модуль I2C приходят в другом порядке. Возможно QSYS при согласовании разрядностей шин что-то перемудрил... Попробую сделать согласование через свой модуль. Либо, как вариант, для тестирования доработать модуль I2C, чтобы он работал с 32-х битной шиной данных. UPD: сделал обычную RAM, пишется/читается нормально. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dvladim 0 19 декабря, 2017 Опубликовано 19 декабря, 2017 · Жалоба А вот так вот с наскока: не может ли это быть проблемой big/little endian вместе с разной разрядностью шин Avalon и UFM? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
wolfman 0 20 декабря, 2017 Опубликовано 20 декабря, 2017 · Жалоба А вот так вот с наскока: не может ли это быть проблемой big/little endian вместе с разной разрядностью шин Avalon и UFM? Я и так и так вертел, результат тот же. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 20 декабря, 2017 Опубликовано 20 декабря, 2017 · Жалоба Вы пишите по одному интерфейсу, а читаете по другому? Есть возможность записать и считать по одному и тому же? Может в угоду какой-то оптимизации линии данных переставлены. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
wolfman 0 21 декабря, 2017 Опубликовано 21 декабря, 2017 · Жалоба Нет пишу и читаю по одному интерфейсу. В UFM писать не получается, пока только читаю. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DmitryR 0 22 декабря, 2017 Опубликовано 22 декабря, 2017 · Жалоба В Сигналтапе вижу, что данные с UFM выходят правильно, а вот в модуль I2C приходят в другом порядке. Возможно вы младшие биты адреса меняете не вовремя. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
wolfman 0 23 декабря, 2017 Опубликовано 23 декабря, 2017 · Жалоба Возможно вы младшие биты адреса меняете не вовремя. Думал об этом, но тогда разве не должно все съехать? А тут байты переставлены внутри двойного слова. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
wolfman 0 25 декабря, 2017 Опубликовано 25 декабря, 2017 · Жалоба DmitryR Похоже вы были правы и проблема была с адресами. Немного задержал биты адреса и сигнал чтения. Всё читается правильно. Но запись пока не удается. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
wolfman 0 28 декабря, 2017 Опубликовано 28 декабря, 2017 · Жалоба Все заработало. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
wolfman 0 10 января, 2018 Опубликовано 10 января, 2018 · Жалоба Дабы не создавать новую тему. Возник вопрос: необходимо стирать только страницу, а не сектор целиком, по мануалу Альтеры/Интела, получается стирать только сектор. Может кто-то работал со страницами в UFM? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DmitryR 0 11 января, 2018 Опубликовано 11 января, 2018 · Жалоба Я честно говоря даже мануал не читал, а просто пристегнул библиотечные функции. Они работают. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
wolfman 0 13 января, 2018 Опубликовано 13 января, 2018 · Жалоба Я честно говоря даже мануал не читал, а просто пристегнул библиотечные функции. Они работают. Хм, что значит: подключил библиотечные функции? Я подключил корку в qsys, работаю через стандартные Линуксовые функции(i2cget/i2cset). Доступ к регистрам и UFM через i2c. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DmitryR 0 16 января, 2018 Опубликовано 16 января, 2018 · Жалоба У меня там NIOS, и к нему есть библиотеки. Если вы хотите сделать иначе - то думаю, что самым быстрым способом будет изучить код этих библиотек. Там не очень много. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться