UTC 3.3: Контроллер для теслы

А что мы делаем?
Аватара пользователя
BSVi
Адепт
Сообщения: 3576
Откуда: Киев

Сообщение BSVi » 03 май 2012, 20:30

Это "железное" понятие, но большая часть железа у нас "софтовая", тоесть, внутри плисины :) Тут никакого апгрейда железа не нужно.

Аватара пользователя
BSVi
Адепт
Сообщения: 3576
Откуда: Киев

Сообщение BSVi » 05 май 2012, 17:22

Переписал кнтроллер на синхронную логику, так должно быть надежнее. За одно, разобрался с кучей подводных камней с таймингами, получилось разогнать процессор с 12 до 48МГц, большая частота понадобится чуть попозже. Кроме того, синхронный вариант занимает на 6% меньше места в ПЛИСине.

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

Переделал систему защиты от клонирования. Раньше я передавал зашифрованную прошивку, но, как оказалось, смысла в этом нет никакого :) Любой желающий может написать свою прошивку, которая считает мою и загрузить ее через JTAG, к примеру. Сейчас я сделал защиту на авторизации - прошивку я теперь раздаю в открытом виде. В плисине есть так называемый DNA - уникальное 57-битное число. Я считаю хэш этого числа с солью (в данном случае, соль выполняет роль пароля), и сохраняю в памяти. При каждой загрузке, плисина пересчитывает хэш и сравнивает с тем, что в памяти. Если они совпадают, то контроллер запускается, если нет, то-увы.

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

Еще одна большая штука, которую хотелось бы сделать до того, как приедут драйвера - динамическая настройка. Чтобы в реальном времни можно было таскать ползунок (или нажимать кнопки) и перестраивались параметры. Особенно это касается коррекции фазы - ее нужно только подбирать. Но тут я столкнулся с небольшими трудностями. Надеюсь, поборю.

misterio
Сообщения: 1032
Откуда: Россия

Сообщение misterio » 05 май 2012, 18:01

Успехов, Сергей.

Qic
Сообщения: 985

Сообщение Qic » 05 май 2012, 18:22

Мега-работа для одного человека. имо.
Обещает быть крутым.

Аватара пользователя
BSVi
Адепт
Сообщения: 3576
Откуда: Киев

Сообщение BSVi » 07 май 2012, 02:15

Сделал динамическую настройку корректора фазы и генератора дедтайма. Под "динамической" я имею в виду, что тесла не отключается от компьютера в процессе подстройки.

Пользоваться этим так: в управляющей проге выбираем значение, которое хотим изменить, нажимаем shift+стрелка вверх/вниз и наблюдаем за сигналом на осциллографе. Shift - для того, чтобы случайно не задеть кнопки.

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

Теперь настраивать все намного легче, меня полностью устраивает. Вот, посмотрите:



В процессе выловилось еще немного глюков. Все исправлено. Теперь я жду драйверов :) Потихоньку начал запаивать плату, которая, по всей видимости, достанется misterio.

Отдельная благодарность Андрею, который (не смотря на то, что прожект коммерческий) финансово помог проекту, очень приятно.

misterio
Сообщения: 1032
Откуда: Россия

Сообщение misterio » 07 май 2012, 08:51

бдя. это вообще ох...нно! мегареспектище! а предсказатель фазы уже работает?
надо свои дела разгребать спешно а то чую скоро приедет мне экземплярчик :)

Аватара пользователя
BSVi
Адепт
Сообщения: 3576
Откуда: Киев

Сообщение BSVi » 07 май 2012, 08:56

Дак, собственно, это и был предсказатель фазы :) Фронты крутятся "назад" во времени.

misterio
Сообщения: 1032
Откуда: Россия

Сообщение misterio » 07 май 2012, 09:08

но здесь же фиксированная коррекция? а предсказатель на то и предсказатель чтоб считать ее на лету и вносить поправку в установленное фиксированное значение в изменившихся условиях. или я чегой то нафантазировал уже? :)
перечитал темку еще раз и понял что нафантазировал. причем второй раз уже такие фантазии :)

Аватара пользователя
BSVi
Адепт
Сообщения: 3576
Откуда: Киев

Сообщение BSVi » 07 май 2012, 10:15

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

Аватара пользователя
BSVi
Адепт
Сообщения: 3576
Откуда: Киев

Сообщение BSVi » 09 май 2012, 09:37

Раз уж пришлось рассказать про то, что будет еще midi, расскажу, что уже есть :)

Собственно, планируется одноголосный midi с pitchbend'ом и таблицей частота-ширина импульса. В принципе, к контроллеру никакого отношения midi не имеет, просто осталось довольно много ресурсов, которые можно под это дело использовать. (их можно использовать и под что-то еще, если у вас есть идеи - предлагайте)

Да-да, я понимаю ,что это - прямой конкурент i3, и что с встроенным в контроллер midi, i3 нафиг никому нужен не будет :) Но ведь написать midi на ассемблере внутри плисины - это же мега-интересно :)

