nabbla (nabbla1) wrote,
nabbla
nabbla1

Category:

Мучаем 5576ХС4Т - часть 1 - что это вообще за зверь?

Часть 0 - покупаем, паяем, ставим драйвера и софт
Часть 1 - что это вообще за зверь?
Часть 2 - наша первая схема!
Часть 3 - кнопочки и лампочки
Часть 4 - делитель частоты
Часть 5 - подавление дребезга кнопки
Часть 6 - заканчиваем кнопочки и лампочки
Часть 7 - счетчики и жаба
Часть 8 - передатчик UART
Часть 9 - Hello, wolf!
Часть 'hA - приёмник UART
Часть 'hB - UART и жаба
Часть 'hC - полудуплексный UART.
Часть 'hD - МКО (МКИО, Mil-Std 1553) для бедных, введение.
Часть 'hE - приёмопередатчик МКО "из подручных материалов" (в процессе)
Часть 'hF - модуль передатчика МКО
Часть 'h10 - передатчик сообщений МКО
Часть 'h20 - работа с АЦП ADC124s051
Часть 'h21 - преобразование двоичного кода в двоично-десятичный (BCD)
Часть 'h22 - Bin2Bcd с последовательной выдачей данных
Часть 'h23 - перемножитель беззнаковых чисел с округлением
Часть 'h24 - перемножитель беззнаковых чисел, реализация
Часть 'h25 - передаём показания АЦП на компьютер
Часть 'h26 - работа над ошибками (быстрый UART)
Часть 'h27 - PNG и коды коррекции ошибок CRC32
Часть 'h28 - передатчик изображения PNG
Часть 'h29 - принимаем с ПЛИС изображение PNG
Часть 'h2A - ZLIB и коды коррекции ошибок Adler32
Часть 'h2B - ускоряем Adler32
Часть 'h2C - формирователь потока Zlib
Часть 'h2D - передаём сгенерированное PNG-изображение
Часть 'h2E - делим отрезок на равные части
Часть 'h2F - знаковые умножители, тысячи их!
Часть 'h30 - вычислитель множества Мандельброта
Часть 'h31 - ускоренные сумматоры
Часть 'h32 - ускоренные счётчики (делаем часы)
Часть 'h33 - ускоряем ВСЁ
Часть 'h34 - ускоренные перемножители
Часть 'h35 - умножители совсем просто
Часть 'h36 - уравновешенный четверичный умножитель


Пару слов про данную штуковину.

Микросхема является функциональным аналогом Альтеровской Flex10K аж 1999 года выпуска, причем наиболее навороченного варианта 10K200E, где 200 указывает на количество "вентилей", 200 000. Это величина сугубо маркетинговая, они имеют в виду, что схемы, которые можно реализовать на этой ПЛИС, потребовали бы около 200 000 отдельных логических элементов типа И-НЕ (говоря по-русски: латрёшек).

В действительности, ПЛИС состоит из 9984 логических ячеек (LE, Logic Elements), каждая из которых включает в себя генератор функций ГФ (Look-up Table, LUT) с 4 входами и 1 выходом (в арифметическом режиме - 3 входа и 2 выхода) и 1-битный регистр с входами асинхронного сброса/установки и входом разрешения работы.

Также присутствует блочная память RAM общим объёмом в 96 кбит, которую можно инициализировать при конфигурировании ПЛИС.

Злые языки говорят - Воронежцы просто закупили кристаллы flex10k и корпусируют их и отбраковывают по разным параметрам. Это не может соответствовать действительности, поскольку у ПЛИС серии 5576ХС есть возможности, которых не было в оригинале.

Одна из них - режим работы выводов Pull-up, Pull-down и Bus-hold. Если в оригинальной ПЛИС ножка может быть сконфигурирована либо на вход (высокое входное сопротивление), либо на выход, то здесь можно подключить внутренние подтягивающие резисторы, что позволит не ставить внешних резисторов при подключении кнопок, джамперов или разъёмов. Сопротивление этих резисторов - порядка 7,5 кОм.

Bus-hold ("удержание шины") придуман для ситуации, когда у нас есть шина данных, и в какой-то момент все устройства на ней перешли в Z-состояние, с высоким входным сопротивлением, и шина "повисла в воздухе". Это не очень хорошо, поскольку у КМОП-логики при промежуточном состоянии на входе возникают достаточно высокие сквозные токи, которые в лучшем случае просто увеличат энергопотребление и нагрев микросхем, в худшем - приведут к выходу из строя. Так же возможно воздействие помех в этот момент, которые ошибочно будут восприняты как сигнал. Когда ножка ПЛИС настроена как Bus-hold, она работает как входная, но если вывод "повиснет в воздухе", то ПЛИС обеспечит сохранение прошлого логического уровня.

