|
Подскажите начинаюшему по Cyclone II |
|
|
|
Dec 25 2009, 15:04
|
Группа: Участник
Сообщений: 12
Регистрация: 25-12-09
Пользователь №: 54 474

|
Приветствую всех участников. Начинаю осваивать ПЛИС. Собрал макетку на EP2C5Q208 на подобие той,что в этой ветке http://electronix.ru/forum/index.php?showtopic=71127Короче от чипа просто разведены ноги на пятаки, чтобы можно было нормально припаяться. Поданы наприги на ядро 1.2V, на все 4 банка 3.3V, распаян JTAG и пины для конфигурирования в PS mode, (в смысле довешаны где надо резисторы). Все остальные порты нукуда не подключены и никуда не подтянуты. Пробую простейший проект, как в выше указанном посте, короче просто вход/выход, все остальнве порты в квартусе устанавливаю как - input tri-stated. Прошиваю через JTAG. Факт прошивки отмечаю по установившемуся уровню на CONF_DONE через пару секунд. На этом собственно и все, на всех пинах около 2.8V и никакой реакции на выходе при воздействии на вход. Вход/выход привязаны через pin planner к конкретным 2-м пинам плисины. Может кто подскажет где копать? где чего может надо обязательно подтянуть к конкретному уровню?
|
|
|
|
|
Dec 26 2009, 11:01
|
Группа: Участник
Сообщений: 12
Регистрация: 25-12-09
Пользователь №: 54 474

|
Выяснилась дополнительная инфа: Установил в квартусе галочку enable INIT_DONE output, перекомпилил. Выход ПЛИС (пин 107 в случае с EP2C5Q208) подтянул к +3.3V через 10к. Подаю питание ПЛИС, на INIT_DONE лог.1, начинаю шить (через JTAG), уровень устанавливается в ноль, (равно как и на CONF_DONE). По окончании процесса прошивки на CONF_DONE устанавливается лог.1, а вот на INIT_DONE по прежнему ноль. Получается, что ПЛИС не входит в user mode. Почему?
Сам ByteBlasterII рабочий. На пинах ПЛИС подвешены резисторы по 1к: TCK - на корпус. TMS и TDI на +3.3V. На TDO ничего не подвешено. Цепи от разьема JTAG до ПЛИС прозваниваются.
|
|
|
|
|
Dec 27 2009, 13:56
|
Участник

Группа: Участник
Сообщений: 44
Регистрация: 3-01-09
Пользователь №: 42 897

|
2-ой сцыклон это кажется первая альтеровская микросхема с низковольтным напряжением питания ядра, и она очень чувствительна к качеству напряжения 1,2В. Один коллега долго мучился с ней из-за того что поленился повесить конденсаторы на ноги питания ядра. Проблема выражалась в том, что прошивка слетала и глючила. Смахивает на вашу проблему, гляньте хорошо ли вы развязали питание
|
|
|
|
|
Dec 27 2009, 22:59
|
Группа: Участник
Сообщений: 12
Регистрация: 25-12-09
Пользователь №: 54 474

|
Пречислю, где чего подвешено.
По цепям JTAG описано чуть выше. Предпалогалось в дальнейшем программировать ПЛИС от микроконтроллера в PS mode, поэтому дополнительно запаяно следующее: MSEL0 - 1 (прямо на 3.3V) MSEL1 - 0
DCLK - на порт микроконтроллера (выход) DATA0 - на порт м/к (выход) nCONFIG - на порт м/к (выход) nSTATUS - подтянут через 10к на 3.3V и на порт м/к (вход) CONF_DONE - подтянут через 10к на 3.3V и через транзисторный ключ на светодиод (для контроля при отладке. У м/к не хватает ног.) INIT_DONE - точно так же nCE - 0 nCEO - висит никуда не подтянут и не подключен (буду писать - X) DEV_OE - X DEV_CLRn - X ASDO - X nCSO - X CRC_ERROR - X CLKUSR - X В квартусе, диалог Device & Pin Options, закладка General, где устанавливаются дополнительные опции - галочка установлена только напротив Enable ... (INIT_DONE). Вот в таком виде прошивая JTAGом не устанавливается уровень на INIT_DONE, ну и соответственно не работает ни один, самый простой пример. На CONF_DONE - все как надо. При конфигурации микроконтроллером эффект тот же.
Я уж было подумал, что проблема с внутренним генератором циклона, который используется для инициализации. Попробовал использовать CLKUSR опцию для инициализации. Установил галочку напротив Enable ... (CLKUSR). Перекомпилил. Этот .rbf загонял контроллером. Затем 299 тактов на CLKUSR. Эффект тот же, CONF_DONE - все как надо, INIT_DONE не устанавливается. Но здесь есть один нюанс - опять таки из-за недостатка пинов у контроллера, соединил вместе DCLK и CLKUSR, т.е. получается, что при инициализации еще дергался и DCLK.
Питание такое. Подается на плату 3.3V от LDO стабилизатора LMS1587CT-3.3, расположенного отдельно от моей макетки. Это питание используется как VCCIO для всех 4-х банков, а так же от него запитаны 3 LDO стабилизатора на 1.2V - LM1117, расположенные на обратной от ПЛИС стороне платы. Один используется для ядра, два другие питают PLL. Правда PLL может и не понадобятся. На каждой ножке, по кругу макетки (получается на расстоянии от чипа порядка 4-5см) как на VCCIO, так и на VCCINT запаяны конденсаторы - чередуясь 1mkF и 0.01mkF. Плата естественно двухсторонняя, изготовлена по ЛУТ "технологии" в домашних условиях. Претендавать тут на супер скоростные характеристики конструкции может и наивно, но как минимум помигать диодом, думаю, что я вправе. А не то полетит этот циклон, куда подальше. Достал он уже меня. Трудов только вот жалко. В конце концов аналогичная макетка на EP1K30TC144 и шьется без проблем и диод на ней мигает. На большее я пока не способен, а с циклоном связался, т.к. помигав диодом надо "помигать" чем более сложным, а пинов нехватило.
|
|
|
|
|
Dec 28 2009, 09:13
|
Частый гость
 
