Недопередача кода по звуковым каналам

Публичный форум для http://www.nedopc.org/nedopc

Moderator: Shaos

User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

Shaos wrote:Дык я ЦИФРОВЫМИ фильтрами занимался, а это аналоговые - я в них профан :)
Ну если это будет принципиально - я посчитаю тебе точную задержку.
Хотя есть у меня уверенность, что она практически незаметна.

Я сталкивался с такими фильтрами, когда увлекался аппаратурой АОН как раз
для телефонного кода 2 из 7.

Там было 2 распространённых похода: оцифровка через компаратор и целочисленный
анализ Фурье - заметно небыстрый алгоритм, но простая аппаратная реализация...

И второй подход - 7 активных фильтров на счетверенных ОУ с компараторами
на выходе - работало практически мгновенно...
Но ясный пень - аппаратно затратно...


PS. Просто так считать сейчас некогда - EDUC-8 занимаюсь...
iLavr
User avatar
Shaos
Admin
Posts: 24080
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Ну если говоришь что работало практически мгновенно, то этого наверное достаточно - считать ненадо :)
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
VituZz
God
Posts: 1343
Joined: 13 Nov 2010 04:06

Post by VituZz »

Я АОН к "Ориону" тоже делал на отдельных фильтрах с переключаемыми конденсаторами на ОУ. Задержки в срабатывании фильтров не ощущались, однако и скорости обмена там низки.
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

VituZz wrote:Я АОН к "Ориону" тоже делал на отдельных фильтрах с переключаемыми конденсаторами на ОУ.
Так на этом принципе отдельная ИС есть: 1000ВЖ-какая-то...
Выдаёт цифры сразу в коде.
iLavr
User avatar
Shaos
Admin
Posts: 24080
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Вот приёмо-передачтик FSK на двух микросхемах 4046 пролетел через www.dangerousprototypes.com :

http://dangerousprototypes.com/2014/11/ ... fsk-modem/
This project is about 4046 PLL base simple FSK modem. Under given configuration this modem send digital signals over two frequencies and which is switching around 378kHz and 226kHz. In this system, modulator uses VCO of 4046, and demodulator is based on close loop mode of 4046 phase comparator and external LPF assembly.
This FSK modem is specifically design to transfer digital signals over mixed signal lines and it can directly use with any slow digital interfaces like UARTs. This system operates reliably under 10kHz range and we test it with standard TTL inputs.
Image
Я тут за главного - если что шлите мыло на me собака shaos точка net
Odin P. Morgan
Senior
Posts: 151
Joined: 23 Feb 2015 15:37
Location: OMS

Re: Недопередача кода по звуковым каналам

Post by Odin P. Morgan »

Подниму тему.
Не задумывались ли уважаемы электронщики, использовать для прямой коммутации двух троичных машин, звуковой оптический разъём SP/DIF?
Так скажем оптически-звуковой модем. И ещё: раз зашла пьянка о передаче данных по модемам, можно использовать ISDN формат, для многоканального модемного подключения (тоже звукового). Единственное но, в модем нужно будет встраивать телефонный коммутатор для цифровых линий ISDN (хотя думаю, данную схему можно будет найти).
User avatar
Shaos
Admin
Posts: 24080
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Недопередача кода по звуковым каналам

Post by Shaos »

Вот тут описан блочный Kansas City Standard с блоками по 256 байт и заголовками с адресами куда пишется:

http://www.gammon.com.au/Arduino/cassette_interface.pdf

Но я наверное с блоками не буду заморачиваться, а возьму из этого скана только базовое описание KCS:
1) Mark (логическая единица) представляется восемью циклами сигнала 2400 Гц;
2) Space (логический ноль) представляется четырьмя циклами сигнала 1200 Гц;
3) Каждый символ представляет из себя Space (0) как старт, далее восемь битов данных и потом два или более Mark (1) как стоп;
4) Интервал между символами представляется неопределённой продолжительностью на частоте Mark;
5) При передаче битов данных младший бит передаётся первым, а старший бит - последним;
6) Данные сгруппированы в блоки произвольной длины, перед каждым из которых идёт как минимум 5-секундный Mark;
7) Не рекомендуется записывать ничего осмысленного в первые 30 секунд плёнки сразу после прозрачного участка...

