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

 
 
 
Reply to this topicStart new topic
> Какой разрядности цифрового CORDIC гетеродина дотсаточно?
Aleksandr Vihore...
сообщение Oct 5 2015, 16:54
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 12-01-15
Пользователь №: 84 516



Какой разрядности цифрового CORDIC гетеродина дотсаточно для построения радиотракта на ПЛИС. Есть два варианта - работа на низкой ПЧ, порядка десятков кГц совместно с аналоговым трактом. И второй вариант - весь КВ диапазон до 30 МГЦ и прямое преобразование сигнала со входа в цифровую форму. Как необходимая и достаточная разрядность гетеродина соотносится с разрядностью АЦП?
Go to the top of the page
 
+Quote Post
Vascom
сообщение Oct 6 2015, 06:43
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 232
Регистрация: 2-08-07
Из: Москва
Пользователь №: 29 534



Зависит от тактовой частоты и требуемой точности переноса частоты гетеродином. Какие у тебя требования?
Go to the top of the page
 
+Quote Post
serjj
сообщение Oct 6 2015, 07:03
Сообщение #3


Знающий
****

Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866



Разрядность выходных сигналов - 16 бит.
Разрядность входа сигнала частоты определяется исходя из требуемой точности. В общем виде df = f_clock/(2^FREQ_WIDTH), при условии, что в кордике не менее FREQ_WIDTH итераций.
Проще всего насимулировать выборку 100-500 тыс. выходных отсчётов и скормить её матлабу, а там уже построить спектр сигнала (с окном типа Блэкмана, Блэкмана-Харриса). И сравнить результат с требованиями на качество генератора.
Go to the top of the page
 
+Quote Post
soldat_shveyk
сообщение Oct 6 2015, 07:41
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 454
Регистрация: 3-07-07
Из: С-Петербург
Пользователь №: 28 859



Делайте 18 бит, если есть аппаратные умножители 18х18, как например у Альтеры.
Разрядность больше 18 бит вряд ли себя оправдает, поскольку SFDR 16-битного АЦП будет намного хуже.
Какое АЦП использовать планируете?
Go to the top of the page
 
+Quote Post
Aleksandr Vihore...
сообщение Oct 6 2015, 09:26
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 12-01-15
Пользователь №: 84 516



Цитата(soldat_shveyk @ Oct 6 2015, 08:41) *
Делайте 18 бит, если есть аппаратные умножители 18х18, как например у Альтеры.
Разрядность больше 18 бит вряд ли себя оправдает, поскольку SFDR 16-битного АЦП будет намного хуже.
Какое АЦП использовать планируете?

Пока экспериментировал с 12-битным - построил стенд с АЦП, ЦАП, ПЛИС Xilinx 3XC500 тактовый генератор 50 МГц, аналоговая часть КВ трансивера
Go to the top of the page
 
+Quote Post
soldat_shveyk
сообщение Oct 6 2015, 09:48
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 454
Регистрация: 3-07-07
Из: С-Петербург
Пользователь №: 28 859



12 бит АЦП/ЦАП при 50 МГц тактовой - это для КВ не достаточно.
16 бит + 100 МГц - необходимый минимум. Даже у радиолюбителей сейчас такие SDR.
Go to the top of the page
 
+Quote Post
Aleksandr Vihore...
сообщение Oct 6 2015, 13:03
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 12-01-15
Пользователь №: 84 516



Цитата(soldat_shveyk @ Oct 6 2015, 09:48) *
12 бит АЦП/ЦАП при 50 МГц тактовой - это для КВ не достаточно.
16 бит + 100 МГц - необходимый минимум. Даже у радиолюбителей сейчас такие SDR.
Да, я про это знаю, цифровой тракт задумывался для работы на низкой ПЧ, и в целях изучения как программирования, так и самих ПЛИС. Начинал почти с нуля, имея знания по программированию 8-битных МК AVR на Си, да и, честно говоря в программировании ПЛИС ушел недалеко
Go to the top of the page
 
+Quote Post
Vascom
сообщение Oct 6 2015, 13:07
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 232
Регистрация: 2-08-07
Из: Москва
Пользователь №: 29 534



Тогда можешь сделать сколько влезет при твоей тактовой частоте, например 24 или 32 бита.
Go to the top of the page
 
+Quote Post
Aleksandr Vihore...
сообщение Oct 6 2015, 15:07
Сообщение #9


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 12-01-15
Пользователь №: 84 516



Цитата(Vascom @ Oct 6 2015, 14:07) *
Тогда можешь сделать сколько влезет при твоей тактовой частоте, например 24 или 32 бита.

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

Сообщение отредактировал Aleksandr Vihorev - Oct 6 2015, 15:08
Go to the top of the page
 
+Quote Post
ViKo
сообщение Oct 6 2015, 18:31
Сообщение #10


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Вот в этой штуковине - 8-разрядные АЦП. А кайфу - на все 16. sm.gif Искать по имени RTL-SDR.
Go to the top of the page
 
+Quote Post
count_enable
сообщение Oct 6 2015, 18:34
Сообщение #11


Местный
***

Группа: Свой
Сообщений: 310
Регистрация: 28-01-13
Из: Лондон
Пользователь №: 75 384



Настоятельно рекомендую изучить Xilinx Core Generator и примитивы, которые он генерирует. В вашей плисине есть замечательные аппаратные умножители, быстрые и простые - их и надо задействовать. И CORDIC можно сгенерировать сразу готовый, и производительность его будет заведомо лучше всего, что напишет новичок. Ничего в этом сложного нету, освоите работу с ним в один вечер. Плата фирменная или самопал?
В вашем случае ни ror, ни rol.
sra - Shift Right - деление на 2^x.
srl - Shift Left - умножение на 2^x.
Но сейчас компилятор умный, он сам поймёт знак деления как сдвиг. И даже пожалуется при попытке поделить на 3, например.

Ага, и работайте с numeric_std, в старых книгах используются арифметичесие библиотеки от Синопсиса не рекомендуемые ныне и многие новички продолжают ими пользоваться.
Go to the top of the page
 
+Quote Post
litv
сообщение Oct 7 2015, 05:59
Сообщение #12


Местный
***

Группа: Свой
Сообщений: 401
Регистрация: 6-10-04
Из: Воронеж
Пользователь №: 806



да действительно у меня rtlsdr работает на КВ на 8 разрядах АЦП, просто АРУ и усилители нужны.
Go to the top of the page
 
+Quote Post
Vascom
сообщение Oct 7 2015, 06:35
Сообщение #13


Местный
***

Группа: Свой
Сообщений: 232
Регистрация: 2-08-07
Из: Москва
Пользователь №: 29 534



Цитата(Aleksandr Vihorev @ Oct 6 2015, 18:07) *
Да вот я не совсем еще с VHDL разобрался, например, я пишу, когда нужно поделить число на 2 в степени n, как операцию деления. Как в этом случае правильно писать с использованием ror или rol? А то после анализа среда разработки пишет, что максимальная частота около 5 МГц, это примерно при 18 бит, а чем больше выборок тем лучше, так что такое низкое быстродействие - не вариант. Сразу говорю, знания у меня слабоватые, поэтому и вопросы могут быть соответствующие

Попробуй Verilog. Он гораздо проще для понимания и читабельнее код. При этом по функционалу, качеству VHDL и Verilog равны.
Операцию деления и умножения там можно делать просто сдвигами >> и <<, или <<< и <<<.
Go to the top of the page
 
+Quote Post
Maverick
сообщение Oct 7 2015, 07:31
Сообщение #14


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

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



Цитата(Aleksandr Vihorev @ Oct 6 2015, 18:07) *
Да вот я не совсем еще с VHDL разобрался, например, я пишу, когда нужно поделить число на 2 в степени n, как операцию деления. Как в этом случае правильно писать с использованием ror или rol? А то после анализа среда разработки пишет, что максимальная частота около 5 МГц, это примерно при 18 бит, а чем больше выборок тем лучше, так что такое низкое быстродействие - не вариант. Сразу говорю, знания у меня слабоватые, поэтому и вопросы могут быть соответствующие

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

a <= b/16;
a <= b/32;
a <= b/128;



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

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
Aleksandr Vihore...
сообщение Oct 8 2015, 10:39
Сообщение #15


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 12-01-15
Пользователь №: 84 516



Цитата(count_enable @ Oct 6 2015, 18:34) *
Настоятельно рекомендую изучить Xilinx Core Generator и примитивы, которые он генерирует. В вашей плисине есть замечательные аппаратные умножители, быстрые и простые - их и надо задействовать. И CORDIC можно сгенерировать сразу готовый, и производительность его будет заведомо лучше всего, что напишет новичок. Ничего в этом сложного нету, освоите работу с ним в один вечер. Плата фирменная или самопал?
В вашем случае ни ror, ни rol.
sra - Shift Right - деление на 2^x.
srl - Shift Left - умножение на 2^x.
Но сейчас компилятор умный, он сам поймёт знак деления как сдвиг. И даже пожалуется при попытке поделить на 3, например.

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

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

Цитата(Vascom @ Oct 7 2015, 06:35) *
Попробуй Verilog. Он гораздо проще для понимания и читабельнее код. При этом по функционалу, качеству VHDL и Verilog равны.
Операцию деления и умножения там можно делать просто сдвигами >> и <<, или <<< и <<<.

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

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

 


RSS Текстовая версия Сейчас: 3rd July 2025 - 12:37
Рейтинг@Mail.ru


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