Группа: Свой
Сообщений: 103
Регистрация: 17-03-06
Из: Томск
Пользователь №: 15 319

|
Цитата На каждой ножке, по кругу макетки (получается на расстоянии от чипа порядка 4-5см) как на VCCIO, так и на VCCINT запаяны конденсаторы - чередуясь 1mkF и 0.01mkF. Так на каком расстоянии от ноги плисины до ближайшего конденсатора??? По идее кондеры необходимо ставить как можно ближе к выводу. А для ПЛЛ (с учетом рабочей частоты 600-800 МГЦ), так и вообще почти на ноги кондер паять, чтобы по плате не шумело.
|
|
|
|
|
Dec 28 2009, 09:21
|

Знающий
   
Группа: Свой
Сообщений: 680
Регистрация: 11-02-08
Из: Msk
Пользователь №: 34 950

|
На первый взгляд, подключение правильное. Но на всякий случай сверьтесь еще раз с документацией. Далее, замерьте уровни питания, лучше осциллографом. А еще лучше, поставить ждущий триггер, скажем, на 1.1В для ядра, и повторить всю операцию конфигурации. Если в процессе питание провалится, паяйте емкости. Кроме того, убедитесь, что прошивка вообще рабочая. Внимательно изучите логи квартуса на предмет выбрасывания пинов. Вообще, я предпочитаю делать тестовые прошивки вида Код module test(clk,out) input clk; output [7:0] out; wire [7:0] out; reg [7:0] counter;
always @(posedge clk) counter[7:0] <= counter[7:0] + 1; assign out[7:0] = counter[7:0]; endmodule Здесь используется внешний генератор частоты, а саму прошивку использую для обнаружения непропаев BGA корпусов.
|
|
|
|
|
Dec 28 2009, 12:38
|
Группа: Участник
Сообщений: 12
Регистрация: 25-12-09
Пользователь №: 54 474

|
Да, ждущий триггер на 1.1V по питанию ядра это вариант, надо будет попробовать. А прошивка рабочая, я проверял на EP1K30. Конечно же скомпиленая в различных проектах под соответствующий чип. В любом случае мне кажется, что я должен увидеть факт инициализации прошитого чипа по установившемуся уровню на INIT_DONE, или это не так? Цитата(AndriAno @ Dec 28 2009, 11:13)  Так на каком расстоянии от ноги плисины до ближайшего конденсатора???
По идее кондеры необходимо ставить как можно ближе к выводу. А для ПЛЛ (с учетом рабочей частоты 600-800 МГЦ), так и вообще почти на ноги кондер паять, чтобы по плате не шумело. По питанию VCCINT и VCCIO от ноги ПЛИС до конденсатора 2.5 -3.5 см, (замерил поконкретнее). По питанию PLL практически на самих ногах. Прицепляю картинку. По углам место для 1.2V LDO стабилизаторов, питающих PLL. Не надо обращать внимание на то, что там есть связь с корпусом, в процессе изготовления все подправлено. Может это и сильно безгамотно, но уж, как могу так и делаю. Все это делается в домашних условиях, доступными средствами.
Эскизы прикрепленных изображений
|
|
|
|
|
Dec 30 2009, 18:18
|
Знающий
   
Группа: Свой
Сообщений: 654
Регистрация: 24-01-07
Из: Воронеж
Пользователь №: 24 737