P.S. Пункты 3 и 4 недвусмысленно намекают, что расстояние между байтами нефиксированное - старт байта детектируется по первому попавшемуся Space (1200 Гц) и до этого может пройти сколь угодно много Mark (2400 Гц), а в качестве пилот-тона используются всё тот же сигнал 2400 Гц (как минимум 5 секунд или 12000 периодов).
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24080
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Недопередача кода по звуковым каналам

Post by Shaos »

Вобщем генерить буду честные синусоиды 1200 Гц и 2400 Гц 4-битным ЦАП-ом с частотой дискретизации 24000 Гц для записи на магнитофон (или ухода в звуковой канал передачи данных), а чтение обратно будет делаться однобитным входом, куда будет подаваться отфильтрованный сигнал, причём читалку постараюсь сделать гибкой, чтобы она сама подстраивалась под частоту пилот-тона. А позже можно будет попробвать уменьшить количество периодов в Mark и Space, чтобы повысить плотность записи. Эксперименты будут делаться на недокомпьютере nedoPC-85-MK, который похоже становится моим основным подопытным кроликом...
:roll:

Code: Select all

F     ***
E    *****
D    *****
C   *******
B   *******
A  *********
9  *********
8 ***********
7 ***********
6 ************       *
5 ************       *
4 *************     **
3 *************     **
2 **************   ***
1 ********************
0 ********************
  8ACEFFFECA8642111246
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24080
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Ternary Kansas City

Post by Shaos »

Shaos wrote:Вот тут описан блочный Kansas City Standard с блоками по 256 байт и заголовками с адресами куда пишется:

http://www.gammon.com.au/Arduino/cassette_interface.pdf

Но я наверное с блоками не буду заморачиваться, а возьму из этого скана только базовое описание KCS:
1) Mark (логическая единица) представляется восемью циклами сигнала 2400 Гц;
2) Space (логический ноль) представляется четырьмя циклами сигнала 1200 Гц;
3) Каждый символ представляет из себя Space (0) как старт, далее восемь битов данных и потом два или более Mark (1) как стоп;
4) Интервал между символами представляется неопределённой продолжительностью на частоте Mark;
5) При передаче битов данных младший бит передаётся первым, а старший бит - последним;
6) Данные сгруппированы в блоки произвольной длины, перед каждым из которых идёт как минимум 5-секундный Mark;
7) Не рекомендуется записывать ничего осмысленного в первые 30 секунд плёнки сразу после прозрачного участка...

P.S. Пункты 3 и 4 недвусмысленно намекают, что расстояние между байтами нефиксированное - старт байта детектируется по первому попавшемуся Space (1200 Гц) и до этого может пройти сколь угодно много Mark (2400 Гц), а в качестве пилот-тона используются всё тот же сигнал 2400 Гц (как минимум 5 секунд или 12000 периодов).
Чтобы расширить этот "стандарт" третьим состоянием для Ternary Kansas City можно скажем ещё промежуточную частоту 1800 Гц добавить...
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Ternary Kansas City

Post by Lavr »

Shaos wrote:
...что расстояние между байтами нефиксированное - старт байта детектируется по первому попавшемуся Space (1200 Гц) и до этого может пройти сколь угодно много Mark (2400 Гц), а в качестве пилот-тона используются всё тот же сигнал 2400 Гц (как минимум 5 секунд или 12000 периодов).
Чтобы расширить этот "стандарт" третьим состоянием для Ternary Kansas City можно скажем ещё промежуточную частоту 1800 Гц добавить...
Поскольку есть Mark и Space третьим состоянием в посылке может быть просто отсутствие сигнала.
В "Простейшей ЭВМ на 580ВМ80" так лог. "0" формировали - на мой взгляд - весьма неглупо.
iLavr
User avatar
Shaos
Admin
Posts: 24080
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Ternary Kansas City

Post by Shaos »

