|
|
  |
Странное поведение ПЛИС Cyclone EP2C5, помогите новичку |
|
|
|
Jul 14 2008, 16:52
|

Знающий
   
Группа: Свой
Сообщений: 601
Регистрация: 3-07-07
Пользователь №: 28 852

|
Здравствуйте! Делаю первый свой проект на ПЛИС. Для начала решил создать простенький ознакомительный проект. Quartus 7.1 EP2C5Q208C8 Загрузочный кабель: ByteBlasterMV По нажатию кнопки хочу чтобы загорался светодиод. Часть схемы прилагаю. Питание ядра 1.25В (спецификация ПЛИС такое допускает) Питание буферов 3.3В Тактовый сигнал на ПЛИС не подаётся. В Pin Planer-е "butt" назначаю на 104-ю ногу, "led" на 103-ю, "hi" - 5-я, "lo" - 11-я. Выбираю уровни 3.3 - LVTTL для всех этих ног. В настройкай ассемблера ставлю галочку "Always enable input buffers". 1)После прошивки по JTAG-у SOF-файлом получаю такую картину: - На подтягивающем резисторе кнопки (со стороны ПЛИС) уровень 3.3В. - На светодиоде (со стороны ПЛИС) уровень 3.3В. - На выходе "hi" уровень 3.3В - На выходе "lo" уровень 0 В. 2)Нажимаю кнопку и держу, при этом: - На подтягивающем резисторе кнопки (со стороны ПЛИС) уровень 0В. - На светодиоде (со стороны ПЛИС) уровень 0В. - На выходе "hi" уровень 3.3В - На выходе "lo" уровень 0 В. 3)Отпускаю кнопку. После отпускания картна такая: - На подтягивающем резисторе кнопки (со стороны ПЛИС) уровень 1.8В.- На светодиоде (со стороны ПЛИС) уровень 1.8В.- На выходе "hi" уровень 3.3В - На выходе "lo" уровень 0 В. При повторном нажатии кнопки наблюдается ситуация 2) При отпускании ситуация 3) Так всё и продолжает работать до повторной заливки прошивки в ПЛИС. После этого наблюдается ситуация 1) Причем, уровень 1.8В - постояный (смотрел осцилографом на предмет наличия внутренней генерации колебаний - колебаний нет). Есть предположение, что в ситуациях 2) и 3) не работают буфера входов-выходов (1.8 В = питание ядра + падение на внутреннем защитном диоде). Как бороться с этой ситуацией ?Текст проекта (VHDL): library ieee; use ieee.std_logic_1164.all; entity buttled is port ( butt : in std_logic; led : out std_logic; hi : out std_logic; lo : out std_logic ); end buttled;
architecture rtl of buttled is begin led<=butt; hi<='1'; lo<='0'; end rtl;В догонку: хочется вместо 1.8 В иметь 3.3 (согласно логике проекта).
Эскизы прикрепленных изображений
|
|
|
|
|
Jul 15 2008, 05:37
|

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

|
Попробуйте вот так http://slil.ru/25980659Это тоже самое... Создать проект. В качестве головного выбрать этот файл. Назначить входы и выходы. Если не заработает - дело в железе. Еще C72 - не есть гуд для входа FPGA. С антидребезгом лучше бороться алгоритмами антидребезга.
|
|
|
|
|
Jul 15 2008, 19:37
|

Знающий
   
Группа: Свой
Сообщений: 601
Регистрация: 3-07-07
Пользователь №: 28 852

|
Цитата(dvladim @ Jul 15 2008, 22:38)  И все таки, впечатление, что у вас генерация.
Точно уверены, что на светодиоде и на кнопке генерации нет? Там может быть и сотня мегагерц и выше. Точно не уверен - у осцилографа заявленная полоса - 40 МГц, т.е. до 80 МГц он колебания бы увидел... Насчет генерации на более высокой частоте ничего сказать не могу. А что может вызвать генерацию в данном проекте ? PLL ? Так вроде ж они по умолчанию отключены.... Цитата(dvladim @ Jul 15 2008, 22:38)  И при разомкнутой кнопке и 1.8 на выходе замкнуть вход на питание. Т.е. переключить жестко с земли на питание. Боюсь что уровень 1.8В вызван "отключкой" входных буферов. т.е. 1.8 = питание ядра+падения на внутреннем защитном диоде. Боюсь если напрямик подам 3.3В спалить внутренности... Есть ещё ряд вопросов: - Почему в настройках проекта Окошки, в которых выбираются уровни питания ядра и переферии недоступны(т.е. на форме они присутствуют, но неактивны)? - В каких местах в настройках проекта можно конфигурировать входные-выходные буфера ?
|
|
|
|
|
Jul 16 2008, 04:58
|

