Попытка понять импеданс входного контакта FPGA

Из работы с классическими микроконтроллерами я привык к тому, что выводы в режиме ввода имеют высокое входное сопротивление — при подключении к ним высокого напряжения протекает только небольшой ток, а напряжение дискретизируется, чтобы получить цифровое состояние чтение.

Я использую FPGA ice40-HX8K, и у меня есть контакт, настроенный на ввод и подключенный к какой-то внутренней работе моего ядра. Когда я кратковременно подсоединяю источник питания к пину, он действительно регистрируется моим ядром как цифровой HIGH (это линия прерывания), но течет такой большой ток, что вся плата гаснет на доли секунды .

Внешний контур выглядит следующим образом:

введите описание изображения здесь

Пин объявлен как вход в моем модуле верхнего уровня:

module top(
    // ...
    input INT0
)

И подключен к выводу FPGA в моем файле ограничения выводов:

set_io INT0 P16

Я тут что-то не так понял? Являются ли входные контакты FPGA низким импедансом?

Пожалуйста, добавьте схемы, что вы подключаете и как, и какие напряжения задействованы.
@Justme Я добавил принципиальную схему.
Какое напряжение питания для блока ввода-вывода, частью которого является P16?
@ThePhoton Я предполагаю, что это 3,3 В, потому что все контрольные точки на плате показывают 3,3 В, а подключение 1,2 В регистрируется как логический НИЗКИЙ уровень. Но я, к сожалению, понятия не имею, как указать это в PCF.
По какой-то причине один из банков ввода-вывода моей платы фактически использует 1,2 В в качестве напряжения питания, что, конечно, вызывает проблемы при использовании сигнала 3,3 В для управления выводами. Переключение на банк 3,3 В решило проблему. Мне интересно, почему напряжение питания 1,2 В не было достаточно высоким, чтобы вызвать цифровой высокий уровень? (Вот почему я попробовал 3,3 В)
Подключение 3,3 В к контакту IO на банке 1,2 В эффективно закорачивает 3,3 В на 1,2 В через внутренние защитные диоды. Совсем не годится для чипа.

Ответы (1)

Судя по комментариям, кажется, вы пытались управлять банком ввода-вывода 1,2 В от входа 3,3 В.

Во многих устройствах входы CMOS защищены фиксирующими диодами для снижения риска повреждения электростатическим разрядом. Эти диоды показаны на картинке ниже — подключение от входа к VCC, а от GND к входу.

КМОП диоды ESD

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

В вашем случае текущего потока было достаточно, чтобы отключить подачу.


Есть способы добавить некоторую защиту для таких случаев. Однако лучшее решение — всегда следить за тем, чтобы входные напряжения соответствовали спецификациям банка ввода-вывода для вашей схемы.

Один из них заключается в добавлении последовательного резистора между выводом IO и вашей входной цепью, это поможет ограничить ток, протекающий через диод — в техническом описании устройства должно быть указано максимальное значение тока, протекающего через защитные диоды.

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