Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: деление больших чисел
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
Goose
Всем доброго времени суток,
возникла необходимость выполнить операцию деления двух больших чисел порядка 80 бит на 80 бит.
Если точнее, то это необходимость возникла скорее из-за того, что я не могу придумать другого решения задачи:
в общем пытаюсь использовать турбо декодер ксилинксовый, мягкие решения и мягкий вход соответственно.
поэтому на него нужно подавать логарифмическое отношение правдоподобия. опуская вывод, нужно сформировать для декодера соотношение
u*x/sigma^2, где u- матожидание логической единицы, sigma^2 - дисперсия, x - само значение текущее.
величины u, x примерно 40бит каждая,
величина sigma^2 примерно 80 бит.

вход декодера - это число с фиксированной точкой (2..5 бита на целую часть и 1..4 бита на дробную).

получается что надо делить 80 бит на 80 бит если в тупую. но мне кажется как то можно более просто сделать, но не могу пока придумать как.

числа такой большой разрядности получаются из-за: I,Q 20 битные, а после частотного дискриминатора (операция I*Qdelayed - Q*Idelayed) разрядность уже 40 бит.

помогите плиз=)
заранее благодарю

Serg76
зачем вам сигнал с такой разрядностью, для ЧМ 8 бит "за глаза" хватит, С/Ш вашего сигнала скорее всего гораздо меньше, чем ДД 8-ми разрядного квантователя. Кроме того, посмотрите даташиты на фирменные декодеры, там разрядность выше 8-ми бит не используется, т.к. в этом нет никакого практического смысла.
Mogwaika
1) Некоторые реализации декодеров не чувствительны к масштабированию;
2) Декодеры которые я делал хавали 6-бит сигнал с I Q после АРУ;
3) Моделирование показало, что в заданных режимах работы поправка от дисперсии незначительна.

Делитель слишком замедлит работу...
Goose
Цитата(Serg76 @ Nov 11 2013, 15:54) *
зачем вам сигнал с такой разрядностью, для ЧМ 8 бит "за глаза" хватит, С/Ш вашего сигнала скорее всего гораздо меньше, чем ДД 8-ми разрядного квантователя. Кроме того, посмотрите даташиты на фирменные декодеры, там разрядность выше 8-ми бит не используется, т.к. в этом нет никакого практического смысла.

Давайте представим так, есть два 14-разрядных АЦП (I и Q). То есть сигнал может быть, например, в диапазоне -2 до +2 или -8192 до 8191 (все зависит от дальности передатчика). после частотного дискриминатора: уровень логической единицы может быть как например 4, так и 2^13*2^13 = 67108864. То есть 28 бит. и u*x это 56 бит и sigma^2 это 56 бит. О каких 8 битах Вы говорите? ведь в данном случае чем больше ДД ацп, тем больше дальность можно получить.

вот на входе декодера действительно нужно немного (до 9 бит).

Цитата(Mogwaika @ Nov 11 2013, 16:02) *
1) Некоторые реализации декодеров не чувствительны к масштабированию;
2) Декодеры которые я делал хавали 6-бит сигнал с I Q после АРУ;
3) Моделирование показало, что в заданных режимах работы поправка от дисперсии незначительна.

Делитель слишком замедлит работу...

сейчас буду моделировать...

я согласен на 6 бит, но их нужно получить из деления двух больших чисел. что я пока себе представляю, это например перед делением числитель и знаменатель сдвинуть влево на некоторое число разрядов.
Mogwaika
Цитата(Goose @ Nov 11 2013, 16:14) *
Давайте представим так, есть два 14-разрядных АЦП (I и Q). То есть сигнал может быть, например, в диапазоне -2 до +2 или -8192 до 8191 (все зависит от дальности передатчика). после частотного дискриминатора: уровень логической единицы может быть как например 4, так и 2^13*2^13 = 67108864. То есть 28 бит. и u*x это 56 бит и sigma^2 это 56 бит. О каких 8 битах Вы говорите? ведь в данном случае чем больше ДД ацп, тем больше дальность можно получить.


1) Биты с шумом предусилителя я бы сразу отбросил;
2) Если вы собрались делать АРУ цифровым, то раз сигнал слабый, то вырезаете не старшие 8 бит, а средние...
3) Я не знаю как ведёт себя ядро зайлинкса, но большая разрядность требует больших ресурсов вполне может быть экспоненциального роста (+1 разряд = удвоение ресурсов) а прирост исправляющей способности никакой.
4) больше бит может требоваться для многопозиционных созвездий, но для декодера мягкие решения идут от демодулятора который выдаст меньше бит.
Goose
Цитата(Mogwaika @ Nov 11 2013, 16:24) *
1) Биты с шумом предусилителя я бы сразу отбросил;
2) Если вы собрались делать АРУ цифровым, то раз сигнал слабый, то вырезаете не старшие 8 бит, а средние...
3) Я не знаю как ведёт себя ядро зайлинкса, но большая разрядность требует больших ресурсов вполне может быть экспоненциального роста (+1 разряд = удвоение ресурсов) а прирост исправляющей способности никакой.
4) больше бит может требоваться для многопозиционных созвездий, но для декодера мягкие решения идут от демодулятора который выдаст меньше бит.

1)согласен
2)да это как раз можно делать вместо деления огромных чисел, но цифровое ару я не собирался делать. как раз хотел по простому.
3)это вообще то да, в скляре или прокисе говорилось что для мягких решений 3 бита надо, а все что больше дает прирост 0.2дБ в пределе если память мне не изменяет. в общем да, надо получить эти три бита. а они - это частное от деления, и сократить разрядности делимого и делителя можно либо слежением за ними либо ? видимо придется следить.
4)да это я понимаю.
Mogwaika
Цитата(Goose @ Nov 11 2013, 16:44) *
2)да это как раз можно делать вместо деления огромных чисел, но цифровое ару я не собирался делать. как раз хотел по простому.
3)это вообще то да, в скляре или прокисе говорилось что для мягких решений 3 бита надо, а все что больше дает прирост 0.2дБ в пределе если память мне не изменяет. в общем да, надо получить эти три бита. а они - это частное от деления, и сократить разрядности делимого и делителя можно либо слежением за ними либо ? видимо придется следить.


2) что-то мне подсказывает, что так не делают, ну да ладно...
3) 3 бита это всего 8 умножителей и компараторов... (или даже сумматоров или сдвигателе вместо умножителей)
Goose
Цитата(Mogwaika @ Nov 11 2013, 16:49) *
2) что-то мне подсказывает, что так не делают, ну да ладно...
3) 3 бита это всего 8 умножителей и компараторов... (или даже сумматоров или сдвигателе вместо умножителей)

так как по Вашему делают? я понимаю что это плохое решение
Serg76
Даже самого простого АРУ будет достаточно, чтобы обрабатывать ЧМ, нежели "двигать" эти громоздкие комбинации битов. Это, все-таки, не КАМ, где необходима линейная АРУ.
Mogwaika
Цитата(Goose @ Nov 11 2013, 17:01) *
так как по Вашему делают? я понимаю что это плохое решение

Я думаю делают малошумящий предусилитель а потом усилитель с переменным показателем усиления.
Corner
80 бит для ЧМ не имеет никакого смысла. Надо перевести в некую условно плавающую точку с 8... 10 бит мантисса. Высчитать порядок и округлить результат. Такой формат очень просто делить. Нужен делитель на 16... 20 бит и вычитатель.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.