реклама на сайте
подробности

 
 
> Altera ASMI_PARALLEL megafunction, Доступ к данным, залитым в конфигурационную флешь
dxp
сообщение Dec 11 2012, 09:38
Сообщение #1


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



Всем привет!

Имеется плата, на которой есть ПЛИС (Циклон 4Е) и процессор (Blackfin). Для удобства обновления фирмвари придумано хранить прошивку процессора в той же загрузочной флешке (M25P64), с которой грузится ПЛИС. План такой: сперва оживает ПЛИС, потом грузит процессор через SPI. Для доступа к данным, хранящимся в конфигурационной флеши, Альтера предоставляет мегафункцию ASMI_PARALLEL, которая через простой параллельный 8-битный интерфейс предоставляет доступ к конфигуратору.

В общем и целом реализовать задуманное удалось, но в процессе всплыл непонятный момент, о чём, собственно, и данный топик. В документации на модуль ASMI_PARALLEL есть картинка с диаграммой сигналов при чтении:
Прикрепленное изображение

и к этому ещё текстом сопровождение:
QUOTE
After the second-to-last byte of data to be read appears on the dataout[7..0]
signal, and the data_valid signal is asserted, deassert the rden signal to indicate
the end of the read command. A new byte from the next address then appears on the
dataout[7..0] signal, and the data_valid signal is reasserted before the
megafunction stops processing. Only then does the megafunction deassert the busy
signal.


Что означает, что для завершения чтения нужно перевести сигнал rden в лог 0, после этого модуль выдаст ещё один байт, после чего деактивирует сигнал busy. Т.е деактивировать rden нужно на предпоследнем читаемом байте.

Так я и делал, но в итоге последний байт в прошивке проца (там контрольная сумма CRC32) не прочитывался. Копание вывело на то, что по факту модуль прекращает выдавать байты сразу при деактивации сигнала rden:
Прикрепленное изображение


На картинке отчётливо видно, что когда сигнал rden (второй сверху) падает в ноль, никаких сигналов, что произошла выдача данных (сигнал dvalid_reg2 - это data_valid так квартус изуродовал) больше не происходит. Таким образом, реальное поведение модуля не соответствует документированному. Переделал логику формирования сигналов - rden держу всё время чтения, всё заработало как надо.

Собственно, вопрос следующий: это я что-то неправильно понял или реально косяк у альтеры? Настораживает то, что раз поведение отличается от документированного, то где гарантия, что при выходе следующей версии квартуса (сейчас это v12SP2) этот код не перестанет работать. Кто-нибудь сталкивался с подобным? Баг это или фича такая?

P.S. Попутно ещё спрошу. На этой версии столкнулся с неприятным поведением отдельных модулей - программатора и сигналтапа. Программатор в составе оболочки квартуса вообще не работает - запускаешь программатор - всё виснет. Сигналтап запускается с трудом (очень долго открывается) и при попытке подключить бластер тоже виснет. Запускаемые отдельно варианты того и другого работают сносно (за исключением того, что в stand-alone signaltap нельзя добавить сигналы - приходится сигналы добавлять в оболочке ква, а запускать на stand-alone варианте). Никто не сталкивался?


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
EvgenyNik
сообщение Dec 14 2012, 04:33
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 597
Регистрация: 24-05-06
Из: г. Чебоксары
Пользователь №: 17 402



Несколько в иной плоскости вопрос задам - почему выбрано направление загрузки SPI-FLASh > FPGA > CPU, а не SPI-FLASH > CPU > FPGA (passive serial)?
Последнее решение имеет меньше заморочек и, теоретически, более удобно для смены прошивки ПЛИС силами процессора, опять же, по причине меньшего числа заморочек и бОльшей развитости процессорной части системы по интерфейсам и т.п.


--------------------
Почему разработчики систем повышенной надёжности плохо справляются с простыми проектами? :)
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 02:52
Рейтинг@Mail.ru


Страница сгенерированна за 0.01376 секунд с 7
ELECTRONIX ©2004-2016