Aleksandr Vihorev 0 5 октября, 2015 Опубликовано 5 октября, 2015 · Жалоба Какой разрядности цифрового CORDIC гетеродина дотсаточно для построения радиотракта на ПЛИС. Есть два варианта - работа на низкой ПЧ, порядка десятков кГц совместно с аналоговым трактом. И второй вариант - весь КВ диапазон до 30 МГЦ и прямое преобразование сигнала со входа в цифровую форму. Как необходимая и достаточная разрядность гетеродина соотносится с разрядностью АЦП? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vascom 0 6 октября, 2015 Опубликовано 6 октября, 2015 · Жалоба Зависит от тактовой частоты и требуемой точности переноса частоты гетеродином. Какие у тебя требования? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
serjj1333 0 6 октября, 2015 Опубликовано 6 октября, 2015 · Жалоба Разрядность выходных сигналов - 16 бит. Разрядность входа сигнала частоты определяется исходя из требуемой точности. В общем виде df = f_clock/(2^FREQ_WIDTH), при условии, что в кордике не менее FREQ_WIDTH итераций. Проще всего насимулировать выборку 100-500 тыс. выходных отсчётов и скормить её матлабу, а там уже построить спектр сигнала (с окном типа Блэкмана, Блэкмана-Харриса). И сравнить результат с требованиями на качество генератора. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
soldat_shveyk 2 6 октября, 2015 Опубликовано 6 октября, 2015 · Жалоба Делайте 18 бит, если есть аппаратные умножители 18х18, как например у Альтеры. Разрядность больше 18 бит вряд ли себя оправдает, поскольку SFDR 16-битного АЦП будет намного хуже. Какое АЦП использовать планируете? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Aleksandr Vihorev 0 6 октября, 2015 Опубликовано 6 октября, 2015 · Жалоба Делайте 18 бит, если есть аппаратные умножители 18х18, как например у Альтеры. Разрядность больше 18 бит вряд ли себя оправдает, поскольку SFDR 16-битного АЦП будет намного хуже. Какое АЦП использовать планируете? Пока экспериментировал с 12-битным - построил стенд с АЦП, ЦАП, ПЛИС Xilinx 3XC500 тактовый генератор 50 МГц, аналоговая часть КВ трансивера Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
soldat_shveyk 2 6 октября, 2015 Опубликовано 6 октября, 2015 · Жалоба 12 бит АЦП/ЦАП при 50 МГц тактовой - это для КВ не достаточно. 16 бит + 100 МГц - необходимый минимум. Даже у радиолюбителей сейчас такие SDR. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Aleksandr Vihorev 0 6 октября, 2015 Опубликовано 6 октября, 2015 · Жалоба 12 бит АЦП/ЦАП при 50 МГц тактовой - это для КВ не достаточно. 16 бит + 100 МГц - необходимый минимум. Даже у радиолюбителей сейчас такие SDR. Да, я про это знаю, цифровой тракт задумывался для работы на низкой ПЧ, и в целях изучения как программирования, так и самих ПЛИС. Начинал почти с нуля, имея знания по программированию 8-битных МК AVR на Си, да и, честно говоря в программировании ПЛИС ушел недалеко Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vascom 0 6 октября, 2015 Опубликовано 6 октября, 2015 · Жалоба Тогда можешь сделать сколько влезет при твоей тактовой частоте, например 24 или 32 бита. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Aleksandr Vihorev 0 6 октября, 2015 Опубликовано 6 октября, 2015 (изменено) · Жалоба Тогда можешь сделать сколько влезет при твоей тактовой частоте, например 24 или 32 бита. Да вот я не совсем еще с VHDL разобрался, например, я пишу, когда нужно поделить число на 2 в степени n, как операцию деления. Как в этом случае правильно писать с использованием ror или rol? А то после анализа среда разработки пишет, что максимальная частота около 5 МГц, это примерно при 18 бит, а чем больше выборок тем лучше, так что такое низкое быстродействие - не вариант. Сразу говорю, знания у меня слабоватые, поэтому и вопросы могут быть соответствующие Изменено 6 октября, 2015 пользователем Aleksandr Vihorev Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 6 октября, 2015 Опубликовано 6 октября, 2015 · Жалоба Вот в этой штуковине - 8-разрядные АЦП. А кайфу - на все 16. :) Искать по имени RTL-SDR. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
count_enable 0 6 октября, 2015 Опубликовано 6 октября, 2015 · Жалоба Настоятельно рекомендую изучить Xilinx Core Generator и примитивы, которые он генерирует. В вашей плисине есть замечательные аппаратные умножители, быстрые и простые - их и надо задействовать. И CORDIC можно сгенерировать сразу готовый, и производительность его будет заведомо лучше всего, что напишет новичок. Ничего в этом сложного нету, освоите работу с ним в один вечер. Плата фирменная или самопал? В вашем случае ни ror, ни rol. sra - Shift Right - деление на 2^x. srl - Shift Left - умножение на 2^x. Но сейчас компилятор умный, он сам поймёт знак деления как сдвиг. И даже пожалуется при попытке поделить на 3, например. Ага, и работайте с numeric_std, в старых книгах используются арифметичесие библиотеки от Синопсиса не рекомендуемые ныне и многие новички продолжают ими пользоваться. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
litv 0 7 октября, 2015 Опубликовано 7 октября, 2015 · Жалоба да действительно у меня rtlsdr работает на КВ на 8 разрядах АЦП, просто АРУ и усилители нужны. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vascom 0 7 октября, 2015 Опубликовано 7 октября, 2015 · Жалоба Да вот я не совсем еще с VHDL разобрался, например, я пишу, когда нужно поделить число на 2 в степени n, как операцию деления. Как в этом случае правильно писать с использованием ror или rol? А то после анализа среда разработки пишет, что максимальная частота около 5 МГц, это примерно при 18 бит, а чем больше выборок тем лучше, так что такое низкое быстродействие - не вариант. Сразу говорю, знания у меня слабоватые, поэтому и вопросы могут быть соответствующие Попробуй Verilog. Он гораздо проще для понимания и читабельнее код. При этом по функционалу, качеству VHDL и Verilog равны. Операцию деления и умножения там можно делать просто сдвигами >> и <<, или <<< и <<<. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Maverick_ 15 7 октября, 2015 Опубликовано 7 октября, 2015 · Жалоба Да вот я не совсем еще с VHDL разобрался, например, я пишу, когда нужно поделить число на 2 в степени n, как операцию деления. Как в этом случае правильно писать с использованием ror или rol? А то после анализа среда разработки пишет, что максимальная частота около 5 МГц, это примерно при 18 бит, а чем больше выборок тем лучше, так что такое низкое быстродействие - не вариант. Сразу говорю, знания у меня слабоватые, поэтому и вопросы могут быть соответствующие для деления на степень двойки можно просто писать - примеры: a <= b/16; a <= b/32; a <= b/128; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Aleksandr Vihorev 0 8 октября, 2015 Опубликовано 8 октября, 2015 · Жалоба Настоятельно рекомендую изучить 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-ов среды разработки, опять-же потому что задачи весьма скромные Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться