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

 
 
4 страниц V   1 2 3 > »   
Reply to this topicStart new topic
> Хочу построить КВ трансивер на ПЛИС, что для этого нужно?
Aleksandr Vihore...
сообщение Oct 15 2015, 08:01
Сообщение #1


Участник
*

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



Я хочу выполнить приемно-передающий тракт на ПЛИС. Использовать хочу Spartan3E XC3S500, в качестве среды разработки - ise10.1. Что-то другое я использовать не хочу - у меня старый компьютер с Windows XP, мне не нужны обновления среды разработки? BGA монтаж и все в таком духе. Это я считаю нужным написать, чтобы не было ответов вроде - "Есть лучше" "Сейчас уже используют...".
Насчет моих знаний - я работал с 8-бит AVR на Си и создавал контроллеры для самодельных радиостанций, так чтобы вам можно было судить об уровне, размер программ составлял около 20 КБ.
С аппаратной частью ПЛИС почти разобрался - самостоятельно выполнил плату с ПЛИС, флеш-памятью, которая почему-то не работает, возможно дело в напряжении питания - не нашел стабилизаторов 1,1 вольта и поставил 1,8. Сама ПЛИС прошивается, для отработки простых примеров программирования этого хватало.
Некоторые математические алгоритмы моделировал в EXEL, MATHLABом не владею. Если необходимо, дайте пожалуйста ссылку.
На ПЛИС выполнил генератор пилообразного напряжения,
генератор синусоиды с рассчетом по методу рядов, который работал не совсем правильно,
генератор синусоиды на CORDIC, который работал значительно лучше
выходной сигнал поступал на 12-бит ЦАП, и далее на вход компьютера где была установлена программа со спекторскопом.
У меня возникли следующие вопросы
Где можно недорого приобрести
- АЦП 16-бит
- Тактовый генератор на частоту более 50 МГц с высококачественным выходным сигналом, чтобы качества было достаточно для построения радиотракта, работающего на частотах до 30 МГц (охватывал весь КВ диапазон и более низкочастотные диапазоны)
- Саму ПЛИС и Flash-память, где покупал, уже нет.
- ЦАП необходимой разрядности (пока не знаю какой) для радиопередающего тракта, для приемного тракта у меня есть 12-бит ЦАП, преобразующий цифровой поток в сигнал звуковой частоты
Работаю в VHDL, изучать другой язык потому что кому-то он кажется лучше я, как можно понять не буду. Пусть даже у VHDL есть свои недостатки. Это чтобы лишних сообщений с советами не было. Спасибо за понимание.

- Как быстро освоить 32-бит Микроконтроллеры, затратив не более 4 тыс. руб, чтобы при этом иметь:
- нормальный, пусть и китайский, но работающий программатор, который видит среда разработки
- Среду разработки. Желательно на Си
- Микроконтроллеры в количестве 2-3 шт.
Пусть это будет не самое новое и продвинутое, но должно нормально запускаться и работать на старом компьютере с Windows XP.
Компьютер - частота около 2 Ггц, 2 Гб оперативной памяти, 4 ядра, возможности компьютера позволяют и Windows 7 установить, но не хочу

Пользоваться визардами я не хочу, хочу писать код самостоятельно - потому что, можно сгенерировать CORDIC в визарде, а потом тупить и думать как выполнить ячейку CIC фильтра. Или вообще интерфейс для АЦП или ЦАП или управления трактом - вот для этого уже вряд ли визард легко найти. Поэтому если есть ссылки на примеры кодов модулей генераторов на алгоритме CORDIC - можете дать ссылки. Особенно полезны разные методички, если у кого есть

Вобщем это пока все вопросы, уровень образованности у меня, как вы понимаете, любительский
Go to the top of the page
 
+Quote Post
count_enable
сообщение Oct 15 2015, 11:38
Сообщение #2


Местный
***

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



Цитата(Aleksandr Vihorev @ Oct 15 2015, 12:01) *
...
У меня возникли следующие вопросы
Где можно недорого приобрести
- АЦП 16-бит
...
В Барселоне на ул. Луначарского есть телеателье, там хозяин торгует дефицитными деталями из-под полы. Если вам далеко до Барселоны, то пожалуйста укажите свою локацию, чтобы народ понимал что советовать.

Цитата(Aleksandr Vihorev @ Oct 15 2015, 12:01) *
...
- Как быстро освоить 32-бит Микроконтроллеры, затратив не более 4 тыс. руб, чтобы при этом иметь:
- нормальный, пусть и китайский, но работающий программатор, который видит среда разработки
- Среду разработки. Желательно на Си
- Микроконтроллеры в количестве 2-3 шт.
...
За эквивалент 20-30 евро покупается плата STM32F4 Discovery, имеющая на борту весьма мощный процессор, программатор-отладчик и вполне качественный аудио ЦАП и микрофон. Ставится среда разработки CooCox, бесплатная и простая в использовании для новичков. Документации и примеров - вагон. И пожалуйста, перебросьте этот вопрос в раздел "Микроконтроллеры", он здесь неуместен.


Цитата(Aleksandr Vihorev @ Oct 15 2015, 12:01) *
...
Пользоваться визардами я не хочу, хочу писать код самостоятельно - потому что, можно сгенерировать CORDIC в визарде, а потом тупить и думать как выполнить ячейку CIC фильтра. Или вообще интерфейс для АЦП или ЦАП или управления трактом - вот для этого уже вряд ли визард легко найти. Поэтому если есть ссылки на примеры кодов модулей генераторов на алгоритме CORDIC - можете дать ссылки. Особенно полезны разные методички, если у кого есть
Визардами никто и не пытается заменить мозги, но использовать уже готовые наработки/ библиотеки - правильно и похвально. Вы stdlib тоже будете свою писать?
Go to the top of the page
 
+Quote Post
litv
сообщение Oct 15 2015, 12:02
Сообщение #3


Местный
***

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



например http://habrahabr.ru/post/204310/

"все уже украдено до нас"
Go to the top of the page
 
+Quote Post
Maverick
сообщение Oct 15 2015, 12:03
Сообщение #4


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

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



Цитата(Aleksandr Vihorev @ Oct 15 2015, 11:01) *
Я хочу выполнить приемно-передающий тракт на ПЛИС.
Некоторые математические алгоритмы моделировал в EXEL, MATHLABом не владею. Если необходимо, дайте пожалуйста ссылку.
Вобщем это пока все вопросы, уровень образованности у меня, как вы понимаете, любительский

