|
Использовать или нет ПЛИС |
|
|
|
Jan 27 2007, 11:47
|
Местный
  
Группа: Свой
Сообщений: 211
Регистрация: 9-11-06
Пользователь №: 22 136

|
Добрый день! Использую AT91SAM7S256 для некого устройства ввода-вывода, он-же мега-джойстик Для организации опроса 128 кнопок и вывода на 128 светодиодов, пришлось нагородить матрицу с опросом, т.е. дешифратор сборный, 4 входа, 16 линий выхода (строки), и мультиплексор 8->1 (столбцы). Входы мультиплексор подтянуты к питанию, на пересечении стоят развязанные диодами кнопки. По строками последовательно бегает логический ноль, соответственно, на мультиплексоре перебираются последовательно все каналы, выход идет на контроллер, если на выходе нолик, то в данном положении кнопка нажата. В общем, по-моему, весьма классическая схема. Итого - 3 корпуса стандартной логики. Когда задумался о выводе, то тут я решаю так - использую 8 защелок с выборкой в одном корпусе (74HC259), выбор защелки внутри осуществляется теми-же линиями (3), которые идут на мультиплексор, а Latch Enable идет с дешифратора, ввод данных общий на всех и идет на контроллер. Получается, что на вывод мне нужно 16 корпусов. Вот тут и вопрос - а не красивее ли использовать для организации всей матрицы (и ввода и вывода) ПЛИС? Но с ПЛИСами я дела никогда не имел, поэтому не очень представляю, как с ними обращаться. Посоветуйте пожалуйста, следует ли копать в этом направлении (количество входов-выходов - 128 с нагрузочной способностью минимум 10мА + к этому 8+16, итого - 152 ноги, ну и 10 ног в сторону контроллера, итого - 162 ноги), либо стоит не заморачиваться и ставить корпуса? Заранее спасибо и сорри, если оффтоп.
|
|
|
|
|
Jan 27 2007, 12:55
|
Знающий
   
Группа: Свой
Сообщений: 709
Регистрация: 3-05-05
Пользователь №: 4 693

|
Цитата(Kitsok @ Jan 27 2007, 11:47)  Получается, что на вывод мне нужно 16 корпусов. Вот тут и вопрос - а не красивее ли использовать для организации всей матрицы (и ввода и вывода) ПЛИС? ИМХО, нет. Проще поискать многоразрядных сдвиговых регистров, зацепить их друг за другом и простреливать по сериальному каналу. Для светодиодов - само то. А 128 кномпочек лучше всего разбить на группы по 16 шт(чтобы сделать возможными многокнопочные комбинаццыи и уменьшить вероятность получения видимости нажатия кнопки, путём некоей комбинаццыи) и завести на 8 каналов АЦП. Ну резюков килоомных жменька буит. Зато никаких мультиплексеров. и кучи линий в одну точку. Хотя...6-7 баксов за ЦПЛДышку какую...но я бы не стал.
|
|
|
|
|
Jan 27 2007, 13:06
|
Местный
  
Группа: Свой
Сообщений: 262
Регистрация: 18-02-05
Из: SPb
Пользователь №: 2 743

|
Чтобы не городить новую ветку, задам вопрос здесь. Есть сходная задача, но с другими параметрами, опрос 32 ил 64 (еще не решил) линий и выдача на управление 32 линий. Вобщем, все как у предыдущего оратора, тока не светодиоды и кнопки, а логический анализатор. Прблема в том, что все это надо делать очень синхронно по времени, на частотах до 100 мегагорцев, может, в последствии и выше, частота ограничивается только тем, что и на сотне плату тяжело будет развести, в тз я заложил намного меньше, но надо стремиться к лучшему  . Просто вывод в порт контроллера я не уверен, что смогу сделать синхронным, с ПЛИС не работал вообще и слабо представляю что это такое. Вобщем вопрос: реально ли на плис сделать буфер FIFO, работающий на этих скоростях, и если да, то какие плисы посоветуете для этого?
|
|
|
|
|
Jan 27 2007, 13:13
|

Electrical Engineer
     
Группа: СуперМодераторы
Сообщений: 2 163
Регистрация: 4-10-04
Пользователь №: 778

|
Цитата(AlexMad @ Jan 27 2007, 13:06)  Вобщем, все как у предыдущего оратора, тока не светодиоды и кнопки, а логический анализатор. Прблема в том, что все это надо делать очень синхронно по времени, на частотах до 100 мегагерц, может, в последствии и выше, частота ограничивается только тем, что и на сотне плату тяжело будет развести, в тз я заложил намного меньше, но надо стремиться к лучшему  . ПЛИС, однозначно. Цитата(AlexMad @ Jan 27 2007, 13:06)  Вобщем вопрос: реально ли на плис сделать буфер FIFO, работающий на этих скоростях, и если да, то какие плисы посоветуете для этого? реально. Посмотрите например семейство Spartan-3E от Xilinx либо эквивалент от Altera.
--------------------
|
|
|
|
|
Jan 27 2007, 13:28
|
Злополезный
   