Отличие становится заметно уже во время конфигурации ПЛИС: в этот момент 8 светодиодов, подключенные к ПЛИС начинают слабо светиться, что соответствует режиму Pull-up. Через них идёт 0,25 мА.

(Под катом - о самой ПЛИС и об отладочной плате)


Если в оригинальных ПЛИС все универсальные выводы I/O имеют состояние с высоким входным сопротивлением в момент конфигурирования, "на всякий случай" (мало ли, что туда подключено, вдруг какой перемычкой вывод закорочен на "землю" или на плюс питания?), то здесь на момент конфигурации применена подтяжка к напряжению питания.

Это вполне логично: у этих ПЛИС всё-таки 176 выводов I/O. Если все они "повиснут в воздухе", потребление тока может быть очень серьёзным! Данное поведение хорошо задокументировано: на страницах 26, 30, 32 и 33 руководства по программированию ГПКФ.431262.003Д4.

Но мои коллеги уже успели "обжечься" на этом деле: к выходу ПЛИС были подключены драйверы транзисторного полумоста, и выхода высокого уровня, пусть даже через подтягивающие резисторы, хватило, чтобы открыть сразу оба транзистора, вызвать сквозной ток и спалить много чего (а заметим, что конфигурация ПЛИС - вещь достаточно медленная, может занять секунду). "Лекарство" вполне понятно - уменьшить сопротивление внешних резисторов, теперь уже "подтягивающих" на землю. Какие-то у них стояли, наверное 10 кОм или даже больше, но этого не хватило.

Также в ПЛИС серии 5576 появились новые режимы работы с конфигуратором - Verification и Scrubbing. Речь идёт о том, что непосредственно при работе ПЛИС по своему целевому назначению, происходит обращение к конфигуратору - он раз за разом выдаёт в ПЛИС конфигурацию, и в режиме Verification происходит проверка - да, именно так она сконфигурирована сейчас, за сотни часов непрерывной работы ни один бит нигде не поменялся (вероятно, вследствии тяжелой заряженной частицы, Single Upset Event), всё работает как надо. В режиме Scrubbing происходит не просто проверка, а замещение конфигурации "на ходу".

Микросхема в металлокерамическом корпусе имеет недурственный диапазон рабочих температур: от минус 60° С до плюс 125° С, с предельной температурой плюс 150° С.

Нормирована (измерена и обязана обеспечиваться) и радиационная стойкость - она не так уж велика, но позволяет применить эту микросхемку на околоземной орбите (да и там: обговорить, что она будет закрыта алюминиевым корпусом прибора, что обеспечит дозы, не превышающие ТУ на неё). У микросхемы 5576ХС3Т показатели радстойкости ровно вдвое выше, но сама по себе она является ровно "половинкой" 5576ХС4Т - вдвое меньше логических ячеек и вдвое меньше памяти.

Если нужна реальная радстойкость - надо смотреть в сторону 5576ХС6Т и 5576ХС7Т - это уже монстры, их можно и на геостационар на 15 лет поставить. Правда, памяти и логических ячеек у них ещё меньше... Либо, облизываемся на новую серию 5578ТС - тут уже появляются и радстойкие, и весьма мощные.

Ну и пару слов о том, что нас ждёт на отладочной плате.



Окромя отечественной ПЛИС 5576ХС4Т, здесь установлен отечественный же flash-конфигуратор 5576РС1У, в металло-керамическом корпусе. Но несмотря на металлокерамику, в космос его отправлять не стоит - flash память очень чувствительна к радиации. На такие случаи надо применять однократно программируемый конфигуратор 5576РТ1У - вот этого уже ничего не возьмёт, там грубо говоря перемычки пережигаются в процессе программирования!

Снизу слева на макетной плате - источник питания, который из входных 5 вольт (либо с USB, либо с внешнего входа) получает 3,3 вольта для питания периферии ПЛИС (т.е её выходные буферы) и 1,8 вольта для питания ядра ПЛИС. Преобразователь 5 -> 3,3 - импульсный, 3,3 -> 1,8 - линейный, LDO. И тот, и другой - импортные.

Одинокая кнопка слева снизу - "сброс", она запрещает работу преобразователя, оставляя ПЛИС кратковременно без питания.

Справа снизу - пять кнопок и 8 светодиодов для "быстрого старта". Перемигивающиеся светодиодики, реагирующие на нажатия кнопок весьма повышают боевой дух :)