ссылка
генерит vhdl/verilog описание - пользоваться просто...


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

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


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Были бы в Томске я бы вам плату модема с разбора подарил. Немного правда дособрать бы пришлось sm.gif


--------------------
Go to the top of the page
 
+Quote Post
agregat
сообщение Oct 15 2015, 14:50
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 790
Регистрация: 6-02-14
Из: Омск
Пользователь №: 80 379



Фраза "ПЛИС, флеш-памятью, которая почему-то не работает, возможно дело в напряжении питания - не нашел стабилизаторов 1,1 вольта и поставил 1,8" это прям перл какой то.
Походу кто то из старожилов решил народ потроллить.
Go to the top of the page
 
+Quote Post
Aleksandr Vihore...
сообщение Oct 15 2015, 15:08
Сообщение #7


Участник
*

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



Нахожусь в г. Кемерово. Насчет напряжений питания - все на полном серьезе, я вначале вообще с ними перепутал, потом начал искать ошибку и обнаружил, что использовал стабилизатор на не то напряжение, а на которое нужно, у меня все равно не было и я просто не стал ничего менять

Цитата(count_enable @ Oct 15 2015, 11:38) *
В Барселоне на ул. Луначарского есть телеателье, там хозяин торгует дефицитными деталями из-под полы. Если вам далеко до Барселоны, то пожалуйста укажите свою локацию, чтобы народ понимал что советовать.

За эквивалент 20-30 евро покупается плата STM32F4 Discovery, имеющая на борту весьма мощный процессор, программатор-отладчик и вполне качественный аудио ЦАП и микрофон. Ставится среда разработки CooCox, бесплатная и простая в использовании для новичков. Документации и примеров - вагон. И пожалуйста, перебросьте этот вопрос в раздел "Микроконтроллеры", он здесь неуместен.


Визардами никто и не пытается заменить мозги, но использовать уже готовые наработки/ библиотеки - правильно и похвально. Вы stdlib тоже будете свою писать?

Нахожусь в городе Кемерово. Насчет отладочных плат - я хочу отдельный программатор, и микроконтроллер, смонтированный на самодельной плате, плата с разнообразными обвесами и встроенным программатором мне не нужна - потом ломай голову как собирать свое устройство

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


Местный
***

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



STM32F4-Discovery это и удобная отладочная плата, и фирменный программатор-отладчик (внешние мк подцепляются 4 проводками) в одном за смешные деньги. Или вы настолько суровы что изучаете новые МК прямо впаянными в собственную плату? В семействе STM32 совместимость вполне удовлетворительна, и на этой плате можно отладить алгоритмы для процессоров STM32F1-F4, начиная от младших моделей по доллару штука. Продаются они сейчас в каждом лабазе: Чип-и-Дипе, Элитане, и проч. и проч.
То же с АЦП. Определяйтесь с битностью, скоростью и типом интерфейса, потом смотрите сайты онлайн-магазинов у кого есть требуемое.
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение Oct 15 2015, 16:39
Сообщение #9


Профессионал
*****

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



Проект (исходники всего, ключая FPGA) тут: https://188.134.5.254/browser/trunk
Кидайте в личку e-mail, будет доп информация.
Проект на Альтере, 22-х тысячный циклон 4-й и STM32F4/F7
Цитата
Саму ПЛИС и Flash-память,

Я загружаю fpga при старте процессора - знаете, очень удобно в эксплуатации...

https://cloud.mail.ru/public/C4Hy/3Aqha9fcR

Сообщение отредактировал Genadi Zawidowski - Oct 15 2015, 16:41
Go to the top of the page
 
+Quote Post
Aleksandr Vihore...
сообщение Oct 15 2015, 16:44
Сообщение #10


Участник
*

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



Цитата(Genadi Zawidowski @ Oct 15 2015, 17:39) *
Проект (исходники всего, ключая FPGA) тут: https://188.134.5.254/browser/trunk

Ссылка не открывается
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение Oct 15 2015, 16:49
Сообщение #11


Профессионал
*****

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



У меня открывается...




Только FIR сейчая 961

Сообщение отредактировал Genadi Zawidowski - Oct 15 2015, 17:00
Go to the top of the page
 
+Quote Post
qwa
сообщение Oct 15 2015, 17:01
Сообщение #12


Частый гость
**

Группа: Участник
Сообщений: 80
Регистрация: 8-02-15
Из: Санкт-Петербург
Пользователь №: 85 020



Просто любопытно: коэффициенты фильтров вычислять на бумажке планируете?
Go to the top of the page
 
+Quote Post
Aleksandr Vihore...
сообщение Oct 15 2015, 17:12
Сообщение #13


Участник
*

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



Цитата(qwa @ Oct 15 2015, 17:01) *
Просто любопытно: коэффициенты фильтров вычислять на бумажке планируете?

А я вообще про это еще ничего не читал, мне это даже не говорит ни о чем - я же писал, что начал только изучать ПЛИС. Если Матлаб обязательно нужен, то буду использовать Матлаб

Сообщение отредактировал Aleksandr Vihorev - Oct 15 2015, 17:12
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение Oct 15 2015, 17:16
Сообщение #14


Профессионал
*****

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



у когонибудь открывается ссылка?
Судя по сообщениям "в контакте", топикстартер уже год с идеей носится, примерно сколько и я...
Вот чтобыло у меня год назад (почти на синей изоленте собрано, STM32F429+QS1R, я начал с DSP работать три месчца до того):

Сообщение отредактировал Genadi Zawidowski - Oct 15 2015, 17:58
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
qwa
сообщение Oct 15 2015, 17:18
Сообщение #15


Частый гость
**

Группа: Участник
Сообщений: 80
Регистрация: 8-02-15
Из: Санкт-Петербург
Пользователь №: 85 020



Цитата(Genadi Zawidowski @ Oct 15 2015, 20:16) *
у когонибудь открывается ссылка?

Открывается
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение Oct 15 2015, 18:23
Сообщение #16


Профессионал
*****

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



Кто бы присоединился к разработке? Из животрепещущих проблем - разработать FIR фильтр для разрядностей больше чем 32.
to Aleksandr Vihorev: письмо отправил

Сообщение отредактировал Genadi Zawidowski - Oct 15 2015, 18:24
Go to the top of the page
 
+Quote Post
Timmy
сообщение Oct 16 2015, 08:22
Сообщение #17


Знающий
****

