|
MAX10 чтение/запись в UFM есть проблема., неправильный порядок байт при чтении |
|
|
|
Dec 15 2017, 06:53
|
Знающий
   
Группа: Свой
Сообщений: 529
Регистрация: 15-06-05
Из: Питер
Пользователь №: 6 032

|
Здравствуйте.
Использую Макс 10-ый, возникла идея вместо внешней флешки использовать UFM Макса. Подцепил корку в QSYS, загрузил Mif-файл,все вроде бы читается, но есть нюанс. Порядок байт не такой как в MIf-файле.
Т.е. в Mif- по нулевому адресу лежат такие данные: 0x1D05DE20, а читается из UFM 0x201d05de. Сначала подумал что проблема в отображении, т.к. читаю через i2c, начал вычитывать побайтно, таже хрень, в нулевом адресе сидит не "1D" или "20", как можно было бы ожидать, а "DE", "1D" сидит по 2-му адресу.
Смотрел в сигналтапе, адреса выставляются верно, а данные с таким вот смещением. В чём может быть дело?
--------------------
Россия это даже не страна. Россия это секрет, завернутый в загадку и укрытый не проницаемой тайной...
|
|
|
|
|
Dec 18 2017, 20:10
|
Знающий
   
Группа: Свой
Сообщений: 529
Регистрация: 15-06-05
Из: Питер
Пользователь №: 6 032

|
Цитата(DmitryR @ Dec 18 2017, 23:34)  Было бы здорово, если бы вы описали систему чуть боле подробно. Какие в ней компоненты, как взаимодействуют, чем тактируются (с какой частотой). Система, в общем-то простая: доступ внешнего CPU к регистрам внутри Макса(чтение состояний, статистики, управление светодиодами, вентиляторами и прочее, ничего сверхъестественного). Модули практически все самописные, есть несколько модулей памяти, они штатные альтеровские. Всё подключено на шину Авалон-ММ, частота 50 МГц, данные 8 бит, адрес 16 бит. Доступ к регистрам на шине Авалон, через I2C: с одной стороны I2C слейв, с другой Авалон-ММ мастер. Модуль I2C проверен и работает в примерно таком же проекте. В Сигналтапе вижу, что данные с UFM выходят правильно, а вот в модуль I2C приходят в другом порядке. Возможно QSYS при согласовании разрядностей шин что-то перемудрил... Попробую сделать согласование через свой модуль. Либо, как вариант, для тестирования доработать модуль I2C, чтобы он работал с 32-х битной шиной данных. UPD: сделал обычную RAM, пишется/читается нормально.
--------------------
Россия это даже не страна. Россия это секрет, завернутый в загадку и укрытый не проницаемой тайной...
|
|
|
|
|
Dec 20 2017, 12:01
|
Знающий
   
Группа: Свой
Сообщений: 529
Регистрация: 15-06-05
Из: Питер
Пользователь №: 6 032

|
Цитата(dvladim @ Dec 20 2017, 06:16)  А вот так вот с наскока: не может ли это быть проблемой big/little endian вместе с разной разрядностью шин Avalon и UFM? Я и так и так вертел, результат тот же.
--------------------
Россия это даже не страна. Россия это секрет, завернутый в загадку и укрытый не проницаемой тайной...
|
|
|
|
|
Dec 23 2017, 21:10
|
Знающий
   
Группа: Свой
Сообщений: 529
Регистрация: 15-06-05
Из: Питер
Пользователь №: 6 032

|
Цитата(DmitryR @ Dec 22 2017, 19:24)  Возможно вы младшие биты адреса меняете не вовремя. Думал об этом, но тогда разве не должно все съехать? А тут байты переставлены внутри двойного слова.
--------------------
Россия это даже не страна. Россия это секрет, завернутый в загадку и укрытый не проницаемой тайной...
|
|
|
|
|
Jan 13 2018, 10:46
|
Знающий
   
Группа: Свой
Сообщений: 529
Регистрация: 15-06-05
Из: Питер
Пользователь №: 6 032

|
Цитата(DmitryR @ Jan 11 2018, 21:21)  Я честно говоря даже мануал не читал, а просто пристегнул библиотечные функции. Они работают. Хм, что значит: подключил библиотечные функции? Я подключил корку в qsys, работаю через стандартные Линуксовые функции(i2cget/i2cset). Доступ к регистрам и UFM через i2c.
--------------------
Россия это даже не страна. Россия это секрет, завернутый в загадку и укрытый не проницаемой тайной...
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|