Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Странное поведение ПЛИС Cyclone EP2C5
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
sysel
Здравствуйте!
Делаю первый свой проект на ПЛИС. Для начала решил создать простенький ознакомительный проект.
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 (согласно логике проекта).
Skywolf
VHDL не знаю, но вам рекомендую воспользоваться симулятором в квартусе
sysel
Цитата(Skywolf @ Jul 14 2008, 23:41) *
VHDL не знаю, но вам рекомендую воспользоваться симулятором в квартусе


В симуляторе, естественно всё нормально работает.
Мне кажется что где-то в настройках проекта не включена какая-то опция... только вот какая не знаю...
Sergei_Ilchenko
Попробуйте вот так http://slil.ru/25980659

Это тоже самое...

Создать проект.
В качестве головного выбрать этот файл.
Назначить входы и выходы.

Если не заработает - дело в железе.

Еще C72 - не есть гуд для входа FPGA. С антидребезгом лучше бороться алгоритмами антидребезга.
dvladim
И все таки, впечатление, что у вас генерация.

Точно уверены, что на светодиоде и на кнопке генерации нет? Там может быть и сотня мегагерц и выше.

И при разомкнутой кнопке и 1.8 на выходе замкнуть вход на питание. Т.е. переключить жестко с земли на питание.
sysel
Цитата(dvladim @ Jul 15 2008, 22:38) *
И все таки, впечатление, что у вас генерация.

Точно уверены, что на светодиоде и на кнопке генерации нет? Там может быть и сотня мегагерц и выше.


Точно не уверен - у осцилографа заявленная полоса - 40 МГц, т.е. до 80 МГц он колебания бы увидел... Насчет генерации на более высокой частоте ничего сказать не могу.

А что может вызвать генерацию в данном проекте ? PLL ? Так вроде ж они по умолчанию отключены....

Цитата(dvladim @ Jul 15 2008, 22:38) *
И при разомкнутой кнопке и 1.8 на выходе замкнуть вход на питание. Т.е. переключить жестко с земли на питание.


Боюсь что уровень 1.8В вызван "отключкой" входных буферов. т.е. 1.8 = питание ядра+падения на внутреннем защитном диоде. Боюсь если напрямик подам 3.3В спалить внутренности...


Есть ещё ряд вопросов:
- Почему в настройках проекта Окошки, в которых выбираются уровни питания ядра и переферии недоступны(т.е. на форме они присутствуют, но неактивны)?
- В каких местах в настройках проекта можно конфигурировать входные-выходные буфера ?
sazh
Питание ядра наверно 1.2 Типы уровней выбираются в глубине вкладки device - voltage.
Но они Вам не помогут. Я обычно ставлю внешний драйвер для светодиода или буфер с открытым стоком. Такое включение как у Вас разве бывает в реальной жизни. Кнопкой светодиодом управлять. И зачем куда то лезть осциллографом. Светодиод горит? Чего еще надо.
EvgenyNik
Схема у вас самодельная или кит какой-нибудь? Вы про PLL упомянули... если схема самодельная - питание на VPLLA, VPLLD завели, GNDPLLA к земле подключили?
И ещё пара вопросов: у вас JTAGовские выводы корректно к питанию, нулю притянуты? После конфигурации, JTAG отключаете/ не отключаете - попробуйте наоборот, т.е. не отключать/ отключать.
Пины LED и BUTT не коротят между собой? :-)
sysel
Цитата(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, так и с отключенным.
Результат одинаковый.
Skywolf
Попробуйте для теста в "Схематике" вход на выход замкнуть.....
sazh
Цитата(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
DmitryR
Генерация стопудово. Выпаяйте конденсатор, что вам стоит.
dvladim
Цитата(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 шиной - это неоправданый риск. Лучше уж как в ките.
sysel
Частично разобрался с проблемой.

Была генерация на оч. высокой частоте. 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.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.