реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Использовать или нет ПЛИС
Kitsok
сообщение Jan 27 2007, 11:47
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 211
Регистрация: 9-11-06
Пользователь №: 22 136



Добрый день!

Использую AT91SAM7S256 для некого устройства ввода-вывода, он-же мега-джойстик wink.gif

Для организации опроса 128 кнопок и вывода на 128 светодиодов, пришлось нагородить матрицу с опросом, т.е. дешифратор сборный, 4 входа, 16 линий выхода (строки), и мультиплексор 8->1 (столбцы).

Входы мультиплексор подтянуты к питанию, на пересечении стоят развязанные диодами кнопки. По строками последовательно бегает логический ноль, соответственно, на мультиплексоре перебираются последовательно все каналы, выход идет на контроллер, если на выходе нолик, то в данном положении кнопка нажата. В общем, по-моему, весьма классическая схема. Итого - 3 корпуса стандартной логики.

Когда задумался о выводе, то тут я решаю так - использую 8 защелок с выборкой в одном корпусе (74HC259), выбор защелки внутри осуществляется теми-же линиями (3), которые идут на мультиплексор, а Latch Enable идет с дешифратора, ввод данных общий на всех и идет на контроллер.

Получается, что на вывод мне нужно 16 корпусов.

Вот тут и вопрос - а не красивее ли использовать для организации всей матрицы (и ввода и вывода) ПЛИС? Но с ПЛИСами я дела никогда не имел, поэтому не очень представляю, как с ними обращаться.

Посоветуйте пожалуйста, следует ли копать в этом направлении (количество входов-выходов - 128 с нагрузочной способностью минимум 10мА + к этому 8+16, итого - 152 ноги, ну и 10 ног в сторону контроллера, итого - 162 ноги), либо стоит не заморачиваться и ставить корпуса?

Заранее спасибо и сорри, если оффтоп.
Go to the top of the page
 
+Quote Post
Doka
сообщение Jan 27 2007, 12:47
Сообщение #2


Electrical Engineer
******

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



вариантов много.. опять же о быстордействии ничего не написали (хотя если это human interface, то оно не столь критично).

вообще по суммарной нагрузке надо и на плис буффера ставить.
насчет выхода: если делать на МК, то как вариант рассмотрите цепочку из sn74hc595 (а если взять sn74ls595, то сразу можно led драйвить)


--------------------
Блог iDoka.ru
CV linkedin.com/in/iDoka
Sources github.com/iDoka


Never stop thinking...........................
Go to the top of the page
 
+Quote Post
mse
сообщение Jan 27 2007, 12:55
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 709
Регистрация: 3-05-05
Пользователь №: 4 693



Цитата(Kitsok @ Jan 27 2007, 11:47) *
Получается, что на вывод мне нужно 16 корпусов.
Вот тут и вопрос - а не красивее ли использовать для организации всей матрицы (и ввода и вывода) ПЛИС?

ИМХО, нет. Проще поискать многоразрядных сдвиговых регистров, зацепить их друг за другом и простреливать по сериальному каналу. Для светодиодов - само то. А 128 кномпочек лучше всего разбить на группы по 16 шт(чтобы сделать возможными многокнопочные комбинаццыи и уменьшить вероятность получения видимости нажатия кнопки, путём некоей комбинаццыи) и завести на 8 каналов АЦП. Ну резюков килоомных жменька буит. Зато никаких мультиплексеров. и кучи линий в одну точку.
Хотя...6-7 баксов за ЦПЛДышку какую...но я бы не стал.
Go to the top of the page
 
+Quote Post
AlexMad
сообщение Jan 27 2007, 13:06
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 262
Регистрация: 18-02-05
Из: SPb
Пользователь №: 2 743



Чтобы не городить новую ветку, задам вопрос здесь. Есть сходная задача, но с другими параметрами, опрос 32 ил 64 (еще не решил) линий и выдача на управление 32 линий. Вобщем, все как у предыдущего оратора, тока не светодиоды и кнопки, а логический анализатор. Прблема в том, что все это надо делать очень синхронно по времени, на частотах до 100 мегагорцев, может, в последствии и выше, частота ограничивается только тем, что и на сотне плату тяжело будет развести, в тз я заложил намного меньше, но надо стремиться к лучшему smile.gif. Просто вывод в порт контроллера я не уверен, что смогу сделать синхронным, с ПЛИС не работал вообще и слабо представляю что это такое.
Вобщем вопрос: реально ли на плис сделать буфер FIFO, работающий на этих скоростях, и если да, то какие плисы посоветуете для этого?
Go to the top of the page
 
