Я, когда в машине жены такое делал, то передняя камера выключается если рычаг переводится в паркинг, или скорость машины становится больше 12 км/ч. или проходит 20 сек после последнего переключения.
Правда, я никак не использовал CAN. Все совсем по простому сделал.
Я ассемблерщик, люблю выжать из процессора максимум, иногда перестановка местами двух команд, может дать заметный прирост в производительности.
Кроме того, на борту STM32 имеется аппаратный SDIO интерфейс, что позволяет писать на карту очень быстро.
А как вы думаете, что более энергозатратно: кодировать этим кодеком или писать сырой поток на флеш-карту?
Как раз я полагаю, что сжимать надо, и не для объема носителя, а для более редкого обращения к носителю. То есть, оцифровываем, сжимаем, копим в ОЗУ, а карту, «будим» раз в минуту «к примеру» и перегоняем накопленное. Флеш память весьма прожорлива по питанию, особенно при записи, чем реже мы к ней обращаемся и чем быстрее пишем, тем меньше она успеет сожрать за это время.
Вот тут не понял. Это чтобы динамический диапазон так повысить?
Не совсем, от динамического диапозона никуда не уйти, сколько есть бит, столько и останется. Есть, правда ухищрения с компараторами и ОУ, но, вряд ли это здесь подойдет. АРУ помогает использовать динамический диапозон наиболее полно, дает качество, ослабляет шумы. Но, по определению, выделить слабые звуки на фоне сильных не помогает.
В stm32 — 12 бит, есть на борту два АЦП, а в некоторых 3 штуки.
Наверно про ослабления речь шла в контексте банальных резисторов. Да? Типа после операционника усиленный сигнал раздваивается и через разные резисторы поступает наразные каналы АЦП, а мы потом выбираем тот канал, который сильнее всего скачет?
Да, примерно так. Смотрим какой канал зашкаливает от сильного усиления, и выбираем канал с меньшим усилением, на лету. Можно, также управлять усилением ОУ, через отдельные ноги процессора. Переключая их (ноги) из состояния ввода (hi-z) в состояние выхода с нулем на выходе, то есть подтягивая к земле, что дает изменение характеристик сопротивления в обратной связи в ОУ. Это, как бы, цифровой способ управления аналоговым ОУ. Позже распишу по подробнее.
Для прототипа можно сделать битрейт… хм… какой получится. Надо попробовать. Нету у меня опыта в таких вещах. Не знаю как звучать будет, как распознаваться потом такое будет…
Тут важна одна деталь. Если говорить прямо в микрофон (ну как в телефоне, например), то особо, ничего не требуется. А вот если предполагается, что нужно захватывать посторонние звуки, речь собеседника, музыку в дали, шум ветра, и т. д., то для дальнейшей отчистки нужен большой объем данных. Например, если записать и оцифровать речь на фоне музыки с частотой дискретизации 10кГц, а музыка имеет частоты вплоть до 15-20кГц, тогда все частоты, что выше 5 кГц, завернуться, перемешаются и попадут в сигнал в качестве шума. Значит, или потребуется хороший аналоговый фильтр в микрофонном усилителе, или нужно оцифровывать с большей частотой дискретизации и фильтровать программно. КИХ, например. Иначе потом не разделить.
Чем меньше кода, тем меньше ошибок и неожиданных побочных эффектов. Я за аппаратный вариант. Мне кажется и схематически это даже будет попроще, чем мерять напряжение через АЦП и как-то всем этим жонглировать.
Согласен, однако в современных аккумуляторах, особенно, в которых литий, проблема в кривой заряда разряда. Она не такая, как например, в конденсаторах.
Именно поэтому, ноутбуки, телефоны, планшеты, и прочая современная техника так странно расчитывает время оставшегося заряда. Там, буквально, меряется ток, и исходя из него и емкости расчитывается время.
То есть, при заряде счетчик считает в плюс, при разряде в минус, а к напряжению и емкости это подвязывается с помощью алгоритмов, подобных фильтру Калмана. Хоть и сумбурно, но так.
Я почему-то думал всё сильно сложнее и вообще, кодек обязательно нужен аппаратный… не приходило как-то в голову писать сырой поток
Ну, любое аппаратное решение/функция, это как минимум один корпус микросхемы, а значит потребление. И не только, эту микросхему надо закупать, припаивать, обвязывать. Выход из строя тоже не последнюю роль играет.
Буду искать кто прям на пальцах покажет что куда в макетку втыкать, чтобы звук писался=)
Макеток очень много, и не дорогие. спаяв к ним микрофонный усилитель на маленькой (а может для начала и не очень) платке, уже сразу можно баловаться кодом, посылая его в комп по USARTу. И отлаживать кодек. :)
В дальнейшем еще напишу по теме.
Здесь, действительно надо прикинуть габариты изделия, и примерный внешний вид. Тогда я бы придумал бы конструкцию поподробнее. Может даже схемку нарисую.
Ну, во первых все, что Вам написали по поводу «камуфляжа» и внешнего вида изделия — не пустой звук. Это просто к тому, что не нужно от этого отмахиваться и легко попасть в беду. Я когда этим занимался, делал не личную задумку, а работал в некоей конторе, которая имела лицензию на разработку и производство СТС. Но, грубой теорией поделюсь.
Сейчас, я бы присмотрелся к STM32. Во первых, они весьма миниатюрны, у них большой обьем ОЗУ, ПЗУ. Есть на борту часы реального времени, если поставить миникварц на 32768 гц. В одном из моих проектов на таком контроллере успешно применяется кодек АДИКМ.
Вам нужно определиться с динамическим диапозоном, то есть решить сколько бит на отчет требуется. Микрофонный усилитель штука простая, для обычного подключения к АЦП контроллера, достаточно задать смещение в «полисточника», это означает, что при отключенном усилителе на ноге должно быть полпитания (ну, например, 1.5 в). Через емкость 0.33 мкф, в эту точку подаете сигнал.
Если есть ЦАП на борту, то очень удобно использовать его в качестве такого смещения, которое можно еще и программно корректировать. Для управления усилением, можно использовать несколько входов АЦП. То есть сигнал усиливается, потом проходит несколько ступеней ослабления, и каждая ступень заводится на свой вывод АЦП. А контроллер смотрит с какого брать сигнал, и тем самым подбирает уровень. Частоту дискретизации, конечно же, лучше выбрать повыше, а потом сделать децимацию, под нужный поток — уменьшит уровень гранулярного шума.
Теперь про аккумулятор. А зачем Вам эффективная стабилизация питания? Если Вы возьмете одну банку LI-PO аккумулятора, то его диапозона питающих напряжений хватит на все. Заряженный 4.2в, разряженный 3в. И микроконтроллер и sd карта и микрофонный усилитель будут нормально работать. Ну может sd карте потребуется небольшое ограничение (но это скорее «для порядка»).
Плавания частоты при работе от кварца — тоже не будет.
Цепь заряда, можно заморочиться с специализированной микросхемой, там много плюшек в виде контроля заряда, разряда, измерений токов и напряжений, и все это по какому нибудь SPI интерфейсу может общаться с контроллером. Но, при минимализме, можно поставить классический стабилизатор тока на одном транзисторе, а остальное написать программно в контроллере.
В общем, как-то так.
Лет 10 назад, делал такое. И даже удалось сделать перстень с диктофоном внутри. Делалось все на атмеге8, в самом миниатюрном mlf корпусе. И sc70 операционный усилитель, в качестве микрофонного. То есть все состояло из Атмеги, опера, и microSD.
Остались наработки.
Когда меня просят «на пальцах» рассказать про БПФ и ДПФ, особенно часто об этом просят люди, которые «понимают в технике», то обычно я начинаю рассказывать примерно так: Фурье — это тот же самый радиоприемник, только математический. В обычном приемнике входной сигнал умножается (смесителем) на гетеродин. Гетеродин — это синусоидальный сигнал выработанный локально (в приемнике), если после такого умножения выделить постоянную составляющую, то она будет пропорциональна амплитуде сигнала на частоте гетеродина.
На самом деле все немного сложнее, гетеродин должен быть двойной (синусоида и косинусоида), если умножить анализируемый сигнал на синусоиду и косинусоиду, а потом усреднить все полученные значения, то мы получим вектор, где длинна вектора есть амплитуда, а арктангенс составляющих есть разность фаз, между сигналом и гетеродином.
Так вот если постоянно менять частоту гетеродина, то мы просканируем все частоты и получим спектр. Так работают (работали) аналоговые спектроанализаторы.
ДПФ делает то-же самое, абсолютно. Только не в реальном времени и не с живым сигналом, а с готовым — оцифрованным массивом данных.
БПФ модифицированный и оптимизированный алгоритм, который работает быстрее засчет уменьшения количества умножений. В ДПФ каждая выборка сигнала умножается на синус и косинус «гетеродина», но выборки синусов и косинусов разных частот совпадают во времени, и чтобы не использовати их повторно, они используются оптимально, засчет сортировок и перестановок.
Ну, а дальше уже формулы.
Статья отличная, прочитал с огромным удовольствием, автору спасибо!
Ну, например, установкой квадратурного модулятора в тракте каждого антенного элемента. С помощью КМ, можно вращать фазу на все 360 градусов, а еще и амплитудой управлять. Это если передатчик, а если антенная система работает на прием, то тоже самое ставится в систему первого преобразования, между смесителями и гетеродином, потом первые ПЧ объединяются.
Автору, большое спасибо, очень интересная статья!
Я полагаю, что если задать правильный режим транзистору, то будет работать намного лучше. Громче и качественнее. Сейчас, наверняка, воспроизводятся только положительные полуволны. Отрицательные срезаются, таким образом имеется множество четных гармоник. Я думаю, что через видео не так заметно качество.
Кроме того, интересна полоса передаваемых частот, несущая 40 кГц, а вот какая полоса?
4кГц? или 5кГц? Но вот качество аналогичное 8кГц и 8 Бит…
В схеме приемника во втором транзисторе, база без смещения и развязана конденсатором. Такой транзистор, даже если и будет работать, то с адскими искажениями.
В первом транзисторе, смещение 1 МОм, это тоже многовато, я бы 75 кОм поставил бы.
Я использовал 2 входа на одну микросхему, поэтому время обновления значений составляет 2.4 мс. Плоховато, но что поделаешь? К сожалению на али других 16-битных быстрых АЦП нет.
Плохо? Мне думается что было бы достаточно 20 мс… Дергать джойстиками с такой частотой никто не сможет :)
Интересно, каковы с Вашей профессиональной точки зрения причины более низкой популярности «Букашки» по сравнению со «Спеками»?
Почему с профессиональной? Как раз в этой области я любитель. Профессионалом я себя считаю (как и тружусь) в области телекоммуникаций. ВЧ и СВЧ.
По делу: Возможно БК просто был создан не в то время, скудное ПО, странный язык «фокал». Но это просто ИМХО.
А как же чипы для пластиковых карт, RFID-меток?
А что с ними не так?
Тут нужна особая иррациональная любовь к подобным занятиям, временами доходящая до религиозного/спортивного фанатизма.
Отлично понимаю это утверждение. У меня есть еще одна компонента — закрытие пункта мечты. Как, наверное, знаете, каждый программист мечтает создать свою ОС, каждый железячник мечтает создать свой ПК.
Большинство того, о чем я мечтал в детстве сбылось, несбывшееся я закрываю, потихоньку, подобным вот образом. В ретрокомпьютерах я уже реализовал все то, чего мне в них не хватало тогда… Наверное, это и есть фанатизм.
Поэтому в подобных компьютерах-поделках должен быть и настоящий защищённый режим...
В принципе с технической точки зрения реализовать ЗР не сложно, но не стояло задачи. Но теперь…
А как бы Вам виделся ЗР в подобной системе?
и контроллер прерываний
А вот контроллер прерываний я как раз сейчас продумываю.
Иногда меня раздражает, когда окружающие просят, чтобы я что-то сделал в вопросительной форме. Причем это бывает очень часто, и с очень разными людьми.
Вопрос звучит так: «Ты можешь (...)?».
В скобках может быть и (почистить картошку) и (отремонтировать что-то) и (закрыть окно) и т.д.
Вобщем-то да, потому что и создавались изначально для вычислений, построения диаграмм и графиков, и расчитанные на бизнес-, а не на домашних пользователей, никто ж поначалу не думал, что на них будут ещё и играть.
Теперь получается, что по Вашему компьютер от калькулятора отличается наличием возможности играть?
Но вообще-то, компьютер это вычислитель, также по определению.
Но зачем Вы пытаетесь выдумать свое определение, добавляя защищенный режим и виртуализацию памяти, для меня — загадка.
Есть же целый ресурс, где участники специально этим занимаются...
Ну, в целом, я тоже этим занимаюсь и увлекаюсь. Ретрокомпьютеры — одно из моих хобби, если хотите.
Вопрос был не в этом, а в том, почему вообще систему команд надо делать с чем-то совместимым, ведь Вас же не держит никакое легаси?
Согласен, меня ничего не держит. Но опираться на что-то надо. И надо с чем то сравнивать производительность. Я рассматривал СК от UMC6502, i8080 (кр580вм80а) и Z80. И в качестве базы выбрал вторую. Это не означает что опкоды будут совпадать, совсем нет.
Совпадать будет большинство основных инструкций, но не опкодов, код не будет совместим. Но код будет весьма легко переносить методом трансляции. Если Вы посмотрите на СК i8080, то Вы увидите много ненужного, например опкод $40 это MOV B,B. То есть переписать регистр в себя, то есть NOP. И такая команда есть для всех РОН!.. Каждый РОН можно записать в себя. То есть 8 опкодов заняты NOPами. В этих опкодах можно поместить команды поинтереснее.
И я как раз делаю так, как Вы написали выше.
Ведь всё равно первое время придётся всё пилить непосредствеено в кодах, а со временем добавить Вашу архитектуру в binutils либо приспособить более простой компилятор с ассемблера AXASM. А потом уже заняться добавлением Вашей архитектуры в gcc либо использовать для портирования C-компилятор попроще.
Но это Вы загнули. :) Я прекрасно осознаю, что проект не получит какого либо широкого распространения. И дело ограничится простейшим сборочным транслятором. Ну, а с OS — да, запуск на ПЗУ, загрузка в ОЗУ и шелл.
Также любопытная тема — «попаданческий компьютер»
Что это? :O
1) отдельный вид внешкольного образования
К сожалению или к счастью, я не педагог. :)
2) созидающая субкультура с высоким порогом вхождения, что обусловит здоровую социальную микросреду
Вот это и правда интересно, но не на этом проекте. Может на следующем, когда я отважусь сделать что-нибудь подобное Raspberry PI, на FPGA и ARM.
3) ещё одна интересная дисциплина олимпиад и соревнований, кроме алгоритмики можно ещё соревноваться в бенчмарках, в энергоэффективности;
То-же, что и первый пункт.
4) применение в некоторых случаях, где не критична вычислительная мощность и важна информационная безопасность — невозможность создания вирусов под ключевую архитектуру в силу её абсолютной уникальности;
Уникальность не может являться базой для ИБ. Любая криптография базируется на том, что злоумышленник все знает о системе, но сделать ничего не может. А не на том, что злоумышленник ничего не знает о системе, которую пытается взломать. ;)
5) кузница потенциальных кадров не только по системному программированию, но и по встраиваемым системам и IoT.
И тоже, не на таком проекте.
Разумеется, в кружке авиамоделирования детей должны учить проектировать модель самолёта, а не воздушных змеев. То есть процессор, на котором потенциально способна работать современная ОС, а не электронные игрушки из 80-х.
Если стоит образовательная цель, то да, соглашусь.
Конечно ПЗУ! :) Все как обычно, и как везде. После сброса макропроцессор (я называю это так) начинает выполнять код с адреса 0000h, а там будет ПЗУ 2кб.
Обычно, ПЗУ распологают вверху адресного пространства, и даже в «РАДИО-86РК» есть хитрая система запуска, которая временно подставляет ПЗУ в нулевые адреса, но потом случается переход на верхние адреса и ПЗУ синхронно меняет свое расположение.
Но я решил иначе, я решил расположить ПЗУ в самом начале, 2кб должно хватить, что-бы проинициализировать всю периферию, найти SD карту и прочитать несколько секторов в ОЗУ, далее передать туда управление, и на этом функция ПЗУ заканчивается.
И написание ОС сведется к программированию на обычном ПК с последующей заливкой на SD. Как то так.
По Вашему, так калькулятор от компьютера отличается наличием защищенного режима? А как же IBM PC до 286го? Это тоже калькуляторы? Компьютеры-самоделки, такие как «РАДИО-86РК», «МИКРОША», «СПЕЦИАЛИСТ»,«АПОГЕЙ» и прочие, назывались «ПЭВМ» — Персональная Электронно Вычислительная Машина. Полагаю, что мой проект заслуживает именно такого названия.
После этого дальше читать уже не особо интересно.
Дело Ваше. :)
… хотя он достаточно прост для реализации на рассыпухе, чуточку сложнее UART'а. И он сразу снимает вопросы как с графикой, так и с интерфейсом для SD-карты, которая штатно умеет работать в SPI mode…
Я имел ввиду, что аппаратного SPI не будет. Для общения с SD будет программный SPI. Как раз нецелесообразно делать аппаратный SPI, вполне достаточно написать программный.
А сакральный смысл… мне и вовсе непонятен. КМК, описанный Вами калькулятор имеет смысл проектировать и изготовить разве что...
Система команд зависит от применяемости процессора, на одних процессорах легче и быстрее решаются одни задачи, на других другие. Принципиально другие. Где-то задачи выгоднее распараллеливать, и там нужны многоядерные системы, а где-то решать наоборот в один поток, но быстро.
Попытка сделать «суперуниверсальную» систему команд «для всех времен и народов» родила такого монстра как x86. Мне она кажется некрасивой, хотя в 90е я на ассемблере не один мегабайт написал.
разве что… на спор
Скажите, а если устранить все Ваши замечания и реализовать предложения, то какой еще смысл делать подобный проект Вам видится, кроме того, что на спор?
Я знаю, что у SMD масса плюсов. И использую их постоянно в проектах на работе и в самоделках. Но здесь другой случай, я собираю на макетных платах. Во первых, это позволяет не разводить конкретную плату под проект, а во вторых, есть возможность менять схему по мере продвижения разработки. Миниатюрность здесь не требуется, наоборот я хочу наглядности. В такой процессор будет приятно тыкнуться осциллографом. По поводу пыли, я планирую корпус и скорее всего прозрачный из оргстекла, но это потом…
SOT-23 не годится по условиям и ограничениям.
Может в каком-то следующем проекте я рассмотрю подобную логику.
Как раз компоненты не SMD, я хочу, что бы наоборот было винтажнее. Есть цель доказать, что «в те времена» когда народ собирал «РАДИО-86РК», то, что я делаю сейчас тоже было возможно. :)
Про ограничения проекта написал чуть выше.
А за статью автору огромное спасибо! Прочитал с удовольствием.
Не хотел заранее, но проговорился :)
Расчитываю на 3-4 статьи про процессор, и еще пару про сам компьютер на таком процессоре. Процессор 8-бит, система команд похожая (но не идентичная) кр580вм80а.
Планирую выжать 2 MOPS.
Про A4, Вы не ошиблись, но я собираю на макетных платах, этажеркой 3 штуки, разделенные стойками. И еще 2 такие-же на сам компьютер, где 1я это видеосистема, а 2я все остальное. Регистров общего назначения 6 (восьмибитные). Шина адреса 16-бит. Защищенного режима (конечно) нет. UART — пока не знаю, SPI — врядли. Из периферии таймер для звука, клавиатура, дисплей (несложная графика), накопитель на SD.
Делаю на спор, об этом напишу. Из условий: процессор не должен включать в себя ПЛИС (хоть устаревшие, хоть современные), не должен включать в себя микропроцессоры и микроконтроллеры (также хоть устаревшие, хоть современные), все корпуса микросхем должны быть DIP со стандартным шагом 2.54, использование «SOиков» по согласованию и рассмотрению и в сверхмалых дозах (в идеале без них).
Использование микросхем в tqfp, mlf, bga и т.д. — запрещается. Единственная современная деталь, разрешенная в таком компьютере SD карта (в качестве накопителя).
Однако, использование AVR, STM32 или ПЛИС разрешено только на этапе отладки отдельных узлов процессора, таких как эмуляция внешней периферии, пошаговый прогон команд, эмуляция ПЗУ и ОЗУ, но они должны быть удалены по окончанию проекта. Здесь они не являются частью процессора, а лишь инструментами в разработке, также как, например, осциллограф.
Правда, я никак не использовал CAN. Все совсем по простому сделал.
Я ассемблерщик, люблю выжать из процессора максимум, иногда перестановка местами двух команд, может дать заметный прирост в производительности.
Кроме того, на борту STM32 имеется аппаратный SDIO интерфейс, что позволяет писать на карту очень быстро.
Как раз я полагаю, что сжимать надо, и не для объема носителя, а для более редкого обращения к носителю. То есть, оцифровываем, сжимаем, копим в ОЗУ, а карту, «будим» раз в минуту «к примеру» и перегоняем накопленное. Флеш память весьма прожорлива по питанию, особенно при записи, чем реже мы к ней обращаемся и чем быстрее пишем, тем меньше она успеет сожрать за это время.
Не совсем, от динамического диапозона никуда не уйти, сколько есть бит, столько и останется. Есть, правда ухищрения с компараторами и ОУ, но, вряд ли это здесь подойдет. АРУ помогает использовать динамический диапозон наиболее полно, дает качество, ослабляет шумы. Но, по определению, выделить слабые звуки на фоне сильных не помогает.
В stm32 — 12 бит, есть на борту два АЦП, а в некоторых 3 штуки.
Да, примерно так. Смотрим какой канал зашкаливает от сильного усиления, и выбираем канал с меньшим усилением, на лету. Можно, также управлять усилением ОУ, через отдельные ноги процессора. Переключая их (ноги) из состояния ввода (hi-z) в состояние выхода с нулем на выходе, то есть подтягивая к земле, что дает изменение характеристик сопротивления в обратной связи в ОУ. Это, как бы, цифровой способ управления аналоговым ОУ. Позже распишу по подробнее.
Тут важна одна деталь. Если говорить прямо в микрофон (ну как в телефоне, например), то особо, ничего не требуется. А вот если предполагается, что нужно захватывать посторонние звуки, речь собеседника, музыку в дали, шум ветра, и т. д., то для дальнейшей отчистки нужен большой объем данных. Например, если записать и оцифровать речь на фоне музыки с частотой дискретизации 10кГц, а музыка имеет частоты вплоть до 15-20кГц, тогда все частоты, что выше 5 кГц, завернуться, перемешаются и попадут в сигнал в качестве шума. Значит, или потребуется хороший аналоговый фильтр в микрофонном усилителе, или нужно оцифровывать с большей частотой дискретизации и фильтровать программно. КИХ, например. Иначе потом не разделить.
Согласен, однако в современных аккумуляторах, особенно, в которых литий, проблема в кривой заряда разряда. Она не такая, как например, в конденсаторах.
Именно поэтому, ноутбуки, телефоны, планшеты, и прочая современная техника так странно расчитывает время оставшегося заряда. Там, буквально, меряется ток, и исходя из него и емкости расчитывается время.
То есть, при заряде счетчик считает в плюс, при разряде в минус, а к напряжению и емкости это подвязывается с помощью алгоритмов, подобных фильтру Калмана. Хоть и сумбурно, но так.
Ну, любое аппаратное решение/функция, это как минимум один корпус микросхемы, а значит потребление. И не только, эту микросхему надо закупать, припаивать, обвязывать. Выход из строя тоже не последнюю роль играет.
Макеток очень много, и не дорогие. спаяв к ним микрофонный усилитель на маленькой (а может для начала и не очень) платке, уже сразу можно баловаться кодом, посылая его в комп по USARTу. И отлаживать кодек. :)
В дальнейшем еще напишу по теме.
Сейчас, я бы присмотрелся к STM32. Во первых, они весьма миниатюрны, у них большой обьем ОЗУ, ПЗУ. Есть на борту часы реального времени, если поставить миникварц на 32768 гц. В одном из моих проектов на таком контроллере успешно применяется кодек АДИКМ.
Вам нужно определиться с динамическим диапозоном, то есть решить сколько бит на отчет требуется. Микрофонный усилитель штука простая, для обычного подключения к АЦП контроллера, достаточно задать смещение в «полисточника», это означает, что при отключенном усилителе на ноге должно быть полпитания (ну, например, 1.5 в). Через емкость 0.33 мкф, в эту точку подаете сигнал.
Если есть ЦАП на борту, то очень удобно использовать его в качестве такого смещения, которое можно еще и программно корректировать. Для управления усилением, можно использовать несколько входов АЦП. То есть сигнал усиливается, потом проходит несколько ступеней ослабления, и каждая ступень заводится на свой вывод АЦП. А контроллер смотрит с какого брать сигнал, и тем самым подбирает уровень. Частоту дискретизации, конечно же, лучше выбрать повыше, а потом сделать децимацию, под нужный поток — уменьшит уровень гранулярного шума.
Теперь про аккумулятор. А зачем Вам эффективная стабилизация питания? Если Вы возьмете одну банку LI-PO аккумулятора, то его диапозона питающих напряжений хватит на все. Заряженный 4.2в, разряженный 3в. И микроконтроллер и sd карта и микрофонный усилитель будут нормально работать. Ну может sd карте потребуется небольшое ограничение (но это скорее «для порядка»).
Плавания частоты при работе от кварца — тоже не будет.
Цепь заряда, можно заморочиться с специализированной микросхемой, там много плюшек в виде контроля заряда, разряда, измерений токов и напряжений, и все это по какому нибудь SPI интерфейсу может общаться с контроллером. Но, при минимализме, можно поставить классический стабилизатор тока на одном транзисторе, а остальное написать программно в контроллере.
В общем, как-то так.
Остались наработки.
На самом деле все немного сложнее, гетеродин должен быть двойной (синусоида и косинусоида), если умножить анализируемый сигнал на синусоиду и косинусоиду, а потом усреднить все полученные значения, то мы получим вектор, где длинна вектора есть амплитуда, а арктангенс составляющих есть разность фаз, между сигналом и гетеродином.
Так вот если постоянно менять частоту гетеродина, то мы просканируем все частоты и получим спектр. Так работают (работали) аналоговые спектроанализаторы.
ДПФ делает то-же самое, абсолютно. Только не в реальном времени и не с живым сигналом, а с готовым — оцифрованным массивом данных.
БПФ модифицированный и оптимизированный алгоритм, который работает быстрее засчет уменьшения количества умножений. В ДПФ каждая выборка сигнала умножается на синус и косинус «гетеродина», но выборки синусов и косинусов разных частот совпадают во времени, и чтобы не использовати их повторно, они используются оптимально, засчет сортировок и перестановок.
Ну, а дальше уже формулы.
Статья отличная, прочитал с огромным удовольствием, автору спасибо!
Автору, большое спасибо, очень интересная статья!
Кроме того, интересна полоса передаваемых частот, несущая 40 кГц, а вот какая полоса?
4кГц? или 5кГц? Но вот качество аналогичное 8кГц и 8 Бит…
В первом транзисторе, смещение 1 МОм, это тоже многовато, я бы 75 кОм поставил бы.
Плохо? Мне думается что было бы достаточно 20 мс… Дергать джойстиками с такой частотой никто не сможет :)
Почему с профессиональной? Как раз в этой области я любитель. Профессионалом я себя считаю (как и тружусь) в области телекоммуникаций. ВЧ и СВЧ.
По делу: Возможно БК просто был создан не в то время, скудное ПО, странный язык «фокал». Но это просто ИМХО.
А что с ними не так?
Отлично понимаю это утверждение. У меня есть еще одна компонента — закрытие пункта мечты. Как, наверное, знаете, каждый программист мечтает создать свою ОС, каждый железячник мечтает создать свой ПК.
Большинство того, о чем я мечтал в детстве сбылось, несбывшееся я закрываю, потихоньку, подобным вот образом. В ретрокомпьютерах я уже реализовал все то, чего мне в них не хватало тогда… Наверное, это и есть фанатизм. В принципе с технической точки зрения реализовать ЗР не сложно, но не стояло задачи. Но теперь…
А как бы Вам виделся ЗР в подобной системе?
А вот контроллер прерываний я как раз сейчас продумываю.
Вопрос звучит так: «Ты можешь (...)?».
В скобках может быть и (почистить картошку) и (отремонтировать что-то) и (закрыть окно) и т.д.
Теперь получается, что по Вашему компьютер от калькулятора отличается наличием возможности играть?
Но вообще-то, компьютер это вычислитель, также по определению.
Но зачем Вы пытаетесь выдумать свое определение, добавляя защищенный режим и виртуализацию памяти, для меня — загадка.
Ну, в целом, я тоже этим занимаюсь и увлекаюсь. Ретрокомпьютеры — одно из моих хобби, если хотите.
Согласен, меня ничего не держит. Но опираться на что-то надо. И надо с чем то сравнивать производительность. Я рассматривал СК от UMC6502, i8080 (кр580вм80а) и Z80. И в качестве базы выбрал вторую. Это не означает что опкоды будут совпадать, совсем нет.
Совпадать будет большинство основных инструкций, но не опкодов, код не будет совместим. Но код будет весьма легко переносить методом трансляции. Если Вы посмотрите на СК i8080, то Вы увидите много ненужного, например опкод $40 это MOV B,B. То есть переписать регистр в себя, то есть NOP. И такая команда есть для всех РОН!.. Каждый РОН можно записать в себя. То есть 8 опкодов заняты NOPами. В этих опкодах можно поместить команды поинтереснее.
И я как раз делаю так, как Вы написали выше.
Но это Вы загнули. :) Я прекрасно осознаю, что проект не получит какого либо широкого распространения. И дело ограничится простейшим сборочным транслятором. Ну, а с OS — да, запуск на ПЗУ, загрузка в ОЗУ и шелл.
Что это? :O
К сожалению или к счастью, я не педагог. :)
Вот это и правда интересно, но не на этом проекте. Может на следующем, когда я отважусь сделать что-нибудь подобное Raspberry PI, на FPGA и ARM.
То-же, что и первый пункт.
Уникальность не может являться базой для ИБ. Любая криптография базируется на том, что злоумышленник все знает о системе, но сделать ничего не может. А не на том, что злоумышленник ничего не знает о системе, которую пытается взломать. ;)
И тоже, не на таком проекте.
Если стоит образовательная цель, то да, соглашусь.
Обычно, ПЗУ распологают вверху адресного пространства, и даже в «РАДИО-86РК» есть хитрая система запуска, которая временно подставляет ПЗУ в нулевые адреса, но потом случается переход на верхние адреса и ПЗУ синхронно меняет свое расположение.
Но я решил иначе, я решил расположить ПЗУ в самом начале, 2кб должно хватить, что-бы проинициализировать всю периферию, найти SD карту и прочитать несколько секторов в ОЗУ, далее передать туда управление, и на этом функция ПЗУ заканчивается.
И написание ОС сведется к программированию на обычном ПК с последующей заливкой на SD. Как то так.
По Вашему, так калькулятор от компьютера отличается наличием защищенного режима? А как же IBM PC до 286го? Это тоже калькуляторы? Компьютеры-самоделки, такие как «РАДИО-86РК», «МИКРОША», «СПЕЦИАЛИСТ»,«АПОГЕЙ» и прочие, назывались «ПЭВМ» — Персональная Электронно Вычислительная Машина. Полагаю, что мой проект заслуживает именно такого названия.
Дело Ваше. :)
Я имел ввиду, что аппаратного SPI не будет. Для общения с SD будет программный SPI. Как раз нецелесообразно делать аппаратный SPI, вполне достаточно написать программный.
Система команд зависит от применяемости процессора, на одних процессорах легче и быстрее решаются одни задачи, на других другие. Принципиально другие. Где-то задачи выгоднее распараллеливать, и там нужны многоядерные системы, а где-то решать наоборот в один поток, но быстро.
Попытка сделать «суперуниверсальную» систему команд «для всех времен и народов» родила такого монстра как x86. Мне она кажется некрасивой, хотя в 90е я на ассемблере не один мегабайт написал.
Скажите, а если устранить все Ваши замечания и реализовать предложения, то какой еще смысл делать подобный проект Вам видится, кроме того, что на спор?
SOT-23 не годится по условиям и ограничениям.
Может в каком-то следующем проекте я рассмотрю подобную логику.
Про ограничения проекта написал чуть выше.
А за статью автору огромное спасибо! Прочитал с удовольствием.
Расчитываю на 3-4 статьи про процессор, и еще пару про сам компьютер на таком процессоре. Процессор 8-бит, система команд похожая (но не идентичная) кр580вм80а.
Планирую выжать 2 MOPS.
Про A4, Вы не ошиблись, но я собираю на макетных платах, этажеркой 3 штуки, разделенные стойками. И еще 2 такие-же на сам компьютер, где 1я это видеосистема, а 2я все остальное. Регистров общего назначения 6 (восьмибитные). Шина адреса 16-бит. Защищенного режима (конечно) нет. UART — пока не знаю, SPI — врядли. Из периферии таймер для звука, клавиатура, дисплей (несложная графика), накопитель на SD.
Делаю на спор, об этом напишу. Из условий: процессор не должен включать в себя ПЛИС (хоть устаревшие, хоть современные), не должен включать в себя микропроцессоры и микроконтроллеры (также хоть устаревшие, хоть современные), все корпуса микросхем должны быть DIP со стандартным шагом 2.54, использование «SOиков» по согласованию и рассмотрению и в сверхмалых дозах (в идеале без них).
Использование микросхем в tqfp, mlf, bga и т.д. — запрещается. Единственная современная деталь, разрешенная в таком компьютере SD карта (в качестве накопителя).
Однако, использование AVR, STM32 или ПЛИС разрешено только на этапе отладки отдельных узлов процессора, таких как эмуляция внешней периферии, пошаговый прогон команд, эмуляция ПЗУ и ОЗУ, но они должны быть удалены по окончанию проекта. Здесь они не являются частью процессора, а лишь инструментами в разработке, также как, например, осциллограф.