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

=AK=

Свой
  • Постов

    3 278
  • Зарегистрирован

  • Посещение

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

    5

Весь контент =AK=


  1. В списке http://www.idiom.com/free-compilers/ECATEG...compiler-1.html найдите "компилятор компиляторов" Gray Антона Эртла. Скачайте и, используя рекомендованный (его же) Форт, задайте ему БНФ Ады, как описано в описании, и запустите. Вы получите компилятор Ады, исполняемый Форт-системой. А также интерпретатор и виртуальную машину (стековую, ессно) в том же флаконе. Таков Форт :)
  2. Интерпретатор не так уж сильно зависит от языка программирования. Интерпретатор всего лишь дает некую виртуальную машину. В принципе можно пытаться делать "оптимальный" интерпретатор для каждого языка, но вообще-то это маразм и давно пройденный этап. Доказательством, что интерпретатор не зависит от языка, являются "обычные" процессоры - ведь под тот же Пентиум есть компиляторы практически с любого языка. Поэтому под полную по Тьюрингу виртуальную машину (т.е. под интерпретатор) в принципе можно написать компилятор с любого языка. Правда, под некоторые виртуальные процы компиляторы будут очень замысловатыми, чему примером небезизвестный проц Брэйнфак. Главное достоинство интерпретатора состоит в том, что он дает виртуальную машину, (почти ) не зависящую от железа. Одними из первых до этого допедрили создатели Жабы. Однако с виртуальной машиной Жабы есть некоторые проблемы: полная машина довольно тяжеловесна (типично требует порядка 1М памяти и 32-бит проц). Прежде всего из-за выбранного ООП-подхода и встроенной сборки мусора. Если бы не это, виртуальная машина Жабы еще больше напоминала бы виртуальную машину Форта, т.к. обе суть стековые процессоры, но Форт-машина максимально простая, а Жаба-машина - с наворотами. Есть всевозможные варианты "урезанных Жаб", где прежде всего выбрасывают сборку мусора, но я в них не очень силен. В любом случае это будет кастрированный язык. Второе достоинство интерпретатора состоит в том, что для хорошей виртуальной машины можно написать транслятор с любого языка. Сановцы до этого не доперли, для своей виртуальной Жаба-машины он предлагают один только язык Жаба. Этим обстоятельством воспользовались мелкомягкие и выкатили свой .NET. В основе .NET лежит примерно такая же виртуальная машина (интерпретатор), какая используется в Жаба-машине, т.е. стековый проц с ООП наворотами и сборкой мусора. Однако языков под эту машину наплодили тучу. В отличие от Жабы, мелкомягкие, похоже, не имеют намерений "урезать" .NET. Правда, есть умельцы, которые занялись этим самостоятельно (кому интересно - гуглите на слова .NET lego mindstorm). Форт-машина - одна из самых простых и удобных виртуальных машин. Это тоже стековая машина, как Жаба-машина и .NET-машина, но максимально компактная и упрощенная. Идеально подходит для встроенных применений, но - увы - в отличие от .NET и Жаба-машин, не поддержана доступными высококачественными кросс-трансляторами с удобных ЯВУ. Есть полуоткрытый югославский проект, где они делают Форт-машину с С-кросс-компилятором, но это маргинальные штучки. Все, что помимо этих трех машин (Жаба, НЕТ, Форт) упоминалось в треде - это все отстой и суксь, имхо. Уродцы, обреченные на вымирание, нечаянно появившиеся в ходе эволюционного процесса, имхо. Там есть достойные изумления экземпляры, такие как проект регистровой виртуальной машины, "Попугай" для Перла, если память не изменяет.
  3. В фирме, где я работал более 10 лет назад, заливку высоковольтных трансов мы делали сами. Заливали двухкомпонентной силиконовой резиной Dow Corning. Для откачки воздуха умельцы сделали сварной алюминиевый ящик, который закрывался крышкой из толстого оргстекла. В крышке была профрезирована по периметру канавка, куда был уложен круглый резиновый шнур, это обеспечивало герметичность. При откачке крышка прилипала к фланцу на ящике, за счет давления. Откачивали примерно полчаса, после этого компрессор выключали и давали постоять парy часов. А затем обязательно вновь поднимали давление до атмосферного - до того как резина схватилась. Этим остающиеся в резине пузыри схлопывались. Иначе откачка принесет вред, а не пользу.
  4. Полноценный Форт "весит" примерно 8 кил. Полноценный - значит, полностью резидентный, самодостаточный, с компилятором, интерпретатором и зачаточной осью. Коммерческий Форт для однокристалок http://www.forth.com/embedded/index.html Кросс-компилятор позволяет уменьшить вес резидентной части, т.е. интерпретатора, до примерно 2 кил (и это не предел). Фриверный - см., например, http://sourceforge.net/projects/c-fvm
  5. Спасибо. Можно еще так представить. После того, как значения приведены к интервалу 0...10 и обозначены на этом отрезке точками, сворачиваем этот интервал в кольцо. Теперь находим на кольце максимальное расстояние между соседними точками, и в этом месте разрываем кольцо, снова превращия его в отрезок. Порядок расположения точек на получившимся отрезке даст максимально "плотное округление". А теперь такой вопрос. Вместо описанного Вами "оптимального" алгоритма используется такой упрощенный алгоритм: - определяется самый длинный кабель с временем Тмакс, задержка к нему добавляться не будет - для любого кабеля с задержкой Тх определяется разность Тр=Тмакс-Тх - полученное значение Тр самым обычным способом округляется до ближайшего кратного 10 нс, это будет добавленная задержка Численный пример, приводившийся ранее: 1 нс 1.1 нс 9 нс 9.1 нс Самая большая задержка 9.1 нс для 1 нс разность 9.1-1=8.1, округляем до 10 нс, в сумме 1+10 = 11 нс для 1.1 нс разность 9.1-1.1=8.0, округляем до 10 нс, в сумме 1.1+10 = 11.1 нс для 9 нс разность 9.1-9=0.1, округляем до 0 нс, в сумме 9+0 = 9 нс Получили такой же результат, какой дал бы "оптимальный" алгоритм, однако намного более простым способом. В каких случаях этот алгоритм будет хуже "оптимального"? Вернее, насколько он будет хуже "оптимального" в самом благоприятном для "оптимального" случае? "На глазок" он проигрывает оптимальному пренебрежимо мало.
  6. Мне кажется, это не будет работать при определенных наборах. Например, возьмем такой набор: 1 1.1 9 9.1 Разница макс-мин 9.1-1=8.1 нс Понятно, что оптимальный результат должен быть 11 11.1 9 9.1 Это даст разницу макс-мин всего в 2.1 нс Если использовать Ваш алгоритм, то исходный набор не удастся привести к оптимальному, т.к. при сдвиге "левой крайней" точки 1 вправо на 10 получится "неуспех": 11 1.1 9 9.1 Получается макс-мин=11-1.1=9.9 нс, что хуже, чем исходные 8.1 нс Если сдвинуть самую правую точку 9.1 влево на 10, то опять получится макс-мин=9.9 нс.
  7. "Настроить" задержку для каждого кабеля надо так, чтобы разность между макс и мин задержкой для всех кабелей была минимальна. Поэтому не получится брать за основу какой-то один кабель. Такой пример: - самый длинный кабель 90 нс - второй кабель 84 нс - третий кабель 86 нс Если настраивать задержки так, как Вы предлагаете: - к длинному добавили 10 нс, в сумме 100 нс - ко второму добавили 20 нс, в сумме 104 нс, разница с "длинным" 4 нс - к третьему добавили 10 нс, в сумме 96 нс, разница с "длинным" 4 нс Суммарная разница в группе 104 - 96 = 8 нс Очевидно, что можно настроить лучше: - к длинному добавили 10 нс, в сумме 100 нс - ко второму добавили 20 нс, в сумме 104 нс, разница с "длинным" 4 нс - к третьему добавили 20 нс, в сумме 106 нс, разница с "длинным" 6 нс Суммарная разница в группе 106 - 100 = 6 нс, разброс получился на 2 нс меньше.
  8. Есть N выходов от устройства, способного генерировать произвольную последовательность цифровых сигналов (pattern генератор). Выходы соединены с нагрузками при помощи коаксиальных кабелей разной длины. Для компенсации разницы задержек распространения в кабелях на каждом выходе генератора стоит сдвиговый регистр - в качестве линии задержки. Сдвиговые регистры тактируется некой тактовой частотой, для определенности - с периодом 10 нс. В состав устройства включен измеритель времени задержки распространения сигнала в коакс. кабеле, он измеряет время задержки довольно точно, для определенности - с точностью 0.1 нс. После того, как измерены времена задержки всех кабелей, необходимо выставить оптимальное время для каждой линии задержки таким образом, чтобы сигнал, одновременно поданный на все выходы ЛЗ, дошел бы до каждого приемника "одновременно". То есть, чтобы разница во времени между самым ранним и самым поздним дошедшим сигналом была минимальна.
  9. В этом случае можно использовать обычное округление, т.к. с такими данными все равно как округлять - ничего "выгадать" не удастся. Выгадывать удается если числа как-то коррелируют с сеткой, до которой их округляют.
  10. По конечному массиву накопленных данных. Перебором трудно, точек может быть много.
  11. Тогда бы я "округлил" так 1.3 - 1 1.4 - 1 1.6 - 1 3.6 - 3 1.3 - 1 Примерная аналогия с такой задачей. Представьте, что вы нарисовали на листочке бумаги в клетку какую-то геометрическую фигуру, скажем, треугольник. Теперь надо перерисовать его так, чтобы все вершины оказались на сетке клетчатой бумаги, а результирующая фигура была максимально подобна исходной.
  12. Имеется N относительно точных измерений, скажем, в виде чисел с плавающей запятой. Необходимо "округлить" их (или, скажем, представить в виде чисел с фиксированной запятой). "Округление" надо произвести таким образом, чтобы относительное расположение результирующих точек изменилось как можно меньше. Абсолютная погрешность "окрyгления" роли не играет. Например, возьмем 3 значения: 1.4 1.6 3.6 Обычное округление даст результат 1 2 4 Однако если я "округлю" 1.4 до 2, то результат будет 2 2 4 что гораздо точнее, поскольку "расстояние" между точками 1.4 и 1.6 равно всего 0.2, поэтомy их правильнее округлить до одного и того же значения 2, а не до 1 и 2.
  13. Рискуя повторить то, что уже говорилось, кратко: (1) Срок службы электролита уменьшается в 2 раза при повышении его температуры на 6 градусов (2) У электролитов оговаривается срок службы при заданной температуре. Если на корпусе написано 85С, значит, время жизни оговорено для температурв 85С. (3) Типично время жизни оговаривается 1000 часов, иногда 2000 часов. "Долгоживущие" (long life) имеют срок 3000...5000 часов. (4) Даже если не смотреть в даташит и принять, что кондер имеет 1000 часов жизни, то при равной температуре кондер на 85С будет жить в 10 раз меньше, чем кондер 105С (20С разницы даст увеличение жизни в 2 в степени 3.33 раз) (5) Кондеры low ESR живут дольше, если через них текут большие импульсные токи, т.е. в импульсных БП, поскольку при этом они меньше греются сами. В местах, где нет больших импульсных токов, low ESR по барабану. (6) В паршивых материнках стоят кондеры 85С. В очень паршивых они стоят абы где, в том числе в горячих местах. (7) Там, где требуется надежность, рекомендую долгоживущие 105С электролиты фирм United Chemi-Con и Nippon Chemi-Con. "Проверено электроникой" (с), т.е. годами и массовыми сериями; цена умеренная.
  14. Дык, если для каждого по отдельности этого не удастся достичь, то при управлении всеми скопом тем более не получится, имхо. Как я понимаю, одна из задач - не выжечь транзюки слишком большим током управления, втекающим в затвор. И еще - добиться "равномерного" открывания, иначе "запоздавший" транзюк пробьется от перенапряжения. При групповом управлении этого труднее будет добиться, т.к. каждому транзюку надо перезаряжать нагрузочную емкость, а также межобмоточную емкость своего транса и емкость монтажа, а размах зависит от положения транзюка в цепочке. Поэтому "холодным" (т.е. близким к земле) транзюкам будет легче, чем "горячим".
  15. Даже лучше если отдельный трансик на каждый транзистор. Чтобы меньше было взаимное влияние вторичных в момент переключения. Там и так будет много геморра из-за огромного dV/dt. Я думаю, первичку и вторичку придется заключать в экраны, каждую в свой отдельный. "Активно запирается" в смысле, что запирающий фронт формируется примерно так же, как открывающий. Первичка драйвится не открытым коллектором, а, скажем, полумостом. Впрочем, вам, кажется, это не важно.
  16. Давно, лет 30 назад, делал УУ для ЭОМ, даже авторское получил. Идея в том, чтобы разделить УУ на два "канала", скоростной и медленный. Скоростной формирует крутые фронты, медленный держит полку вых. импульса. Фронты формируются цепочками послед. соединенных транзисторов (с выравниваним потенциалов в закрытом состоянии) с трансформаторным управлением для каждого транзистора. На транзистор подается короткий отпирающий импульс (например, 70 нс), после чего он активно запирается. Полки формируются любым удобным способом, например, лампой или каскодной транзисторной схемой.
  17. Термометр сопротивления медный ТСМ - это НЕ терморезистор (термистор). ТС - более точный датчик, но плата за точность - сложный усилитель. Термистор можно применять c АЦП напрямую, без усилителя.
  18. DB25 - это 25-контактный разъем определенного типа. LPT - условное обозначение принтера программистами (от Line PrinTer). Среди старых интерфейсов, использовавшихся для подключения принтера к компу, был особо популярен "параллельный интерфейс", или "параллельный порт", http://en.wikipedia.org/wiki/Parallel_port, который в компе выведен на "маму" DB25
  19. Исключающее ИЛИ даст импульсы по обоим фронтам. Если Q1 - выход первого триггера, Q2 - выход второго, то надо X <= Q1 and (not Q2); Для борьбы с метастабильностью надо бы на входе поставить еще один триггер, Q0. На VHDL можно так: signal out_pulse : std_logic; process(CLK) variable q0, q1, q2 : std_logic; begin if rising_edge(CLK) then q2 := q1; q1 := q0; q0 := input_signal; out_pulse <= q1 and not q2; end if; end process;
  20. На расстоянии в полметра работать будет достаточно устойчиво вплоть до примерно 115 кбит/сек. Однако требуется грамотное заземление. Для частичной защиты от помех и перекосов земель рекомендую поставить резисторы по 100 Ом на каждом RXD входе. Да и на каждом TXD выходе тоже по резистору 100 Ом поставить будет невредно, чтобы наведенные на 0.5 м провод наносекундные помехи не отшибали рога процу, пока стекают на землю через пин.
  21. Измерять надо разницу токов, т.е. разницу между током, вытекающим из "+" выходного терминала БП, и током, втекающим в "-" выходной терминал БП. Если разность токов превысит 30 мА, должна срабатывать защита.
  22. Прочитал, конечно. Про миллисекунду в процитированных ранее кусках ТЗ я не нашел. Кстати, было бы неплохо цитировать все ТЗ в одном исходном посте, а не выдавать по чайной ложке; для этого не грех было бы исходный пост подредактировать. Вот как выглядит ТЗ судя по Вашим предыдущим постам: Вход 40-75В выход 200В 120мА. 1. Блок питания должен иметь гальваническую развязку 20МОм между выходными проводами и корпусом не менее 1500В. 2. Болк питания должен иметь УЗО, которое отключает или снижает выходное напряжение до уровня менее 36В, если появился ток утечки более 30мА с одного из выходных проводов на крпус. в случае присоединения одного провода выхода к корпусу через сопротивление 1 кОм питание автоматически отключается или напряжение автоматически снижается до напряжения не более 36 В Теперь Вы добавили еще одно требование, про которое я, не будучи экстрасенсом, догадаться, конечно, не мог: "3. Минимальная скорость срабатывания УЗО (устройства защитного отключения) 1мс" Учитывая заметный пренебрежительный оттенок высказывания об электро-механических УЗО вероятно это надо понимать с точностью до наоборот, т.е. 3. Максимальная скорость срабатывания УЗО (устройства защитного отключения) не более 1мс Замечу, что всяких УЗО существует много, есть среди них и УЗО постоянного тока: http://www.westernautomation.com/pages/dem...fy.htm#typelist http://www02.abb.com/global/dkabb/dkabb504...F204+B+type.pdf
  23. http://en.wikipedia.org/wiki/Residual-current_device http://www.energysafety.sa.gov.au/images/p...ty_switches.pdf http://search.clipsal.com/clipsal/refine.d...ch.refine=false http://cacms.clipsal.com/trade/__data/page/81/I62.pdf
  24. Согласен с Tanya. Первый пункт требует определенного качества изоляции. 1500 В - это очень мало по современным меркам. Например, европейские/австралийские стандарты требуют, чтобы изоляция оборудования, подключаемого к сети, выдерживало 3750 V rms 50 Hz в течении минуты (для оборудования, где человек может дотронуться до токонесущих цепей, соединенных со вторичной обмоткой). Для медицинского оборудования требуется еще больше, кажется, 4500 В. Второй пункт требует, чтобы в ненормальных ситуациях (в случаях пробоя изоляции и т.п.) срабатывало УЗО. С самим УЗО лучше не париться, а взять готовое покупное. Там настолько все "облизано" схемотехнически (как правило все делается при помощи специализированных ИС и дифф. транформаторов тока на супермаллое) и такие огромные тиражи, что сделать дешевле и лучше все равно не получится. Вдобавок, в покупных все протестировано и сертифицировано (вернее, не знаю про китайские, а в европейских - это точно).
  25. Имхо, основной способ стать хорошим электронщиком - пройти через радиолюбительство в школьном возрасте. Начинать (т.е. "хвататься за паяльник") желательно в возрасте до 12-14 лет. У тех, кто начинает позже, скорее всего в критический не хватит энтузиазма, "упертости", он скорее отвлечется на что-то "более соблазнительное". И еще ему не хватит "чутья", свободы в "общении с железякой". Начинающим в более позднем возрасте намного труднее натренировать какие-то важные для этого участки мозга. Здесь есть полная аналогия и глубинная связь с владением иностранными языками: как правило только те, кто начинает говорить на другом языке до 12 лет, будут говорить чисто, без акцента. Хотя, конечно, бывают исключения. :) По поводу "обучения на примерах" приведу слова Ньютона: "Примеры лучше формул". Ссылки нет, когда-то очень давно это вычитал не помню где. Фокус состоит в том, что многие вещи плохо формализуются, поэтому обучение "на примерах" оказывается эффективнее: "формальная теория" в определенном смысле всегда выхолощена, "одномерна", она хороша для компьютера, а человеческий мозг из набора примеров ухитряется вытащить гораздо больше, чем может дать формализм.
×
×
  • Создать...