vpd 0 21 ноября, 2013 Опубликовано 21 ноября, 2013 (изменено) · Жалоба Вот какие грабли. Хотел сделать так, чтобы можно было обновлять 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 выбрана медленная. Изменено 21 ноября, 2013 пользователем Hoodwin Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
yxmihey 0 22 ноября, 2013 Опубликовано 22 ноября, 2013 (изменено) · Жалоба при выборе в качестве режима конфигурирования active serial пины двойного назначения nCSO и ASDO становятся доступными только на вход В настройках проекта в разделе девайс есть кнопка "Device and Pin Options..." там закладка "Dual-Purpose Pins". Именно там задаётся, как ведут себя некоторые системные пины после конфигурации. Обычно по умолчанию они отключаются в третье состояние или остаются системными, поэтому надо сначала задать режим пользовательского пина, а затем с этой опцией перекомпилировать, чтобы суметь использовать его в своём проекте. Изменено 22 ноября, 2013 пользователем Mihey yxNet Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vpd 0 22 ноября, 2013 Опубликовано 22 ноября, 2013 · Жалоба Так говорю же, когда выбран режим конфигурирования active serial, то квартус не дает менять тип пинов ASDO и nCSO, там только один вариант есть as input tri-stated. По крайней мере так ведет себя версия 9.1sp2. Отсюда и вопрос возник. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
yxmihey 0 22 ноября, 2013 Опубликовано 22 ноября, 2013 (изменено) · Жалоба В самих настройках не даёт выбрать другой тип пинов? Или ругается при компиляции? Сама возможность выставить такие опции в указанной вкладке при выставленном активном последовательном конфигурировании (в соседней вкладке) у меня по крайней мере в 9.0 была и как опция воспринималась. Даже несмотря на директиву "As input tri-stated" для Unused Pins. Изменено 22 ноября, 2013 пользователем Mihey yxNet Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vpd 0 22 ноября, 2013 Опубликовано 22 ноября, 2013 · Жалоба Ну вот две картинки с линии фронта. Судя по выделенному тексту, выбор может быть ограничен в зависимости от типа загрузки. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BSACPLD 9 22 ноября, 2013 Опубликовано 22 ноября, 2013 · Жалоба Если хотите использовать ПЛИС для программирования EPCS, то Вам необходимо использовать мегафункцию ALTASMI_PARALLEL. Во вложении пример её использования. 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 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vpd 0 22 ноября, 2013 Опубликовано 22 ноября, 2013 · Жалоба Хм. Тут вопрос уперся в то, что для работы с 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) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex11 3 22 ноября, 2013 Опубликовано 22 ноября, 2013 · Жалоба Я в свое время разбирался с этим, вот тестовый проект с доступом к ножкам cycloneII. Там, собственно, только один модуль существенен EPCS_chip.vhd, остальное для примера. Это выдрано из NIOS, но не тащит за собой кучи мусора. EPCS.ZIP Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vpd 0 22 ноября, 2013 Опубликовано 22 ноября, 2013 · Жалоба BSACPLD Спасибо большое, что ткнули носом в эту полезную функцию. Вот кстати дока по ней: http://www.altera.com/literature/ug/ug_altasmi_parallel.pdf Получилось по-быстрому сделать простенький тест с ней, действительно все собирается и рулит ножками AS. Пока что сделал чтение silicon ID, вроде сходится. осталось прикрутить к PCI устройству. В общем, исходный вопрос отпал сам собой. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
billidean 0 25 ноября, 2013 Опубликовано 25 ноября, 2013 · Жалоба Здравствуйте. Не знаю как с использование ALTASMI, но при использовании epcs_flash_controller'а все нормально работает, и позволяет перевести зарезервированные выводы как user-io после конфигурирования. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Leka 0 20 октября, 2015 Опубликовано 20 октября, 2015 · Жалоба В qsf прописать конфигурационные пины, как пользовательские, и можно прошивать без каких-либо корок (проверено на Cyclone IV). http://electronix.ru/forum/index.php?s=&am...t&p=1374405 Если у кого есть какая статистика, просьба привести. Я только начал этим заниматься. По первым впечатлениям, приведенные алгоритмы заметно проиграют zip как для хорошо заполненных, так и для почти пустых дизайнов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Leka 0 21 октября, 2015 Опубликовано 21 октября, 2015 · Жалоба Самое интересное, это сжатие сжатого Квартусом битстрима. У сжатого битстрима большой плюс - требует меньше секторов, и время стирания загрузочной флешки будет меньше. Но сжатый Квартусом битстрим заполненного кристала хуже сжимается простыми алгоритмами, чем несжатый... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Leka 0 22 октября, 2015 Опубликовано 22 октября, 2015 (изменено) · Жалоба К каким выводам пришел. Средний размер сжатых Квартусом битстримов у меня ~200КБайт (для мелких Циклонов). Степень дополнительного сжатия zip-ом соответствует заполненности кристалла, и на выходе получается ~100КБ для ~наполовину заполненных кристаллов, и ~20КБ для почти пустых. Простые алгоритмы, основанные на сжатии нулей, проигрывают zip-у ~40КБ (на выходе получается соответственно ~140КБ и ~60КБ). Оптимизация простых алгоритмов дает непринципиальную разницу в несколько КБ. Скорость радиоканала у меня ~20КБайт/сек, выигрывать доли секунды нет никакого смысла. А в сжатии простыми алгоримами смысл есть, осталось только выбрать самый красивый из самых простых (те, что по ссылке выше, забраковал). Изменено 22 октября, 2015 пользователем Leka Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться