Category: музыка

Category was added automatically. Read all entries about "музыка".

slow loris

Dragostea din tei

Есть такая молдавская группа O-Zone, со страшно популярной песней Dragostea din tei, более известной как Numa Numa:



Не так давно эту песню стали использовать в рекламе одного популярного интернет-магазина. Догадаетесь с одного раза, что же за магазин такой взял композицию от O-Zone?

Collapse )
Owl

Огари, огарята и девушки с волынкой

Продолжает мне позировать. Сейчас особенно разговорился. Мне кажется, или он на особенно громкие автомобили реагирует, оборачивается, покрикивает, а если совсем страшно - перелетает на другое место.


А может, он на шухере стоит, потому как внизу выгуливают огарят:


Collapse )
led

Доработка "студийного освещения" и новое видео от брата

Когда только началось веселье с самоизоляцией, практически собрал "студийное освещение" брату для записи на ютуб (раз, два, три)

Даже одну видюшку брат записал уже с новым освещением: https://nabbla1.livejournal.com/289403.html

А теперь вот и ещё одно:


Тем временем, я наконец-то добрался до фрезера, и прорезал пазы в светильниках, чтобы туда вставить матовое оргстекло как положено:


Вот самая подходящая фреза оказалась:


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

По функциональности ничего не изменилось, и раньше работало, но оргстекло примотанное скотчем это было явное некомильфо :) Теперь бы ещё кромочную ленту откопать правильного цвета и заклеить торцы, но это подождёт. Вообще, не будь короновируса - я бы просто сходил тогда купил новую ДСПшку, чтобы побольше было обработанных кромок. Но вместо этого распотрошил ножки от старого письменного стола, а там они основательно на этих кромках сэкономили - только спереди! Ну да ладно, работает - и хорошо, остальное это ловля блох.
QuatCore

О двунаправленной шине в ПЛИС

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

Также имеется шина адреса, в которой полноправный властитель - это управляющее устройство процессора. Остальные прочитывают адрес и определяют - "о, да это ж я! Надо что ль голос подать!".

Такая организация позволяет очень легко наращивать устройства: просто "сажаем их на шину данных и шину адреса" - и дальше размечаем адресное пространство. Где-то "вручную", где-то на автомате.

В моём QuatCore вроде всё так и есть, да не совсем. К каждому "устройству" подходит 2 "шины данных", одна на чтение, вторая на запись. Шина "на чтение" действительно поступает "параллельно" на все устройства, они все получают одни и те же данные, но реагирует на них лишь одно устройство, чей адрес был выбран на адресной шине. А шина "на запись" на шину не похожа - данные собираются со всех устройств и поступают на мультиплексор с "защёлкой", и уже выход этого мультиплексора превращается в шину на чтение.

Причина тому - отсутствие двунаправленных шин "внутри ПЛИС", практически всех. Когда-то такие были, но затем от них отказались. Точно не знаю, почему, но уж так вот: ножки ПЛИС можно "на ходу" переключать с чтения на запись, а внутри входы остаются входами, а выходы - выходами, с двумя состояниями, 0 и 1 (без Z).

И всё бы хорошо, работает, но в итоге "периферия" встраивается в QuatCore как-то некрасиво, "ручками". Нужно мультиплексору добавлять новые входы, и цепляться к ним. А значит, и отдельным модулем само "ядро" так сходу не сделаешь - его всё время придётся "перекомпилировать".

Хочется попробовать представить его по классике, с двунаправленной шиной, и посмотреть, сможет ли синтезатор автоматически превратить её в мультиплексор, и насколько эффективно он это сделает.

Collapse )

Пожалуй, пора взяться за ввод-вывод на "быстром QuatCore", и за видео. Давно пора, теперь они даже на одной частоте работают, делов за малым...

Poll #2101221 Двунаправленная шина внутри ПЛИС

Стоит ли сделать QuatCore с двунаправленной шиной?

Да
2(40.0%)
Да, но потом
2(40.0%)
Нет
1(20.0%)
ook

Брат выложил новое видео :)

После 3-летнего перерыва!

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

