Artunique 0 27 мая, 2015 Опубликовано 27 мая, 2015 · Жалоба Добрый день. Реализую приемник прямого преобразования на ПЛИС. Сначала скидываю сигнал на ноль с помощью NCO, затем фильтрую CIC и FIR фильтрами. Что на вход каждого фильтра, что на выход, можно загонять сигнал любой разрядности. Как ее выбирать? исходя из чего? Динамический диапазон вроде обеспечил требуемый, а вот с избирательностью по соседнему каналу никак не получается. Получаемые значения очень сильно зависят от разрядности. Как ее грамотно выбрать? При учете того, что с АЦП идет 14 бит и на выходе FIR фильтра нужна конкретная разрядность 24 бита. Заранее спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Aleksei_Rostov 0 27 мая, 2015 Опубликовано 27 мая, 2015 · Жалоба Что на вход каждого фильтра, что на выход, можно загонять сигнал любой разрядности. Как ее выбирать? исходя из чего? Динамический диапазон вроде обеспечил требуемый, а вот с избирательностью по соседнему каналу никак не получается. Получаемые значения очень сильно зависят от разрядности. Как ее грамотно выбрать? При учете того, что с АЦП идет 14 бит и на выходе FIR фильтра нужна конкретная разрядность 24 бита. Заранее спасибо. Разрядность сигнала на вход я выбирал исходя из разрядности АЦП, отбросив шумящие младшие разряды. В моём случае из 14 я брал только 8. Коэффициенты фильтра рассчитал в матлабе и далее округлил до целого значения в 16ти или 32 разрядной сетке. На выходе округлил значения до требуемой разрядности. Все действия проверял матлабом. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Artunique 0 27 мая, 2015 Опубликовано 27 мая, 2015 · Жалоба Разрядность сигнала на вход я выбирал исходя из разрядности АЦП, отбросив шумящие младшие разряды. В моём случае из 14 я брал только 8. Коэффициенты фильтра рассчитал в матлабе и далее округлил до целого значения в 16ти или 32 разрядной сетке. На выходе округлил значения до требуемой разрядности. Все действия проверял матлабом. Я так понимаю, что за избирательность отвечает именно FIR фильтр? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Aleksei_Rostov 0 27 мая, 2015 Опубликовано 27 мая, 2015 · Жалоба Я так понимаю, что за избирательность отвечает именно FIR фильтр? После АЦП фильтр. Его частотная характеристика зависит от разрядности при округлении. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 27 мая, 2015 Опубликовано 27 мая, 2015 · Жалоба считайте по эффектиной разрядности = разрядность на входе фильтра + log2(полоса на входе/полоса на выходе) и учтите требуемый вам динамический диапазон. Ну и сам фильтр, для подавления соседнего канала должен быть соотвествующим образом посчитан. Ну и в фильтре промежуточных округлений быть не должно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Artunique 0 27 мая, 2015 Опубликовано 27 мая, 2015 · Жалоба считайте по эффектиной разрядности = разрядность на входе фильтра + log2(полоса на входе/полоса на выходе) и учтите требуемый вам динамический диапазон. Ну и сам фильтр, для подавления соседнего канала должен быть соотвествующим образом посчитан. Ну и в фильтре промежуточных округлений быть не должно. Спасибо! А правила округления есть какие-либо? у меня на выходе FIR мегафункция предлагает 50 бит, мне нужно только 24. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 27 мая, 2015 Опубликовано 27 мая, 2015 · Жалоба Спасибо! А правила округления есть какие-либо? у меня на выходе FIR мегафункция предлагает 50 бит, мне нужно только 24. Как по мне, если позволяет ресурс, то взять на 1-2 бит больше и банальный flour. Кстати, учите еще тот факт, что при сильных соседних каналах, АРУ тоже должно быть сделано соответствущим образом. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
stealth-coder 2 28 мая, 2015 Опубликовано 28 мая, 2015 · Жалоба Из собственного опыта: 1. Везде использовать математическое округление, это сильно влияет на качество. 2. Наибольшее влияние на качество оказывает разрядность первых CIC-ов, чем ближе к выходу, тем менее критично. 3. Если есть возможность - делайте разрядность по максимуму, на выходе ставите окно нужного размера (обязательно с округлением) - получаете цифровое АРУ. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
serjj1333 0 29 мая, 2015 Опубликовано 29 мая, 2015 · Жалоба Везде использовать математическое округление, это сильно влияет на качество. Его нужно ставить там, где это нужно. Отсутствие математического округления порождает постоянку. Если схема игнорирует постоянку, то округлять не требуется. Также это критично при малых разрядностях, когда постоянка в 1 бит сопоставима с уровнем сигнала. Наибольшее влияние на качество оказывает разрядность первых CIC-ов, чем ближе к выходу, тем менее критично. На каждой ступени обработки необходимая разрядность считается, как подсказывает des00 по формуле разрядность на входе фильтра + log2(полоса на входе/полоса на выходе). Независимо от структуры фильтра. Просто у первых CICов понижение частоты самое значительное, т.к. они как правило очень узкополосные (за тем их и ставят), поэтому на этой стадии влияние роста разрядности самое критическое. Если есть возможность - делайте разрядность по максимуму, на выходе ставите окно нужного размера (обязательно с округлением) - получаете цифровое АРУ. Использование максимальной разрядности актуально только в процессорах, т.к. они работают с фиксированной разрядностью в принципе. В ПЛИС такой подход затратен. Нужно разрядность ставить ровно столько, сколько нужно для обеспечения требуемого чутья в приёмнике или точности в передатчике. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
stealth-coder 2 29 мая, 2015 Опубликовано 29 мая, 2015 · Жалоба Его нужно ставить там, где это нужно. Отсутствие математического округления порождает постоянку. Если схема игнорирует постоянку, то округлять не требуется. Также это критично при малых разрядностях, когда постоянка в 1 бит сопоставима с уровнем сигнала. Отбрасываемые разряды тоже содержат информацию, при простом обрезании она теряется, при округлении - частично сохраняется. На каждой ступени обработки необходимая разрядность считается, как подсказывает des00 по формуле разрядность на входе фильтра + log2(полоса на входе/полоса на выходе). Независимо от структуры фильтра. Просто у первых CICов понижение частоты самое значительное, т.к. они как правило очень узкополосные (за тем их и ставят), поэтому на этой стадии влияние роста разрядности самое критическое. Формула корректная, но если пользоваться готовыми реализациями от Xilinx, например, то нельзя выставить произвольную разрядность, в таком случае экономия выходит боком. Использование максимальной разрядности актуально только в процессорах, т.к. они работают с фиксированной разрядностью в принципе. В ПЛИС такой подход затратен. Нужно разрядность ставить ровно столько, сколько нужно для обеспечения требуемого чутья в приёмнике или точности в передатчике. В теории - да, в жизни - если в ПЛИСе есть место, почему бы не добавить системе помехоустойчивости? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Hose 0 30 мая, 2015 Опубликовано 30 мая, 2015 · Жалоба Я бы добавил: на NCO тоже надо заложить увеличение разрядности не менее чем на 2. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
serjj1333 0 1 июня, 2015 Опубликовано 1 июня, 2015 (изменено) · Жалоба Я бы добавил: на NCO тоже надо заложить увеличение разрядности не менее чем на 2. С чем это связано? В моём понимание на смесителе (вы же имеете в виду не сам NCO а смеситель?) динамический диапазон никак не изменяется, т.к. сигнал от NCO идёт в полную шкалу, соответственно, если у нас с NCO сигнал, например, 16 бит, то на перемножение мы добавляем 16 бит, а после спокойно можем их отнять, ничего не потеряв. Вы предлагаете отнять не 16 а 14, правильно я понял? С чем это связано? В теории - да, в жизни - если в ПЛИСе есть место, почему бы не добавить системе помехоустойчивости? Вы добавляете не помехоустойчивость а точность. Есть например приёмник. На тепловой шум отводится 6-8 разрядов, арифметический шум - 1 разряд. В таком случае очевидно, что тепловой шум много больше арифметического, следовательно арифметическим шумом можно принебречь и оптимальный приём будет работать как в учебнике. Добавляя разрядности, вы увеличиваете точность квантования теплового шума. Т.к. от этого сигнал-шум не поменяется, откуда взяться выигрышу в помехоустойчивости. Другое дело, если у вас рекурсивная схема, в ней 1 битный арифметический шум может вырасти и стать сравнимым или даже большим чем шум тепловой, снизив помехоустойчивость. Или другой пример - выделение сверхмалого сигнала на фоне большой помехи. Если выбрать малую разрядность, то в процессе обработки малый сигнал потеряется, т.к. в процессе выделения используется корреляционная обработка (т.е. фактически эквивалент возведению в квадрат, а это приведет к двукратному росту динамического диапазона, отбросив разрядность очень легко потерять слабый сигнал, который после возведение в квадрат станет еще слабее). С практической точки зрения разрядность все таки уменьшать стоит, но не более чем до разрядности умножителя ПЛИС. Изменено 1 июня, 2015 пользователем serjj Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andyp 9 1 июня, 2015 Опубликовано 1 июня, 2015 · Жалоба С чем это связано? В моём понимание на смесителе (вы же имеете в виду не сам NCO а смеситель?) динамический диапазон никак не изменяется, т.к. сигнал от NCO идёт в полную шкалу, соответственно, если у нас с NCO сигнал, например, 16 бит, то на перемножение мы добавляем 16 бит, а после спокойно можем их отнять, ничего не потеряв. Вы предлагаете отнять не 16 а 14, правильно я понял? С чем это связано? Пр повороте вектора длина проекции может увеличиться. Т.е. если на входе ты закладываешься на максимальное значение в каждой квадратуре K, то на выходе надо иметь sqrt(2) * K Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
serjj1333 0 1 июня, 2015 Опубликовано 1 июня, 2015 · Жалоба Пр повороте вектора длина проекции может увеличиться. Т.е. если на входе ты закладываешься на максимальное значение в каждой квадратуре K, то на выходе надо иметь sqrt(2) * K А ведь да ) только тогда можно 1 бит добавить, т.к. sqrt(2) < 2. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Artunique 0 2 июня, 2015 Опубликовано 2 июня, 2015 (изменено) · Жалоба Пр повороте вектора длина проекции может увеличиться. Т.е. если на входе ты закладываешься на максимальное значение в каждой квадратуре K, то на выходе надо иметь sqrt(2) * K Поясните пожалуйста про NCO. Я умножаю 14 бит с NCO на 14 бит с АЦП. И на выходе сколько бит можно оставить? 16? я правильно понял? Изменено 2 июня, 2015 пользователем Artunique Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться