?

Log in

No account? Create an account
balmerdx
18 August 2019 @ 07:14 pm
Резисторы, конденсаторы и индуктивности типоразмера 0402 я уже называю "цифровым песком". На фото песчинки из стандартного мытого песка, который используется для производства бетона. Собственно говоря 0402 не самые мелкие двухвыводные детали (есть еще 0201). Но все равно паять их трудновато. Точнее паять их не сложно, но вот мазать площадки пастой под эти выводы без специальной маски сложновато.
 
 
balmerdx
14 August 2019 @ 11:34 pm
Дописал FFT на 1024 сэмпла до разумного состояния.
Что получилось.
Для констант sin/cos используется 36-битная память.
Сейчас FFT использует 54-х битную память для промежуточных результатов. Память двухпортовая, которая умеет за 1 такт писать в себя 54 бита и в этот-же такт читать 54 бита. 54 бита это комплексное число, т.е. два fixed point значения по 27 бит.

Butterfly естественно многостадийная. Скорость его ограниченна скоростью чтения и записи в память. Чтобы получить 2 complex числа - необходимо 2 такта процессора. Вот такая скорость и получается. Он 2 такта читает данные и одновременно в эти 2 такта пишет данные, посчитанные для предыдущего butterfly. Т.е. получается конвеер на 4 стадии.

Занимает FFT 923 логических ячейки, 73728 бита памяти и 8 умножителей 9х9.
1024 точки обсчитывает за 10311 такта.
Запускал пока на частоте 80 МГц. Работает с хорошим запасом, до 120 МГц точно должно работать.
Если захочется большей частоты, то придется умножение дробить на две стадии. Не уверен, что буду делать, скорости и так хватает.
 
 
 
balmerdx
Взбаламутил меня тут один знакомый. История такая - дней сорок назад проходил конкурс для детей по легомашинкам. Кто-кого столкнет, тот и выиграл. Обычные машинки на радиоуправлении. И тут один из людей понимающих в электронике говорит, а почему машинки только из Лего? Почему нельзя из чего угодно делать? Удивительно, но организаторы согласились. Было это за неделю до конкурса. Меня эта тема тоже заинтересовала. Правда глянул дома - ничего нет для того, чтобы автомобильчик на радиоуправлении сделать. Так что пришлось заказывать в Китае и ждааать.



Основные детали пришли. Слева-сверху - силовая плата для автомобиля. Справа-сверху - плата для пульта дистанционного управления. Снизу-слева - аккумулятор для квадрокоптера, чтобы ток в 5 Ампер выдерживал. Снизу-справа - колёса, на которых будет это все передвигаться.
 
 
balmerdx
Начался несколько дней назад открытый бетта тест нашей ММО РПГ Skylore.
Стабильность клиента радует:
 
 
 
balmerdx
02 August 2019 @ 09:25 pm
Надо мне для обработки сигнала быстрое преобразование Фурье (FFT). Сигнал не так чтобы сильно быстрый, но и не медленный 4 MSPS 2 канала. Естественно обрабатываю на FPGA (Cyclone IV EP4CE10). Так вот, суммарно нужно 3 преобразования Фурье на 1024 точки. Я как новичок, нифига в этой теме не понимающий думаю - в Quartus в IP Catalog есть FFT. Попробовал, хрена с два! Оно сожрало все LUT, все умножители и сказало МАЛО! Попробовал fft generator который может на Verilog разные варианты генерировать. Побыстрее, помедленнее. Пробовал разные настройки. Впринципе оно может упихать одно FFT на 1024 точки, но при этом отожрать 8000 LE и все умножители. А нам нужно три штуки и минимум 3000 LE на другую логику. Причем скорость особо не важна, потому как Cyclone IV работает у меня на частоте 180 МГц. Это частота на которой мне более-менее комфортно писать, не утыкаясь в лимит скорости. Так вот 180 МГц/4 MSPS = 45 тактов на сэмпл. Т.е. времени дофига.

Что ж, придется писать свою реализацию FFT. И таки мир FPGA отличается от мира процессоров в тонкостях оптимизации. Например умножитель у меня будет 27x18 бит (это получается 4 Hardware 9-bit multiplier). Внутреннее представление comlex числа будет 27*2 = 54 бита. Если нацеливаться на 1 butterfly за 2 такта (1 такт чтения из памяти и 1 такт записи), то память надо делать двухпортовую, каждый порт по 54 бита. Писать еще на Verilog не начал, но уже прикидываю, что такая комбинация должна занять менее 1000 LE, а сам butterfly должен уместиться 5-7 stages на один butterfly (это время от начала отсылки запроса в память до записи результата в память). 9-bit multiplier надо постараться использовать только 8 штук.

Посмотрим, насколько реальность будет соответствовать изначальному представлению.
 
 
 
balmerdx
26 July 2019 @ 10:54 pm
В предыдущем посте написал, какие современные аккумуляторы мелкие и емкие. На что в комментариях усомнились в этом факте. Что ж, решил измерить. Самому интересно глянуть на результат.


Кстати фотка не отражает, насколько один аккумулятор больше по объему другого. Кроме ширины и высоты есть еще и толщина. 260 мА-ч толщиной 8 мм. 180 мА-ч толщиной 3.8 мм.

Разряжал через резистор 93.1 Ом (это два последовательно соединенных резистора по 47 Ом). Т.е. начальный ток был порядка 45 ма, а потом плавно спадал с падением напряжения. Напряжение, когда считал, что аккумулятор разряжен выбрал 3.5 Вольта.

Синий график - падение напряжение в зависимости от времени для аккумулятора 260 мА-ч.
Оранжевый график - падения напряжения для аккумулятора 180 мА-ч.

Фактическая емкость для номинала 260 мА-ч получилась 392 мА-ч. (Что отлично.)
Фактическая емкость для номинала 180 мА-ч получилась 47 мА-ч. (Что выглядит как прямой обман.)
 
 
 
balmerdx
24 July 2019 @ 10:23 pm
Говорите прогресса нет в аккумуляторах? За пять лет ничего не изменилось?
Я так не считаю. Слева - батарейка CR2032 емкостью 200 мА-ч, но как мы знаем с отвратительно низкой нагрузочной способностью. Сверху LiIon аккумулятор на 260 мА-ч купленный три года назад. Снизу LiPo аккумулятор на 180 мА-ч, добравшийся до меня сегодня. Он такой легкий и миниатюрный, что я чуть не потерял его у себя в кармане.

 
 
balmerdx
Тут сын разобрал пульт управления старый, ненужный.
Я по простоте душевной думал, что антенна там, где синий колпачок для антенны. Но оказалось, что это совсем не так.


И что забавно - антенна расположена не совсем там, где написанно ANT2.

Вот так как мне кажется расположена антенна на этом пульте...Collapse )
 
 
 
balmerdx
Снял характеристики I/Q каналов в своем SDR приемном тракте.
Как всегда все хуже, чем задумывалось...Collapse )
 
 
balmerdx
Долго ленился писать код для этой железки. Но недели три назад взял себя в руки и начал потихоньку писать код.
Код писать надо на System Verilog и С++.


И вот что получаться начало...Collapse )