Очень рекомендую слушать в наушниках или на хороших колонках - не пожалеете.


Записано через две внешние звуковухи (микрофон + звукосниматель гитары), причём присоединены они к бесшумному планшету, все источники звука в комнате выключены, дверь закрыта, и потом несколько дорожек смикшированы.
QuatCore

Не столь монструозное АЛУ

После некоторых размышлений, удалось упростить этого зверя, эдак на 32 логических элемента.

Общая схема поменялась незначительно - управляющие воздействия слегка другими стали. А вот отдельные модули претерпели изменения.



Collapse )

UPD. На симуляции у нас "запрещённый" режим акк. 001 вёл себя очень мирно - также загружал значение из D. Подумалось - может оба варианта, 000 и 001, допустимы? Нет, нам просто повезло, вероятность была 50%, что загрузится. Вот другой пример:



Там ровно один бит, 3-й по старшинству, в режиме 001 всегда устанавливается в ноль, а все остальные - загружаются из D. Такое вот "неопределённое поведение".

Мучаем 5576ХС4Т - часть 'h35 - умножители совсем просто

Часть 0 - покупаем, паяем, ставим драйвера и софт
Часть 1 - что это вообще за зверь?
Часть 2 - наша первая схема!
Часть 3 - кнопочки и лампочки
Часть 4 - делитель частоты
Часть 5 - подавление дребезга кнопки
Часть 6 - заканчиваем кнопочки и лампочки
Часть 7 - счетчики и жаба
Часть 8 - передатчик UART
Часть 9 - Hello, wolf!
Часть 'hA - приёмник UART
Часть 'hB - UART и жаба
Часть 'hC - полудуплексный UART.
Часть 'hD - МКО (МКИО, Mil-Std 1553) для бедных, введение.
Часть 'hE - приёмопередатчик МКО "из подручных материалов" (в процессе)
Часть 'hF - модуль передатчика МКО
Часть 'h10 - передатчик сообщений МКО
Часть 'h20 - работа с АЦП ADC124s051
Часть 'h21 - преобразование двоичного кода в двоично-десятичный (BCD)
Часть 'h22 - Bin2Bcd с последовательной выдачей данных
Часть 'h23 - перемножитель беззнаковых чисел с округлением
Часть 'h24 - перемножитель беззнаковых чисел, реализация
Часть 'h25 - передаём показания АЦП на компьютер
Часть 'h26 - работа над ошибками (быстрый UART)
Часть 'h27 - PNG и коды коррекции ошибок CRC32
Часть 'h28 - передатчик изображения PNG
Часть 'h29 - принимаем с ПЛИС изображение PNG
Часть 'h2A - ZLIB и коды коррекции ошибок Adler32
Часть 'h2B - ускоряем Adler32
Часть 'h2C - формирователь потока Zlib
Часть 'h2D - передаём сгенерированное PNG-изображение
Часть 'h2E - делим отрезок на равные части
Часть 'h2F - знаковые умножители, тысячи их!
Часть 'h30 - вычислитель множества Мандельброта
Часть 'h31 - ускоренные сумматоры
Часть 'h32 - ускоренные счётчики (делаем часы)
Часть 'h33 - ускоряем ВСЁ
Часть 'h34 - ускоренные перемножители
Часть 'h35 - умножители совсем просто
Часть 'h36 - уравновешенный четверичный умножитель


Извините, ребят, описывал умножители в частях 'h23, 'h24, 'h2F, потом мучительно "разгонял" их в частях 'h31, 'h33 и 'h34, а самого очевидного решения в упор не видел.

ВНЕЗАПНО оказывается, что можно сделать 16-битный умножитель на 57 .. 73 ЛЭ, вместо 118 ЛЭ, которые у нас получались в части 'h24, при том, что старшие 16 бит мы получаем ТОЧНО ТАКИЕ же, как при вычислении честного 32-битного результата с последующим округлением до ближайшего целого, и такой умножитель легко и непринуждённо работает на 80 МГц на моей медленной ПЛИС.



Collapse )