Группа: Свой
Сообщений: 608
Регистрация: 19-06-06
Из: Russia Taganrog
Пользователь №: 18 188

|
2 Kitsok К сожалению могу прокомментировать только касательно ПЛИС Xilinx. Судя по примененному семейству логики 74HCxxx, выходы MC 5 вольтовые, в семействах ПЛИС Xilinx существует только 3 не очень дорогие семейства ПЛИС нормально переживающих 5 вольт на входе: XPLA3 (CoolRunner - CPLD), XC9500 (CPLD) и Spartan2 (FPGA). Предпологаю, что ПЛИС типа CPLD будут наиболее интнресны, т.к. они несут прошивку во внутренней Flash памяти, FPGA - необходимо с чего-то загрузить, что в имеющемся случае несколько неудобно. С XC9500 я не работал, т.к. появились более новые и могучие XPLA3. Если брать XPLA3, то судя по количеству используемых ног, понадобиться как минимум XCR3265XL-PQ208 (265 логических ячеек, корпус PQ208 (164 I/O ноги), питание 3.3V). Ножка XPLA3 выдает 8mA (в принципе можно вытянуть и 10mA - ПЛИС на это рассчитана). Но если нагрузить все 128 светодиодных ног, то получается суммарный ток от 1.024 А и до 1.28 А - что весьма не мало (теоретически XPLA3 должна с этим справиться, но сам не пробовал так мучать ПЛИС). Касательно выходов: обычно для питания светодиодов используется OpenDrain, но в XCR3265 c ними проблема - специально выденного режима OpenDrain для I/O ноги в XPLA3 нет, а независимых управлений 3 состоянием ног для XCR3265 только 64 + 1 - поэтому при применении данного семейства такую схемотехнику применить невозможно. Если брать Spartan2, то самая маленькая ПЛИС с необходимым числом ног - это XC2S30-5PQ208 (имеющая 42096 байт прошивки, котою еще необходимо в нее загрузить). С выходами никаких проблем нет, то 24мА каждый, управление третьим состоянием для каждого выхода независимое. Но и стоит она не мало. Если систему можно перевести на питание 3.3 Вольта, то можно рассмотреть возможность применения CoolRunner2 (что будет из ПЛИС Xilinx будет наилучшим вариантом), если же система не имеет такой возможности, то я думаю, что оптимальным будет применение либо Altera MAX3000 (CPLD, I/O ног типа OpenDrain может быть сколько угодно), либо те самые 74HCxxx. 2 AlexMad Цитата(AlexMad @ Jan 27 2007, 13:06)  Вобщем вопрос: реально ли на плис сделать буфер FIFO, работающий на этих скоростях, и если да, то какие плисы посоветуете для этого? Необходимо указать стандарт сигналов и минимальное количество памяти для работы устройства - от этого зависит рекомендуемые ПЛИС, но то, что это должна быть FPGA - сомнений нет.
Сообщение отредактировал Boris_TS - Jan 27 2007, 13:34
|
|
|
|
|
Jan 27 2007, 14:02
|
Местный
  
Группа: Свой
Сообщений: 262
Регистрация: 18-02-05
Из: SPb
Пользователь №: 2 743

|
Цитата Необходимо указать стандарт сигналов и минимальное количество памяти для работы устройства - от этого зависит рекомендуемые ПЛИС, но то, что это должна быть FPGA - сомнений нет. По сигналам:выход будет управлять быстродействующими ключами, уровни логические 3.3 или 5 вольт, входа будут принимать сигнал с оконных компараторов, уровни теже. Память... тут вопрос сложный, устройство являет собой тестер микросхем, количество памяти в буфере ФИФО будет определять сколько циклов можно задать во входной функции, и сколько можно записать. Ответ чем больше, тем лучше  при одном мегабайте памяти на частоте 100 мегагерц можно тестировать непрерывно элемент по восьми ногам в течении 1 сотой секунды, если, конечно, не зациклить по кругу... Учитывая, что этот прибор пойдет не для нормоконтроля, может этого и хватит, но всегда хочется большего
|
|
|
|
|
Jan 27 2007, 14:39
|
Местный
  
Группа: Свой
Сообщений: 211
Регистрация: 9-11-06
Пользователь №: 22 136

|
Спасибо за ответы! Уточняю - вся схема 3.3 вольта, вроде 74hc (не HCT) работает от 2 до 5, поэтому никаких подводных камней не ожидаю. Насчет сдвигового регистра я как-то не задумывался, идея красивая, буду читать даташыты. mseЯ не понял, вы имеете в виду организовать также и ввод сдвиговым регистром? Что-то мне подсказывает, что быстродействие у такой схемы будет не очень. Ааааа, понял. Нет, так я делать точно не буду  Во-первых, АЦП используются и так (8 осей  ), а во вторых, мне такая схема кажется ненадежной. А если с температурой резисторы поплывут? Да, кстати, о быстродействии. Померять пока не удосужился, но опрос всей матрицы (128+128) происходит каждую миллисекунду. Надеюсь, дойдут руки и померяю хотя-бы ширину импульса на Latch Enable. Хотя идея со сдвиговым регистром мне очень и очень нравится.
|
|
|
|
|
Jan 27 2007, 14:56
|
Местный
  