Я написал алгоритм (на С, его еще нужно перенести на ассемблер для picoblaze'а), который вычисляет 440*2^(69-n) такую штуку нужно считать, чтобы по номеру ноты узнать период. Считать экспоненты не очень то и просто, я использую для этого несколько модифицированный CORDIC. Беда в том, что на нашем процессоре он считается довольно долго - порядка 400мкс на 12МГц, поэтому я решил немного разогнать процессор. Но фишка в том, что у нас в плисине еще есть умножители, про которые я совсем забыл. Так вот, на этих умножителях можно сделать быстренький barrel shifter, и частоту процессора можно было и не подымать. Но раз поднял, фиг уже с ним, надеюсь нигде не налажал :) При поднятии частоты пришлось писать много multicycle constrint'ов (уж не знаю, как это по-русски), поэтому налажать было где. Но пока все работает. Глюков не видно.

Сейчас я буду писать приемник команд midi и буфер, который будет сортировать ноты при нажатии/отпускании (буфер - самый сложный кусок, но, так как midi одноголосный, он не будет таким ацки сложным, как в i3)

Одного блока памяти не хватает, пришлось влепить еще один. Грязный хак, но работает. Вот, для затравки, как сейчас выглядит флорплан ПЛИСины (тут уже два блока памяти, и добавлено все, кроме генератора звука и умножителя, что нужно для midi)
fpga.jpg


При пайке новый плат обнаружил пару косяков, которые исправил (я по невнимательности поставил 20В диоды там, где 24 вольта, поменял на 40В). Платы еще до конца не спаял, нужно затариться конденсаторами.

Новые драйвера приедут дней через 5.

Как-то так :)

misterio
Сообщения: 1032
Откуда: Россия

Сообщение misterio » 09 май 2012, 12:04

Ждемс и держим кулачки за тебя, Сергей.
проект намечается аццки крутяцкий.
а i3 все равно более удобен будет и функционал у него вроде может быть и поширше. так что его тоже не бросай. тем более если i3 сможет работать с любой теслой а не только с UTC - его вообще многие захотят к своим конструкциям подключить.

Аватара пользователя
BSVi
Адепт
Сообщения: 3576
Откуда: Киев

Сообщение BSVi » 09 май 2012, 20:35

Написал приемник команд. MIDI будет понимать такие команды (список команд тут):

  • Note On
  • Note Off
  • Control Change
  • Pitch Bend Change
  • System Reset

И вот такие контроллеры:
  • All Sounds Off
  • All Notes Off
  • Main Volume

Теперь нужно писать декодер этих команд и буфер нот.

Аватара пользователя
BSVi
Адепт
Сообщения: 3576
Откуда: Киев

Сообщение BSVi » 10 май 2012, 10:55

Вчера ночью было нечего делать, дописал вычисление ширины импульса по номеру ноты. Получилось довольно круто, магии много, зато считает 1000000/(440*2^(69-n)/12) за 14.5мкс! Мне это очень нравится, для сравнения, время передачи midi-команды - 864мкс. Теперь я думаю и умножитель использовать на основе CORDICа, а не аппаратный.

Нужно написать сам аппаратный генератор, но это не так интересно :)

misterio
Сообщения: 1032
Откуда: Россия

Сообщение misterio » 10 май 2012, 20:33

плисины жутко интересная весч походу. у мну на старой работе на них ребята целый радар програмили с предсказанием траектории. математика у них там неимоверная была. и веселья полные штаны :) особенно учитывая что это не для себя проект а военная разработка военного же конструкторского бюро.
смешно правда в древнючий совковый танк вживлять хильку какую нить с навороченым dsp в связке.

Аватара пользователя
BSVi
Адепт
Сообщения: 3576
Откуда: Киев

Сообщение BSVi » 15 май 2012, 09:27

Плисины - офигенная весч, только дороговата и не ко всем задачам подходит. Но для теслы они подходят идеально, тут сомнений нет :)

Итак, написал миди. По большей части он работает (кроме регулирования громкости и еще пары фич, тут нужно комповую прогу дописать). Дошел до места, где нужно снести старый внутренний прерыватель - генератор midi намного круче и может выполнять его роль, а на его место можно будет еще что-то присобачить. Это оказалось не так и просто. А всему виной то, что я придумал еще несколько фич :) И раз уж полез, неплохо было бы из реализовать.

Итак, новые фичи:
  1. Модулятор для встроенного прерывателя. Чтобы можно было создавать "пулеметный эффект"
  2. Внутренний перыватель можно запускать от внешнего сигнала просто подав на него лог "1". К примеру, посветив лазерной указкой или фонариком в оптоприемник, или замкнув провод прерывателя на "+". Благодаря этому не нужно делать свое железо, а достаточно просто прикрутить кнопку к проводку. Частота и мощность при этом регулируются только с компьютера, но и фиг с ним. Эту идею мне подсказала вот эта конструкция: http://habrahabr.ru/post/143682/ при нажатии курка она запускается.

Саму логику я уже написал, но чтобы ее отладить нужно модифицировать компьютерную программу. А в программе уже столько галочек, что пришлось разделять их по вкладкам. Вообщем, добавление миди очень много потянуло за собой.