|
Цитата(Serega_ @ Dec 28 2009, 01:59)  По цепям JTAG описано чуть выше. TRST где? Должен быть в 1, если в воздухе - то это может быть причиной. Цитата(Serega_ @ Dec 28 2009, 01:59)  В квартусе, диалог Device & Pin Options, закладка General, где устанавливаются дополнительные опции - галочка установлена только напротив Enable ... (INIT_DONE). ... Я уж было подумал, что проблема с внутренним генератором циклона, который используется для инициализации. Попробовал использовать CLKUSR опцию для инициализации. Установил галочку напротив Enable ... (CLKUSR). Перекомпилил. Этот .rbf загонял контроллером. Затем 299 тактов на CLKUSR. Эффект тот же, CONF_DONE - все как надо, INIT_DONE не устанавливается. Но здесь есть один нюанс - опять таки из-за недостатка пинов у контроллера, соединил вместе DCLK и CLKUSR, т.е. получается, что при инициализации еще дергался и DCLK. Вот тоже подумал о CLKUSR. Соединение DCLK и CLKUSR не принципиально (в данном случае). Цитата(Serega_ @ Dec 28 2009, 01:59)  На каждой ножке, по кругу макетки (получается на расстоянии от чипа порядка 4-5см) как на VCCIO, так и на VCCINT запаяны конденсаторы - чередуясь 1mkF и 0.01mkF. Далековато, попробуйте поставить хоть пару конденсаторов близко к ногам. Цитата(Serega_ @ Dec 28 2009, 15:38)  В любом случае мне кажется, что я должен увидеть факт инициализации прошитого чипа по установившемуся уровню на INIT_DONE, или это не так? Это так. Цитата(sazh @ Dec 28 2009, 16:00)  P.S. Посмотрите в документации в разделе конфигурация информацию о пинах, отвечающих за ошибки по загрузке. Типа status. его уровни. Там все нормально, иначе CONF_DONE не поднялся бы. Цитата(Shivers @ Dec 28 2009, 18:33)  А квартус программер то что говорит, прошивка успешно заканчивается? Еще можно сигнал тап включить, добавить пины в мониторинг и ловить эти ваши "внешние воздействия". Заодно и качество связи по житагу выясните - если линк отваливаться начнет, значит житаг надо ближе к пинам паять. Квартус по Boundary-Scan проверяет бит OE от CONF_DONE. Выход в рабочий режим ему проверить нечем. (во всяком случае это в их jam) Линк вряд ли отваливается, иначе не поднимался бы CONF_DONE. Ну а сигнал тап - рано, схема не выходит в рабочий режим. PS. В таких макетках большая емкостная связь между пинами и от этого все проблемы. Возможно у вас наводка на служебные пины при выходе в рабочий режим и схема, например, не выходит до конца. Попробуйте поиграть опциями Clear before Tri-States и дефолтным значением всех пинов в третье состояние.
|
|
|
|
|
Dec 31 2009, 08:54
|
Группа: Участник
Сообщений: 12
Регистрация: 25-12-09
Пользователь №: 54 474

|
Цитата(dvladim @ Dec 30 2009, 20:18)  TRST где? Должен быть в 1, если в воздухе - то это может быть причиной. Не нахожу я для EP2C5Q208 такого пина. В Cyclone II Device Handbook (стр.428) нашел вот такое: The optional TRST pin is not available in Cyclone II devices. Установку значения всех неиспользуемых пинов в третье состояние я пробовал, не помогает. Все везде выглядит как надо, а не запускается. Вообще у меня уже закрадывается сомнение, что проблема не в железяке, но тем не менее придется видимо отправить циклона в чулан. Сколько ж можно с ним возиться. Буду тренироваться на EP1K. Этот хоть запускается, правда пинов не хватает. Спасибо всем кто откликнулся, ну и с наступающим Новым Годом!
|
|
|
|
|
Mar 11 2010, 13:52
|
Группа: Участник
Сообщений: 12
Регистрация: 25-12-09
Пользователь №: 54 474

|
случайно 2 копии отправил
Сообщение отредактировал Serega_ - Mar 11 2010, 13:54
|
|
|
|
|
Mar 11 2010, 13:52
|
Группа: Участник
Сообщений: 12
Регистрация: 25-12-09
Пользователь №: 54 474

|
Подниму тему, мож кому интересно будет. Запустил я таки свою плату. А причина оказалась в том, что к пину CONF_DONE, подтянутому через 10к к 3.3V, через транзисторный ключ был подключен светодиод (для мониторинга происходящего). Вот этот ключ оказывается, слегка подсаживая уровень, и не давал чипу инициализироваться. На ранее спаянной плате на ACEX такого небыло по той простой причине, что там по даташитам CONF_DONE подтягивается через 1к, ну и соответственно единица "мощнее". Вот на такие вот грабли наступил.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|