Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Назначение выводов EPM7128s
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
Elserpinum
Доброго времени суток!

Осваиваю EPM7128SLC84-10N. Имею самодельную платку с установленной ПЛИС. К ПЛИС подведено питание 5В и JTAG. Создал простейший проект в Quartus: 83-й (GCLK1) вывод ПЛИС через инвертор завел на 6-й вывод. Зашил проект в ПЛИС самодельным ByteBlasterMV без проблем. Физически 83-й вывод ПЛИС подключил к выходу микроконтроллера (INT0 на ADuC812). На МК работает программка, которая поочередно, с некоторой задержкой выставляет 0 и 1 на выводе INT0. Ожидаемый результат: когда на INT0 - 1, на 6-м выводе ПЛИС - 0, и наоборот. Результат не подтвердился sad.gif
Выводы ПЛИС - OE1, OE2, GCLRn пробовал физически соединять и с GND, и с VCC, и просто в воздухе оставлял. Наверняка делаю что-то не так, как надо. Люди тут грамотные, может кто-нибудь просветит, зачем нужны эти выводы и как их использовать?
at89c51ed2
Уважаемый Elserpinum.
Причин не работоспособности проекта, запускаемого не знающим человеком, может много и природа их разнообразна. В первую очередь это банальные ошибки. У Вас есть рапорт файл, на котором должна быть схема подключения. Необходимо тупо всё подключить, как там. Выводов питания и земли там несколько (по-моему не менее 4 пар). Вы создали простейший проект - инвертор. Но зачем Вы на вход комбинационного устройства подаёте сигнал через глобальный CLK? На сколько я помню у архитектуры MAX нет такой возможности - вывести глобальный CLK на внешний вывод, к тому же пропущенный через комбинациоонную часть ячейки. Сигнал этот предназначен только для тактирования триггеров и поступает он на вход С через внутренний мультиплексор (триггер ещё может тактироваться от выхода комбинационного блока). Внимательно посмотрите рапорт-файл, наверняка Вам было выдано предупреждение, а может быть компилятор и сам принудительно перенёс этот сигнал на другой вывод. Что бы ничего не перепаивать сделайте лучше простой делитель на 2, т.е. T - триггер. Вход его (в смысле вход С) подключите на 83, а выход триггера на 6. Посмотрите, какой тип выхода. Надо что бы не "открытый сток", а то придётся резистор подтягивающий вешать. Выводы ПЛИС - OE1, OE2, GCLRn - это глобальные сигналы разрешения (OE - output enable) и сброса (clear). Глобальные сигналы нельзя мешать с обычными переменными - т.е. если сигналы сброса и ОЕ участвуют в каких то термах (уравнениях, функциях), то их уже нельзя подавать на глобальные входы. Потому как глобальные сигналы не проходят через комбинационные блоки. Если хотите инвертор, то уберите все глобальные сигналы вообще, посмотрите куда будет заведён вход, туда и подавайте. Только зачем Вам для этого целый ADuM? К тому же используете вход прерываний для такой тривиальной задачи. Вы видите осциллографом эти импульсы, т.е. вы уверены, что правильно запрограммировали МК? Я бы вход инвертора подключил к "1", а потом тупо коротнул бы пинцетом в землю. А дальше, если инвертор "оживёт", тогда сделайте из Т2 генератор импульсов, а в ПЛИС счётчик. И в счётчике уже, Вы можете задействовать все глобальные сигналы - GCLK, OE, GCLRn. Удачи.
Elserpinum
Цитата(at89c51ed2 @ Jan 9 2010, 13:00) *
Уважаемый Elserpinum.
Причин не работоспособности проекта, запускаемого не знающим человеком, может много и природа их разнообразна. В первую очередь это банальные ошибки. У Вас есть рапорт файл, на котором должна быть схема подключения. Необходимо тупо всё подключить, как там. Выводов питания и земли там несколько (по-моему не менее 4 пар). Вы создали простейший проект - инвертор. Но зачем Вы на вход комбинационного устройства подаёте сигнал через глобальный CLK? На сколько я помню у архитектуры MAX нет такой возможности - вывести глобальный CLK на внешний вывод, к тому же пропущенный через комбинациоонную часть ячейки. Сигнал этот предназначен только для тактирования триггеров и поступает он на вход С через внутренний мультиплексор (триггер ещё может тактироваться от выхода комбинационного блока). Внимательно посмотрите рапорт-файл, наверняка Вам было выдано предупреждение, а может быть компилятор и сам принудительно перенёс этот сигнал на другой вывод. Что бы ничего не перепаивать сделайте лучше простой делитель на 2, т.е. T - триггер. Вход его (в смысле вход С) подключите на 83, а выход триггера на 6. Посмотрите, какой тип выхода. Надо что бы не "открытый сток", а то придётся резистор подтягивающий вешать. Выводы ПЛИС - OE1, OE2, GCLRn - это глобальные сигналы разрешения (OE - output enable) и сброса (clear). Глобальные сигналы нельзя мешать с обычными переменными - т.е. если сигналы сброса и ОЕ участвуют в каких то термах (уравнениях, функциях), то их уже нельзя подавать на глобальные входы. Потому как глобальные сигналы не проходят через комбинационные блоки. Если хотите инвертор, то уберите все глобальные сигналы вообще, посмотрите куда будет заведён вход, туда и подавайте. Только зачем Вам для этого целый ADuM? К тому же используете вход прерываний для такой тривиальной задачи. Вы видите осциллографом эти импульсы, т.е. вы уверены, что правильно запрограммировали МК? Я бы вход инвертора подключил к "1", а потом тупо коротнул бы пинцетом в землю. А дальше, если инвертор "оживёт", тогда сделайте из Т2 генератор импульсов, а в ПЛИС счётчик. И в счётчике уже, Вы можете задействовать все глобальные сигналы - GCLK, OE, GCLRn. Удачи.


Спасибо за советы smile.gif
Переделал проект в Quartus. Завел 4-й вывод на инвертор, выход с инвертора на 5-й вывод. Перепрошил. Вроде заработало, но меня смущают уровни сигналов на выходе: 1 - 3,5В. Кстати, не понял, что за "рапорт файл, на котором должна быть схема подключения" и где выставлять тип выхода?
Andron_
больше 3.5 В от 5-ти вольт 7128s не выдает (((( в даташите есть картинка выходного напряжения пина от тока...

если нужно 5 В, используйте выхода с открытым стоком и внешнюю подтяжку...
at89c51ed2
Уважаемый Elserpinum.
Не понятно, почему у Вас уровень лог. 0 около 1 В. А Вы уверены, что подключили все сигналы VCCINT и VCCIO? Что касается 3,5В. Похоже предыдущий оратор прав (далее цитата из datasheet):
---------------------------------------------------------------------
When VCCIO is 5.0 V, setting
the output drain option is not necessary because the pull-up transistor will
already turn off when the pin exceeds approximately 3.8 V, allowing the
external pull-up resistor to pull the output high enough to meet 5.0-V
CMOS input voltages.
--------------------------------------
Плохо знаком с басурманским, но насколько я понял это, резистор ставить не обязательно и последующее у-во "поймёт" этот уровень 3,8В как единичный. Но, ради чистоты эксперимента и что бы освоить КАКТУС, установите тип выхода "Open Drain" и резистор подтягивающий (надеюсь, как поставить и номинал не надо указывать). Вот где и что искать в КАКТУСе подсказать Вам не смогу, потому как мои познания остановились на MAX 10.2. Точно могу Вам сказать, что у меня EPM3064 работает при VCCINT=VCCIO=3,3V вместе с AT89C51, последний под 5V. А "Open Drain" здесь нужен для обеспечения работы нескольких устройств на шине, некий аналог Z-состояния.
Andron_
а, во, я таки расшифровал эти басурманские письмена...

они пишут, что не обязательно выставлять выход как open-drain, поскольку в присутствии подтягивающего резистора, транзистор к напряжению питания будет закрываться по достижении напряжения на ноге 3.8 В. Т.е. получается транзистор на землю закрыт, транзистор на питание закрыт, считай что open-drain получился.
Elserpinum
Всем спасибо за разъяснения smile.gif
В принципе, для последующих после ПЛИС микросхем хватит и 3,5 В. Буду воевать с этой штуковиной дальше smile3046.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.