Группа: Участник
Сообщений: 835
Регистрация: 9-08-08
Из: Санкт-Петербург
Пользователь №: 39 515



Цитата(Genadi Zawidowski @ Oct 15 2015, 21:23) *
Кто бы присоединился к разработке? Из животрепещущих проблем - разработать FIR фильтр для разрядностей больше чем 32.
to Aleksandr Vihorev: письмо отправил
Интересно, для понадобился такой точный фильтр?
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение Oct 16 2015, 08:30
Сообщение #18


Профессионал
*****

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



Сейчас фильтр со входной разрядностью 32 бита (ограничено используемой IP FIR COMPILER).
1) АРУ сделано за фильтром, приблизительно 90 дБ. Хотелось чуть-чуть больше.
2) хотелось отодвинуть шумы округления подальше. Хоть на 4 разряда.

Для обработки таких данных возможно будет уже использоваться CPU с аппаратной поддержкой 64-bit плавучки. Соответственно, преобразование целочисленных в double будет перенесено в FPGA.

Это "хотелки" не моделировались.
Go to the top of the page
 
+Quote Post
Timmy
сообщение Oct 16 2015, 08:52
Сообщение #19


Знающий
****

Группа: Участник
Сообщений: 835
Регистрация: 9-08-08
Из: Санкт-Петербург
Пользователь №: 39 515



Цитата(Genadi Zawidowski @ Oct 16 2015, 11:30) *
Сейчас фильтр со входной разрядностью 32 бита (ограничено используемой IP FIR COMPILER).
1) АРУ сделано за фильтром, приблизительно 90 дБ. Хотелось чуть-чуть больше.
2) хотелось отодвинуть шумы округления подальше. Хоть на 4 разряда.

Для обработки таких данных возможно будет уже использоваться CPU с аппаратной поддержкой 64-bit плавучки. Соответственно, преобразование целочисленных в double будет перенесено в FPGA.

Если плясать от входных данных, например, у нас 100МГц АЦП 16 бит. Понизив частоту на CIC звене до 1КГц, мы повысим точность сигнала в sqrt(100000)->330 раз, то есть добавится примерно 8 бит - всего будет 24. 32 бита тут проходят с большим запасом точности.
Go to the top of the page
 
+Quote Post
soldat_shveyk
сообщение Oct 16 2015, 10:11
Сообщение #20


Местный
***

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



Цитата
АРУ сделано за фильтром, приблизительно 90 дБ. Хотелось чуть-чуть больше

Genadi, а какая у Вас полоса пропускания фильтра, который 32 бита и стоит перед АРУ?
Что-то 90 дБ уж очень маленькая цифра, должно быть 110..120 дБ.
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение Oct 16 2015, 10:24
Сообщение #21


Профессионал
*****

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



ФНЧ сформирован в FPGA, меняет полосу от 50 до 6000 герц. При 48 кГц sample rate от CIC и 961 порядке нормально получается частота среза ФНЧ от 100 герц.

Сообщение отредактировал Genadi Zawidowski - Oct 16 2015, 10:27
Go to the top of the page
 
+Quote Post
soldat_shveyk
сообщение Oct 16 2015, 10:53
Сообщение #22


Местный
***

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



Цитата
нормально получается частота среза ФНЧ от 100 герц.

Значит полоса приема для комплексного сигнала будет 200 Гц.
Допустим, у Вас частота дискретизации 100 МГц (кстати, сколько на самом деле?) и АЦП имеет SNR=80 дБ.
Тогда SNR на выходе фильтра будет 80 + 10*Log(50000/0.2) = 134 дБ.
Для такого динамического диапазона будет достаточно (134/6) + 2 = 24 разряда.
Если не хватает 32-х разрядов, значит проблема лежит не там где Вы ее ищите.
Go to the top of the page
 
+Quote Post
soldat_shveyk
сообщение Oct 16 2015, 13:36
Сообщение #23


Местный
***

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



У меня в одном старом приемнике для полосы 3.1 кГц было сделано АРУ на диапазон 111 дБ при отклонении амплитуды на выходе не более чем на 0.2 дБ.
На вход АРУ поступал 26-битный комплексный сигнал. Никаких 32-х бит и тем более float, double не было и в помине.
Go to the top of the page
 
+Quote Post
diwil
сообщение Oct 16 2015, 14:36
Сообщение #24


Местный
***

Группа: Свой
Сообщений: 366
Регистрация: 5-09-06
Из: Санкт-Петербург
Пользователь №: 20 107



Я тоже пробовал и сделал.

НО! дешево _не_ _получится_.

У меня на то, что на картинке ушло сильно больше денег - раз в 10 больше, чем изначально планирует автор.
При этом весь код написан самостоятельно.
И АЦП (2208 известного производителя) куплено за 800рэ.
и изернета нет (ибо автомобильный вариант)

Так что рассчитывать, по моему опыту, надо на примерно $700-800 , при условии, что все получится с первого раза.



Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение Oct 16 2015, 20:54
Сообщение #25


Профессионал
*****

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



АЦП тактируется 122.88 МГц или 100 МГц. CIC на 2560 - до 48 кГц.
Цитата
У меня в одном старом приемнике для полосы 3.1 кГц было сделано АРУ на диапазон 111 дБ при отклонении амплитуды на выходе не более чем на 0.2 дБ.
На вход АРУ поступал 26-битный комплексный сигнал. Никаких 32-х бит и тем более float, double не было и в помине.

Использую два режима АРУ - описанный Вами "плоский" и"спортивный" - с нормированным приращением выходного сигнала на изменение входного - на 10 дБ изменения с антенны - 1 дБ изменения выходного.
В основном канале - спортивный, в дополнительном - плоский. Для АМ - всегда плоский.
Обработка сигнала (перенос на звуковую частоту) делается целочисленными операциями, АРУ использует float.

зы: вот оказыается сколько нас - тех, которые хотят построить трансивер (или приёмник) на ПЛИС!

Вот вопрос - а где я ошибаюсь, пркидывая возможный диапазон регулировки как разность разрядности выхода FIR фильтра и разрядности аудикодека?
И по комплектующим - сейчас использую кодек TLV320AIC23, кто что скажет про NAU8822L (NAU8822A)?

Сообщение отредактировал Genadi Zawidowski - Oct 16 2015, 20:56
Go to the top of the page
 
+Quote Post
One
сообщение Oct 17 2015, 05:53
Сообщение #26


Местный
***

