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

 
 
 
Reply to this topicStart new topic
> сложение двух 16 битных чисел
StasK
сообщение Sep 14 2008, 20:40
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 31-03-08
Пользователь №: 36 348



Есть проект на ATF1508AS (128 макроселл) для снятия 4096 чисел данных с 14 битного АЦП, запись в SRAM, потом считывание, все по командам контроллера. На каждое число есть 4 такта, частота - 2 МГц. Как реализовать усреднение по 2, 4, 8, 16. 34? Т.е. при первом считывании каждую i-ую точку сдвинуть на соответствующее кол-во разрядов вправо и записать в SRAM, на каждой следующей i-ой точке надо считать i-ое данное с SRAM, сложить со сдвинутым текущим i-ым и опять записать в SRAM. Возможно-ли это сделать на данном устройстве? Может поставить еще одну ПЛИС или DSP для суммирования? Большого опыта работы с ПЛИС нет.
Спасибо.
Go to the top of the page
 
+Quote Post
rezident
сообщение Sep 14 2008, 20:44
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Вы хотите организовать фильтр типа SMA (простое скользящее среднее)?
Посмотрите по ссылке http://www.may.nnov.ru/mak/DSP/chSMA.shtml
Go to the top of the page
 
+Quote Post
StasK
сообщение Sep 14 2008, 23:17
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 31-03-08
Пользователь №: 36 348



Цитата(rezident @ Sep 14 2008, 23:44) *
Вы хотите организовать фильтр типа SMA (простое скользящее среднее)?
Посмотрите по ссылке http://www.may.nnov.ru/mak/DSP/chSMA.shtml


Нет. Мне надо не SMA: Y[i] = (X[i] + X[i-1] + ... X[i - (N - 1)])/N, а
Y[i] = X1[i]/N + X2[i]/N + ... XN[i]/N, где i=[0:4095].
Т.е. я бы назвал это усреднением векторов, но наверняка есть стандартное название.

Сообщение отредактировал StasK - Sep 14 2008, 23:37
Go to the top of the page
 
+Quote Post
Maverick
сообщение Sep 15 2008, 05:35
Сообщение #4


я только учусь...
******

Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839



Цитата(StasK @ Sep 15 2008, 02:17) *
Нет. Мне надо не SMA: Y[i] = (X[i] + X[i-1] + ... X[i - (N - 1)])/N, а
Y[i] = X1[i]/N + X2[i]/N + ... XN[i]/N, где i=[0:4095].
Т.е. я бы назвал это усреднением векторов, но наверняка есть стандартное название.


Если N равен степени двойки тогда
1. Можно поставить суматор, который будет находить сумму X[i] + X[i-1] + ... X[i - (N - 1)], а потом производиться соответствующая операция сдвига на N разрядов.
2. Можно производить соответствующий сдвиг на N разрядов с каждым Х[i], а потом находить их сумму.

п. 1 и п. 2 это равноценны


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
mse
сообщение Sep 15 2008, 06:35
Сообщение #5


Знающий
****

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



Цитата(Maverick @ Sep 15 2008, 09:35) *
п. 1 и п. 2 это равноценны

Нискажите ;О) Если сперва всё сложить, а потом сдвинуть, а то и округлить, то ошибка будет 1МЗР(±0,5МЗР при округлении). А если сперва сдвинуть, а потом сложить, то... сами понимаете, в какие ворота можно не влезть... ;О) Ну и ресурсы тоже таво... разные.
Go to the top of the page
 
+Quote Post
Maverick
сообщение Sep 15 2008, 06:54
Сообщение #6


я только учусь...
******

Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839



Цитата(mse @ Sep 15 2008, 09:35) *
Нискажите ;О) Если сперва всё сложить, а потом сдвинуть, а то и округлить, то ошибка будет 1МЗР(±0,5МЗР при округлении). А если сперва сдвинуть, а потом сложить, то... сами понимаете, в какие ворота можно не влезть... ;О) Ну и ресурсы тоже таво... разные.