Наверное, я всех уже задолбал перемножителями (тем более, что сейчас уже трудно найти ПЛИС, в которой не было бы аппаратных перемножителей), но в следующей части расскажу об одном элегантном решении - УРАВНОВЕШЕННОМ ЧЕТВЕРИЧНОМ умножителе, который при таком же количестве ЛЭ (может, чуточку больше) осуществляет умножение за вдвое меньшее количество тактов!

А потом возьмёмся, наконец, за картинки...

Мучаем 5576ХС4Т - часть 'h32 - ускоренные счётчики (делаем часы)

Часть 0 - покупаем, паяем, ставим драйвера и софт
Часть 1 - что это вообще за зверь?
Часть 2 - наша первая схема!
Часть 3 - кнопочки и лампочки
Часть 4 - делитель частоты
Часть 5 - подавление дребезга кнопки
Часть 6 - заканчиваем кнопочки и лампочки
Часть 7 - счетчики и жаба
Часть 8 - передатчик UART
Часть 9 - Hello, wolf!
Часть 'hA - приёмник UART
Часть 'hB - UART и жаба
Часть 'hC - полудуплексный UART.
Часть 'hD - МКО (МКИО, Mil-Std 1553) для бедных, введение.
Часть 'hE - приёмопередатчик МКО "из подручных материалов" (в процессе)
Часть 'hF - модуль передатчика МКО
Часть 'h10 - передатчик сообщений МКО
Часть 'h20 - работа с АЦП ADC124s051
Часть 'h21 - преобразование двоичного кода в двоично-десятичный (BCD)
Часть 'h22 - Bin2Bcd с последовательной выдачей данных
Часть 'h23 - перемножитель беззнаковых чисел с округлением
Часть 'h24 - перемножитель беззнаковых чисел, реализация
Часть 'h25 - передаём показания АЦП на компьютер
Часть 'h26 - работа над ошибками (быстрый UART)
Часть 'h27 - PNG и коды коррекции ошибок CRC32
Часть 'h28 - передатчик изображения PNG
Часть 'h29 - принимаем с ПЛИС изображение PNG
Часть 'h2A - ZLIB и коды коррекции ошибок Adler32
Часть 'h2B - ускоряем Adler32
Часть 'h2C - формирователь потока Zlib
Часть 'h2D - передаём сгенерированное PNG-изображение
Часть 'h2E - делим отрезок на равные части
Часть 'h2F - знаковые умножители, тысячи их!
Часть 'h30 - вычислитель множества Мандельброта
Часть 'h31 - ускоренные сумматоры
Часть 'h32 - ускоренные счётчики (делаем часы)
Часть 'h33 - ускоряем ВСЁ
Часть 'h34 - ускоренные перемножители
Часть 'h35 - умножители совсем просто
Часть 'h36 - уравновешенный четверичный умножитель


                    //Говнокод #411 - как узнать дату завтрашнего дня
                    public Calendar getTomorrow() {
                       Thread.sleep(1000*60*60*24);
                       return Calendar.getInstance();
                    }


Когда работаешь с медленным кристаллом ("-3"), мучением становятся даже счётчики сколько-нибудь большой разрядности. Хочешь получить импульсы с частотой 1 кГц из тактовой частоты 80 МГц (деление в 80 000 раз) - выбираешь библиотечный счётчик lpm_counter, задаёшь в Wizard'e все необходимые значения: ширина 17 бит, счёт "вверх" (up), по модулю (modulus) 80 000, дополнительный выход cout, затем жмёшь next-next-next-finish и надеешься: уж наверное авторы софта позаботились о том, чтобы максимально эффективно задействовать возможности ПЛИС.

Не тут-то было: полученный драндулет может работать максимум на 73 МГц, и это всего-то при ширине в 17 бит! Страшно подумать, что будет, если мы попытаемся сделать часы (миллисекунды для развёртки, затем секунды - десятки секунд - минуты - десятки минут - часы - десятки часов), это потребует счётчика с общей шириной 17 + 10 + 4 + 3 + 4 + 3 + 4 + 2 = 47 бит.

Смеху ради нарисуем это безобразие:

