С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
У меня получилось, так что не "сплошные фантазии какие-то на тему". Возможно, и у других получилось бы, или получится. Другое дело, что сейчас в этом смысла нет.
- - - Добавлено - - -
Я могу сделать модифицированный вариант стандартного ПЗУ Спектрума 48, с ШИМ вместо ЧМ на стандартных частотах, с которым любой обладатель реала, позволяющего впечатывать в нижнее окно памяти страницу ОЗУ (а это Орель, Робик, Скорпионы, +2А/+3), может сделать ШИМ-записи программ и потестить их читаемость на его железе. Это альтернативный обычным турбо-записям вариант ускорения загрузки в два раза.
Спасибо! Кассету записал и выслал. Проверить качество записи не удалось, т.к. у моего компьютера, оказывается, нет аудиовходаА через микрофон не прочиталось. Магнитофон довольно паршивенький, на слух - много детонаций. Так что должен быть хороший тест с этой кассетой!
Для остальных - tzx-файл, который можно как испытывать непосредственно в эмуляторах, так и записать на живую кассету и потом грузить на реале или через PC и обработку. Вот. Там загрузчик в стандартном формате и много экранов в 8b/10b.
- - - Добавлено - - -
Добро пожаловать!
Честно говоря, не помню уже. Но они все рабочие, некоторые только чуть хуже, не так строго выдерживают времянки.
Что значит "неравномерно выдержаны фронты сигнала"?
Можешь выложить звуковой файл с этой записью на гуглодрайв или еще куда, и дать мне ссылку? Хочу посмотреть, что именно произошло с сигналом. Вообще, мой формат был испытан на нескольких магнитофонах и имел проблемы пока только на одном (Haywire).
А мой становится нечитаемым?
Это ты описываешь обработку сигнала эмулятором? Не факт, что именно описанный тобой способ там используется. По-моему ты описал работу фильтра высоких частот (ФВЧ) с двухуровневым квантователем, но не уверен.
В моем случае никакой цифровой обработки сигнала в эмуляторе не производилось. Я брал звуковой файл (в том числе файлы, присланные другими пользователями, оцифрованные с реальных кассет) и с помощью своей матлаб-утилиты "wav2tzx", переводил его в формат TZX. А этот файл уже скармливал эмулятору, который никаких скользящих средних или другой обработки сигнала не производил.
Правильно ли я понял, что ты описываешь некий алгоритм расчета значения, по которому надо отличать в сигнале единицы от нулей? Что если сигнал выше некоторого порогового значения - то он будет воспринят как "1", а если ниже - то как "0"?
Если так, то не все так плохо, как ты описываешь. Расчет порогового значения скользящим средним - это то же самое, что фильтр высоких частот (ФВЧ). Если этот фильтр имеет низкую частоту среза (20Гц и ниже) - то он удалит постоянную составляющую из сигнала, а нулевой уровень окажется оптимальным, чтобы использовать его в качестве порогового значения.
Обычно совпадает, потому что во всех магнитофонах постоянная составляющая не записывается и не воспроизводится. Все тракты сигнала содержат проходные конденсаторы, которые (совместно с резисторами) образуют ФВЧ с низкими частотами среза.
У меня обычно полосы были одинаковыми, но я имел счастье использовать спектрум с хорошим магнитофонным входом ("Орель БК-08"), где для квантования сигнала используется микросхема компаратора (554СА3). Вот в дешевых клонах, где вместо компаратора используется логический элемент, может быть такое, что квантование производится не по нулевому уровню, а со смещением. Стандартный формат таким не убивается, а вот мой, в зависимости от прочих искажений, может пострадать. Надо будет поизучать вопрос.
При увеличении громкости величина смещения нуля относительно амплитуды сигнала уменьшается, а следовательно, симметрия порогового значения должна улучшаться. Другое дело, если там смещение составляет десятки процентов от максимально возможной амплитуды сигнала магнитофона - тогда повышать некуда.
Можно здесь подробнее, что имеется в виду? Если речь идет об инверсии сигнала - то мой формат устойчив к инверсии, будет грузить.
Что значит "не выдерживаю фронты сигнала по длительности"? Что под этим имеется в виду?
Нет, не превращается. Где-то прямоугольный сигнал искажается, но совсем в синус не переходит. Я при испытаниях обрабатывал сигнал фильтрами низких частот где-то 4 порядка с частотой среза 2000Гц. После этого от прямоугольника действительно мало что остается, но этого тем не менее достаточно для уверенной загрузки в новом формате. В теории должно грузиться, даже если убрать полностью все частоты выше 2000Гц без существенных фазовых искажений. Должно грузиться. Теорема Котельникова, однако.
Со мной можно на эти темы разговаривать не на образном, а на строгом языке теории линейных систем и фильтров, и обработки сигналов. Пожалуйста, объясни точнее, что ты имеешь в виду. Тогда мы сможем проанализировать и точно выяснить, делают ли некоторые фильтры невозможной загрузку в предлагаемом мной формате.
Длительность фронтов спектрумом не контролируется. Фронт кусочно-постоянного сигнала, каким является сигнал с магнитофонного выхода - это процесс перехода его с одного уровня на другой. Длительность этого процесса обусловлена не программой, а характеристикой магнитофонного выхода, наличием ФНЧ, конечностью быстродействия микросхем.
Возможно, ты "длительностью фронтов" называешь на самом деле длительность нахождения сигнала на постоянном уровне, т.е. длительность участков между фронтами. Давай тогда использовать общепринятые в отрасли термины, а то тяжело.
Если я правильно понял твои образные объяснения - то на строгом языке это звучит как опасение, что в сигнале 8b/10b присутствует постоянная составляющая. Нет, постоянной составляющей сигнал 8b/10b не имеет, хотя разбаланс количества нулей и единиц может кратковременно достигать +-4, что выше, чем в сигнале Спектрума (там максимально 2).
Да, получается НЧ-волна (я достаточно хорошо представляю себе такие вещи, чтобы не проводить эксперимент). Это свидетельствует о том, что в сигнале 8b/10b содержится несколько больше низких частот, чем в сигнале стандартного формата. Хотя в сигнале стандартного формата тоже есть низкие частоты. Попробуй запиши на кассету файл с псевдослучайным содержимым (например, содержим ПЗУ) и проведи на нём описанный тобой эксперимент - тоже получится НЧ-волна.
Также хочу заметить, что скользящее среднее - это частный случай фильтра низких частот (ФНЧ). Поэтому для иллюстрации сказанного тобой выше можно пользоваться не только скользящим средним, но и другими ФНЧ с похожей АЧХ. Также можно использовать спектральный анализатор для определения того, сколько и каких частот содержится в сигнале. Я в этой теме, кажется, выкладывал спектрограммы сигналов как в формате 8b/10b, так и в стандартном.
Вообще говоря, усиление низов должно убить и синклерский формат, если оно совсем уж чрезмерное. Хотя для синклерского формата характерно очень низкое содержание НЧ по сравнению со всеми другими форматами, которые я изучал, поэтому, с точки зрения "горба на низах", синклерский формат имеет преимущество. Так как меньше исходное содержание НЧ - то меньше будет и их содержание после усиления.
Но я думаю, что магнитофон все же должен соответствовать хотя бы некоторым минимальным требованиям, например, четвёртой (самой худшей) группе сложности по ГОСТ 24863-87. Там указана максимальная неравномерность АЧХ, а значит, ограничена и величина возможного "усиления по низам".
Никаких специализированных. Способ уже проверялся на нескольких магнитофонах и работает. Я для определённости хочу потребовать соответствие магнитофона требованиям ГОСТ 24863-87 для четвёртой группы сложности. Любой формат можно убить чрезмерными искажениями, поэтому следует задаться каким-то определенным максимально допустимым их уровнем и испытывать на нём.
Если, как ты говоришь, "уравновешивать" (то есть использовать только последовательности кодированного сигнала вида "10" и "1100" - то получится синклерский стандартный формат, который в этих рамках уже нельзя улучшить. Но я верю, что в этом нет необходимости. Кроме Спектрума есть компьютеры, использовавшие для записи на кассету Манчестерский код (также известный под названием "фазовая модуляция"), а это уже шаг вперёд по эффективности. Код 8b/10b ещё более эффективный, и он показал работоспособность, по меньшей мере, на некоторых магнитофонах. Тот магнитофон, где формат не заработал - он ужасно убивает сигнал, по меньшей мере, при записи. Он точно не соответствует никакому ГОСТу; проблема только в том, что он встроен в Spectrum +2.
Формат 8b/10b делает даже больше. Он передаёт биты каждым битовым интервалом, в течение которого может быть, а может и не быть изменения уровня сигнала (т.е. "фронта"). Так как частота кодированных битовых интервалов как на синклерском формате, так и на 8b/10b, составляет 4кГц - то передаётся 4 килобита в секунду. Для обеспечения заданных свойств кодированного сигнала (отсутствие постоянной составляющей и др.) каждым 8 полезным битам соответствует 10 кодированных бит (отсюда и название формата). Формат даёт скорость в 400 полезных байт в секунду, что в среднем в 2 с половиной раза выше, чем скорость стандартного формата на файлах, состоящих из 50% нулей и единиц. При этом скорость записи 8b/10b не зависит от содержания файла (у синклерского формата - зависит).
Последний раз редактировалось Barmaley_m; 28.07.2018 в 22:59.
Если речь идет о TZX-файлах - то там эмулятор ничего не разделяет, там сигнал уже квантован (т.е. может принимать только два уровня, 0 и 1). Квантование (т.е. "разделение") производится не эмулятором, а программой, которая подготавливает TZX-файл на основе либо wav-файла, либо непосредственно с аудиовхода.
Надёжнее? Ты уверен? Я думаю, что лучший способ - это ФВЧ с низкой частотой среза (типа 1-5Гц), а после - фиксированная граница разделения, равная нулю. Тем самым будет удален средний уровень сигнала, если он отличается от нуля, а после этого сигнал будет разделен на уровни оптимальным образом с точки зрения вероятности ошибки. Тебе что-нибудь говорит словосочетание "глазковая диаграмма"?
Я имел ввиду WAV файлы, или прямое чтение с входа звуковухи.
Я основываюсь на своем опыте написания кода чтения WAV -файлов для эмулятора. Поскольку уровни сигнала плавают, и не только от файла к файлу, но и внутри одного файла, для более надежного их разделения стоит сделать плавающей и границу разделения. Предварительная обработка всего WAV файла перед его чтением может быть довольно тормозным процессом в случае больших файлов, а скользящая граница разделения позволяет квантовать данные на лету.
- - - Добавлено - - -
И да, в теории цифровой обработки сигналов я не силен.
Окей. А у тебя остались тестовые файлы, на которых ты испытывал эффективность своего кода (т.е. надежность их считывания загрузчиком)? Давай попробуем сравнить оба предложенных метода.
Да вот не факт. Для простоты рассмотрим синус. Допустим, что его амплитуда плавает. Если мы будем разделять уровни строго по нулю - то, очевидно, независимо от амплитуды синуса, мы получим на выходе цифровой прямоугольный сигнал с одним и тем же периодом, фазой и скважностью 2.
Теперь допустим, что наш синус имеет некоторую неизвестную постоянную составляющую. Тогда мы пропустим его через ФВЧ. Тем самым постоянная составляющая будет ликвидирована, и на выходе снова будет прямоугольник с постоянной частотой, фазой и скважностью 2, независимо от амплитуды входного синуса.
Даже, если постоянная составляющая меняется во времени, ФВЧ ее устранит, если он имеет достаточно высокую частоту среза.
В случае, если входной сигнал не синус, а имеет сплошной спектр (что имеет место в случае записи на кассету данных в каком-либо формате) - то картина усложняется, и тут выбор может быть сделан в пользу того алгоритма, который даёт лучшие результаты на тестах. У тебя есть тестовый материал в виде различных записей данных с кассет?
А где у тебя будет находиться "ноль"? Ну вот допустим приехали отчеты, и там цифры от 0 до -5000. А может быть от 1000 до -10000. Т.е. "ноль" надо как минимум отыскать. Также может быть сюда замешана более низкая частота... Самое простое и быстрое - считать скользящую среднюю.
Последний раз редактировалось cafedead; 29.07.2018 в 05:20.
Тут на форуме выкладывались записи данных с кассет, обычно файлы довольно объемные, я их не храню. Не приведено аргументов, почему не стоит делать плавающей границу квантования, только некоторые соображения о использовании ФВЧ в случае, если входной сигнал синус, и общие слова. Чтобы говорить предметно, приведи форму сигнала, с которой при квантовании не справится плавающая граница, но справится ФВЧ.
На 27 странице к верхнему комментарию добавлял картинку. Там я примерно накидал, в чем беда.
С этих нескольких магнитофонов данные в реал загружались?
Ну да, ФНЧ - это, в простом исполнении, скользящая средняя...
В любом случае, это - идеальные условия. Реальность далека от идеала. Также, как и смотреть 2-х мегапиксельной камерой на мир, это не то же самое, что смотреть фотоэлементом с двумя состояниями.
Правильно. У реала он выражается в некотором фиксированном значении напряжения, которое задается электронными компонентами. У эмулятора - например, скользящей средней, или с найденными экстремумами что-то можно городить, как здесь привели в пример.
Он не просто не убивается, а еще и выходит, что запись можно подразогнать. Что, у пилота прям одинаковые красно-голубые полосы были? Потрясающе.
Да, извини, именно длительность и имелась в виду. Пытался сокращать. Волна состоит из двух полу-волн, сл-но между одной сменой значения, и другой сменой должны быть выдержаны равные интервалы времени... А когда ты не выдерживаешь интервалы, меняя скважность, получаешь гуляние аналогового сигнала, порождаешь НЧ-волны. НЧ-волна, вероятнее всего, мешает прочесть соседние биты одно-битовому АЦП реала. Тем более, что ты стремишься и по скорости взять все возможное. Думаю, стоит умерить аппетиты, хотя бы для начала.
У тебя полу-волны разного размера, что приводит к порождению НЧ-волны. Глянь иллюстрацию, что я сверху накидал. Это волны-паразиты, мешающие считать данные.
Ну если веришь, тогда приготовься к тому, что предел разгона такой волны будет заметно ниже классической Турбо-загрузки, со всеми вытекающими выводами по надежности. Это просто здравый смысл. И что, что на каких-то компьютерах реализована для сохранения на ленте фазовая модуляция? Другие-компьютеры - другое железо.
Попробуй начать с более скромными показателями. Выяснишь, где косяки, и затем будешь уже искать пределы. На данный момент, заявленные тобой цифры запредельные, и ничего общего с надежностью точно иметь не могут.
Еще могу посоветовать немного переработать загрузчик, чтобы он, вместо самой загрузки, сохранял временные задержки приходящего потока данных, чтобы это можно было затем как-то проанализировать для разных связок магнитофон-реал, сравнить с эталоном... Процесс пойдет более продуктивно.
Успехов.
Последний раз редактировалось cafedead; 29.07.2018 в 04:43.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)