Перейти к содержанию
    

Какой разрядности цифрового CORDIC гетеродина дотсаточно?

Какой разрядности цифрового CORDIC гетеродина дотсаточно для построения радиотракта на ПЛИС. Есть два варианта - работа на низкой ПЧ, порядка десятков кГц совместно с аналоговым трактом. И второй вариант - весь КВ диапазон до 30 МГЦ и прямое преобразование сигнала со входа в цифровую форму. Как необходимая и достаточная разрядность гетеродина соотносится с разрядностью АЦП?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Зависит от тактовой частоты и требуемой точности переноса частоты гетеродином. Какие у тебя требования?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Разрядность выходных сигналов - 16 бит.

Разрядность входа сигнала частоты определяется исходя из требуемой точности. В общем виде df = f_clock/(2^FREQ_WIDTH), при условии, что в кордике не менее FREQ_WIDTH итераций.

Проще всего насимулировать выборку 100-500 тыс. выходных отсчётов и скормить её матлабу, а там уже построить спектр сигнала (с окном типа Блэкмана, Блэкмана-Харриса). И сравнить результат с требованиями на качество генератора.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Делайте 18 бит, если есть аппаратные умножители 18х18, как например у Альтеры.

Разрядность больше 18 бит вряд ли себя оправдает, поскольку SFDR 16-битного АЦП будет намного хуже.

Какое АЦП использовать планируете?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Делайте 18 бит, если есть аппаратные умножители 18х18, как например у Альтеры.

Разрядность больше 18 бит вряд ли себя оправдает, поскольку SFDR 16-битного АЦП будет намного хуже.

Какое АЦП использовать планируете?

Пока экспериментировал с 12-битным - построил стенд с АЦП, ЦАП, ПЛИС Xilinx 3XC500 тактовый генератор 50 МГц, аналоговая часть КВ трансивера

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

12 бит АЦП/ЦАП при 50 МГц тактовой - это для КВ не достаточно.

16 бит + 100 МГц - необходимый минимум. Даже у радиолюбителей сейчас такие SDR.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

12 бит АЦП/ЦАП при 50 МГц тактовой - это для КВ не достаточно.

16 бит + 100 МГц - необходимый минимум. Даже у радиолюбителей сейчас такие SDR.

Да, я про это знаю, цифровой тракт задумывался для работы на низкой ПЧ, и в целях изучения как программирования, так и самих ПЛИС. Начинал почти с нуля, имея знания по программированию 8-битных МК AVR на Си, да и, честно говоря в программировании ПЛИС ушел недалеко

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Тогда можешь сделать сколько влезет при твоей тактовой частоте, например 24 или 32 бита.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Тогда можешь сделать сколько влезет при твоей тактовой частоте, например 24 или 32 бита.

Да вот я не совсем еще с VHDL разобрался, например, я пишу, когда нужно поделить число на 2 в степени n, как операцию деления. Как в этом случае правильно писать с использованием ror или rol? А то после анализа среда разработки пишет, что максимальная частота около 5 МГц, это примерно при 18 бит, а чем больше выборок тем лучше, так что такое низкое быстродействие - не вариант. Сразу говорю, знания у меня слабоватые, поэтому и вопросы могут быть соответствующие

Изменено пользователем Aleksandr Vihorev

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот в этой штуковине - 8-разрядные АЦП. А кайфу - на все 16. :) Искать по имени RTL-SDR.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Настоятельно рекомендую изучить Xilinx Core Generator и примитивы, которые он генерирует. В вашей плисине есть замечательные аппаратные умножители, быстрые и простые - их и надо задействовать. И CORDIC можно сгенерировать сразу готовый, и производительность его будет заведомо лучше всего, что напишет новичок. Ничего в этом сложного нету, освоите работу с ним в один вечер. Плата фирменная или самопал?

В вашем случае ни ror, ни rol.

sra - Shift Right - деление на 2^x.

srl - Shift Left - умножение на 2^x.

Но сейчас компилятор умный, он сам поймёт знак деления как сдвиг. И даже пожалуется при попытке поделить на 3, например.

 

Ага, и работайте с numeric_std, в старых книгах используются арифметичесие библиотеки от Синопсиса не рекомендуемые ныне и многие новички продолжают ими пользоваться.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

да действительно у меня rtlsdr работает на КВ на 8 разрядах АЦП, просто АРУ и усилители нужны.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да вот я не совсем еще с VHDL разобрался, например, я пишу, когда нужно поделить число на 2 в степени n, как операцию деления. Как в этом случае правильно писать с использованием ror или rol? А то после анализа среда разработки пишет, что максимальная частота около 5 МГц, это примерно при 18 бит, а чем больше выборок тем лучше, так что такое низкое быстродействие - не вариант. Сразу говорю, знания у меня слабоватые, поэтому и вопросы могут быть соответствующие

Попробуй Verilog. Он гораздо проще для понимания и читабельнее код. При этом по функционалу, качеству VHDL и Verilog равны.

Операцию деления и умножения там можно делать просто сдвигами >> и <<, или <<< и <<<.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да вот я не совсем еще с VHDL разобрался, например, я пишу, когда нужно поделить число на 2 в степени n, как операцию деления. Как в этом случае правильно писать с использованием ror или rol? А то после анализа среда разработки пишет, что максимальная частота около 5 МГц, это примерно при 18 бит, а чем больше выборок тем лучше, так что такое низкое быстродействие - не вариант. Сразу говорю, знания у меня слабоватые, поэтому и вопросы могут быть соответствующие

для деления на степень двойки можно просто писать - примеры:

 

a <= b/16;

a <= b/32;

a <= b/128;

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Настоятельно рекомендую изучить Xilinx Core Generator и примитивы, которые он генерирует. В вашей плисине есть замечательные аппаратные умножители, быстрые и простые - их и надо задействовать. И CORDIC можно сгенерировать сразу готовый, и производительность его будет заведомо лучше всего, что напишет новичок. Ничего в этом сложного нету, освоите работу с ним в один вечер. Плата фирменная или самопал?

В вашем случае ни ror, ни rol.

sra - Shift Right - деление на 2^x.

srl - Shift Left - умножение на 2^x.

Но сейчас компилятор умный, он сам поймёт знак деления как сдвиг. И даже пожалуется при попытке поделить на 3, например.

 

Ага, и работайте с numeric_std, в старых книгах используются арифметичесие библиотеки от Синопсиса не рекомендуемые ныне и многие новички продолжают ими пользоваться.

Плату я сам развел и спаял - это целый станд, там не только ПЛИС, но и перриферия и аналоговая часть, может, конечно, не совсем удачно именно для изучения VHDL

 

Попробуй Verilog. Он гораздо проще для понимания и читабельнее код. При этом по функционалу, качеству VHDL и Verilog равны.

Операцию деления и умножения там можно делать просто сдвигами >> и <<, или <<< и <<<.

Да нет, я уже с чего начал, сейчас на другой язык переходить жедлания нет, и дело не в читабельности кода - задачи, которые я перед собой ставлю - простые, никакой там обработки видеосигнала. Просто мне нужно нормально и эффективно использовать ресурсы этой старой ПЛИС, затем я и задаю вопросы, а использовать последние разработки я вообще не хочу - мне нужно чтобы плата была двухсторонняя, никаких BGA и update-ов среды разработки, опять-же потому что задачи весьма скромные

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...