Перейти к содержанию
    

iiv

Свой
  • Постов

    2 779
  • Зарегистрирован

  • Посещение

  • Победитель дней

    2

Весь контент iiv


  1. я имел ввиду 10 плат одного и того же дизайна, на котором нарисована одна и та же катушка и они последовательно соединяются друг с другом засовываясь в трансформатор. Тогда, вместо того, чтобы трансформатор на 2-3тысяч витков мотать вы его рисуете и идеально быстро собираете. В общем и повышающий таким же образом нарисовать можно, если ключ поставить после первой секции с толстыми дорожками, а вторую часть нарисовать тонкими дорожками, но, тут две платы придется делать, на 5 бакс дороже :)
  2. а сколько? Я когда-то на полномостовой схеме из 12В повышал до 8КВ и потом через умножитель на выходе получал 30КВольт, с довольно разумными 65% КПД на 100Ватт выходных. В Вашем случае, если на выходе поставить двухступенчатый умножитель, то и транс маленький будет и КПД, думаю, до 75-80% можно ожидать. Мостом просто управлять и транс простой, мотать конечно не очень просто, но, если токи все-таки не очень большие, то вторичку можно нарисовать на нескольких платах, аккуратно друг с другом соединенных, благо, цена двухслоек сейчас практически по пол-бакса за квадратный дециметр, а на такой транс, вам как раз при 2000 витков выходных спокойно в 10 плат одного и того же дизайна можно уложиться. Вам jlcpcb за 5 бакс на один транс сделает, если не дешевле.
  3. то есть 400A * 12V -> 5KV и вы хотели без трансформатора?
  4. Вы токи не озвучили, при небольших токах на плате проще транс нарисовать, чтобы не мотать.
  5. большинство высокочастотных мосфетов нормально справятся с такой задачей
  6. Спасибо большое, за советы!!! Я кажется прозевал в документации на этот клок, так длину CMOS сигнала можно таки менять, только на частотах меньше 141МГц. Жалко, что только до 141МГц, чуть-чуть выше бы, идеально было бы. Про GoWin - спасибо большое, я как-то раньше видел какую-то информацию о них, но серьезно их не воспринимал, а, похоже, зря. Надо взять на попробовать, а то циклонов сейчас совсем не достать.
  7. Добрый день, хочется генерировать несколько (около 20) сигналов CMOS, так, чтобы у всех из них была одинаковая частота (100-250МГц может слегка больше, но конкретно в этой микросхеме CMOS только до 250МГц), но у каждого сигнала была бы своя фаза и, дополнительно выставлять длительность включения в этих сигналах, идеально было бы так, что половина сигналов имеет свою длительность, а другая - свою. Если так нельзя, то хотя бы одну длительность на все сигналы. Под длительностью я подразумеваю следующее, пусть сигнал имеет частоту 250МГц, то есть длительность его полного периода соответствует 4нс, и, обычно почти 2нс на выходе присутствует логическая единица и еще почти 2нс - логический ноль, но длительности логического ноля и единицы совпадают. Я бы хотел иметь возможность менять отношение этих длительностей в каких-то разумных 20-80% пределах. Фазу хотелось бы выставлять с точностью хотя бы 80пс (вроде ZL30263 и лучше позволяет) а для длительности логической единицы - тоже хотелось бы те же 80пс точность, но если нет, то хоть сколько то. В документации на микросхему этого нет и я подозреваю, что это в ней не реализуемо. Скажите, пожалуйста, а бывает ли что-то, что бы позволяло бы выставить на 20 выходов одинаковую частоту в диапазоне 100-300МГц, с хорошей точностью (хотя бы по 1% шага), + длительность логической единицы с точностью 80пс, + фазу у каждого канала с точностью около 80пс? Вроде дешевой плиской не сделаешь, а толстый стратикс - немного жалко для таких целей, вдруг есть что-то не сильно сложное и не сильно дорогое для такой задачи, посоветуйте, пожалуйста? Спасибо!
  8. Быстрый GPIO

    Спасибо, большое, VladislavS за ответ! у меня есть надежда что тут суперскалярность есть - о ней есть что-то в документации. Вот например, в моем примере цикл по инкременту ведь должен занимать хотя бы пару тактов, то есть полностью тело цикла должно длиться не 28 тактов, а хотя бы 30. А вот если измерить число тактов при вызове самой функции RunRealExcitationOne (причем я ее вызываю 128 раз) и посчитать сколько тактов потратил процессор, то оказывается, что за все это время лишних было только 820 тактов, (всего тактов 918324, а если только на эту часть считать, что мне надо 256*128*28 тактов, то разница только 820 такт), то есть по 6.4 такта на вызов RunRealExcitationOne и совсем ничего на условный переход и инкрементацию индекса. Причем сама функция не анроллится, если взять несколько таких функций и посчитать общий размер проекта для 10 и 9 такох функций, то разница составляет примерно 128 байт. это тоже идейно, спасибо! У меня кстати, только первые два байта разные в этих A0...A13, но, понятно, что любые сдвиговые операции тоже требуют тактов, и я пока в этом направлении еще ничего хорошего не придумал. PS: слегка исправил исходник в первом сообщении, так как там еще старая версия была с циклом до 255, а не до 256.
  9. Быстрый GPIO

    И еще... Как я понимаю, этот процессор имеет суперскалярную архитектуру, то есть две или даже несколько команд, если они не зависимы по аргументам, могут выполняться полностью параллельно, если ресурсы процессора позволяют. То есть у меня есть подозрение, что если я как-то объясню провессору, что мне надо загружать из общей памяти в первый регистр, а сохранять в GPIO6_DR из второго, а потом чередовать, то я смогу за один такт делать то, что мне надо и число регистров тут не сильно будет важно, и последовательность у меня может быть супер длинная. Спасибо большое за советы!!! С DMA как я понимаю, не получится, я читал посты на форуме от этой борды (https://forum.pjrc.com/) - там народ утверждает, что DMA на 1/4 тактовой может работать, то есть уже в 2 раза медленнее, чем я делаю. Я сам DMA для этого проессора только дла SPI и ADC использовал, то есть GPIO еще не пробовал, но на форумах пишут, и примеров простых не было, то есть не факт, что даже если попробовать, то что-то будет хорошее. Мне самому ручной ногодрыг очень не нравится - процессор в этот момент совсем ничего больше делать не может, но, похоже, у меня выбора нет.
  10. Быстрый GPIO

    да, как раз много (от 100 до 256 примерно) мне выводить и надо. Данные можно сохранить в разные функции (у меня ожидается примерно 2000 выриантов), каждая функция сейчас занимает около 128 байт, то есть 256КБ на все, благо флаша там 8МБайт. Функции в быструю память не класть, они короткие, и одновременно мне надо только 10-20 функций, после первого их дерганья оно все закешируется и будет быстро работать. По современному таймингу получается, что если я вывожу 256 раз это все, то сверху еще мне надо только 4 такта (я в примере выше печатал номер процессорного такта до и после) и сделал такие выводы. Спасибо большое, за пример с регистрами!!! С регистрами - да, есть подозрение, что на 14 чисел мне регистров не хватит, но меня устроит если их будет 7, я могу правильно все так сгруппировать, что одно и то же число будет выдаваться несколько раз. У меня основная проблема - как понятно это скормить компилятору - я понимаю, что наверное, смогу осилить модифицировать небольшой кусок кода на ассемблере, но вот написать всю функцию с нуля на ассемблере быстро не смогу, поэтому ищу какие-то ключи или диррективы у компилятора, чтобы он гарантированно положил несколько переменных в регистры и далее сам дооптимизировал код. Скажите, пожалуйста, могли бы Вы посоветовать как бы это сделать? Спасибо!
  11. Быстрый GPIO

    Спасибо большое за ответ! Тот исходник, что я привел, мне уже сейчас гарантированно дает 2 такта на запись, то есть при оверклоке до 816МГц тактовой я более-менее гарантированно за каждые 2.5нс засылаю новое 32-битное число в порт и это очень хорошо видно осциллографом, я смотел на 1ГС/с двухканальном от NI: PCI-5154-3, тыкаясь в разные пары каналов. Мне же хочется положить эти числа в регистры, чтобы команды "LDR.N R2,??DataTable2_10" не было. Как я понимаю, регистров у этого процессора достаточно, чтобы 14 чисел туда сохранить, но если 14 не влезет, буду менять последовательность, возможно и 10 чисел мне хватит.
  12. Быстрый GPIO

    Добрый день, хочу с очень точной фазой формировать сигнал включить/выключить на GPIO на IMXRT1062. Для этого мне надо максимально быстро писать 32 битное слово в GPIO6_DR порт. Я это делаю так (код для teensy 4.1) #pragma GCC push_options #pragma GCC optimize ("Ofast") #include <Arduino.h> void RunRealExcitationOne() { register unsigned int A0=0x22a20002; register unsigned int A1=0x22860002; register unsigned int A2=0x2a840002; register unsigned int A3=0x0a940002; register unsigned int A4=0x0a150002; register unsigned int A5=0x18150002; register unsigned int A6=0x18510002; register unsigned int A7=0x11510002; register unsigned int A8=0x11490002; register unsigned int A9=0x15480002; register unsigned int A10=0x05680002; register unsigned int A11=0x052a0002; register unsigned int A12=0x242a0002; register unsigned int A13=0x24a20002; unsigned char i=0; do { GPIO6_DR=A0; GPIO6_DR=A1; GPIO6_DR=A2; GPIO6_DR=A3; GPIO6_DR=A4; GPIO6_DR=A5; GPIO6_DR=A6; GPIO6_DR=A7; GPIO6_DR=A8; GPIO6_DR=A9; GPIO6_DR=A10; GPIO6_DR=A11; GPIO6_DR=A12; GPIO6_DR=A13; i--; } while(i); } #if 0 void RunRealExcitationTwo() { unsigned int A0=0x22860002; unsigned int A1=0x2a840002; unsigned int A2=0x0a940002; unsigned int A3=0x0a150002; unsigned int A4=0x18150002; unsigned int A5=0x18510002; unsigned int A6=0x11510002; unsigned int A7=0x11490002; unsigned int A8=0x15480002; unsigned int A9=0x05680002; unsigned int A10=0x052a0002; unsigned int A11=0x242a0002; unsigned int A12=0x24a20002; unsigned int A13=0x22a20002; unsigned char i=0; do { GPIO6_DR=A0; GPIO6_DR=A1; GPIO6_DR=A2; GPIO6_DR=A3; GPIO6_DR=A4; GPIO6_DR=A5; GPIO6_DR=A6; GPIO6_DR=A7; GPIO6_DR=A8; GPIO6_DR=A9; GPIO6_DR=A10; GPIO6_DR=A11; GPIO6_DR=A12; GPIO6_DR=A13; i--; } while(i); } #endif void setup() { while(!Serial); // wait for serial port to connect if (CrashReport) { Serial.print(CrashReport); delay(5000); } Serial.println("We are starting..."); pinMode(23, OUTPUT); pinMode(22, OUTPUT); pinMode(21, OUTPUT); pinMode(20, OUTPUT); pinMode(19, OUTPUT); pinMode(18, OUTPUT); pinMode(17, OUTPUT); pinMode(16, OUTPUT); pinMode(15, OUTPUT); pinMode(14, OUTPUT); pinMode(41, OUTPUT); pinMode(40, OUTPUT); pinMode(39, OUTPUT); pinMode(38, OUTPUT); } void loop() { unsigned long t1, t2; t1=ARM_DWT_CYCCNT; for(unsigned char i=0; i<128; i++) { RunRealExcitationOne(); // RunRealExcitationTwo(); } t2=ARM_DWT_CYCCNT; Serial.printf("Times: %ld %ld\n", t2-t1, (t2-t1)/255/128); delay(1000); } #pragma GCC pop_options я пробовал играться оптимизацией, но это не помогает. Как я понимаю, запись с регистра в GPIO6_DR стоит один такт, то есть теоретически я могу за каждый процессорный такт засылать в GPIO6_DR нужные числа. Слово register перез описанием этих A0...A13 к сожалению, тоже не помогает. Пожалуйста, посоветуйте, можно ли как-то сделать, чтобы за каждый такт посылать в этот порт нужные числа? Спасибо!
  13. Спасибо большое, _pv, вот я тоже так раньше думал, и из этого исходил. не соглашусь. Много раз такие катушки разводил и эмпирическим путем заметил, что у них длина в формуле примерно пропорциональна и примерно равна диаметру. То есть для планарной катушки с не сильно отличающимися внутренним и внешним диаметром и, нарисованным на обычном текстолите индуктивность получается около 0.8 * N(число витков)^2 * D(диаметр в мм) в наноГенри, то есть в моем случае 21*21*15*0.8 = 5.3uH и прибор примерно то же самое показывает. скорей всего именно эта причина!
  14. Спасибо большое за содействие! 2.5 Ом не знаю. Вернее я тоже ожидал, что будет линейно, а не квадратично. Меняю у первой катушки частоту, и наблюдаю на второй сигнал меньше в 9 раз примерно. Но если уже 10МГц на первую катушку подать, то на второй почти на уровне шума получается. Пробовал в низ по частоте, но там совсем все плохо, так как усилитель после ЦАПа не может на малоомную нагрузку работать.
  15. Добрый день, сделал простой эксперимент. Поставил две катушки (20 витков на плате диаметром около 15мм, измеренная индуктивность 8uH), так, что их оси совпадают и разнесены друг относительно друга на примерно 20см. На одну подавал из ЦАПа sin(x), sin(3x), -(3/4)*sin(x) + (1/4)*sin(3*x), (графики как в аттачменте), где sin(x) - соответсвует 1МГц сигналу, а на другой катушке осциллографом измерял интенсивность получаемого сигнала на 1МГц и на 3МГц. Предсказуемо, что сигнал от sin(x), sin(3x) отличался по интенсивности примерно в 9 раз (то есть должно быть в квадрат отношения частоты, то есть в 9 раз). А вот в сигнале -(3/4)*sin(x) + (1/4)*sin(3*x) получилось, что он принимался практически без изкажения, то есть как составляющая sin(3x) (3МГц) была по интенсивности в 3 раза слабее, чем sin(x), так и в приемном сигнале эта гармоника на 3МГц также примерно в 3 раза слабее, по сравнению с исходным стала, но не в 9 раз как если чистый sin(3x). Скажите, пожалуйста, я что-то не то намерил, или все-таки сигнал вида -(3/4)*sin(x) + (1/4)*sin(3*x) имеет почти такую же производную, как и sin(x), и, из-за этого передается без искажений? Спасибо!
  16. Спасибо большое, _pv !!! Про драйверы для DSL я как-то не подумал, и такой простой в разводке VXCO, спасибо большое!
  17. На одном пульсе электронный резонанс очень сложно детектировать в силу его природы и чувствительности. Да и создавать на современных спектрометрах пульс на сотню гигагерц очень не тривиально. Проще включить гиратрон и включить волновод на микросекунду. А в диапазоне, что я выше писал, пока серийно производимых спектрометров нет, кого-то чувствительность не устраивает, кого-то уже высокая частота пугает.
  18. Спасибо большое, Aner за советы!!! Да, излучатель - контур. С диапазоном, если в столь широком нельзя сделать, то готов ограничить, грубо говоря одна плата на нижний диапазон, одна - на верхний. Или оба излучателя на плате и программно то один, то другой включается. Мне не один импульс нужен, а пакет синусов на нужной частоте (это не ядерный резонанс, а электронный, тут другие законы). Пакет длительностью около 1-100 микросекунд (то есть сотни-десятки тысяч периодов), в каждом пакете - заданная интенсивность и частота. Между пакетами - тишина на несколько сотен микросекунд для приема отклика. Скажите, пожалуйста, правильно ли я понимаю, что 1. VCO на рассыпухе типа SMV1430-040LF и 2SC3837, или есть что-то готовое, если да, пожалуйста, скажите, направьте на путь истинный, на какое слово искать, все VCO ведь маломощные или ставить несколько усилителей? 2. усилок: скажите, пожалуйста, THS3491 - это разумно, или есть какие-то правильные варианты, я кроме этого ничего на быстрый Slew rate не нашел, а у него я похоже только около Ватта выходной получу, так как Slew rate 8000 V/uS. Еще один глупый вопрос, скажите, пожалуйста, разумно ли поставить вместо VCO клок-генератор типа LMK03318, который на 8 каналов, и цифрой менять частоту (я с этой микросхемой работал, там вроде все очень разумно), тогда можно и фазу, и частоту цифрой задавать, рассчитывая, что усилок на каждом канале все выдержит.
  19. Спасибо большое, Aner, за комментарии! Да, полностью с Вами согласен, поэтому и вопрошаю. Нужно в небольшом объеме - колба, маленький химический не проводящий ток реактор (все примерно с 1-10литров), возбудить электронный парамагнитный резонанс. Сама колба в небольшом магнитном поле находится, около 30мТл, вернее поле там не однородное, в диапазоне от 10 до 30мТл. Резонанс наблюдается на частотах как я сказал, около 300-1000МГц. Резонанс наблюдается точно строго на частоте, которая линейно зависит от интенсивности магнитного поля примерно по формуле F(в МГц) = B (в милиТеслах) * 27.6. Среда плохо поглащает, поэтому надо много энергии. Пока я излучал туда на 2мТл (то есть на 50МГц) испуская это обычной катушкой, раскачиваемой полным мостом, и при мощности излучения примерно около 5 Ватт наблюдал то, что хотел. Теперь хочу перейти на большие частоты, которые, собственно и озвучивал. Несколько излучателей хочется сделать хотя бы для того, чтобы переключая их, можно было бы по разному распределять интенсивность излучения в объеме без механического движения излучателя относительно этого объема. правильно, я про процент сказал, чтобы указать, что точность по частоте не сильно важна и кварцем достигается, но я предположил, что самопально собранный VCO может тоже дать схожую точность, то есть может я могу решать эту задачу на какой-то более простой схеме без Si4468. да, проблема понятна, я только хотел акцентировать внимание, что в первом приближении фаза может быть фиксированной, и я не буду ее подстраивать на лету, хотя хотелось бы иметь такую подстройку в будущем.
  20. Si4468 - THS3202 думаю даже в меньшие габариты влезет, но не факт, что я с первого раза его отлажу (я имею ввиду именно Si4468 часть), поэтому и вопрошаю в правильном ли я направлении иду, и может есть существенно более простое решение. Ну или 10 экземпляров Si4468 (каждая на 0.1Ватт) на дести бордах перпендикулярно тоже влезут, вот тут референс можно и с app-notes списать, и поедет вероятно с первого раза.
  21. Вот зачем RobFPGA со своими воздушными задачами влез, всех ведь запутал! Вот представьте среду с диэлектрической проницаемостью порядка 80, в которой четверть длины волны составит 3см - все сразу станет ясно, тем более, что разговор идет только о ближней зоне (я уже об этом выше писал). Число передатчиков такое большое - из-за того что одним передатчиком, я предполагаю, что 50 ватт сделать будет очень проблематично - надо будет работать на 200В и я не сильно вижу что-то полупроводниковое на такие номиналы и частоты, а делать на обычных источниках RF типа Si4468 - тогда надо около тысячи экземпляров ставить - у меня места не хватит, да и мешать они, ИМХО, друг другу будут.
  22. хорошо, пусть именно RobFPGA считает, что это АФАР. Хотя акцентирую еще раз внимание участников форума, что речь идет о системе с линейными размерами меньше 20см, которая работает на частотах 300МГц, и я несколько раз повторил, что могу отказаться от того, что фаза на каждый канал управляемая, то есть при таких условиях эта система именно как активная фазированная решетка может применяться разве что при ее физическом перемещении и только в ближней зоне до метра примерно.
  23. Тарелку от SpaceX жалко, она у меня на крыше стоит интернет приносит в дом. И кстати, у нее частоты раз так в 15 повыше. Да и не АФАР это, частоты не те, да и мощность у меня поменьше. Просто у меня есть сомнения, что на связке Si4468 - THS3202 у меня с первого раза получится. Да и как я говорил, я могу на фазу забить по крайней мере для первых экспериментов, то есть совсем это не АФАР будет.
  24. Добрый день, Для одного научного эксперимента хочется быстро собрать систему из примерно около 50 генераторов синуса в диапазоне где-то 300-1000МГц с разумно большой мощностью где-то около 1 Ватта (30dBm) каждый и расположить их в узлах прямоугольной сетки с шагом где-то 3см, то есть вся конструкция примерно 18х18см с 49 генераторами. Шумы на кратных частотах особо не мешают, главное чтоб их не в разы больше было, но уход частоты генерации во времени не должен превышать процента. Частота генерации у всех должна быть одинакова, но ее надо изменять примерно раз в миллисекунду через микроконтроллер, и каждый канал можно включить-выключить. Еще хочется (но можно в первом приближении забить), чтобы у каждого канала фазу можно было бы установить. Возникают проблемы, которые не могу разумно оценить и прошу совета. Вариант 1. При 1ГГц и напряжении 30В, получается мне надо иметь емкость около 1пФ и индуктивность около 25nH. Как я понимаю, емкость варикапом вроде SMV1430-040LF можно получать, и индуктивность - это около 2 витков на плате диаметром около 7мм или две индуктивности по 4мм по два витка соединенные последовательно. Для генерации тогда брать транзистор например 2SC3837. Включать-выключать - просто питание убрать у каждого. Вот как все источники одновременно синхронизировать, а еще как фазу у каждого канала выставить - тут у меня идеи заканчиваются. Вариант 2. Брать что-то готовое, например, Si4468 (на нижнюю часть диапазона можно и MICRF112) с выходом 20dBm, и потом выход усиливать, но немного не понятно чем, THS3202 вроде еле-еле потянет, но суммарно как-то не бюджетное решение получается. Как я понимаю, схожие и даже более сложные задачи в передатчиках сотовой связи решаются. Хочется как-то на первом варианте сделать решение, но нет понимания как. Горовица читал, но там обсуждаемые схемы все на меньшие частоты. Подскажите, пожалуйста, где почерпнуть подходящих под мою задачу схем, или хотя бы правильных ключевых слов для гугла, чтобы не натыкаться на кучу радиокотовых вариантов для УКВ. Спасибо! ИИВ
  25. Спасибо большое, jcxz , за важную информацию! Пошел разбираться как это сделать!
×
×
  • Создать...