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

 
 
> Загрузка в active serial и режим user i/o для ASDO + nCSO, Квартус не дает делать user I/O при выборе загрузки с EPCS, Cyclone II
Hoodwin
сообщение Nov 21 2013, 21:24
Сообщение #1


Знающий
****

Группа: Участник
Сообщений: 881
Регистрация: 21-03-10
Из: _// \\_
Пользователь №: 56 107



Вот какие грабли. Хотел сделать так, чтобы можно было обновлять EPCS4 прямо из EP2C5, в котором живет проект с PCI устройством. Повелся на то, что символ EP2C5 с сайта Альтеры, был нарисован так, что оба сигнала ASDO и nCSO там обозначены просто как user I/O. Когда дошло дело до программирования, то вдруг оказывается, что при выборе в качестве режима конфигурирования active serial пины двойного назначения nCSO и ASDO становятся доступными только на вход. А мне то как раз и надо там иметь выходы, причем именно с тем же смыслом, что и на этапе загрузки.

Два вопроса:
1) Отчего квартус не дает сделать мне там выходы?
2) Можно ли его обмануть? Ну, например, я скажу ему, что режим у меня вовсе не active serial, а какой-нибудь иной, чтобы он разблокировал пины, затем я сделаю sof (или даже pof), воткну его руками в проект прошивки для EPCS4 и залью в EEPROM. Это заработает?

В общем-то неохота лишние "макароны" на плату навешивать, цепляя ASDO и nCSO к резервным I/O.

еще такой вопрос. Сделал совсем простой проект счетчика светодиодом помигать, чтобы проверить первую плату. По JTAG работает, через EEPROM - нет. Причем сама EPCS4 зашивается правильно и проверяется. Сел все проверять по новой, так ничего и не обнаружил такого. От безысходности снял галку "compressed bitstream" в настройках устройства. И без нее все работает. Что это такое? Что-то я раньше не замечал, чтобы сжатие битстрима приводило к отказу загрузки. Скорость DCLK выбрана медленная.

Сообщение отредактировал Hoodwin - Nov 21 2013, 21:52
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 12)
Mihey yxNet
сообщение Nov 22 2013, 07:41
Сообщение #2





Группа: Участник
Сообщений: 11
Регистрация: 3-04-08
Пользователь №: 36 451



Цитата(Hoodwin @ Nov 22 2013, 01:24) *
при выборе в качестве режима конфигурирования active serial пины двойного назначения nCSO и ASDO становятся доступными только на вход


В настройках проекта в разделе девайс есть кнопка "Device and Pin Options..." там закладка "Dual-Purpose Pins". Именно там задаётся, как ведут себя некоторые системные пины после конфигурации. Обычно по умолчанию они отключаются в третье состояние или остаются системными, поэтому надо сначала задать режим пользовательского пина, а затем с этой опцией перекомпилировать, чтобы суметь использовать его в своём проекте.

Сообщение отредактировал Mihey yxNet - Nov 22 2013, 07:43
Go to the top of the page
 
+Quote Post
Hoodwin
сообщение Nov 22 2013, 07:45
Сообщение #3


Знающий
****

Группа: Участник
Сообщений: 881
Регистрация: 21-03-10
Из: _// \\_
Пользователь №: 56 107



Так говорю же, когда выбран режим конфигурирования active serial, то квартус не дает менять тип пинов ASDO и nCSO, там только один вариант есть as input tri-stated. По крайней мере так ведет себя версия 9.1sp2. Отсюда и вопрос возник.
Go to the top of the page
 
+Quote Post
Mihey yxNet
сообщение Nov 22 2013, 07:53
Сообщение #4





Группа: Участник
Сообщений: 11
Регистрация: 3-04-08
Пользователь №: 36 451



В самих настройках не даёт выбрать другой тип пинов? Или ругается при компиляции?
Сама возможность выставить такие опции в указанной вкладке при выставленном активном последовательном конфигурировании (в соседней вкладке) у меня по крайней мере в 9.0 была и как опция воспринималась. Даже несмотря на директиву "As input tri-stated" для Unused Pins.

Сообщение отредактировал Mihey yxNet - Nov 22 2013, 08:03
Go to the top of the page
 
+Quote Post
Hoodwin
сообщение Nov 22 2013, 10:35
Сообщение #5


Знающий
****

Группа: Участник
Сообщений: 881
Регистрация: 21-03-10
Из: _// \\_
Пользователь №: 56 107