Знающий
   
Группа: Свой
Сообщений: 601
Регистрация: 3-07-07
Пользователь №: 28 852

|
Цитата(sazh @ Jul 15 2008, 23:56)  Кнопкой светодиодом управлять. И зачем куда то лезть осциллографом. Светодиод горит? Чего еще надо. А в чём проблема данной схемы? Почему Вы считаете, что она не имеет права быть в реальной жизни? К тому же это тестовый проект, созданный для того, чтобы научиться работать с ПЛИС. Дало в том, что сразу после прошивки плис и отпущенной кнопке светодиод не горит вообще. Когда нажимаю кнопку светодиод горит ярко. Когда отпускаю - светодиод горит тускло. Проблема не в том, чтобы зажечь или потушить светодиод, проблема разобраться в проблеме и наладить нормально функционирования ПЛИС. Кнопка, зажигающая светодиод - лишь тестовый пример. Реальная схема будет куда сложнее: 2 канала SPI, интерфейс PCI и параллельная шина... Но я решил начать с простого проекта кнопка светодид... И вот уже имею проблему... Цитата(Евгений Николаев @ Jul 16 2008, 08:22)  Схема у вас самодельная или кит какой-нибудь? Вы про PLL упомянули... если схема самодельная - питание на VPLLA, VPLLD завели, GNDPLLA к земле подключили? И ещё пара вопросов: у вас JTAGовские выводы корректно к питанию, нулю притянуты? После конфигурации, JTAG отключаете/ не отключаете - попробуйте наоборот, т.е. не отключать/ отключать. Схема самодельная. В моём проекте PLL не будет использоваться. Но на всякий случай одну из PLL я запитал через ферритовую бусинку (BLM....) 1.2 В на VPLLA, и напрямик 1.2 В на VPLLD. Вторую PLL питаю от 1.2 В напрямик без бусинок. Замли подключены. Да, схема подключения JTAG в точности как в Configuration Handbook. Когда в программаторе Квартуса нажимаю кнопку автоопределения чипа, чип идентифицируется корректно. Пробовал запускать ПЛИС как с подключенным JTAG, так и с отключенным. Результат одинаковый.
|
|
|
|
|
Jul 16 2008, 08:50
|
Гуру
     
Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804

|
Цитата(sysel @ Jul 16 2008, 08:58)  А в чём проблема данной схемы? Почему Вы считаете, что она не имеет права быть в реальной жизни? К тому же это тестовый проект, созданный для того, чтобы научиться работать с ПЛИС.
Дало в том, что сразу после прошивки плис и отпущенной кнопке светодиод не горит вообще. Когда нажимаю кнопку светодиод горит ярко. Когда отпускаю - светодиод горит тускло.
Проблема не в том, чтобы зажечь или потушить светодиод, проблема разобраться в проблеме и наладить нормально функционирования ПЛИС. Кнопка, зажигающая светодиод - лишь тестовый пример. Реальная схема будет куда сложнее: 2 канала SPI, интерфейс PCI и параллельная шина...
Но я решил начать с простого проекта кнопка светодид... А кто сказал, что это простой проект. Простой - это когда цифра - цифра. Выбрали уровни i/o и все работает. Достаточно моделирования. Повторю. Ваша схема по идее рабочая. Скачайте kit и посмотрите. Там такое же включение, разве что резистор кажется 100 ом. И если не работает, я не знаю, что делать. Ведь структура буфера очень сложная. Там ведь еще и клемптон диоды присутствуют. Надо отключать, не надо, я не знаю. Поэтому простое решение, внешний буфер с открытым стоком из серии 74ас. Это инвертор. в проекте ставите инвертор и все должно работать. Драйвера ставят на светодиоды. Не надо думать, что на циклон просто так можно повесить токовые штучки. Тоже самое с вашим желанием цмклон2 на pci посадить. Скачайте kit. там между шиной pci и циклоном должны преобразователи уровней стоять. http://www.altera.com/literature/lit-devkits.jsp
|
|
|
|
|
Jul 16 2008, 17:22
|
Знающий
   
Группа: Свой
Сообщений: 654
Регистрация: 24-01-07
Из: Воронеж
Пользователь №: 24 737

