Перейти к содержанию
    

Подскажите начинаюшему по Cyclone II

Приветствую всех участников.

Начинаю осваивать ПЛИС. Собрал макетку на 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-м пинам плисины.

Может кто подскажет где копать? где чего может надо обязательно

подтянуть к конкретному уровню?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Выяснилась дополнительная инфа:

Установил в квартусе галочку 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 до ПЛИС прозваниваются.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что-то, мягко говоря, удивительно.

Перечислите на чем сидят все служебные ноги. Приведите схему конфигурирования. Может так будет более понятно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2-ой сцыклон это кажется первая альтеровская микросхема с низковольтным напряжением питания ядра, и она очень чувствительна к качеству напряжения 1,2В. Один коллега долго мучился с ней из-за того что поленился повесить конденсаторы на ноги питания ядра. Проблема выражалась в том, что прошивка слетала и глючила. Смахивает на вашу проблему, гляньте хорошо ли вы развязали питание

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Пречислю, где чего подвешено.

 

По цепям 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 и шьется без проблем и диод на ней мигает. На большее я пока не способен, а с

циклоном связался, т.к. помигав диодом надо "помигать" чем более

сложным, а пинов нехватило.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На каждой ножке, по кругу макетки (получается на расстоянии от чипа порядка 4-5см)

как на VCCIO, так и на VCCINT запаяны конденсаторы - чередуясь 1mkF и 0.01mkF.

 

 

Так на каком расстоянии от ноги плисины до ближайшего конденсатора???

 

По идее кондеры необходимо ставить как можно ближе к выводу. А для ПЛЛ (с учетом рабочей частоты 600-800 МГЦ), так и вообще почти на ноги кондер паять, чтобы по плате не шумело.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На первый взгляд, подключение правильное. Но на всякий случай сверьтесь еще раз с документацией.

Далее, замерьте уровни питания, лучше осциллографом. А еще лучше, поставить ждущий триггер, скажем, на 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 корпусов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да, ждущий триггер на 1.1V по питанию ядра это вариант, надо будет

попробовать. А прошивка рабочая, я проверял на EP1K30. Конечно же

скомпиленая в различных проектах под соответствующий чип.

В любом случае мне кажется, что я должен увидеть факт инициализации

прошитого чипа по установившемуся уровню на INIT_DONE, или это не так?

 

Так на каком расстоянии от ноги плисины до ближайшего конденсатора???

 

По идее кондеры необходимо ставить как можно ближе к выводу. А для ПЛЛ (с учетом рабочей частоты 600-800 МГЦ), так и вообще почти на ноги кондер паять, чтобы по плате не шумело.

 

По питанию VCCINT и VCCIO от ноги ПЛИС до конденсатора 2.5 -3.5 см, (замерил поконкретнее).

По питанию PLL практически на самих ногах.

Прицепляю картинку. По углам место для 1.2V LDO стабилизаторов,

питающих PLL. Не надо обращать внимание на то, что там есть связь

с корпусом, в процессе изготовления все подправлено.

Может это и сильно безгамотно, но уж, как могу так и делаю.

Все это делается в домашних условиях, доступными средствами.

post-54474-1262003612_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В любом случае мне кажется, что я должен увидеть факт инициализации

прошитого чипа по установившемуся уровню на INIT_DONE, или это не так?

 

Так. Почему у Вас не так - разбирайтесь. Нет никакой разницы, циклон это или ацекс. При задействовании этого пина он выход с открытым стоком. Должен с внешним резистором выйти в 1 (может закоротили где на ноль).

В любом случае и без него по загрузке проекта кристалл должен работать. Что то у Вас не так.

P.S. Посмотрите в документации в разделе конфигурация информацию о пинах, отвечающих за ошибки по загрузке. Типа status. его уровни.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А квартус программер то что говорит, прошивка успешно заканчивается?

Еще можно сигнал тап включить, добавить пины в мониторинг и ловить эти ваши "внешние воздействия". Заодно и качество связи по житагу выясните - если линк отваливаться начнет, значит житаг надо ближе к пинам паять.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