Ну вот две картинки с линии фронта. Судя по выделенному тексту, выбор может быть ограничен в зависимости от типа загрузки.
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
BSACPLD
сообщение Nov 22 2013, 11:48
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 371
Регистрация: 24-07-05
Из: Москва
Пользователь №: 7 056



Если хотите использовать ПЛИС для программирования EPCS, то Вам необходимо использовать мегафункцию ALTASMI_PARALLEL.
Во вложении пример её использования.
CODE
EPCS_BRIDGE
(
input clk_epcs, // - такт для EPCS (20 МГц)
input clk_host, // - такт для управляющей логики
input [7:0] ctrl_in, // - шина данных для регистра управления
input wr_ctrl, // - разрешение записи в регистр управления
input [23:0] address_in, // - начальный адрес адрес для чтения/записи EPCS (автоинкремент)
input wr_address, // - разрешение записи начального адреса
input [7:0] data_in, // - шина данных
input wr_data, // - разрешение записи данных
output wr_full, // - переполнение FIFO для записи
input rd_data, // - строб для чтения данных (запрос, 1 байт)
output [7:0] data_out, // - последний прочитанный байт
output busy - // флаг занятости (1 - идёт выполнение команды)
) ;


Краткая инструкция для данного модуля:
Для подключения к проекту нужно добавить в проект файл EPCS_BRIDGE.qip.
Для разрешения операций стирания/записи необходимо записать в регистр управления последовательность байт: 'E', 'N', 'A'.
Перед тем как программировать EPCS нужно её стереть, для этого необходимо записать в регистр управления последовательность байт: 'E', 'R', 'S'.
Размер записываемого блока памяти должен быть кратен 256 байтам.
Для запрещения операций стирания/записи необходимо записать в регистр управления последовательность байт: 'D', 'I', 'S'.

P.S. Если будете использовать мой модуль не забудьте перегенерить мегафунции под Вашу EPCS.

Прикрепленные файлы
Прикрепленный файл  EPCS_BRIDGE.rar ( 11.79 килобайт ) Кол-во скачиваний: 13
 
Go to the top of the page
 
+Quote Post
Hoodwin
сообщение Nov 22 2013, 12:31
Сообщение #7


Знающий
****

Группа: Участник
Сообщений: 881
Регистрация: 21-03-10
Из: _// \\_
Пользователь №: 56 107



Хм. Тут вопрос уперся в то, что для работы с EPCS через родные ножки AS нужно какой-то стандартный кор использовать, или это все же можно делать в общем виде? Я вот гляжу в Embedded Peripherals IP User Guide, там написано про необходимость каких то настроек на уровне устройства:

Цитата
The Altera EPCS configuration device connects to the FPGA through dedicated pins
on the FPGA, not through general-purpose I/O pins. In all Altera device families
except Cyclone III and Cyclone IV, the EPCS serial flash controller core does not create
any I/O ports on the top-level SOPC Builder system module. If the EPCS device and
the FPGA are wired together on a board for configuration using the EPCS device (in
other words, active serial configuration mode), no further connection is necessary
between the EPCS serial flash controller core and the EPCS device.


Perform the following tasks in
the Quartus® II software to make the necessary pin assignments:
■ On the Dual-purpose pins page (Assignments > Devices > Device and Pin
Options), ensure that the following pins are assigned to the respective values:
■ Data[0] = Use as regular I/O
■ Data[1] = Use as regularr I/O
■ DCLK = Use as regular I/O
■ FLASH_nCE/nCS0 = Use as regular I/O


Что-то я не наблюдаю пока никаких намеков на настроки Data[0] и DCLK. При попытке добавить их в проект, оно ругается:
Error: Can't place multiple pins assigned to pin location Pin_1 (IOC_X0_Y13_N0)
Info: Pin cfg_sdo is assigned to pin location Pin_1 (IOC_X0_Y13_N0)
Info: Pin ~ASDO~ is assigned to pin location Pin_1 (IOC_X0_Y13_N0)
Error: Can't place multiple pins assigned to pin location Pin_2 (IOC_X0_Y13_N1)
Info: Pin cfg_cs is assigned to pin location Pin_2 (IOC_X0_Y13_N1)
Info: Pin ~nCSO~ is assigned to pin location Pin_2 (IOC_X0_Y13_N1)
Error: Can't place multiple pins assigned to pin location Pin_108 (IOC_X28_Y2_N0)
Info: Pin com3_rts is assigned to pin location Pin_108 (IOC_X28_Y2_N0)
Info: Pin ~LVDS41p/nCEO~ is assigned to pin location Pin_108 (IOC_X28_Y2_N0)
Error: Can't place multiple pins assigned to pin location Pin_206 (IOC_X1_Y14_N1)
Info: Pin prst is assigned to pin location Pin_206 (IOC_X1_Y14_N1)
Info: Pin ~LVDS11n/DEV_CLRn~ is assigned to pin location Pin_206 (IOC_X1_Y14_N1)