+Quote Post
Doka
сообщение Jan 27 2007, 13:13
Сообщение #5


Electrical Engineer
******

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



Цитата(AlexMad @ Jan 27 2007, 13:06) *
Вобщем, все как у предыдущего оратора, тока не светодиоды и кнопки, а логический анализатор. Прблема в том, что все это надо делать очень синхронно по времени, на частотах до 100 мегагерц, может, в последствии и выше, частота ограничивается только тем, что и на сотне плату тяжело будет развести, в тз я заложил намного меньше, но надо стремиться к лучшему smile.gif.
ПЛИС, однозначно.

Цитата(AlexMad @ Jan 27 2007, 13:06) *
Вобщем вопрос: реально ли на плис сделать буфер FIFO, работающий на этих скоростях, и если да, то какие плисы посоветуете для этого?
реально. Посмотрите например семейство Spartan-3E от Xilinx либо эквивалент от Altera.


--------------------
Блог iDoka.ru
CV linkedin.com/in/iDoka
Sources github.com/iDoka


Never stop thinking...........................
Go to the top of the page
 
+Quote Post
Boris_TS
сообщение Jan 27 2007, 13:28
Сообщение #6


Злополезный
****

Группа: Свой
Сообщений: 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
Go to the top of the page
 
+Quote Post
AlexMad
сообщение Jan 27 2007, 14:02
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 262
Регистрация: 18-02-05
Из: SPb
Пользователь №: 2 743



Цитата
Необходимо указать стандарт сигналов и минимальное количество памяти для работы устройства - от этого зависит рекомендуемые ПЛИС, но то, что это должна быть FPGA - сомнений нет.

По сигналам:выход будет управлять быстродействующими ключами, уровни логические 3.3 или 5 вольт, входа будут принимать сигнал с оконных компараторов, уровни теже.
Память... тут вопрос сложный, устройство являет собой тестер микросхем, количество памяти в буфере ФИФО будет определять сколько циклов можно задать во входной функции, и сколько можно записать. Ответ чем больше, тем лучше smile.gif при одном мегабайте памяти на частоте 100 мегагерц можно тестировать непрерывно элемент по восьми ногам в течении 1 сотой секунды, если, конечно, не зациклить по кругу... Учитывая, что этот прибор пойдет не для нормоконтроля, может этого и хватит, но всегда хочется большегоsmile.gif
Go to the top of the page
 
+Quote Post
Stanislav
сообщение Jan 27 2007, 14:22
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 4 363
Регистрация: 13-05-05
Из: Москва
Пользователь №: 4 987



Для управления светодиодами рекомендую использовать специальные М/С драйверов, например, MBI5025 от Macroblock (есть ещё у TI, Toshiba, Maxim, etc). Такой драйвер даёт стабильный ток в диоды, имеет аж 16 выходов и требует только один резистор. Драйверы можно включать последовательно, с теоретически неограниченным общим количеством выводов, и загружать по SPI.


--------------------
Самонадеянность слепа. Сомнения - спутник разума. (с)
Go to the top of the page
 
+Quote Post
Kitsok
сообщение Jan 27 2007, 14:39
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 211
Регистрация: 9-11-06
Пользователь №: 22 136



Спасибо за ответы!

Уточняю - вся схема 3.3 вольта, вроде 74hc (не HCT) работает от 2 до 5, поэтому никаких подводных камней не ожидаю.

Насчет сдвигового регистра я как-то не задумывался, идея красивая, буду читать даташыты.

mse
Я не понял, вы имеете в виду организовать также и ввод сдвиговым регистром? Что-то мне подсказывает, что быстродействие у такой схемы будет не очень. Ааааа, понял. Нет, так я делать точно не буду wink.gif Во-первых, АЦП используются и так (8 осей wink.gif), а во вторых, мне такая схема кажется ненадежной. А если с температурой резисторы поплывут?

Да, кстати, о быстродействии. Померять пока не удосужился, но опрос всей матрицы (128+128) происходит каждую миллисекунду. Надеюсь, дойдут руки и померяю хотя-бы ширину импульса на Latch Enable.