По цепям JTAG описано чуть выше.

TRST где? Должен быть в 1, если в воздухе - то это может быть причиной.

 

В квартусе, диалог Device & Pin Options, закладка General, где

устанавливаются дополнительные опции - галочка установлена только

напротив Enable ... (INIT_DONE).

...

Я уж было подумал, что проблема с внутренним генератором циклона,

который используется для инициализации. Попробовал использовать

CLKUSR опцию для инициализации. Установил галочку напротив Enable ... (CLKUSR).

Перекомпилил. Этот .rbf загонял контроллером. Затем 299 тактов на

CLKUSR. Эффект тот же, CONF_DONE - все как надо, INIT_DONE не

устанавливается. Но здесь есть один нюанс - опять таки из-за

недостатка пинов у контроллера, соединил вместе DCLK и CLKUSR,

т.е. получается, что при инициализации еще дергался и DCLK.

Вот тоже подумал о CLKUSR. Соединение DCLK и CLKUSR не принципиально (в данном случае).

 

На каждой ножке, по кругу макетки (получается на расстоянии от чипа порядка 4-5см)

как на VCCIO, так и на VCCINT запаяны конденсаторы - чередуясь 1mkF и 0.01mkF.

Далековато, попробуйте поставить хоть пару конденсаторов близко к ногам.

 

В любом случае мне кажется, что я должен увидеть факт инициализации

прошитого чипа по установившемуся уровню на INIT_DONE, или это не так?

Это так.

 

P.S. Посмотрите в документации в разделе конфигурация информацию о пинах, отвечающих за ошибки по загрузке. Типа status. его уровни.

Там все нормально, иначе CONF_DONE не поднялся бы.

 

А квартус программер то что говорит, прошивка успешно заканчивается?

Еще можно сигнал тап включить, добавить пины в мониторинг и ловить эти ваши "внешние воздействия". Заодно и качество связи по житагу выясните - если линк отваливаться начнет, значит житаг надо ближе к пинам паять.

Квартус по Boundary-Scan проверяет бит OE от CONF_DONE. Выход в рабочий режим ему проверить нечем. (во всяком случае это в их jam)

Линк вряд ли отваливается, иначе не поднимался бы CONF_DONE. Ну а сигнал тап - рано, схема не выходит в рабочий режим.

 

PS. В таких макетках большая емкостная связь между пинами и от этого все проблемы. Возможно у вас наводка на служебные пины при выходе в рабочий режим и схема, например, не выходит до конца. Попробуйте поиграть опциями Clear before Tri-States и дефолтным значением всех пинов в третье состояние.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

TRST где? Должен быть в 1, если в воздухе - то это может быть причиной.

Не нахожу я для EP2C5Q208 такого пина. В Cyclone II Device Handbook

(стр.428) нашел вот такое:

The optional TRST pin is not available in Cyclone II devices.

Установку значения всех неиспользуемых пинов в третье состояние я пробовал,

не помогает. Все везде выглядит как надо, а не запускается.

Вообще у меня уже закрадывается сомнение, что проблема не в железяке,

но тем не менее придется видимо отправить циклона в чулан.

Сколько ж можно с ним возиться. Буду тренироваться на EP1K. Этот

хоть запускается, правда пинов не хватает.

Спасибо всем кто откликнулся, ну и с наступающим Новым Годом!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Подниму тему, мож кому интересно будет.

Запустил я таки свою плату. А причина оказалась в том, что к пину

CONF_DONE, подтянутому через 10к к 3.3V, через транзисторный ключ

был подключен светодиод (для мониторинга происходящего).

Вот этот ключ оказывается, слегка подсаживая уровень,

и не давал чипу инициализироваться.

На ранее спаянной плате на ACEX такого небыло по той простой

причине, что там по даташитам CONF_DONE подтягивается через 1к,

ну и соответственно единица "мощнее".

Вот на такие вот грабли наступил.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...