Технический форум по робототехнике.
Правила форума
В данном разделе каждый может иметь не более одной темы. Тема должна начинаться с логина (ника) робофорума.
Michael_K » 09 янв 2012, 01:09
пооффтоплю - раньше во времена железяк типа 16v8 не умели делать на одном кристалле и ЕЕПРОМ, и логику (достаточно плотную), и раму, и силовуху. Тогда различие между PLD и FPGA действительно было заметно. Первые были набором И-ИЛИ элементов с прожигаемыми связями (то есть на них нельзя было сделать триггер без танцев с бубнами), а вторые - основывались на встроенной памяти (и там уже были триггеры). Сейчас технологические ограничения сильно подвинулись, CPLD типа заняло промежуточную нишу, а с точки зрения пользователя совершенно по барабану, как оно там внутре устроено.
Кроме того, там по-моему, чисто маркетинговые названия всплывали частенько...
Dmitry__ » 09 янв 2012, 02:15
Как это в 16v8 нет триггеров?

Там элемент построен на основе триггера, а чтоб его отключить надо использовать режим "Combinatorial Configuration for Registered Mode"
Добавлено спустя 2 минуты 26 секунд:да и фпга плохо подходят для триггеров

не для этого они...
в общем все переврал

Michael_K » 09 янв 2012, 02:21
Да, уже есть, просто более древних не вспомнил

Гуглить влом - если не лень, флаг в руки %)
Dmitry__ » 09 янв 2012, 02:43
PLA
1970, Texas Instruments
TMS2000 had up to 17 inputs and 18 outputs with 8 JK flip flop for memory
куда старее?
без триггеров только одно упоминание нагуглилось:
Early programmable logic
In 1969, Motorola offered the XC157, a mask-programmed gate array with 12 gates and 30 uncommitted input/output pins.

т.е. PLD без триггеров не было...
Michael_K » 09 янв 2012, 04:41
да... ну и ладно... Но суть не меняется.

Dmitry__ » 09 янв 2012, 05:05
это ой как меняет суть

теперь есть смысл искать различия между PLD и FPGA

Michael_K » 09 янв 2012, 13:08
Вот вы бы, вместо препирательств, по сути бы и написали - в чем же, по-вашему, кардинальное отличие между PLD и FPGA!
Dmitry__ » 09 янв 2012, 15:29
может лучше устроить визг? типа:
Michael_K писал(а):Лично я считаю, что откровенно неверные построения нужно с форума удалять, хотя бы потому, что не всякий школьник способен отличить вранье от правды. Кроме того, на этом форуме запрещена публикация заведомо неверной информации.
Шутка

И тут так часто всех посылают гуглить, а сами не могут набрать "FPGA vs CPLD"
http://www.fpgarelated.com/usenet/fpga/show/11740-1.php
Michael_K » 10 янв 2012, 00:18
Ну и внятных ответов там нет. Я продолжаю считать, что с точки зрения пользователя - один фиг. Возможно когда-то бывшее различие давно ушло в область маркетинговых лозунгов.
Наиболее внятное "объяснение" такое:
The main difference is that CPLDs are mainly focused on
Input->(fast)Logic->Register->Output
while Fpgas are typically slower for CPLD tasks, but have more
configuration possibillities and support more complex logic
structures.
A typical CPLD design would have fast but simple operations while a
fpga has complex operations based on many internal registers.
Как вы сами понимаете, границы между "сложными" и "простыми" проектами - очень-очень размыты. Можно конечно указать крайности - быстрый счетчик или дешифратор - это CPLD, а MPEG-декодер - FPGA, но между ними еще много-много других "промежуточных" приложений.
Dmitry__ » 10 янв 2012, 04:12
Прикалываешься???

blindman » 11 янв 2012, 04:45
=DeaD= » 11 янв 2012, 07:47
Массив?
Добавлено спустя 2 минуты 32 секунды:Ну или если равновероятны степени, то среднее время можно "в лоб" сократить так:
word inline pow2(byte exp)
{
word result = 1;
if(exp>7){ result = 128; exp-=7; };
while(exp--)
result *= 2;
return result;
}

Strijar » 11 янв 2012, 08:07
Я чего то не понял. А разве это просто сдвигом нельзя сделать? 2^n == 1<<n
=DeaD= » 11 янв 2012, 08:26
Если есть такая операция, а то компилятор может её превратить в примерно такой же код, только вместо result*=2 напишет внутри result = result << 1.
blindman » 11 янв 2012, 08:49
Причем это будут фактически 2 операции - контроллер 8-битный. И avr-gcc скомпилирует и умножение на 2, и сдвиг влево на 1 разряд как сложение числа с самим собой
Добавлено спустя 4 минуты 59 секунд:=DeaD= писал(а):то компилятор может её превратить в примерно такой же код, только вместо result*=2 напишет внутри result = result << 1.
Фактически при замене всей pow2() на return 1 << exp; генерируется тот же самый код, что и с умножением в цикле