Группа: Свой
Сообщений: 451
Регистрация: 29-01-06
Из: Питер
Пользователь №: 13 728



Цитата(Genadi Zawidowski @ Oct 16 2015, 23:54) *
... вот оказыается сколько нас - тех, которые хотят построить трансивер (или приёмник) на ПЛИС!
...

bb-offtopic.gif а сколько еще только просматривает тему ...
Go to the top of the page
 
+Quote Post
diwil
сообщение Oct 17 2015, 18:03
Сообщение #27


Местный
***

Группа: Свой
Сообщений: 366
Регистрация: 5-09-06
Из: Санкт-Петербург
Пользователь №: 20 107



Цитата(Genadi Zawidowski @ Oct 16 2015, 23:54) *
Вот вопрос - а где я ошибаюсь, пркидывая возможный диапазон регулировки как разность разрядности выхода FIR фильтра и разрядности аудикодека?
И по комплектующим - сейчас использую кодек TLV320AIC23, кто что скажет про NAU8822L (NAU8822A)?


скорее всего в том, что разрядность ЦАП звукового кодека и фильтра не имееют ничего общего.
далее вопрос - с какой целью делать АРу?
облегчить жизнь детектору? ему в цифре легче не станет.
Лучше слышать? тогда АРУ дОлжно быть после детектора, включающего шумодав и воис активити детектор.
Т.е. глубина АРУ может быть любой, но легче в смысле S/N не станет. Главно чтобы слышно было. Т.е. делать продетектированный сигнал в полный размах аудио ЦАПа.

и еще - бит эдак 20и хватит для всего. Не надо думать о 32х. Ибо, даже 24 бита, при макс размахе на входе ацп 2В дадут -182дБм на 50 Ом на 1Гц. дальше, думаю, понятно...

Go to the top of the page
 
+Quote Post
Aleksandr Vihore...
сообщение Oct 17 2015, 22:21
Сообщение #28


Участник
*

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



Цитата(Genadi Zawidowski @ Oct 15 2015, 19:23) *
Кто бы присоединился к разработке? Из животрепещущих проблем - разработать FIR фильтр для разрядностей больше чем 32.
to Aleksandr Vihorev: письмо отправил

Письмо пришло, ссылка тоже открылась. Только я пока еще только разбираюсь в приемах работы с ПЛИС, для меня важен не столько сам радиотракт, сколько разобраться и научиться выполнять на ПЛИС хоть какие-нибудь устройства. Хотя бы низкочастотный сигнальный процессор радиотракта - поэтому стараюсь обходиься без визардов и писать код самостоятельно. Я, правда выбрал Xilinx - приобрел программатор и сами микросхемы

Насколько я понимаю, исходя из поих познаний - разработать модуль на разрядность более 32 - это "собрать"его составляющие - умножители, сумматоры и т.д. из отдельных логических элементов. Я приобрел книгу по VHDL - там примеры разбирались именно в таком ключе. Автор - Бибило. Правда, такое построение громоздко, наверно. Ну и конечно я немного охренел, увидев, что то, что описано в книге отличается от приемов работы в ise, но это, наверно обычное дело. Хотя бы то, что нужно преобразовывать векторы в переменные, а библиотеки для этого по умолчанию подключаются не те. Занятие оказалось трудоемким. Пока нужный ответ в интернете найдешь

Сообщение отредактировал Aleksandr Vihorev - Oct 17 2015, 22:30
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение Oct 17 2015, 22:25
Сообщение #29


Профессионал
*****

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



На мой взгляд, если знаете чего хотите получить от визарда - вполне можно пользоваться.
Хотите писать на VHDL - соединяйте сгенерированные визардами блоки в обрабатывающий тракт.
Да хоть SPI SLAVE напишите... А написание триггера (или сдвигового регистра) из логических элементов просто перегрузит разработчика - это ответ про громоздкость. Тем более что тут триггер это уже существующий базовый элемент.

Сообщение отредактировал Genadi Zawidowski - Oct 17 2015, 22:35
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Oct 17 2015, 22:31
Сообщение #30


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



VHDL и библиотеки - это известный дракон... И он многоглавый, потом еще конфликты между библиотеками пойдут и прочееsm.gif.... как то реально не с того конца вы начали, ну да ладно... все же лучше чем водку питьwink.gif
Go to the top of the page
 
+Quote Post
Aleksandr Vihore...
сообщение Oct 17 2015, 22:40
Сообщение #31


Участник
*

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



Цитата(Golikov A. @ Oct 17 2015, 22:31) *
VHDL и библиотеки - это известный дракон... И он многоглавый, потом еще конфликты между библиотеками пойдут и прочееsm.gif.... как то реально не с того конца вы начали, ну да ладно... все же лучше чем водку питьwink.gif

Почему не с того конца? Я нашел формулы итераций CORDIC, промоделировал его в Exel, начал писать код модуля в VHDL и появились вопросы, как преобразовать integer в вектор и наоборот, на поиски ответа на которые я потратил много времени и моих экспериментов. Была бы литература именно по теме построения радиотрактов - было бы легче. С чего начинать-то тогда? Светодиодами я уже помигал

Сообщение отредактировал Aleksandr Vihorev - Oct 17 2015, 22:42
Go to the top of the page
 
+Quote Post
soldat_shveyk
сообщение Oct 18 2015, 18:01
Сообщение #32


Местный
***

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



Цитата
Вот вопрос - а где я ошибаюсь, пркидывая возможный диапазон регулировки как разность разрядности выхода FIR фильтра и разрядности аудикодека?


Если не вдаваться в тонкости, то АРУ нужна чтобы любой сигнал на входе приемника привести к номинальной громкости.
Минимально возможный сигнал - это уровень собственного шума приемника в полосе выбранного фильтра.
Для слухового приема в полосе 3.1 кГц, если АЦП 122.8 МГц дает SNR 80 дБ, то уровень собственного шума будет
-80-10Log(61400/3.1) = -123 дБ. Значит для режима 3.1 кГц потребуется усиление не больше 123 дБ.
Разрядность и тип кодека значение не имеет. Будет нормально работать и на 12 битах.
Разрядность АЦП/ЦАП кодека больше 16 бит явно избыточна для этой задачи.

Геннадий, а в чем "фишка" спортивного АРУ по сравнению с "плоской"?
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение Oct 18 2015, 19:01
Сообщение #33


Профессионал
*****

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