Хотя идея со сдвиговым регистром мне очень и очень нравится.
Go to the top of the page
 
+Quote Post
Kitsok
сообщение Jan 27 2007, 14:56
Сообщение #10


Местный
***

Группа: Свой
Сообщений: 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 у всеъ одно, так?
Go to the top of the page
 
+Quote Post
mse
сообщение Jan 27 2007, 15:06
Сообщение #11


Знающий
****

Группа: Свой
Сообщений: 709
Регистрация: 3-05-05
Пользователь №: 4 693



Цитата(Kitsok @ Jan 27 2007, 14:39) *
а во вторых, мне такая схема кажется ненадежной. А если с температурой резисторы поплывут?

;О) резисторы стоят между "+" и G. Кнопкой коммутируется напруга из узла на вход АЦП. И плыть будут синхронно.
Если жалко каналов АЦП, то можно коммутировать МУХом каким...Но это уже изврат. А вся прелесть в том, что нет сканирования
Go to the top of the page
 
+Quote Post
Doka
сообщение Jan 27 2007, 15:14
Сообщение #12


Electrical Engineer
******

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



Цитата(Kitsok @ Jan 27 2007, 14:39) *
Насчет сдвигового регистра я как-то не задумывался, идея красивая, буду читать даташиты.

вот вам аппнот в качестве подспорья:
<<открыть в новом окне>>


Цитата(Kitsok @ Jan 27 2007, 14:39) *
Нет, так я делать точно не буду wink.gif Во-первых, АЦП используются и так (8 осей wink.gif), а во вторых, мне такая схема кажется ненадежной.

на самом деле довольно элегантное решение. рекомендую


--------------------
Блог iDoka.ru
CV linkedin.com/in/iDoka
Sources github.com/iDoka


Never stop thinking...........................
Go to the top of the page
 
+Quote Post
Boris_TS
сообщение Jan 27 2007, 15:23
Сообщение #13


Злополезный
****

Группа: Свой
Сообщений: 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 ОЗУ'ки в одну из них пишет ПЛИС, из другой (тоже через ПЛИС) данных читает потребитель. При полном вычитывании данных потребителем из одной ОЗУ'ки, ПЛИС начинает писать данные в свободнцю ОЗУ'шку, а занятую может начинать читать потребитель.
Go to the top of the page
 
+Quote Post
Kitsok
сообщение Jan 27 2007, 17:29
Сообщение #14


Местный
***

Группа: Свой
Сообщений: 211
Регистрация: 9-11-06
Пользователь №: 22 136



Цитата(Doka @ Jan 27 2007, 15:14) *
Цитата(Kitsok @ Jan 27 2007, 14:39) *
Насчет сдвигового регистра я как-то не задумывался, идея красивая, буду читать даташиты.

вот вам аппнот в качестве подспорья:
<<открыть в новом окне>>


Вот это ДА! wink.gif Спасибо за наводку, буду пытаться въезжать wink.gif


Цитата
Цитата(Kitsok @ Jan 27 2007, 14:39) *
Нет, так я делать точно не буду wink.gif Во-первых, АЦП используются и так (8 осей wink.gif), а во вторых, мне такая схема кажется ненадежной.

на самом деле довольно элегантное решение. рекомендую


Ну никак, заняты оси....

P.S. Сейчас воткнул (предварительно попалив предохранитель wink.gif) осцилоскоп, самый короткий импульс у меня - 2.5 мкс, т.е. 400 мГц. Странно, я ожидал ощутимо больших частот.
Go to the top of the page
 
+Quote Post
mse
сообщение Jan 27 2007, 18:23
Сообщение #15


Знающий
****

Группа: Свой
Сообщений: 709
Регистрация: 3-05-05
Пользователь №: 4 693



Цитата(Kitsok @ Jan 27 2007, 17:29) *
P.S. Сейчас воткнул (предварительно попалив предохранитель wink.gif) осцилоскоп, самый короткий импульс у меня - 2.5 мкс, т.е. 400 мГц. Странно, я ожидал ощутимо больших частот.

Не вкурил. У САМа СПИ, например, фурычит на МЦЛК/2...Вы что, портами врукопашную машете?
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 10th July 2025 - 20:22
Рейтинг@Mail.ru


Страница сгенерированна за 0.01508 секунд с 7
ELECTRONIX ©2004-2016