-
- Так, это ж не значит, что никогда и не надо будет. У меня был случай левой работы, когда "мальчик" проц засунул мотороловский в проект. А компилятор типа "свободный", только вычисления с плавающей запятой не поддерживает. Вот такая херня. - _basile(10.11.2013 00:50)
- Глупость. Может быть _аппаратный_ _float_ нужен крайне редко. А у меня есть пример, когда реализация алгоритма в плавающих числах на pic18 работала _быстрей_, чем в целочисленных (потому, что последние вынуждены быть 32-битными в таком случае). А fk0(242 знак., 08.11.2013 13:56)
- При чем тут аппаратный? "Свободный" компилятор не поддерживает, а другого - не было. - _basile(12.11.2013 22:34)
- О каком компиляторе идёт речь? - VVB(13.11.2013 11:00)
- А плавающие числа были какой разрядности? - Крок(10.11.2013 00:01)
- При чем тут аппаратный? "Свободный" компилятор не поддерживает, а другого - не было. - _basile(12.11.2013 22:34)
- Только пример. Один из множества. Представьте себе время, необходимое для написания на ассемблере AVR, скажем, деления двух вещественных переменных+время на отладку. Вспомните особенности команды FDIV на процессорах Intel - _keil(07.11.2013 14:52)
- Ужос! AVR - паделки финских студентов. Это было выставлено против 8051. Оне, похоже, даже кривым Пикам просирают. Чем мерятся будем ? Я в ближайшей перспективе, окромя ARM, никого не наблюдаю. - _basile(30.11.2013 20:55)
- За АВР не скажу, но мелкочип для своих каменюк выложила (сто лет назад) библиотеку плавающих чисел в ассемблере. Время написания операции деления равно времени нажимания клавиш КТРЛ-Ц КТРЛ-В - Крок(08.11.2013 14:06)
- Вещественные числа в микроконтроллерах не нужны. - Леонид Иванович(07.11.2013 15:01)
- А как же DSP-like задачи? Синтез синусоиды? - _keil(08.11.2013 13:51)
- Нетабличный синтез синуса - десяток команд на ассемблере, FIR/IIR - тоже. Выкладывал тут, можешь найти и почесать репу - MBedder(08.11.2013 13:57)
- С фига ли нетабличный? Для кордика есть таблица для каждого шага, пусть даже она в коде закодирована. Для разложения в ряд -- собственно коэффициенты чем не таблица. Табличный метод может быть свёрнут в ASCII строку по паре бит на градус fk0(72 знак., 08.11.2013 14:21)
- Про рекурсивный синтез почетай - тебе понравится :)) - MBedder(08.11.2013 14:50)
- рекурсивно - Mahagam(08.11.2013 14:36)
- почесал и выкинул метод с накоплением ошибки) - lexxx-lexxx(08.11.2013 14:06)
- И это правильно. Целочисленное умножение будет всегда давать 2*2=4, а плавающее может дать и 4.00001 - вот ошибка и накопится - MBedder(08.11.2013 14:13)
- Плавающее тоже даст всегда 4. 01 на конце возникают при использовании чисел не представимых в двоичной системе и при выводе с обрезанием младших разрядов (иначе сразу видно, что там 01 на конце). Но такие замечательные числа в целых числах вообще fk0(39 знак., 08.11.2013 14:34)
- Речь о неразумности забивания гвоздей электронным микроскопом - молотком получается точнее, дешевле и надежнее - MBedder(08.11.2013 14:52)
- Плавающее тоже даст всегда 4. 01 на конце возникают при использовании чисел не представимых в двоичной системе и при выводе с обрезанием младших разрядов (иначе сразу видно, что там 01 на конце). Но такие замечательные числа в целых числах вообще fk0(39 знак., 08.11.2013 14:34)
- И это правильно. Целочисленное умножение будет всегда давать 2*2=4, а плавающее может дать и 4.00001 - вот ошибка и накопится - MBedder(08.11.2013 14:13)
- С фига ли нетабличный? Для кордика есть таблица для каждого шага, пусть даже она в коде закодирована. Для разложения в ряд -- собственно коэффициенты чем не таблица. Табличный метод может быть свёрнут в ASCII строку по паре бит на градус fk0(72 знак., 08.11.2013 14:21)
- Нетабличный синтез синуса - десяток команд на ассемблере, FIR/IIR - тоже. Выкладывал тут, можешь найти и почесать репу - MBedder(08.11.2013 13:57)
- Цифровой фильтр после АЦП. - Михаил Е.(07.11.2013 15:18, ссылка)
- Делаю фильтры в целых числах. - Леонид Иванович(07.11.2013 15:28)
- Как, интересно? Почему вопрос. Рекурсивный фильтр не сделать при малой разрядности чисел практически (смотря, конечно, какая разрядность результата...) Даже 32 бита не хватает, а с поддержкой long long на микроконтроллерах тоже плохо. Программа fk0(248 знак., 08.11.2013 14:00)
- Вот как только вместо "дизайна фильтров" займётесь "разработкой фильтров", "вдруг" выяснится, что 32 разрядов хватает на очень многое. А уж 32+8 как у приличных ДСП или 32+32 как у АРМа так и вообще на всё. - Крок(08.11.2013 14:09)
- Типичный пример так называемого пустословия. Если мы имеем 10-битные всего лишь данные и 10-битные же коэффициенты, то уже получим 20 бит на результат. В формуле y=x[0]*a + y[0]*b + x[1]*c + y[1]*d, например. И в следствии рекурсии мы уже fk0(651 знак., 08.11.2013 14:56)
- Я так понимаю, что float с 24 значащими битами эти проблемы решает? - AD(08.11.2013 15:15)
- Я щитаю на ДСПИКе фильтры по 256 отсчётов, умножая вектор 16-разрядных к-тов на вектор 12-разрядных сигналов. Это занимает 256 тактов. 40-разрядный результат сдвигаю на любое число разрядов вправо за 1 такт и кладу куда угодно (ещё 1). У АРМов Крок(122 знак., 08.11.2013 15:14)
- Только настоящие програ
ламмеры, увидев 10-битные входные данные, применяют для их фильтрации и 10-битные же коэффициенты :)) - MBedder(08.11.2013 15:00)- А какие должны быть коэффициенты? С комплексной и отрицательной разрядностью? Пусть данные будут 12-битные, а коэффициенты 8-битные. Только теперь впиши в них свой фильтр попробуй. - fk0(08.11.2013 15:24)
- При 12-битных данных вполне приличные FIR (и некоторые IIR) получаются с 16-битными коэффициентами, а для IIR в подавляющем большинстве случаев достаточно 32-битных коэффициентов и 40-битного накопления MBedder(124 знак., 08.11.2013 19:01)
- чтд. пишем double и не морочим мозг этими вашими ассемблерами проф. уровня. 32 бита -- мало. - fk0(08.11.2013 19:06)
- Ога. А потом удивляемся, почему фильтр, написанный с double, работает на 32-битнике в разы медленней, чем правильный целочисленный на 8-битнике, да еще и шумит, как паровоз :)) - MBedder(08.11.2013 19:09)
- На 8-битнике уж точно нет 40-битных маков... только long (без второго long) и. возможно, даже вменяемый double (не 24 бита). - fk0(08.11.2013 19:19)
- а вот ху: SiLabs С8051F12x и F13x имеет 40-битный МАС koyodza(41 знак., 08.11.2013 19:31)
- На 8-битнике уж точно нет 40-битных маков... только long (без второго long) и. возможно, даже вменяемый double (не 24 бита). - fk0(08.11.2013 19:19)
- Ога. А потом удивляемся, почему фильтр, написанный с double, работает на 32-битнике в разы медленней, чем правильный целочисленный на 8-битнике, да еще и шумит, как паровоз :)) - MBedder(08.11.2013 19:09)
- чтд. пишем double и не морочим мозг этими вашими ассемблерами проф. уровня. 32 бита -- мало. - fk0(08.11.2013 19:06)
- я там выше привёл пример - Крок(08.11.2013 15:27)
- Ты выше пустословишь не по делу. Приведи конкретный пример с 8-битными коэффициентами и методом их расчёта без "дизайна". - fk0(08.11.2013 15:28)
- С тобой я тоже гусей пас? Я привёл пример с 16-разрядными коэффицинетами и 12-разрядным сигналом. Этого мало? - Крок(08.11.2013 15:32)
- Это не рекусивный фильтр ("Я щитаю на ДСПИКе фильтры по 256 отсчётов, умножая вектор 16-разрядных к-тов на вектор 12-разрядных сигналов. Это занимает 256 тактов. 40-разрядный результат сдвигаю на любое число разрядов вправо за 1 такт и кладу куда fk0(205 знак., 08.11.2013 16:03)
- Рекурсивные фильтры по-разному можно записывать. AD(121 знак., 08.11.2013 16:37)
- За "всякий" не скажу, но пиковские МАКи на много способны. Для рекурсивного фильтра пригодны тож. У АРМов, об которых здесь спич, есть операция умножения 32х32=64, а у Кортехов ещё и с накоплением. 64-разрядным. Наверняка есть задачки, где и этого Крок(52 знак., 08.11.2013 16:18)
- Это не рекусивный фильтр ("Я щитаю на ДСПИКе фильтры по 256 отсчётов, умножая вектор 16-разрядных к-тов на вектор 12-разрядных сигналов. Это занимает 256 тактов. 40-разрядный результат сдвигаю на любое число разрядов вправо за 1 такт и кладу куда fk0(205 знак., 08.11.2013 16:03)
- С тобой я тоже гусей пас? Я привёл пример с 16-разрядными коэффицинетами и 12-разрядным сигналом. Этого мало? - Крок(08.11.2013 15:32)
- Ты выше пустословишь не по делу. Приведи конкретный пример с 8-битными коэффициентами и методом их расчёта без "дизайна". - fk0(08.11.2013 15:28)
- При 12-битных данных вполне приличные FIR (и некоторые IIR) получаются с 16-битными коэффициентами, а для IIR в подавляющем большинстве случаев достаточно 32-битных коэффициентов и 40-битного накопления MBedder(124 знак., 08.11.2013 19:01)
- А какие должны быть коэффициенты? С комплексной и отрицательной разрядностью? Пусть данные будут 12-битные, а коэффициенты 8-битные. Только теперь впиши в них свой фильтр попробуй. - fk0(08.11.2013 15:24)
- Кроме того, програ
ламмеры всегда считают, что данные для фильтрации им подают с выхода идеального 32-битного АЦП :)) - MBedder(08.11.2013 14:16)
- Типичный пример так называемого пустословия. Если мы имеем 10-битные всего лишь данные и 10-битные же коэффициенты, то уже получим 20 бит на результат. В формуле y=x[0]*a + y[0]*b + x[1]*c + y[1]*d, например. И в следствии рекурсии мы уже fk0(651 знак., 08.11.2013 14:56)
- Можно все это ручками считать или использовать fdatool из matlab. Насколько помню, параметры квантизации там задаются в широких пределах - amusin(08.11.2013 14:06)
- Вот как только вместо "дизайна фильтров" займётесь "разработкой фильтров", "вдруг" выяснится, что 32 разрядов хватает на очень многое. А уж 32+8 как у приличных ДСП или 32+32 как у АРМа так и вообще на всё. - Крок(08.11.2013 14:09)
- +100500 - MBedder(08.11.2013 13:57)
- Как, интересно? Почему вопрос. Рекурсивный фильтр не сделать при малой разрядности чисел практически (смотря, конечно, какая разрядность результата...) Даже 32 бита не хватает, а с поддержкой long long на микроконтроллерах тоже плохо. Программа fk0(248 знак., 08.11.2013 14:00)
- Делаю фильтры в целых числах. - Леонид Иванович(07.11.2013 15:28)
- "Я не вижу никакого смысла в том, чтобы в каждом доме стоял компьютер" (c) Кен Олсен, президент DEC - _keil(07.11.2013 15:14)
- по-всякому бывает. Сам стараюсь избегать их применения в МК, но кое-где это было необходимо или просто удобно - koyodza(07.11.2013 15:03)
- У меня задачи обычно простые. А если более-менее сложная, то рядом как правило ЭВМ, туда и переношу расчеты. - Леонид Иванович(07.11.2013 15:29)
- Ну вот посчитал я это дело на компе, получил 14 констант. Ну допустим переведу я все это в целые числа невпизной разрядности и таки получу требуемую точность меньше 1%. В чем выигрыш? Места займет больше, времени на расчет тоже ибо разрядность Codavr(24 знак., 08.11.2013 10:05)
- Ну зачем так подставляться ? Обычный Лонг кроет точность в значений из этого файла как бык овцу. Так и скажи - лень диапазоны отслеживать. - Vladimir Ljaschko(08.11.2013 10:24)
- А ты попробуй. А потом я тебе еще сотню-другую наборов данных подкину и ты на них свой вывод проверишь. Кстати что быстрее деление двух лонгов или флоатов? Про объем ОЗУ вопросов не имею ;) - Codavr(08.11.2013 10:37 - 10:59)
- "Не хочу". У меня все проекты в целочисленной арифметике, зачем мне еще чего-то пробовать? - Vladimir Ljaschko(08.11.2013 10:54)
- А ты попробуй плавучку, тебя потом за уши не оттащишь ;) - Codavr(08.11.2013 10:57)
- если голова на месте, то оттащишь - koyodza(08.11.2013 19:34)
- Да пробовал, точность не катит. - Vladimir Ljaschko(08.11.2013 11:03)
- Ну тады long double :) - Codavr(08.11.2013 11:06)
- long для результатов и long long для расчетов хватает - Vladimir Ljaschko(08.11.2013 11:10)
- Ну так и я за то чтобы не ограничивать себя шорами предубежденности, а пользоваться всем доступным арсеналом средств в зависимости от задачи. Где то удобнее двойной лонг, где то флоат, а где то и инта хватает. - Codavr(08.11.2013 11:13)
- Типа да, а как ресурсы подожмут тогда и начинаем экономить. - plainuser(08.11.2013 11:19)
- Библиотечная часть отвечающая за элементарные операции над float обычно занимает не много ПЗУ. Вот её попадание в ввод-вывод (printf, scanf и т.п.) более критично. И надо иметь в голове, что есть CPU где деление выполняется медленно, и есть CPU, fk0(329 знак., 08.11.2013 14:10 - 14:13)
- Не всегда ПЗУ держит. Есть масса задач где гораздо критичнее объем оперативы. И вот тут 4 байта у флоата может лехко оказаться важнее всех остальных соображений. - Codavr(08.11.2013 15:00)
- У флоата может быть и 3 байта. А чем эти три байта отличаются от 4-х байтов у long? Ибо в short уже числа из реальной жизни плохо помещаются как-то. - fk0(08.11.2013 15:30)
- Не всегда ПЗУ держит. Есть масса задач где гораздо критичнее объем оперативы. И вот тут 4 байта у флоата может лехко оказаться важнее всех остальных соображений. - Codavr(08.11.2013 15:00)
- Экономим мы всегда, если ресурсы понимать в широком смысле, а не только кишочки процессора. Кто-то свое время экономит, кто-то хозяйские деньги, кто-то ресурсы планеты. - Codavr(08.11.2013 11:26)
- Библиотечная часть отвечающая за элементарные операции над float обычно занимает не много ПЗУ. Вот её попадание в ввод-вывод (printf, scanf и т.п.) более критично. И надо иметь в голове, что есть CPU где деление выполняется медленно, и есть CPU, fk0(329 знак., 08.11.2013 14:10 - 14:13)
- Типа да, а как ресурсы подожмут тогда и начинаем экономить. - plainuser(08.11.2013 11:19)
- Ну так и я за то чтобы не ограничивать себя шорами предубежденности, а пользоваться всем доступным арсеналом средств в зависимости от задачи. Где то удобнее двойной лонг, где то флоат, а где то и инта хватает. - Codavr(08.11.2013 11:13)
- long для результатов и long long для расчетов хватает - Vladimir Ljaschko(08.11.2013 11:10)
- Ну тады long double :) - Codavr(08.11.2013 11:06)
- А ты попробуй плавучку, тебя потом за уши не оттащишь ;) - Codavr(08.11.2013 10:57)
- "Не хочу". У меня все проекты в целочисленной арифметике, зачем мне еще чего-то пробовать? - Vladimir Ljaschko(08.11.2013 10:54)
- А ты попробуй. А потом я тебе еще сотню-другую наборов данных подкину и ты на них свой вывод проверишь. Кстати что быстрее деление двух лонгов или флоатов? Про объем ОЗУ вопросов не имею ;) - Codavr(08.11.2013 10:37 - 10:59)
- Ну зачем так подставляться ? Обычный Лонг кроет точность в значений из этого файла как бык овцу. Так и скажи - лень диапазоны отслеживать. - Vladimir Ljaschko(08.11.2013 10:24)
- Ну вот посчитал я это дело на компе, получил 14 констант. Ну допустим переведу я все это в целые числа невпизной разрядности и таки получу требуемую точность меньше 1%. В чем выигрыш? Места займет больше, времени на расчет тоже ибо разрядность Codavr(24 знак., 08.11.2013 10:05)
- У меня задачи обычно простые. А если более-менее сложная, то рядом как правило ЭВМ, туда и переношу расчеты. - Леонид Иванович(07.11.2013 15:29)
- А как же DSP-like задачи? Синтез синусоиды? - _keil(08.11.2013 13:51)