|
|
  |
Какой разрядности цифрового CORDIC гетеродина дотсаточно? |
|
|
|
Oct 5 2015, 16:54
|
Участник

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

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

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

|
Цитата(soldat_shveyk @ Oct 6 2015, 08:41)  Делайте 18 бит, если есть аппаратные умножители 18х18, как например у Альтеры. Разрядность больше 18 бит вряд ли себя оправдает, поскольку SFDR 16-битного АЦП будет намного хуже. Какое АЦП использовать планируете? Пока экспериментировал с 12-битным - построил стенд с АЦП, ЦАП, ПЛИС Xilinx 3XC500 тактовый генератор 50 МГц, аналоговая часть КВ трансивера
|
|
|
|
|
Oct 6 2015, 13:03
|
Участник

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

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

Группа: Участник
Сообщений: 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
|
|
|
|
|
Oct 6 2015, 18:34
|
Местный
  
Группа: Свой
Сообщений: 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, в старых книгах используются арифметичесие библиотеки от Синопсиса не рекомендуемые ныне и многие новички продолжают ими пользоваться.
|
|
|
|
|
Oct 7 2015, 06:35
|
Местный
  
Группа: Свой
Сообщений: 232
Регистрация: 2-08-07
Из: Москва
Пользователь №: 29 534

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

я только учусь...
     
Группа: Модераторы
Сообщений: 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.
"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
|
|
|
|
|
Oct 8 2015, 10:39
|
Участник

Группа: Участник
Сообщений: 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-ов среды разработки, опять-же потому что задачи весьма скромные
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|