Jump to content

    

ElrondTelvanni

Свой
  • Content Count

    100
  • Joined

  • Last visited

Community Reputation

0 Обычный

About ElrondTelvanni

  • Rank
    Частый гость

Информация

  • Город
    Нижний Новгород
  1. Corner -10 конечно по Уолшам (hint: STANAG 4415). А каналы чуть получше (6 дБ+) - честное 8PSK, разумеется с эквалайзером.
  2. Corner Принципиальная разница в том, что в LUT для генерации синуса лежит четверть периода единичной окружности, а при обратном преобразовании для общего случая нужно хранить единичный квадрат. Если взять хотя бы 10-битную точность, получаем необходимость хранить 2^(10*2) = 2^20 точек. Не многовато ли? А CORDIC, если делать две итерации за такт, сделает преобразование такой точности за 5-6 тактов.
  3. У нас речь идёт о приёме 8PSK сигналов с SNR вплоть до -10. При таких условиях любые дополнительные искажения, вносимые трактом, могут помешать. Нужен именно такой IIR, у которого было бы константное ГВЗ в ППФ не более 20 отсчётов.
  4. Corner ЦитатаКороткий табличный метод с линейной аппроксимацией между точками таблицыДля синтеза синуса/косинуса - безусловно. А как насчёт перевода комплексного числа из декартовой системы координат в полярную? Для этой задачи я не нашёл ни одного метода, который по скорости и точности был бы сравним с CORDIC. Может вы подскажете?
  5. Цитата(petrov @ Apr 20 2016, 16:45) Она же не сама по себе нужна, а для чего-то?Для PSK/QAM модемов, как минимум. ЦитатаЕсли действительные коэффициенты заменить комплексными, то проблему соотношения линейности фазы и задержки можно частично решить.Каким образом? Расскажите пожалуйста поподробнее, или скажите, где почитать. Сейчас для FIR используются реальные коэффициенты и комплексный входной сигнал. Но ограничений по архитектуре фильтра у меня никаких нет, поэтому если с комплексным БИХ ГВЗ в полосе пропускания будет меньше и близким к константе - я им воспользуюсь.
  6. Задался я тут целью минимизировать задержку в приёмном тракте. Сейчас для обеспечения требуемой избирательности используется FIR ~128 порядка на частоте дискретизации 9.6 кГц, что соответствует задержке ~6.7 мс (64 отсчёта). Сделал аналогичный по характеристикам эллиптический фильтр, получился примерно 12 порядок. Казалось бы - задержка должна быть в 10 раз меньше. Но прикрутив выравниватель фазы (нужна линейная), получил результаты по ГВЗ в несколько раз хуже, чем при использовании КИХ 128 порядка! Можно ли с этим что-нибудь поделать?
  7. Неужели до сих пор не было утечки исходников миландровских DSP'шников?
  8. Для меня наибольший интерес представляют процессоры, которым на ассемблере можно написать что-то типа КодR1.H = (A1 = R3.L * R0.H), R1.L=(A0 = R3.L * R0.L) || [P0++] = R6 || R2 = [I2++];Есть ли вообще в открытом доступе подобные soft-DSP?
  9. Leka Глянул проц, спасибо. Но где же самое интересное? Даже не сам ассемблер как таковой, а в первую очередь адаптация LCC под свой ассемблер?
  10. Цитатапоявилась постоянная составляющая на выходе CIC (где-то на -60 дБ от full scale, значение приблизительное).Нельзя просто так взять и отсечь младшие разряды. Нужно к результату усечения прибавить значение старшего (знакового) разряда.
  11. Для 1 порядка - 512х18бит. Для 2 порядка - 512х32бит. В таблице четверть круга. Уменьшил таблицу в 2 раза - потерял 18 дБ (на 2 порядке).
  12. Ради интереса сделал генератор с применением ряда Тейлора 2 порядка. Результаты по сравнению с 1 порядком: 1) Выигрыш по SFDR 20 дБ (132 против 112). 2) По занимаемым LUT - в 2.5 раза больше. 3) По занимаемой памяти - в 2 раза больше. 4) По умножителям - в 3.3 раза больше. По-моему, для большинства случаев оно того не стоит. И если занимаемую память можно сократить в 2 раза (уменьшив таблицу), то с остальным ничего не поделать.
  13. Golikov A. ЦитатаЯ ошибаюсь или разложения в ряд Тейлора предполагает точку в окрестности которой мы имеем разложениеТочка определяется старшими битами аккумулятора фазы (в моём случае 11-ю). В таблице хранится четверть круга. А вторая таблица вам зачем, если суть метода как раз и заключается в уточнении табличных значений вычисленными членами ряда Тейлора?
  14. Шаманъ Нет, таблица на 512 значений, и содержится в ней четверть круга [0..pi/2]. Остальные три четверти получаются путём нехитрых манипуляций с адресом и выходом, что даёт нам фактический размер в 2048 значений, то есть 11 бит от аккумулятора фазы. Ещё 18 бит используются для тейлоровской коррекции, три оставшихся игнорятся. Формулы следующие: sin(X+x) = sin(X) + (x * PHASE_UNIT * cos(X)); cos(X+x) = cos(X) - (x * PHASE_UNIT * sin(X)); где PHASE_UNIT = (2 * pi / 2^11) * (2^25); Здесь 11 - это разрядность X, а 25 - это расширение разрядности для того чтобы умножить fract18xfract18. diwil Цитата1. Нафига убирать DC на входе, если смеситель и так ее уберет?У нас нет аналогового смесителя, сигнал на несущей частоте подаётся на АЦП.Цитата2. По скольки точкам надо делать интерполяцию и какой степени, чтобы получить -118дБ SFDR ? Каков размер LUT?Написал выше. У меня 112 dB, но этого вполне достаточно. Очень просто конвейеризуется, всего 4 ступени. В дальнейших вопросы не понял, какие "лишние" биты вы имеете ввиду. У CIC-фильтра огромный коэффициент усиления, там на выходе, если его не обрезать, получается вообще 60+ бит.
  15. Самым изящным решением будет вот такое: Кодmodule cnt9 (     input  logic        rst_n,     input  logic        clk,     output logic [3:0]    cnt ); always_ff @(posedge clk or negedge rst_n) begin     if(!rst_n)         cnt    <= 0;     else         cnt    <= (cnt == 4'b1001) ? '0 : cnt + 1'b1; end endmodule На VHDL то же самое, но чуть больше строк кода.