Для радиолюбительского приёма не "плоское" АРУ считаетсяя предпочтительным.
Попытаюсь объяснить тем, что меньше меняется фоновый шум эфира - так как усиление меняется на меньшие значения - меньше утомляет оператора,
при необходимости можно оценить мощность сигнала на слух (и именно по сигналу, а не по степени пропадания шумов или по показаниям индикатора).
Всё сказанное - про телеграф (амплитрудная манипуляция) и однополосную модуляцию. В AM АРУ плоское, а для ЧМ вычисления делаются над квадратурами после FIR без какого-либо нормирования. И в BPSK тоже...

Сообщение отредактировал Genadi Zawidowski - Oct 18 2015, 19:15
Go to the top of the page
 
+Quote Post
dm.pogrebnoy
сообщение Oct 18 2015, 19:11
Сообщение #34


Знающий
****

Группа: Свой
Сообщений: 747
Регистрация: 11-04-07
Пользователь №: 26 933



Цитата(Aleksandr Vihorev @ Oct 18 2015, 01:40) *
появились вопросы, как преобразовать integer в вектор и наоборот, .


Оставлю эту ссылку здесь. https://www.doulos.com/knowhow/vhdl_designe...de/numeric_std/
Может кому-нибудь пригодится.


--------------------
Go to the top of the page
 
+Quote Post
Шаманъ
сообщение Oct 20 2015, 09:08
Сообщение #35


Знающий
****

Группа: Участник
Сообщений: 758
Регистрация: 27-08-08
Пользователь №: 39 839



Цитата(Genadi Zawidowski @ Oct 16 2015, 11:30) *
Сейчас фильтр со входной разрядностью 32 бита (ограничено используемой IP FIR COMPILER).
1) АРУ сделано за фильтром, приблизительно 90 дБ. Хотелось чуть-чуть больше.
2) хотелось отодвинуть шумы округления подальше. Хоть на 4 разряда.


У меня коэффициенты 24бита, данные 48бит, диапазон АРУ более 130дБ. Правда это не на ПЛИС и не с DDC, но разницы применительно к данному вопросу не вижу. 24бита для наших применений было однозначно мало, 32 по идее должно хватать. У меня выбор был 24 или 48, т.к. процессор 24битный.

Цитата(Genadi Zawidowski @ Oct 16 2015, 13:24) *
ФНЧ сформирован в FPGA, меняет полосу от 50 до 6000 герц. При 48 кГц sample rate от CIC и 961 порядке нормально получается частота среза ФНЧ от 100 герц.

А почему не хотите сделать фильтрацию на более низкой частоте дискретизации? При такой структурной схеме вообще логично по мере сужения полосы понижать частоту дискретизации. У меня на 12кГц и 50Гц с красивой АЧХ получается.
Go to the top of the page
 
+Quote Post
~Elrond~
сообщение Oct 20 2015, 15:58
Сообщение #36


Частый гость
**

Группа: Свой
Сообщений: 100
Регистрация: 20-04-12
Из: Нижний Новгород
Пользователь №: 71 488



У нас в КВ-радиостанции используется 16-битная АЦП на тактовой 80 МГц. Написанный мной (к слову, вообще без применения всяких корегенераторов) в ПЛИС DDC имеет следующие ступени:
1) HPF(high-pass filter) - удаляет постоянку. На выходе 18 бит.
2) Генератор комплексной синусоиды на основе LUT+коррекция разложением в ряд Тейлора 1 порядка (теория подробно описана у xilinx). SFDR 112dB, выход 18 бит. CORDIC в этом месте не рекомендую, так как его конвейерная реализация для достижения аналогичного SFDR потребует примерно в 20 раз больше логических ячеек. Мой вариант на cyclone III занимает 180 ячеек, 3 умножителя 18х18 и один блок памяти.
3) Перенос на нулевую частоту. Результат комплексного умножения обрезается с 36 до 24 бит.
4) CIC 6 ступеней, понижает частоту дискретизации в 125 раз до 640 кГц. Вход 24-битный, выход 32. CIC изначально генерился из матлаба, потом я его переписал в виде красивого параметризованного модуля.
Вся дальнейшая обработка только в 32-битной разрядности.
5) Полифазный FIR дециматор x3/10 240 порядка. Понижает частоту дискретизации до 192 кГц. Полоса +-60 кГц. Вам столько вряд ли понадобится, но нам нужно для линеаризации усилителя. sm.gif Кстати сказать, этот модуль я на форуме выкладывал. Он имеет кучу параметров, поэтому я его применяю повсеместно, циферки только при инстанциировании меняю. Единственное что - он написан на SystemVerilog с использованием почти всех его новых-удобных фишек. sm.gif
6) FIR дециматор /4 100-го порядка. Понижает частоту дискретизации до 48 кГц. Полоса +-20 кГц. Вам опять же вряд ли понадобится многоканальность, поэтому тоже так много ни к чему.
7) "Расканаливание" на 4 канала.
8) 4-хканальный FIR дециматор /5. 90-го порядка. Понижает частоту дискретизации до 9.6 кГц.
9) 4-хканальный FIR селектор до 128-го порядка. Вырезает нужную полосу.
Дальше проц Blackfin забирает 32-битные данные каналов из ПЛИС, пропускает через АРУ (она сделана во float), и преобразует в fract_16.
Чувствительность приёмника в итоге получилась на уровне ~100 нановольт.

Передающий тракт в ПЛИС такой же, только наоборот. Ну, плюс авторегулировка мощности с линеаризацией на основе алгоритма NLMS. Как-то так. sm.gif
ЗЫ: крайне рекомендую бросить VHDL и изучать SystemVerilog.
Go to the top of the page
 
+Quote Post
diwil
сообщение Oct 20 2015, 17:34
Сообщение #37


Местный
***

Группа: Свой
Сообщений: 366
Регистрация: 5-09-06
Из: Санкт-Петербург
Пользователь №: 20 107



Цитата(~Elrond~ @ Oct 20 2015, 18:58) *
У нас в КВ-радиостанции используется 16-битная АЦП на тактовой 80 МГц. Написанный мной (к слову, вообще без применения всяких корегенераторов) в ПЛИС DDC имеет следующие ступени:
1) HPF(high-pass filter) - удаляет постоянку. На выходе 18 бит.
2) Генератор комплексной синусоиды на основе LUT+коррекция разложением в ряд Тейлора 1 порядка (теория подробно описана у xilinx). SFDR 112dB, выход 18 бит. CORDIC в этом месте не рекомендую, так как его конвейерная реализация для достижения аналогичного SFDR потребует примерно в 20 раз больше логических ячеек. Мой вариант на cyclone III занимает 180 ячеек, 3 умножителя 18х18 и один блок памяти.
3) Перенос на нулевую частоту. Результат комплексного умножения обрезается с 36 до 24 бит.
4) CIC 6 ступеней, понижает частоту дискретизации в 125 раз до 640 кГц. Вход 24-битный, выход 32. CIC изначально генерился из матлаба, потом я его переписал в виде красивого параметризованного модуля.
Вся дальнейшая обработка только в 32-битной разрядности.
5) Полифазный FIR дециматор x3/10 240 порядка. Понижает частоту дискретизации до 192 кГц. Полоса +-60 кГц. Вам столько вряд ли понадобится, но нам нужно для линеаризации усилителя. sm.gif Кстати сказать, этот модуль я на форуме выкладывал. Он имеет кучу параметров, поэтому я его применяю повсеместно, циферки только при инстанциировании меняю. Единственное что - он написан на SystemVerilog с использованием почти всех его новых-удобных фишек. sm.gif
6) FIR дециматор /4 100-го порядка. Понижает частоту дискретизации до 48 кГц. Полоса +-20 кГц. Вам опять же вряд ли понадобится многоканальность, поэтому тоже так много ни к чему.
7) "Расканаливание" на 4 канала.
8) 4-хканальный FIR дециматор /5. 90-го порядка. Понижает частоту дискретизации до 9.6 кГц.
9) 4-хканальный FIR селектор до 128-го порядка. Вырезает нужную полосу.
Дальше проц Blackfin забирает 32-битные данные каналов из ПЛИС, пропускает через АРУ (она сделана во float), и преобразует в fract_16.
Чувствительность приёмника в итоге получилась на уровне ~100 нановольт.

Передающий тракт в ПЛИС такой же, только наоборот. Ну, плюс авторегулировка мощности с линеаризацией на основе алгоритма NLMS. Как-то так. sm.gif
ЗЫ: крайне рекомендую бросить VHDL и изучать SystemVerilog.


Я прошу прощения за вопросы, но мне интересно...

1. Нафига убирать DC на входе, если смеситель и так ее уберет?
2. По скольки точкам надо делать интерполяцию и какой степени, чтобы получить -118дБ SFDR ? Каков размер LUT?
3. Что делать с оставшимися 8ю битами в которых шум? (у меня в спектре сигнала, при наличии избыточных битов, появляется "забор", который смещает выход)
4. Что делать с 5ю битами в которых тоже непонатно какой шум? (125 раз это ~21дБ, значит реально вылезут только 3.5 информативных бита)
5. Что делать с 32я битами если:
допустим что макс размах сигнала на входе АЦП 2.25В. тогда в полосе 500Гц будет -147дБм шума, а диапазон, ограниченный шумом тогда 147+11 = 158 дБ полного размаха. А это 26 бит. Если надо слушать голос, то полоса +- 3-4кГц, а это уменьшит диапазон на 14дБ до 142дБ, а это получится 23 бита. Кстати, если сначала отфильтровать по 4кГц, а потом накапливать (для CW я полагаю), то это даже лучше чем фильтр.
6-9. ...


Спрашиваю, ибо у меня чудеса творятся... типа шума меньше, чем должно быть...


Go to the top of the page
 
+Quote Post
Шаманъ
сообщение Oct 20 2015, 18:19
Сообщение #38


Знающий
****

Группа: Участник
Сообщений: 758
Регистрация: 27-08-08
Пользователь №: 39 839



Цитата(diwil @ Oct 20 2015, 20:34) *
2. По скольки точкам надо делать интерполяцию и какой степени, чтобы получить -118дБ SFDR ? Каков размер LUT?

Это наверное тот же алгоритм, которым я генерирую cos/sin (правда в DSP а не FPGA, но какая разница). Я использую первые три члена ряда, в итоге получается так:

sin(X+x)=sin(X)+cos(X)*x-sin(X)*x*x/2=sin(X)+x*(cos(X)-x*sin(X)/2)
cos(X+x)=cos(X)-sin(X)*x-cos(X)*x*x/2=cos(X)-x*(sin(X)+x*cos(X)/2)

sin(X) и cos(X) это табличные значения, остальное думаю понятно.

Если таблица на 256 значений, то макс. ошибку можно оценить так:
Код
          (PI/256.0)^3
R(3) < ---------------- = 3.08E-7
               3!

Go to the top of the page
 
+Quote Post
diwil
сообщение Oct 20 2015, 19:28
Сообщение #39


Местный
***

Группа: Свой
Сообщений: 366
Регистрация: 5-09-06
Из: Санкт-Петербург
Пользователь №: 20 107



Цитата(Шаманъ @ Oct 20 2015, 21:19) *
Это наверное тот же алгоритм, которым я генерирую cos/sin (правда в DSP а не FPGA, но какая разница). Я использую первые три члена ряда, в итоге получается так:

sin(X+x)=sin(X)+cos(X)*x-sin(X)*x*x/2=sin(X)+x*(cos(X)-x*sin(X)/2)
cos(X+x)=cos(X)-sin(X)*x-cos(X)*x*x/2=cos(X)-x*(sin(X)+x*cos(X)/2)

sin(X) и cos(X) это табличные значения, остальное думаю понятно.

Если таблица на 256 значений, то макс. ошибку можно оценить так:
Код
          (PI/256.0)^3
R(3) < ---------------- = 3.08E-7
               3!


эээ... насколько я понимаю в этом случае разрядность sin/cos должна быть сравнима с разрядностью X+x.
т.е. если, скажем аккумулятор 28 бит, sin/cos должен быть тоже около того, чтобы был эффект.

конвеерная реализация чой-то в голову тоже пока не лезет...

в любом случае спасибо. буду пробовать.
Go to the top of the page
 
+Quote Post
~Elrond~
сообщение Oct 20 2015, 19:28
Сообщение #40


Частый гость
**

Группа: Свой
Сообщений: 100
Регистрация: 20-04-12
Из: Нижний Новгород
Пользователь №: 71 488



Шаманъ
Нет, таблица на 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+ бит.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Oct 20 2015, 19:34
Сообщение #41


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



Я ошибаюсь или разложения в ряд Тейлора предполагает точку в окрестности которой мы имеем разложение, и один и тот же ряд зашарашить на весь диапазон не совсем корректно.
Мне больше понравилась идея с 2 таблицами, то есть четверть периода представляют кусочно линейной функцией ki*x(i) + bi, а в таблицах хранят коэффициенты к и b
Go to the top of the page
 
