А так-же закупается плата “мозгов”. Решил не собирать сразу все грабли, так как слишком уж затягивать проект нет желания, по этому решил пойти по пути наименьшего сопротивления, и закупить готовый модуль мозгов. Выбор пал на ALINX AC7Z020:
(FPGA+2-x ядерный Cortex-A9, 1Gb DDR3 ОЗУ(512Mb в режиме с ECC), базовая подсистема питания, флешка, кварц для PS блока проца)
Который должен значительно уменьшить время разработки цифровой части и уменьшить ее стоимость. Так как цены на изготовление многослойной печатной платы на 8+ слоев в единичном экземпляре, сегодня кусаются. А в случае допущения ошибок, цена возрастет в прогрессии.
Поскольку рука еще не восстановилась, и с мышкой мне работать сложно, а значит сложно рисовать схемы и платы, пойду ка я покормлю Вас идеями и теоретическими материалами
Длительное время поработав с мультиметром Keithley DMM6500, у которого на борту стоит огромное количество RAM для буфера хранения измерений, который может достигать 7 миллионов точек данных измерения, я ощутил удобство такого буфера для длительных автономных прогонов. Фишка супер классная, заряжаешь мультик на прогон на пару суток, быстренько сконфигурировав его, а потом просто скачиваешь данные и все.
А поскольку новый калибратор так-же будет иметь функционал вольт-амперметра, то и в него я решил поставить солидный объем памяти, 128 Мб которые позволят сохранить до 32 миллионов точек измерения с отметками времени. А если в чип ОЗУ вдруг прилетит гамма-квант высокой энергии от контрольного источника ионизирующего излучения, которые хоть и изредка, но таки бывают у меня в гостях и учувствуют в опытах электрометрического характера, то благодаря наличию второго чипа памяти и контролю ошибок с помощью ECC, данные ОЗУ могут быть восстановлены
Как я уже упоминал, в Зинках(XC7Z010) в отличии от классических МК, нет своей флешки. На ее роль была выбрана флешка ISSI IS25LP128, объемом 16 Mb. Её с лихвой хватит и на прошивку FPGA и на прошивку для Кортекс ядер. Они достаточно шустрые, чтобы без каких либо ощутимых задержек успевать докидывать в топку Кортекс ядер команды прошивки.
Но меня гложил один момент… Есть некоторые данные, такие как к примеру текущее значение ЦАП блока времени, текущий режим калибратора, логи, и т.п. которые хочется максимально часто сохранять в энерго-независимую память, не боясь при этом, что флешка умрет от большого количества перезаписи. Ранее в устройствах типа Ультра-Микрон я писал такие данные на набортовый флеш, применяя алгоритмы компенсации износа флешки. И порой они преподносили сюрпризы. На этот раз попробую отойти от подобной практики, поскольку геморроя с прошивкой будет и так дохрена, по этому решено попробовать использовать новый для меня тип памяти FRAM(Ferroelectric RAM) FM25V05, размером 64Кб. Рекламка от Infineon гласит, что ячейку такой памяти можно перезаписывать до 100 триллионов циклов, а при снятии с чипа питания, он будет хранить записанные данные не менее 151 года при температуре близкой к комнатной. Хм… интересно! попробую! Кстати да, чуть не забыл! Ferroelectric RAM, это радиационно-стойкий тип памяти
Детальки приехали, а это значит, что ни будут заложены в концепт вычислительного блока.
Я немного затянул с съемками видео по итогам года, потому-что отсыпался весь НГ и пилил блок времени, о чем сейчас и расскажу. А вот уже потом пойду снимать видео.
Спустя несколько лет облизывания на модуль U-BLOX LEA-M8F, наконец-то сложились все необходимые условия:
Он стал легко доступен за дешево на АлиЭкспресс. (китаец присылает кусок платы с модулем, нежно выпиленный болгаркой)
Я таки созрел разработать на его базе блок времени, и антенну к нему.
Примерно прикинул на пальцах концепт корпуса ГЛИН 3. Новая версия будет потреблять ощутимое количество энергии, по примерным прикидкам 15-20Вт. Да и чо-то не хочется делить ее на два отдельных блока, как предыдущую.
Идея в том, чтобы сделать единый корпус, совмещающий в себе 3 полностью экранированных блока:
Цифро-Аналоговый блок и опорные емкости/резисторы со всеми аналоговыми элементами.
Линейный блок аналогово питания.
Компактный цифровой модуль, полностью развязанный по питанию, отдельным БП и трансформаторной развязкой на базе ADUM-ов.
Цифровой модуль думаю не стоит запитывать от основного тороидального трансформатора, ибо он точно засрет тогда все аналоговое питание через емкостную связь обмоток трансформатора. Спроектированный ранее линейный БП хорошо справляется с подавлением помех из сети от импульсных источников питания в сети лаборатории. Но если ему на одну из обмоток посадить цифровой модуль с контроллером элемента Пельтье в придачу, то ситуация значительно ухудшится.
А делать на торе две экранирующие обмотки – слабо-реально. По этому на данный момент я рассматриваю вариант применения дополнительного маломощного импульсного БП отдельно для питания цифровой части и тремо-электрической системы. Либо как вариант, найти где-то место, где намотают трансформатор на броневом сердечнике, с кучей экранов… Но там тоже полезут некоторые проблемы…
Корпус 2-го ГЛИН без активного охлаждения, был конечно не горячий, но имел свойство прогреваться целиком. В ГЛИН-е 3-тей версии похоже без активной системы охлаждения не обойтись. Покрайней мере в активном режиме уж точно, при включённом термоэлектрическом охлаждении, включенном дисплее и высокой скорости измерения. Скорее всего, будет иметь смысл ввести два режима работы:
Активный (все системы включены) (вентиляторы работают)
Режим ожидания (включены только аналоговые системы и блок времени) (вентиляторы отключены)
Выдали мне тут троли на одном говнофоруме… говорят мол, “Шодан, бабу тебе надо ! Бабу!”. Ну я немного подумал, подумал, и согласился, да! Мне надо бабу!!!! Конкретно сейчас активно присматриваюсь к “Зинке”…
А почему? А потому, что раз уж нырять с головой в FPGA, то как-то не серьезно брать устаревший Xilinx Spartan-3. Как показала практика старенькая среда разработки Xilinx ISE, которая единственная сейчас поддерживает FPGA Spartan-3, чрезвычайно глючна. Это конечно не является веским поводом менять в дизайне кристалл, но точно это повод чтобы задуматься. Ну вот я и задумался… Осмотрев рынок имеющихся решений, были найдены более-менее свежие FPGA-шки Xilinx Zynq-7000. (Зинки! :-D)
Это в сути своей даже не просто FPGA, а целый систем-он-чип, в котором пол кристалла, это навороченный двухядерный процессор Cortex-A9, с тактовыми частотами под 600 МГц и огромной кучей периферии.
Который позволит полностью отказаться от старенького STM32.
А вторая часть кристалла, это FPGA 7-го поколения Artix-7, в которую влезет любая моя хотелка. И вместе они соединены набором гибко-конфигурируемых шин.
Но собственно почему мой взор пал именно на Zynq-7000, а по тому что младшие чипы этой серии XC7Z010-1CLG400C активно применялись в нескольких видах майнинг-контроллеров. А поскольку пирамида майнинга потихоньку рушится, то огромное количество этих чипов стали не удел.
Их сейчас очень легко купить, в том числе и новые FPGA причем за очень дешево. 200р. за плату донор в неизвестном состоянии, а за 600р. за можно купить напаянный FPGA.
По моим примерным прикидкам, комплект самых-самых базовых деталек для создания на базе этого чипа достаточно гибкого вычислительного модуля должен состоять из:
FPGA Xilinx XC7Z010-1CLG400C.
2xDDR3 SDRAM Micron MT41J64M16JT-125.
DDR терминатора TPS51206.
2xQSPI Flash ISSI IS25LP128.
USB PHY USB3320.
PMIC TPS65400.
И кучки разнообразной рассыпухи.
При этом его стоимость менее 50$ на Алиэкспресс, что вполне допустимо для высокоскоростного комбайна с кучей ОЗУ для хранения логов измерений и огромной матрицы FPGA на 28 тыс. блоков.
А до кучи в новой среде разработки Xilinx Vitis, не только поддерживающие эти чипы, но и даже есть возможность создавать “из коробки” достаточно гибкие DDS с разрядностью слова до 48 бит. Как раз то что нужно!!!
Единственное что реально меня смущает, это BGA корпуса на 4 сотни шаров 0.5мм диаметром, которые я пока не разводил и не паял.
Но я вроде хорошо изучил теорию трассировки высокоскоростных шин и BGA корпусов…. Да и паять их есть чем…. Теперь надо свой скиллс применить на практике!
Короче, если не налажаю с трассировкой платы, то цифровой модуль может получится весьма и весьма гибким. Пока ко мне едет горсть разных чипов, эту часть концепта стоит продумать детальнее.
По мере того как приезжают заказанные компоненты ГЛИН-3, буду стараться детализировать концепт. К сожалению, новая реальность диктует свои правила – “сначала купи компонент, а потом планируй его использование”.
Начитался на досуге о высокоскоростных SAR АЦП, и оказалось, что их шум напрямую связан не только с ИОН, но и с джиттером тактового сигнала. А поскольку низкого джиттера особенно после трансформаторно-трансформаторной развязки на ADUM-ах ждать не приходится, то пришлось предусмотреть цепи восстановления джиттера, cобранными на синтезаторе с PLL и интегрированным VCO.
Успехи в доставании ADG-ключей и небольшой запас реле с контактом из сплава Серебро-Палладий, думаю позволят спроектировать аналоговый фронтенд полностью программируемым, что в полной мере в ГЛИН-2 я не реализовал.
Более пристальное изучение работы ЦАП DAC11001A показывает, что нелинейности его шага вполне можно описать в виде небольшого массива и попытаться компенсировать подстройкой блока синтеза времени. Как поведут себя новые ЦАП DAC11001B я пока не знаю, ну посмотрим… В любом случае, возможность калибровки шагов ЦАП по АЦП я добавлю. Так-же попробую предусмотреть цепи для само-калибровки всех аналоговых блоков, таких как ИОН, делители, ОУ, ФНЧ, ЦАП…. Если задумка “взлетит”, то в идеале ГЛИН-у должна потребоваться только одна внешняя мера напряжения, чтобы полностью настроить все свои подсистемы.
Продумываю так-же детали по размещению критических блоков в отдельном отсеке с стабильной температурой. Ибо наработки по Микрон-ТЭК, уже очень давно просятся испытать их в боевых условиях.
Возможно проект придется переименовать, потому-что это еще со второй его версии по сути не только ГЛИН…. А 3-я это будет комбайн с высокопроизводительным вольтметром работающим как в режиме прямого преобразования так и в дифференциальном режиме высокого-разрешения(при связке ЦАП+АЦП); синтезатором функции ЛИН; и по сути полу-SMU; как бесплатное приложение имеющий еще и ГЛОНАСС-дисциплинированный генератор.
Начал потихоньку почитывать основы VHDL поскольку на фпга-шку возлагаются большие задачи.
Думаю в следующем году наиграюсь я с новыми детальками и фенечками вдоволь!
Меня тут недавно нехило так приложил грипп, что аж досихпор испытываю некоторые проблемы со здоровьем. Но даже эпидемия гриппа не способна остановить меня.
И так, ИОН для ГЛИН v.3 успешно запустился и даже не въебал при первом включении, чему я радостно удивился. А значит настало время определить его фактические характеристики.
Шумовые характеристики
Вооружившись усилителем из этого поста, в который по итогу я всетаки обратно поставил OPA140, была снята шумовая полка.
Сравнивая три поколения ИОН ГЛИН-ов, можно видеть, что от поколения к поколению шум кратно и ощутимо понижается, а значит проделанная работа не проходит даром. Нижние две шумовые полки 3-го поколения ИОН снятые с выходов +7В и +5В в диапазоне частот 0.1Гц…10Гц показывают вполне ощутимое понижение шума по сравнению со всеми предыдущими. И это при том, что специального отбора ADR1399K по шуму я сознательно не проводил, потому-что был абсолютно уверен что 4 усредненных ADR1399K окажутся лучше чем два LM399AH которые прошли отбор по шуму с критерием “лучшие из лучших”. Ожидания подтвердились, девиация существенно провалилась за уровень 100нВ во всем диапазоне частот пропускания усилителя, а пик-ту-пик шум не превысил 1 мкВ в диапазоне частот 0.03Гц…10Гц за все время исследования.
UPD: Шумовую полку +7В измерил заново, график обновил. Предыдущий замер выполнил с ошибкой, забыл накрыть контакты модуля тряпочкой, чтобы избежать их обдувание куллером в термокамере. Кстати да, тест проводился по очевидным причинам именно в термокамере, так как для получения достоверных данных в области инфра-низких частот(0.03Гц), температурные колебания надо убирать с помощью термокамеры.
Так-же для наглядности привожу данные по шумам в виде сигнала с выхода усилителя за 100 секунд:
(NPLC: 5, mx+b: -0.001x+0)
Но нужно не забывать, что там есть и вклад шума самого усилителя, т.к. этот ИОН уже в плотную подбирается у шумовой полке самого усилителя.
Признаюсь честно, у меня никогда не было LTZ1000, но мне кажется что LTZ1000 у меня отсосал , даже не смотря на бОльший шум моего усилителя по сравнению с этими данными.
Тестирование показывает, что идея деления опорной частоты 10МГц с помощью DDS дает выигрыш, но все эти пляски с бубнами вокруг DDS мне не нравятся концептуально. По этому попробую организовать свое собственное ядро прямого синтеза частоты, минуя стадии генерации аналогово синтеза синусоиды, детекции уровней на триггере Шмитта, и ее дальнейшую дележку т.к. 32-х битного делителя промышленных DDS не достаточно. Заменив все это на истинно цифровой синтез цифрового сигнала LDAC c 64-х битным кодом управления частотой.
По этому после некоторых раздумий, решил таки расчехлить свою “паллету спартанов”, которая лежит на складе в шкафу под названием “до лучших времен”
Простые CPLD тут уже не справятся… Не влезет туда все это разнообразие…
Заодно и VHDL подучу…
Суть идеи в том, чтобы ликвидировать из концепции Direct Digital Synthesis выходную таблицу синуса с ЦАП, заменив их на прямое сравнение текущего значения фазового сдвига с фиксированным значением. И когда аккумулятор сдвига фазы досчитает до поворота на 360градусов, произойдет событие генерации сигнала LDAC инициирующего смену кода ЦАП. Таким образом концепт сохранит все плюсы концепта Direct Digital Synthesis над простым делением на таймерах, и при этом не будет содержать в своем составе никаких аналоговых цепей. А гарантированный реалтайм обеспечиваемый за счет жесткой логики с контролем таймингов синтезируемой в FPGA, позволит значительно увеличить скорость обновления в ЦАП до полных 75кГц, благодаря чему даже на высоких скоростях ЛИН можно будет сохранить амплитуду шага +-1 LSB (за счет увеличения частоты шагов), что значительно уменьшит выходные шумы ГЛИН. Что не выполнимо, при условии когда ЦАП загружается с помощью МК. Из за чего, при высоких скоростях ЛИН приходилось понижать частоту обновления ЦАП, за счет кратного увеличения шага до +-2LSB…+-3LSB+-4LSB… и т.п. Теперь этот костыль можно будет убрать.
Расчёт показывает, что такой синтез вызовет джиттер до 100нс, связанный с работой аккумулятора фазы, но его и в прошлом варианте не особо удавалось убрать. К тому-же эффект джиттера фронта сигнала LDAC, в значительной степени ослабляется выходным ФНЧ с частотой среза 7Гц, который ослабляет этот эффект в 10 и более раз. А поскольку такой джиттер не будет иметь накопительного эффекта, то он вызовет только переменную составляющую в выходном токе, причем не более 0.1 ppm, что пренебрежимо мало.