Lavr wrote:
Shaos wrote:
...что расстояние между байтами нефиксированное - старт байта детектируется по первому попавшемуся Space (1200 Гц) и до этого может пройти сколь угодно много Mark (2400 Гц), а в качестве пилот-тона используются всё тот же сигнал 2400 Гц (как минимум 5 секунд или 12000 периодов).
Чтобы расширить этот "стандарт" третьим состоянием для Ternary Kansas City можно скажем ещё промежуточную частоту 1800 Гц добавить...
Поскольку есть Mark и Space третьим состоянием в посылке может быть просто отсутствие сигнала.
В "Простейшей ЭВМ на 580ВМ80" так лог. "0" формировали - на мой взгляд - весьма неглупо.
тишину тяжело детектировать т.к. там будет не тишина, а шум :mrgreen:
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Ternary Kansas City

Post by Lavr »

Shaos wrote:
Lavr wrote:Поскольку есть Mark и Space третьим состоянием в посылке может быть просто отсутствие сигнала.
В "Простейшей ЭВМ на 580ВМ80" так лог. "0" формировали - на мой взгляд - весьма неглупо.
тишину тяжело детектировать т.к. там будет не тишина, а шум :mrgreen:
Ну ты ж не смотрел, как это делается - очень просто всё детектируется, поскольку Mark и Space -
сигналы периодические, то тишина даже с шумом - сигнал апериодический. Шум давится простейшим интегратором на RC-цепи.
iLavr
User avatar
askfind
Devil
Posts: 822
Joined: 04 Jan 2016 09:15
Location: Russia, S.- Peterburg

Re:

Post by askfind »

Shaos wrote:Мне до сих пор непонятно как манчестер-код можно на магнитофон записывать и потом надёжно читать...
Известные технологии, но есть уникальный и проверенный в опытных проектах подход записи на магнитные носители цифровых данных, передача данных по каналам связи с ограниченной полосой пропуская, с исправлениями ошибок "на лету", диагностика канала связи по соседним битам.

Стахов, А.П.; Лихтциндер, Б.Я.; Орлович, Ю.П. и др.
Кодирование данных в информационно-регистрирующих системах
Издательство: Киев: Технiка
Переплет: мягкий; 127 страниц; 1975 г.
ISBN: [не указан]; Формат: стандартный
Язык: русский


Аннотация
Изложены методы проектирования информационно-регистрирующей аппаратуры на основе структурно-избыточного кодирования, которые позволяют существенно повысить эффективность аппаратуры, увеличить плотность и надежность регистрации данных. Основное внимание уделено комплексному решению вопросов регистрации информации - плотности размещения на носителе, коррекции ошибок, самосинхронизации. Рассчитана на инженерно-технических работников занимающихся разработкой и эксплуатацией вычислительной техники, а также может быть полезна студентам вузов.
Тираж 4 000 экз.

В этой книге есть практический синтез записи и чтения цифровых данных на магнитной ленте с уникальными характеристиками.


Кое-какие алгоритмы мне удалось проверить для систем связи.
You do not have the required permissions to view the files attached to this post.
"Ученье свет, а неученье — тьма. Дело мастера боится, и коль крестьянин не умеет сохою владеть — хлеб не родится." (С)
User avatar
askfind
Devil
Posts: 822
Joined: 04 Jan 2016 09:15
Location: Russia, S.- Peterburg

Re: Недопередача кода по звуковым каналам

Post by askfind »

Д3-28, устройства для загрузки ПО (способы, идеи, ... конструкции)

https://www.phantom.sannata.org/viewtop ... 27&t=32256

"...
Эмулятор аудио-кассеты кассеты.

Китайцы их делают в количестве, соответственно цена их небольшая.

Все неудачи с попытками записать сигнал на кассету связаны во первых с неправильным форматом файла: очень низкая точность времени.
Ведь когда драйвер аудиокарты воспроизводит файл с низкой частотой дискретизации он не знает, что такая частота выбрана специально, и нужно фронты привязывать именно к этим отчётам, а предполагает что в файле записана звуковая информация, соответственно и пытается восстановить из неё звук, с соответствующими характеристиками, вплоть до инверсии фазы.
Вторая причина связана в использовании магнитофона, который не использовался для записи оригинальной информации на кассеты. Он тоже вносит свою роль в фильтрации сигнала.
Чтобы не мучиться с изготовлением специального устройства для записи кассет, и соответственно самих кассет, и имеет смысл использовать эмулятор кассеты.
Ещё один довод в пользу эмулятора кассеты: эмулятору не нужно, чтобы у НЛМ был рабочий лентопротяжный механизм, достаточно чтобы работала схема усиления сигнала.