Go to the top of the page
 
+Quote Post
Alex11
сообщение Nov 22 2013, 15:12
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 2 106
Регистрация: 23-10-04
Из: С-Петербург
Пользователь №: 965



Я в свое время разбирался с этим, вот тестовый проект с доступом к ножкам cycloneII. Там, собственно, только один модуль существенен EPCS_chip.vhd, остальное для примера. Это выдрано из NIOS, но не тащит за собой кучи мусора.
Прикрепленный файл  EPCS.ZIP ( 6.9 килобайт ) Кол-во скачиваний: 131
Go to the top of the page
 
+Quote Post
Hoodwin
сообщение Nov 22 2013, 17:55
Сообщение #9


Знающий
****

Группа: Участник
Сообщений: 881
Регистрация: 21-03-10
Из: _// \\_
Пользователь №: 56 107



BSACPLD

Спасибо большое, что ткнули носом в эту полезную функцию. Вот кстати дока по ней:
http://www.altera.com/literature/ug/ug_altasmi_parallel.pdf

Получилось по-быстрому сделать простенький тест с ней, действительно все собирается и рулит ножками AS. Пока что сделал чтение silicon ID, вроде сходится. осталось прикрутить к PCI устройству.

В общем, исходный вопрос отпал сам собой.
Go to the top of the page
 
+Quote Post
billidean
сообщение Nov 25 2013, 06:09
Сообщение #10


Местный
***

Группа: Свой
Сообщений: 247
Регистрация: 4-10-10
Из: г. Екатеринбург
Пользователь №: 59 925



Здравствуйте.
Не знаю как с использование ALTASMI, но при использовании epcs_flash_controller'а все нормально работает, и позволяет перевести зарезервированные выводы как user-io после конфигурирования.
Go to the top of the page
 
+Quote Post
Leka
сообщение Oct 20 2015, 22:55
Сообщение #11


Профессионал
*****

Группа: Участник
Сообщений: 1 075
Регистрация: 30-09-05
Пользователь №: 9 118



В qsf прописать конфигурационные пины, как пользовательские, и можно прошивать без каких-либо корок (проверено на Cyclone IV).



http://electronix.ru/forum/index.php?s=&am...t&p=1374405
Если у кого есть какая статистика, просьба привести.
Я только начал этим заниматься. По первым впечатлениям, приведенные алгоритмы заметно проиграют zip как для хорошо заполненных, так и для почти пустых дизайнов.
Go to the top of the page
 
+Quote Post
Leka
сообщение Oct 21 2015, 10:33
Сообщение #12


Профессионал
*****

Группа: Участник
Сообщений: 1 075
Регистрация: 30-09-05
Пользователь №: 9 118



Самое интересное, это сжатие сжатого Квартусом битстрима. У сжатого битстрима большой плюс - требует меньше секторов, и время стирания загрузочной флешки будет меньше. Но сжатый Квартусом битстрим заполненного кристала хуже сжимается простыми алгоритмами, чем несжатый...
Go to the top of the page
 
+Quote Post
Leka
сообщение Oct 22 2015, 17:52
Сообщение #13


Профессионал
*****

Группа: Участник
Сообщений: 1 075
Регистрация: 30-09-05
Пользователь №: 9 118



К каким выводам пришел. Средний размер сжатых Квартусом битстримов у меня ~200КБайт (для мелких Циклонов). Степень дополнительного сжатия zip-ом соответствует заполненности кристалла, и на выходе получается ~100КБ для ~наполовину заполненных кристаллов, и ~20КБ для почти пустых. Простые алгоритмы, основанные на сжатии нулей, проигрывают zip-у ~40КБ (на выходе получается соответственно ~140КБ и ~60КБ). Оптимизация простых алгоритмов дает непринципиальную разницу в несколько КБ. Скорость радиоканала у меня ~20КБайт/сек, выигрывать доли секунды нет никакого смысла. А в сжатии простыми алгоримами смысл есть, осталось только выбрать самый красивый из самых простых (те, что по ссылке выше, забраковал).

Сообщение отредактировал Leka - Oct 22 2015, 17:53
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 12:00
Рейтинг@Mail.ru


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