
Магнитофонный интерфейс для PC
Moderator: Shaos
-
- Retired
- Posts: 1328
- Joined: 25 Jul 2011 00:14
- Location: WWW
-
- Banned
- Posts: 2139
- Joined: 20 Mar 2005 13:41
- Location: От туда
Оказывается, что вышеприведенная схема отлично перекладывается на чисто цифровое устройство, для этого ее нужно только тактировать с учетверенной частотой от требуемой скорости. Аналоговой частью остается только входной компаратор. Например, вот наброски:

Сверху вниз: детектор перепада (сигнал EDGE), таймер (заменитель одновибратора, сигнал LOCK), обычный сдвиговый регистр (сигнал SHIFT), детектор синхробайта (сигналы SYNC и NEG), выходной регистр данных с инвертором (сигнал DATA) и счетчик битов (сигнал LOAD). Вот эпюры для позитивного и негативного сигналов:


Это только наброски, которые, впрочем, влезают в ЕРМx032:

Если на выходе синхробайт не нужен (все равно есть сигнал поймали мы синхру или нет), то инверсию можно перенести на вход сдвигового регистра, тем самым используя только одну микросхему ЛП5 на все устройство. Так же, надо ввести 2битный счетчик, который считает каждый раз, когда байт переносится в результат и сбрасывается при чтении байта из порта. Тем самым показывая, что:
0 - еще пусто,
1 - готово, можно забирать,
2 - потеря данных, ошибка.
Так же, можно по колдовать над схемой поиска синхробайта. Попробую минимизировать устройство и собрать на макетке. Интересно же. Надо еще подумать, что можно использовать как BAUD-генератор.

Сверху вниз: детектор перепада (сигнал EDGE), таймер (заменитель одновибратора, сигнал LOCK), обычный сдвиговый регистр (сигнал SHIFT), детектор синхробайта (сигналы SYNC и NEG), выходной регистр данных с инвертором (сигнал DATA) и счетчик битов (сигнал LOAD). Вот эпюры для позитивного и негативного сигналов:


Это только наброски, которые, впрочем, влезают в ЕРМx032:

Если на выходе синхробайт не нужен (все равно есть сигнал поймали мы синхру или нет), то инверсию можно перенести на вход сдвигового регистра, тем самым используя только одну микросхему ЛП5 на все устройство. Так же, надо ввести 2битный счетчик, который считает каждый раз, когда байт переносится в результат и сбрасывается при чтении байта из порта. Тем самым показывая, что:
0 - еще пусто,
1 - готово, можно забирать,
2 - потеря данных, ошибка.
Так же, можно по колдовать над схемой поиска синхробайта. Попробую минимизировать устройство и собрать на макетке. Интересно же. Надо еще подумать, что можно использовать как BAUD-генератор.
Last edited by HardWareMan on 05 Jan 2014 07:11, edited 1 time in total.
-
- Supreme God
- Posts: 16680
- Joined: 21 Oct 2009 08:08
- Location: Россия
Re: Магнитофонный интерфейс для PC
Слушай, я вот глянул свои исходники чтения сигнала через звуковую карту - у меня тамHardWareMan wrote:Поначалу я, конечно, использовал звуковую плату ...
Однако, из-за специфики сигнала и еще некоторых факторов так и не удалось добиться надежного чтения...
работа через два буфера - пока один заполняет звуковуха, второй разбирается "на лету".
И что-то мысль меня очень неоригинальная посетила - а почему бы не сделать просто,
но безобразно надёжно для всех Веньдей?
А именно: спокойно и без пены пишем "Loading...", и под движение полоски
загрузки пишем входной сигнал во временный wav-файл.
Потом пишем "Analyzing...", и под движение полоски вне лимитов реального
времени проводим разборку wav-файла и преобразование его в программу "Специалиста",
ну или какую другую...
Я в процессе программирования такой вариант проверял - выяснял сбой ли у меня в алгоритме,
или я не успеваю выполнять задачу "реального времени"...
Загнал выборки на диск и применил к ним алгоритм - выяснил, что забыл охватить
фигурными скобками два оператора после if...
Но после этой проверки вернулся к алгоритму с двумя буферами, и поскольку всё уже
было готово - переделывать не стал.
А с временным wav-файлом мне кажется все проблемы снимаются - успевают же любые
Венды писать на диск не только звук, но и видео?
Значит и обсуждаемых ранее глобальных проблем "реального времени" быть не должно... а?
iLavr
-
- Banned
- Posts: 2139
- Joined: 20 Mar 2005 13:41
- Location: От туда
Когда я использовал звуковую плату (тоже под вендами), основной проблемой была как раз не нехватка времени. 2 буфера хватало, хотя я делал и 4 и 16. Основная проблема была в определении DC оффсета (который гуглял по файлу) и как следствие - выделение перепадов. Я тут на проверку с данного интерфейса подал сигнал после компаратора на звукокарту и все алгоритмы отработали на ура в тех версиях, которые я забросил (даже те, у которых компаратор просто сравнивал на половину шкалы). Вот так вот.
Последняя версия у меня как раз работала уже с WAV файлом, который я писал Саундфоржем, усиливал, отменял DC и ручками подправлял косячные моменты. По крайней мере этот вариант можно применять в экстремальных условиях, для восстановления очень важного.
Последняя версия у меня как раз работала уже с WAV файлом, который я писал Саундфоржем, усиливал, отменял DC и ручками подправлял косячные моменты. По крайней мере этот вариант можно применять в экстремальных условиях, для восстановления очень важного.
Last edited by HardWareMan on 05 Jan 2014 07:11, edited 1 time in total.
-
- Supreme God
- Posts: 16680
- Joined: 21 Oct 2009 08:08
- Location: Россия
Ну у меня и без компаратора всё работало... А нафиг что-то править вручную, когдаHardWareMan wrote:Последняя версия у меня как раз работала уже с WAV файлом, который я писал Саундфоржем, усиливал, отменял DC и ручками подправлял косячные моменты. По крайней мере этот вариант можно применять в экстремальных условиях, для восстановления очень важного.
мы просто отслеживаем переходы через "ноль"?
Остальная форма сигнала, как мне кажется, нас тупо волновать не должна...
И откуда у тебя там DC, когда его нет в исходных алгоритмах?
iLavr