С первым замечанием еще могу согласиться, а вот со вторым "Ну и ресурсы тоже таво... разные" позвольте не согласиться smile.gif Ресурсы для ПЛИС, на мой взгляд, будут одинаковыми, просто последовательность операций иная.


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
mse
сообщение Sep 15 2008, 07:00
Сообщение #7


Знающий
****

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



Цитата(Maverick @ Sep 15 2008, 10:54) *
С первым замечанием еще могу согласиться, а вот со вторым "Ну и ресурсы тоже таво... разные" не могу согласиться smile.gif Ресурсы для ПЛИС будут одинаковыми, просто последовательность операций иная.

Ну почему? ;О) В "точном" случае сумматор будет на всю длину вектора (Win+12), а если сперва усекать, а потом суммировать, то сумматор будет только в ширину выходного вектора. Мельчь, конешно, но тем не менее. ;О)
Go to the top of the page
 
+Quote Post
Intekus
сообщение Sep 15 2008, 07:00
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 244
Регистрация: 4-03-08
Из: Москва
Пользователь №: 35 621



Цитата
Нет. Мне надо не SMA: Y[i] = (X[i] + X[i-1] + ... X[i - (N - 1)])/N, а
Y[i] = X1[i]/N + X2[i]/N + ... XN[i]/N, где i=[0:4095].
Т.е. я бы назвал это усреднением векторов, но наверняка есть стандартное название.

А можно словами пояснить в чём отличие? Непонятна двойная индексация в вашем варианте - что значит, например, XN[i]?


--------------------
...а Сила, Брат - она - в несиловых решениях.
Go to the top of the page
 
+Quote Post
mse
сообщение Sep 15 2008, 07:04
Сообщение #9


Знающий
****

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



Цитата(Intekus @ Sep 15 2008, 11:00) *
А можно словами пояснить в чём отличие?

См пост №5.
Go to the top of the page
 
+Quote Post
Maverick
сообщение Sep 15 2008, 07:22
Сообщение #10


я только учусь...
******

Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839



Цитата(mse @ Sep 15 2008, 10:00) *
Ну почему? ;О) В "точном" случае сумматор будет на всю длину вектора (Win+12), а если сперва усекать, а потом суммировать, то сумматор будет только в ширину выходного вектора. Мельчь, конешно, но тем не менее. ;О)


Согласен, просто с точки зрения построения цифровой схемы одинаково. smile.gif А разрядность сумматора, я не учитывал sad.gif


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
Splice
сообщение Sep 18 2008, 19:45
Сообщение #11





Группа:
Сообщений: 10
Регистрация: 3-03-05
Из: МО, Жуковский
Пользователь №: 3 045



Что точно можно сказать, деление на N не кратное двум, сожрёт много ресурсов. Пару месяцев назад делал на EPF10K100Е вычисления над 16-ти битными числами пару сложений и умножений, сожрало треть ёмкости.
Go to the top of the page
 
+Quote Post
EvgenyNik
сообщение Sep 19 2008, 05:00
Сообщение #12


Знающий
****

Группа: Свой
Сообщений: 597
Регистрация: 24-05-06
Из: г. Чебоксары
Пользователь №: 17 402



А не подойдёт ли Вам такой вариант?
Y[i] = (X[i] - Y[i-1])/N + Y[i-1] - это простейший рекурсивный НЧ-фильтр первого порядка, цифровой эквивалент аналогового ФНЧ на R и C.
Если N - кратно степени 2, то ресурсов минимум и помнить кучу выборок не надо.
Если не кратно, то можно реализовать в несколько параллельных /N1, /N2, /N3 - каждый из которых кратен степени 2 и складывать результаты.
Чтобы сразу не терять в точности на отбрасывании младших бит, исходному X[i] добавить младших нулевых битов, а потом сдвинуть на их кол-во результат.
Прикрепил результат моделирования.
Эскизы прикрепленных изображений
Прикрепленное изображение
 


--------------------
Почему разработчики систем повышенной надёжности плохо справляются с простыми проектами? :)
Go to the top of the page
 
+Quote Post

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

 


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


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