|
Цитата(sysel @ Jul 15 2008, 23:37)  А что может вызвать генерацию в данном проекте ? PLL ? Так вроде ж они по умолчанию отключены.... Нет, не PLL. Паразитная емкость между кнопкой и светодиодом, плохая земля и т.п. Цитата(sysel @ Jul 15 2008, 23:37)  Боюсь что уровень 1.8В вызван "отключкой" входных буферов. т.е. 1.8 = питание ядра+падения на внутреннем защитном диоде. Боюсь если напрямик подам 3.3В спалить внутренности... Вот вы себе в схеме как представляете "отключку"? Дело не в этом. Подайте на вход напряжение VCCIO этого банка (я так понял, у вас это +3.3 В) Цитата(sazh @ Jul 15 2008, 23:56)  Я обычно ставлю внешний драйвер для светодиода или буфер с открытым стоком. Такое включение как у Вас разве бывает в реальной жизни. Если не использовать внешний драйвер, то это типичное включение светодиода. Надо только смотреть, что бы ток по выводу не превышал максимальный и ток по земле этого банка не превышал максимальный. Цитата(Евгений Николаев @ Jul 16 2008, 08:22)  Пины LED и BUTT не коротят между собой? :-) В схеме между ними буфер. Так что влиять не должно. Цитата(sazh @ Jul 16 2008, 12:50)  Тоже самое с вашим желанием цмклон2 на pci посадить. Скачайте kit. там между шиной pci и циклоном должны преобразователи уровней стоять. Конечно +5 В на IO напрямую подавать нельзя. Но эти выводы толерантны при использовании внешнего резистора и включенного кламп диода. Да и Clamp диоды не зря зачастую называют PCI Clamp диодами. Хотя для новичка использовать такую схему с PCI шиной - это неоправданый риск. Лучше уж как в ките.
|
|
|
|
|
Jul 16 2008, 20:07
|

Знающий
   
Группа: Свой
Сообщений: 601
Регистрация: 3-07-07
Пользователь №: 28 852

|
Частично разобрался с проблемой. Была генерация на оч. высокой частоте. dvladim и DmitryR оказались правы! Осцилографом увидеть эту генерацию не удалось, но удалось поймать на колечко с диодом. Причем генерило где-то в районе третьего банка. Есть подозрение что причина генерации - взаимодействие внутренних незадействованных шин ПЛИС через паразитные емкости. Генерация начиналась сразу после отпускания кнопки и заканчивалась при перепрошивке ПЛИС. Когда я в свой проект добавил Т-триггер, выход которго направил на светодиод, а вход - на кнопку - всё прекрасно заработало. Генерация исчезла (колечко с диодом ничего не видит). Теперь буду ковыряться в опциях квартуса с целью поиска возможности избавления от генерации засчет взаимовлияния внутренних шин и запускать первоначальный проект. Цитата Паразитная емкость между кнопкой и светодиодом, плохая земля и т.п. На плате дорожки кнопки и светодиода разбегаются под углом 45 градусов от самых контактных площадок. Под землю и под питание ядра под ПЛИСиной выделены отдельные слои. Полигоны размером чуть больше корпуса микросхемы, пронизаны небольшим числом переходных отверстий. Цитата Вот вы себе в схеме как представляете "отключку"? Дело не в этом. Подайте на вход напряжение VCCIO этого банка (я так понял, у вас это +3.3 В) Проблема решалась "тырканьем" на ногу ПЛИСины щупом осцилографа (осцилограф старый советский, да ещё и щупы плохие, большую емкость имеют) или пальцем, после чего 1.8 В превращались в положенные 3.3. (внутреннюю генерацию сбивал). Цитата Конечно +5 В на IO напрямую подавать нельзя. Но эти выводы толерантны при использовании внешнего резистора и включенного кламп диода. Да и Clamp диоды не зря зачастую называют PCI Clamp диодами. Хотя для новичка использовать такую схему с PCI шиной - это неоправданый риск. Лучше уж как в ките. По шине PCI много чего прочитал, в том числе и на этом форуме и на сайте альтеры. Изделие будет частью встраиваемой системы, подключаться к процессорной плате по интерфейсу PCI-104 (тот же PCI, но другой конструктив). Выбранная нами процессорная плата (на базе Geode LX 800) работает с 3.3В PCI. Так что с согласованием уровней проблем быть не должно. Но на всякий случай включу Clamping diodes.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|