Такие картинки навели на мысль: записать на бытовой магнитофон "синус-подобные" импульсы, расположенные в местах "0" и "1" (в расчёте на то, что тракт чтения ДЗ-28 присутствие каждого такого импульса обнаружит, а быстрые колебания сигнала в импульсе будут игнорированы трактом чтения как "дребезг"). Вот фрагменты графиков таких сигналов, изготовленных в Маткаде, показаны концы с байтом 0512 и его битом чётности "0":

Наконец, ссылки на Яндекс-диске на сами WAV-файлы с этими сигналами для экспериментов (т.е. для записи на кассету на бытовом м/ф и попыток чтения их командой "СЛ" в Д3-28):

980hz_44100_s-code_dm-45_df-16_y-test_KP-88_N-8.wav
980hz_filter-5500_44100_s-code_dm-45_df-16_y-test_KP-88_N-8.wav

980hz_44100_s-code_dm-45_df-8_y-test_KP-88_N-8.wav
980hz_filter-11000_44100_s-code_dm-45_df-8_y-test_KP-88_N-8.wav

(Если вдруг это не окажется бредом, а получится, то предложу для такого сигнала название код Ы s-code.)
..."
You do not have the required permissions to view the files attached to this post.
"Ученье свет, а неученье — тьма. Дело мастера боится, и коль крестьянин не умеет сохою владеть — хлеб не родится." (С)
User avatar
Shaos
Admin
Posts: 24080
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Недопередача кода по звуковым каналам

Post by Shaos »

Shaos wrote:Вот тут описан блочный Kansas City Standard с блоками по 256 байт и заголовками с адресами куда пишется:

http://www.gammon.com.au/Arduino/cassette_interface.pdf

Но я наверное с блоками не буду заморачиваться, а возьму из этого скана только базовое описание KCS:
1) Mark (логическая единица) представляется восемью циклами сигнала 2400 Гц;
2) Space (логический ноль) представляется четырьмя циклами сигнала 1200 Гц;
3) Каждый символ представляет из себя Space (0) как старт, далее восемь битов данных и потом два или более Mark (1) как стоп;
4) Интервал между символами представляется неопределённой продолжительностью на частоте Mark;
5) При передаче битов данных младший бит передаётся первым, а старший бит - последним;
6) Данные сгруппированы в блоки произвольной длины, перед каждым из которых идёт как минимум 5-секундный Mark;
7) Не рекомендуется записывать ничего осмысленного в первые 30 секунд плёнки сразу после прозрачного участка...

P.S. Пункты 3 и 4 недвусмысленно намекают, что расстояние между байтами нефиксированное - старт байта детектируется по первому попавшемуся Space (1200 Гц) и до этого может пройти сколь угодно много Mark (2400 Гц), а в качестве пилот-тона используются всё тот же сигнал 2400 Гц (как минимум 5 секунд или 12000 периодов).
Тут с удивлением обнаружил, что оказывается MSX использовал KCS как формат записи на аудиокассеты:
This connector allows you to save or load program data to an audio cassette. Data are backed up at 1200 or 2400 baud with Frequency Shift Keying (FSK) in the standard "Kansas City" format.
https://www.msx.org/wiki/Data_Recorder_connector

Я даже скачал пару вавок на поглядеть, однако там похоже не 4 и 8 периодов, как описано выше, а только 1 и 2 :o
Screenshot from 2024-03-08 21-01-27.png
Это получается в 4 раза быстрее, чем оригинальный KCS, т.е. 1200 вместо 300 бод (как же тогда будет выглядеть 2400 бод?)
You do not have the required permissions to view the files attached to this post.
Я тут за главного - если что шлите мыло на me собака shaos точка net