+Quote Post
~Elrond~
сообщение Oct 20 2015, 19:38
Сообщение #42


Частый гость
**

Группа: Свой
Сообщений: 100
Регистрация: 20-04-12
Из: Нижний Новгород
Пользователь №: 71 488



Golikov A.
Цитата
Я ошибаюсь или разложения в ряд Тейлора предполагает точку в окрестности которой мы имеем разложение
Точка определяется старшими битами аккумулятора фазы (в моём случае 11-ю). В таблице хранится четверть круга. А вторая таблица вам зачем, если суть метода как раз и заключается в уточнении табличных значений вычисленными членами ряда Тейлора?
Go to the top of the page
 
+Quote Post
Шаманъ
сообщение Oct 20 2015, 19:55
Сообщение #43


Знающий
****

Группа: Участник
Сообщений: 758
Регистрация: 27-08-08
Пользователь №: 39 839



Цитата(~Elrond~ @ Oct 20 2015, 22:28) *
Шаманъ
Нет, таблица на 512 значений, и содержится в ней четверть круга [0..pi/2].

Так я просто привел пример реализации такого же алгоритма. Мне удобнее было сделать с теми размерами таблицы, как я описал (но с бОльшим числом членов ряда), но это ж все от железа зависит, но алгоритм одинаковый, и работает он очень хорошо. sm.gif

Сообщение отредактировал Шаманъ - Oct 20 2015, 19:57
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Oct 20 2015, 19:58
Сообщение #44


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



Цитата
Точка определяется старшими битами аккумулятора фазы

это понятно, но только ряд вблизи 0 и ряд вдали от 0 по разному выглядят, нельзя одинаковое действие совершать для разных точек. Если у вас нет 2 таблицы с разными коэффициентами перед Х то это либо не тейлоровское уточнение либо я чего-то не понимаю....

Цитата
А вторая таблица вам зачем, если суть метода как раз и заключается в уточнении табличных значений вычисленными членами ряда Тейлора

ну собственно я говорил не про ряд тейлора,

стандартный табличный метод

sin(x) = Table1(x); из таблицы выбирается точка по координате для 10 битного Х нужна таблица на 256 значений (четверть круга)
теперь мы берем 16 битный x, 2 бита уйдут на определение четверти и остается 14 бит, так что получается нужна таблица на 16К ячеек, вместо этого можно сделать так
заводим 2 таблицы по 256 значений. Оставшиеся 14 бит мы делим на 8 старших и 6 младших. по 8 старшим из таблицы выбираем к и b, собственно b - это наша первая таблица,
а k - это коэффициент наклона между b(i) и b(i+1). И считаем sin(x) = Table1(XH) + Table2(XH)*XL/(2^6), естественно деление на 2 в 6 надо уже в таблице сохранить, чтобы надо было только умножить на XL.

Что-то мне говорит что вы делаете тоже самое, только называете это тейлоровским уточнением%)
Go to the top of the page
 
+Quote Post
diwil
сообщение Oct 20 2015, 20:10
Сообщение #45


Местный
***

Группа: Свой
Сообщений: 366
Регистрация: 5-09-06
Из: Санкт-Петербург
Пользователь №: 20 107



Цитата(~Elrond~ @ Oct 20 2015, 22:28) *
Шаманъ
Нет, таблица на 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
У нас нет аналогового смесителя, сигнал на несущей частоте подаётся на АЦП.Написал выше. У меня 112 dB, но этого вполне достаточно. Очень просто конвейеризуется, всего 4 ступени.
В дальнейших вопросы не понял, какие "лишние" биты вы имеете ввиду. У CIC-фильтра огромный коэффициент усиления, там на выходе, если его не обрезать, получается вообще 60+ бит.


мне казалось, что перенос на нулевую частоту и есть смеситель...

... усиление это да... это хорошо...

в любом случае спасибо. буду пробовать.
Go to the top of the page
 
+Quote Post
~Elrond~
сообщение Oct 21 2015, 13:33
Сообщение #46


Частый гость
**

Группа: Свой
Сообщений: 100
Регистрация: 20-04-12
Из: Нижний Новгород
Пользователь №: 71 488



Ради интереса сделал генератор с применением ряда Тейлора 2 порядка. Результаты по сравнению с 1 порядком:
1) Выигрыш по SFDR 20 дБ (132 против 112).
2) По занимаемым LUT - в 2.5 раза больше.
3) По занимаемой памяти - в 2 раза больше.
4) По умножителям - в 3.3 раза больше.
По-моему, для большинства случаев оно того не стоит. И если занимаемую память можно сократить в 2 раза (уменьшив таблицу), то с остальным ничего не поделать.
Go to the top of the page
 
+Quote Post
Шаманъ
сообщение Oct 21 2015, 14:35
Сообщение #47


Знающий
****

Группа: Участник
Сообщений: 758
Регистрация: 27-08-08
Пользователь №: 39 839



Цитата(~Elrond~ @ Oct 21 2015, 16:33) *
Ради интереса сделал генератор с применением ряда Тейлора 2 порядка. Результаты по сравнению с 1 порядком:
1) Выигрыш по SFDR 20 дБ (132 против 112).
2) По занимаемым LUT - в 2.5 раза больше.
3) По занимаемой памяти - в 2 раза больше.
4) По умножителям - в 3.3 раза больше.
По-моему, для большинства случаев оно того не стоит. И если занимаемую память можно сократить в 2 раза (уменьшив таблицу), то с остальным ничего не поделать.

А таблица какого размера была?
Go to the top of the page
 
+Quote Post
~Elrond~
сообщение Oct 21 2015, 15:51
Сообщение #48


Частый гость
**

Группа: Свой
Сообщений: 100
Регистрация: 20-04-12
Из: Нижний Новгород
Пользователь №: 71 488



Для 1 порядка - 512х18бит.
Для 2 порядка - 512х32бит.
В таблице четверть круга.

Уменьшил таблицу в 2 раза - потерял 18 дБ (на 2 порядке).
Go to the top of the page
 
+Quote Post
Шаманъ
сообщение Oct 21 2015, 19:27
Сообщение #49


Знающий
****

Группа: Участник
Сообщений: 758
Регистрация: 27-08-08
Пользователь №: 39 839



Цитата(~Elrond~ @ Oct 21 2015, 18:51) *
Уменьшил таблицу в 2 раза - потерял 18 дБ (на 2 порядке).