Над ними - импортная микросхема четырёхканального АЦП на 12 бит (до 500 000 выборок в секунду) и источник опорного напряжения на 3 вольта для неё. Почему-то на разъём выведено только 2 канала из 4, а оставшиеся 2 - в виде контрольных точек (или даже площадок) на плате, обозначенные КТ4, КТ5. Какая-то сермяжная правда в этом есть - можно напаять перемычки и попросить ПЛИС измерять питание себя любимой, 1,8 вольт ядра и 3,3 вольта периферии :)

Ещё выше - приёмопередатчик RS485. Там же на отдельную ножку разъёма выведен резистор-"терминатор" 120 Ом.

Наконец, слева от ПЛИС (по фото) расположена импортная микросхема - контроллер Ethernet, со встроенными приёмопередатчиками, не хватает только выходных трансформаторов. Мне пока удалось применить эту микросхему в совсем дурацкой роли - в роли генератора тактовой частоты. В обвязке стоит кварц на 25 МГц, а сама микросхема, если её специально не настроить, начинает подавать в ПЛИС частоту 4 МГц, для тактирования SPI. Эти 4 МГц очень удобно использовать :)

Посерёдке между ПЛИС и контроллером Ethernet сидит генератор тактовой частоты 80 МГц, отечественного производства. Пока что, по моим ощущениям, 80 МГц - это слишком много для данной ПЛИС, на такой скорости неустойчиво работают даже весьма простые схемы, отчего мне и захотелось положить лапу на тактовую частоту из Ethernet. В ТУ не прописано строго, какова максимальная рабочая частота данной ПЛИС, но по косвенным признакам - это 50 МГц. Выше - только на свой страх и риск. UPD. Нестабильная работа от 80 МГц была из-за "подножки" на схеме - к выходу генератора подключался один из выводов I/O, который по умолчанию в Quartus настраивается как выходной, дающий "ноль". Вот он-то и подзакорачивал мне генератор. Удивительно, что хоть что-то попадало на выход. Не прошло и полгода - сообразил это дело, настроил его на вход, теперь вся схема замечательно работает напрямую от 80 МГц.

Наконец, сверху слева, в районе разъёма micro-USB, стоит импортная микросхемка cp2102, "преобразователь USB-UART". К ней легко найти драйвера (хотя всё равно немножко обидно, что их надо искать "ручками"), после чего в системе появляется новый COM-порт, с которым очень легко работать как со стороны программирования на компьютере, так и со стороны ПЛИС - достаточно двух выводов, TXD и RXD.

Сама плата - весьма небольшая, 130х74х8 мм. Низкопрофильная - была, пока я не впаял разъём вертикально, чтобы запитать 7-сегментник от 5 вольт. Львиная доля разъёмов - цанговые, с обычными PLS/PLD они, увы, несовместимы, слишком тонкие.

Как это замыслили в LDM-Systems, отдельные такие платы можно устанавливать одну на другую, как этажерку, получая весьма компактные конструкции. Они продают, к примеру модуль Mil-std 1553 + Arinc 429, где установлены соответствующие приёмопередатчики. К сожалению, меня жаба задушила это дело покупать, поэтому взял просто пустую макетку:



Именно она должна будет познакомить ПЛИС с "ароматом космоса" - протоколом МКО (Mil-std 1553) и 27 вольтами бортового питания :)

В следующих частях попробуем всё это добро применить.
Tags: ПЛИС, работа, странные девайсы
Subscribe

Recent Posts from This Journal

  • Так ли страшно 0,99969 вместо 1?

    В размышлениях о DMA, о возможных последствиях "смешивания" старых и новых значений при выдаче целевой информации, опять выполз вопрос: насколько…

  • Как продлить агонию велотрансмиссии на 1500+ км

    Последний раз о велосипедных делах отчитывался в середине мая, когда прошёл год "велопробегом по коронавирусу". Уже тогда я "жаловался", что…

  • DMA для QuatCore

    Вот фрагмент схемы нашего "процессорного ядра" QuatCore: Справа сверху "притаилась" оперативная память. На той ПЛИС, что у меня есть сейчас…

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your IP address will be recorded 

  • 14 comments

Recent Posts from This Journal

  • Так ли страшно 0,99969 вместо 1?

    В размышлениях о DMA, о возможных последствиях "смешивания" старых и новых значений при выдаче целевой информации, опять выполз вопрос: насколько…

  • Как продлить агонию велотрансмиссии на 1500+ км

    Последний раз о велосипедных делах отчитывался в середине мая, когда прошёл год "велопробегом по коронавирусу". Уже тогда я "жаловался", что…

  • DMA для QuatCore

    Вот фрагмент схемы нашего "процессорного ядра" QuatCore: Справа сверху "притаилась" оперативная память. На той ПЛИС, что у меня есть сейчас…