Группа: Свой
Сообщений: 211
Регистрация: 9-11-06
Пользователь №: 22 136

|
Цитата(Stanislav @ Jan 27 2007, 14:22)  Для управления светодиодами рекомендую использовать специальные М/С драйверов, например, MBI5025 от Macroblock (есть ещё у TI, Toshiba, Maxim, etc). Такой драйвер даёт стабильный ток в диоды, имеет аж 16 выходов и требует только один резистор. Драйверы можно включать последовательно, с теоретически неограниченным общим количеством выводов, и загружать по SPI. Хм.. А не подскажете что-нибудь более доставабельное, чем MBI5025? И еще я не понял, как их каскадировать. Т.е. по крайней мере LE должно идти к каждому корпусу, SDO-SDI - это понятно, CLK у всеъ одно, так?
|
|
|
|
|
Jan 27 2007, 15:06
|
Знающий
   
Группа: Свой
Сообщений: 709
Регистрация: 3-05-05
Пользователь №: 4 693

|
Цитата(Kitsok @ Jan 27 2007, 14:39)  а во вторых, мне такая схема кажется ненадежной. А если с температурой резисторы поплывут? ;О) резисторы стоят между "+" и G. Кнопкой коммутируется напруга из узла на вход АЦП. И плыть будут синхронно. Если жалко каналов АЦП, то можно коммутировать МУХом каким...Но это уже изврат. А вся прелесть в том, что нет сканирования
|
|
|
|
|
Jan 27 2007, 15:23
|
Злополезный
   
Группа: Свой
Сообщений: 608
Регистрация: 19-06-06
Из: Russia Taganrog
Пользователь №: 18 188

|
2 AlexMadПамять ранних ПЛИС (Virtex/Spatran2) рассчитана на небольшие FIFO (есть 2 порта в каждом блока ОЗУ, каждый может записывать или читать данные незавичимо от соседнего; но этой памяти для вашего проекта будет мало). Память более новых ПЛИС (Virtex2/Spartan3) - это уже могучий высокоскоростной кеш (с 1 битом четности, на каждые 8 бит данных). ПЛИС с мегабитом ОЗУ явно проектировались для реализации в себе группы высокопроизводительных вычислительных устройств, поэтому в таких ПЛИС имеется непомерное количество логических ячеек (которые врядли понадобятся при такой задачи, если эти ячейки, конечно, не превратить в мелко-блочное ОЗУ). Я бы посоветовал для создания токого устройства подыскать быстродействующее ОЗУ с возможностью конвеерного чтения/записи (статическое или динамическое - какое больше понравиться) и взять ПЛИС (Startan-3) с относительно небольшим количеством ОЗУ (столько, чтобы хватило на все необходимые FIFO), а не на хранение всей тестирющей последовательноти и полученых результатов. Наверное это будет оптимально по цене относительно нужного объема ОЗУ. Посмотрите описание всего семейства Spartan-3 и решите по соотношению цена/объем ОЗУ - какое схемотехническое решение лучше применить. http://direct.xilinx.com/bvdocs/userguides/ug331.pdf (Spartan-3 Generation FPGA User Guide) P.S. Для задач ввода данных с "большими" скоростями я использую 2 ОЗУ'ки в одну из них пишет ПЛИС, из другой (тоже через ПЛИС) данных читает потребитель. При полном вычитывании данных потребителем из одной ОЗУ'ки, ПЛИС начинает писать данные в свободнцю ОЗУ'шку, а занятую может начинать читать потребитель.
|
|
|
|
|
Jan 27 2007, 17:29
|
Местный
  
Группа: Свой
Сообщений: 211
Регистрация: 9-11-06
Пользователь №: 22 136

|
Цитата(Doka @ Jan 27 2007, 15:14)  Цитата(Kitsok @ Jan 27 2007, 14:39)  Насчет сдвигового регистра я как-то не задумывался, идея красивая, буду читать даташиты. вот вам аппнот в качестве подспорья: <<открыть в новом окне>>Вот это ДА!  Спасибо за наводку, буду пытаться въезжать Цитата Цитата(Kitsok @ Jan 27 2007, 14:39)  Нет, так я делать точно не буду  Во-первых, АЦП используются и так (8 осей  ), а во вторых, мне такая схема кажется ненадежной. на самом деле довольно элегантное решение. рекомендую Ну никак, заняты оси.... P.S. Сейчас воткнул (предварительно попалив предохранитель  ) осцилоскоп, самый короткий импульс у меня - 2.5 мкс, т.е. 400 мГц. Странно, я ожидал ощутимо больших частот.
|
|
|
|
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|