18дБ ожидаемо (там будет кубическая зависимость от размера таблицы), мне не понятно почему SFDR такой маленький у Вас выходит. Ведь имея таблицу в 1024элемента на 180градусов, максимальная ошибка вычислений не должна превысить:

(pi/1024)^3/3! = 4.81e-9
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение Oct 22 2015, 11:20
Сообщение #50


Профессионал
*****

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



По совету присутствующего тут коллеги поигрался с разрядностями:
Оригинальная структура:
Сигнал 16 бит множится на 17 бит выход NCO, затем младшие 32 бита идут на CIC - выход которого (32 бит) на FIR.
Была попытка усечь на 10 бит вход CIC (ещё отбросить младшие 10 бит после умножения), с соответствующим изменением параметров данного блока в megawizard) - появилась постоянная составляющая на выходе CIC (где-то на -60 дБ от full scale, значение приблизительное).

Сообщение отредактировал Genadi Zawidowski - Oct 22 2015, 11:23
Go to the top of the page
 
+Quote Post
Timmy
сообщение Oct 22 2015, 12:16
Сообщение #51


Знающий
****

Группа: Участник
Сообщений: 835
Регистрация: 9-08-08
Из: Санкт-Петербург
Пользователь №: 39 515



Цитата(Genadi Zawidowski @ Oct 22 2015, 14:20) *
По совету присутствующего тут коллеги поигрался с разрядностями:
Оригинальная структура:
Сигнал 16 бит множится на 17 бит выход NCO, затем младшие 32 бита идут на CIC - выход которого (32 бит) на FIR.
Была попытка усечь на 10 бит вход CIC (ещё отбросить младшие 10 бит после умножения), с соответствующим изменением параметров данного блока в megawizard) - появилась постоянная составляющая на выходе CIC (где-то на -60 дБ от full scale, значение приблизительное).

Из-за отсечения действительно должно создаваться смещение, хотя -60dB мне кажется многовато. Чтобы смещения не было, и обеспечить максимальную разрядность, можно использовать отсечение или округление с переносом всей ошибки в следующий такт и сложением с ошибкой из предыдущего такта. Типа дельта-сигма модуляции первого порядка.
Go to the top of the page
 
+Quote Post
vovanse
сообщение Oct 22 2015, 12:59
Сообщение #52


Частый гость
**

Группа: Свой
Сообщений: 185
Регистрация: 14-02-06
Из: Кемерово
Пользователь №: 14 293



Цитата(Aleksandr Vihorev @ Oct 15 2015, 15:01) *
Где можно недорого приобрести
....
Нахожусь в г. Кемерово.


На счет недорого не знаю, но в Кемерово мало мест, где можно хоть что-то купить. Вот одно из них. http://eltompro.ru/ Могут привести под заказ. Сами берем все через Томск или Новосибирск, там масса фирмочек которые привезут все что угодно. Ну и интернет магазины.
Go to the top of the page
 
+Quote Post
~Elrond~
сообщение Oct 22 2015, 16:18
Сообщение #53


Частый гость
**

Группа: Свой
Сообщений: 100
Регистрация: 20-04-12
Из: Нижний Новгород
Пользователь №: 71 488



Цитата
появилась постоянная составляющая на выходе CIC (где-то на -60 дБ от full scale, значение приблизительное).
Нельзя просто так взять и отсечь младшие разряды. Нужно к результату усечения прибавить значение старшего (знакового) разряда.
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение Oct 22 2015, 16:50
Сообщение #54


Профессионал
*****

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



Значение старшего из отюрасываемых?
Go to the top of the page
 
+Quote Post
Aleksandr Vihore...
сообщение Oct 23 2015, 12:02
Сообщение #55


Участник
*

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



А какую разрядность лучше выбрать для фазы? Можно ведь выбрать большую разрядность и для итераций CORDIC понадобиться много ресурсов. Аможно для четверти круга выбрать небольшую разрядность, но выполнить модуль по подсчету количества колебаний - и ошибка в опеределении текущей фазы будет сводиться к минимуму по мере отработки большого количества циклов. Как выбрать оптимальную разрядность?
Go to the top of the page
 
+Quote Post
rolin
сообщение Sep 28 2016, 12:04
Сообщение #56


Участник
*

Группа: Участник
Сообщений: 36
Регистрация: 31-01-09
Пользователь №: 44 224



Кто-нибудь может поделиться кодом АРУ на verilog , ну или в крайнем случае VHDL ?

Умаялся я уже с этим AGC.....
Go to the top of the page
 
+Quote Post
rolin
сообщение Sep 28 2016, 16:46
Сообщение #57


Участник
*

Группа: Участник
Сообщений: 36
Регистрация: 31-01-09
Пользователь №: 44 224



Вот, га что меня хватило....
Работает только на увеличение усиления, стабилизации нет, на уменьшение не работает. Что-то я не понимаю, видимо

Код
    //  AGC
    reg [23:0] agc_control = 24'd0; // 83888608
   wire [23:0] max_gain = 23'd8000000 - step_up;
    wire [23:0] min_gain = 23'd1 + step_dwn;
    wire [23:0] step_up = 23'd56000; // 1 sec
    wire [23:0] step_dwn = 16'd560;  // 10 msec
    wire [23:0] gate = 24'd8000000;
    
    
    wire signed [47:0] mult_out;
   mult_24Sx24S_w agc_mult(det_out, agc_control, mult_out);
    wire signed [23:0] agc_mult_out = mult_out[35:12];
        

   reg [5:0] state = 0;
    wire [23:0] mod = agc_mult_out[23] ? ~agc_mult_out : agc_mult_out;
   always @(posedge clock)
    begin
       case (state)
        0: if(det_out_strobe) state <= state + 1'd1;
        1,2,3 : state <= state + 1'd1;
        4: begin
              if(mod > gate) if(agc_control > min_gain) agc_control <= agc_control - step_dwn;
             if(mod < gate) if(agc_control < max_gain) agc_control <= agc_control + step_up;  
                state <= state + 1'd1;
            end
       5,6,7: state <= state + 1'd1;
       8: begin agc_out <= agc_mult_out; agc_out_strobe <= 1; state <= state + 1'd1; end
       9: begin agc_out_strobe <= 0; state <= 1'd0; end    
        default: state <= 1'd0;
        endcase
      

    end
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 19th July 2025 - 22:00
Рейтинг@Mail.ru


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