(делать часы на "счётчиках пульсаций" не предлагать - мы хотим именно СИНХРОННУЮ работу всей схемы, чтобы мы могли, к примеру, ставить метки времени куда-нибудь в телеметрию, зная, что не запишем уже обновившиеся минуты (00) и ещё не успевшие обновиться часы, после чего получим ошибку на целый час. Возмущаться, что этим должен заниматься RTC с микроамперным потреблением, работающий от MEMS-резонатора на 32768 Гц, тоже не надо - часы здесь лишь для примера - мы хотим понять КАК СОБИРАТЬ ШИРОКИЕ СИНХРОННЫЕ СЧЁТЧИКИ на медленных кристаллах)

Результат немножко ожидаем: задержка распространения на кристалле "-3" составляет 27,1 нс (36,9 МГц), более чем вдвое медленнее, чем надо! На кристалле "-2" задержка: 18,2 нс (54,95 МГц), а на кристаллах "-1", как ни странно, схема по-прежнему способна работать: получается задержка 11,9 нс (84,03 МГц) - по бровке, но жить можно.

Причина медленной работы (неспособности корректно работать на большой тактовой частоте) всё та же самая, мы должны прибавлять единичку к предыдущему числу, для чего используются всё те же самые цепи переноса. Когда у нас были все единицы, а должны получиться все нули, мы обязаны дождаться, пока перенос распространится по всем разрядам.

Когда мы объединяем несколько счётчиков - мы только усугбляем ситуацию! Теперь уже сигнал разрешения работы следующего (более старшего) счётчика будет сформирован лишь после того, как установится правильное значение на выходе cout предыдущего.

И ещё больше ситуацию усугбляет счёт не до степеней двойки, а до произвольных значений (до 80 000, до 1000, до 10 и так далее) - это значит, что вместо более-менее шустрых цепей переноса мы применяем дополнительный компаратор, что иногда требует каскадирования большого числа логических элементов (скажем, 5 штук для 17-битного счётчика).

Но в отличие от сумматоров, здесь у нас есть очень простое решение, позволяющее наращивать разрядность практически неограниченно!

Collapse )

В следующей части мы поставим в наш "генератор множества Мандельброта" быстрые счётчики и сумматоры и попытаемся всё-таки заставить его работать на ПЛИС...

UPD. Приведённый в этой части модуль содержит ошибку, исправленный код приведён в части 'h37.

До появления тёплого лампового звука

был тёплый МЕХОВОЙ звук!



В промежутке между поездками на лыжах смотрел сериал Westworld, и мне там очень уж приглянулось механическое пианино с перфолентой (piano roll) посередине. Как-то оно очень в тему и в заставке, и в самом сериале, увязывая между собой дикий запад и роботов, задавая "механический" темп происходящему. Не будь там этого пианино и музыки Рамина Джавади (он же композитор к "Игре престолов") - сериал сразу потерял бы больше половины своего очарования.



И конечно, мне захотелось узнать подробнее, а как же работали эти механические пианино, чем они приводились в движение, как отверстие на бумаге превращалась в нажатие клавиши? Оказалось, эти пианино были целиком ПНЕВМАТИЧЕСКИМИ, причём и ножной насос, и аккумулятор давления, и приводы для каждой клавиши, и мотор, крутящий перфоленту (piano roll) с постоянной скоростью сделаны на МЕХАХ (bellows), наподобие кузнечных. И во всей этой машинерии использовалось не избыточное давление, а наоборот, разрежение. Собственно, отверстие в бумаге в нужный момент впускает воздух в полость под мембраной, она поднимается и открывает клапан, "впуская вакуум" в меха, поднимающие шток, приводящий в движение клавишу.
Collapse )
ook

Русские советские песни - PDF

Пока солдат бегает на лыжах с бензопилой, служба идёт!

Тот мужик, который просил меня отсканить книгу, сам её теперь и обработал под моим чутким руководством, в итоге из 5-гигабайтных "исходников" получился PDF-файл в 8 МБ, со слоем распознанного текста и интерактивным оглавлением.

sovietSongsCover.png

Скачать можно на рутрекере или с яндекс.диска.