Тем временем пришли драйвера:
drivers.jpg


Но теперь отвлекаться на их тестирование не очень хочется, так не хочется забыть, что в программе происходит и потом заново вникать. В итоге, окончательное тестирование драйверов опять откладывается :(

Еще нужно выбрать, какой USB адаптер брать.

Изначально я планировал брать вот такой:
adapter2.jpg

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

Но за это время появилось вот такое чудо:
adapter1.jpg


Адаптер в формате USB шнурка. Такой вроде удобнее, но дороже в 2 раза. Как вы думаете, что стоит брать?

Да, адаптер можно использовать не только как устройство для программирования теслы, но и как переходник USB->MIDI. При этом на выход адаптера нужно прицепить провод до теслы или оптопередатчик.

misterio
Сообщения: 1032
Откуда: Россия

Сообщение misterio » 15 май 2012, 13:47

свисоперделки детектед. функционал ширится. это радует.

что касается переходника UART-USB. мне например на переходник пофиг ибо я его стационарно в корпус буду ставить и наморде будет сразу USB гнездо. на цену его мне тоже пофиг ибо 100...500 р. не принципиально на фоне остальной стоимости. правда в корпус монтировать первый вариант проще ибо нет лишней пластмассы и излишней миниатюризации. но это не существенно.

по midi вопрос:
как это вообще выглядеть будет? UTC подключается к midi выходу какого нить синта или например к USB->MIDI преходнику и берет ноты от тудова в реальном времени? или в память UTC заблаговременно загоняется midi файл, все от компа/синта отключается и UTC в оффлайн так сказать отрабатывает?

и по встроеному прерывателю:
он на лету будет регулироваться с компа? или так - подключил теслу к компу, подкрутил крутилку, отключил теслу, врубил. непонравилось - начинай все сначала?

Аватара пользователя
BSVi
Адепт
Сообщения: 3576
Откуда: Киев

Сообщение BSVi » 15 май 2012, 13:57

Как это вообще выглядеть будет? UTC подключается к midi выходу какого нить синта или например к USB->MIDI преходнику и берет ноты от тудова в реальном времени?

Именно так.

он на лету будет регулироваться с компа?

Можно и регулировать на лету (ну, то есть, написал новое значение, нажал кнопку "записать", а потом - "запустить теслу"). Правда, за выживание компа при этом я не ручаюсь :) Я ориентируюсь на вариант "записал-отключил-запустил".

misterio
Сообщения: 1032
Откуда: Россия

Сообщение misterio » 15 май 2012, 15:18

угу. тогда мой интер точно не будет валяться без дела. на лету будет куда удобнее крутить стримера.

Правда, за выживание компа при этом я не ручаюсь

а за сохранность компа в режиме midi как же? ;)

Аватара пользователя
BSVi
Адепт
Сообщения: 3576
Откуда: Киев

Сообщение BSVi » 15 май 2012, 15:54

А миди можно по оптике подключить, он однонаправленный.

misterio
Сообщения: 1032
Откуда: Россия

Сообщение misterio » 15 май 2012, 17:33

а для этого надо просто подрубить к "дорогому" usb - uart переходнику оптопередатчик?
тогда лучше его юзать конешн. а я могу два таких взять - один чисто для миди будет, а второй для конекта utc к компу вмурован в корпус. и тогда оптопередатчика надо два будет.

Аватара пользователя
BSVi
Адепт
Сообщения: 3576
Откуда: Киев

Сообщение BSVi » 15 май 2012, 17:58

а для этого надо просто подрубить к "дорогому" usb - uart переходнику оптопередатчик?

Угу, только сам передатчик намного дороже переходника :(

тогда лучше его юзать конешн.

Кого его?

misterio
Сообщения: 1032
Откуда: Россия

Сообщение misterio » 15 май 2012, 18:25

Кого его?

я так понял (хотя я не понял с чего я это взял :? ) что подключать оптопередатчик для работы с midi надо к тому шнуру который подороже. если это так то думаю его надо ипользовать. правда сейчас я не врубаюсь с чего такая мысль у меня возникла соответственно мне уже не сильно думается что первый переходник не подойдет для midi optical interface, и выходит что опять пофиг какой брать.

Угу, только сам передатчик намного дороже переходника

да ладно. 400р.
тесла не то на чем стоит экономить.

Аватара пользователя
BSVi
Адепт
Сообщения: 3576
Откуда: Киев

Сообщение BSVi » 15 май 2012, 18:36

Подойдет любой преобразователь :)

Аватара пользователя
BSVi
Адепт
Сообщения: 3576
Откуда: Киев

Сообщение BSVi » 23 май 2012, 16:20

Итак, небольшой отчет о новых фишках.



Теперь дело за драйверами.

Qic
Сообщения: 985

Сообщение Qic » 23 май 2012, 17:43

Офигенно! Только одного не пойму, как контроллер управляет громкостью на выходе?! Я думал что это возможно только изменением питающего напряжения.

Вернуться в «Наши проекты»



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 58 гостей