PDA

Просмотр полной версии : Для AY/YM есть ли ограничение по частоте выводимого сигнала?



GriV
21.06.2005, 20:15
Имеется в виду запись в регистры ЦАП, как часто они способны менять своё значение? Из доки по оным сопрам следует, что они способны менять своё состояние чуть не каждые 1/2 такта CLK.

Вопрос связан с тем, что попытка выводить в эти регистры значения с частотой превышающей 19-20 кГц приводит к возникновению непонятного "хрипа" на выходе ЦАП.

jtn
21.06.2005, 20:57
не на скорпионе ли случаем?

Shiru
21.06.2005, 22:59
Из доки по оным сопрам следует, что они способны менять своё состояние чуть не каждые 1/2 такта CLK.
Где это ты там такое вычитал?

Впрочем, думаю, что вполне могут, и проблема у тебя не из-за этого.

GriV
22.06.2005, 07:18
не на скорпионе ли случаем?

Да, именно на скорпионе, однако это не ответ на вопрос...

GriV
22.06.2005, 07:19
Где это ты там такое вычитал?

Впрочем, думаю, что вполне могут, и проблема у тебя не из-за этого.

Не где, а в полном описании YM2194 от Yamaha, это естественно, откуда ещё могут быть такие данные? :`(

lvd
22.06.2005, 08:53
Да, именно на скорпионе, однако это не ответ на вопрос...

А про ваиты на M1 с выравниванием кол-ва тактов команды до чётного - ты в курсе?

jtn
22.06.2005, 08:59
Да, именно на скорпионе, однако это не ответ на вопрос...
на скорпе все нечетнотактовые команды округляются до четных, отсюда и получается офигительный джиттер (частота плавает). попробуй переписать вывод оцифровки в четнотактовых командах.

Shiru
22.06.2005, 09:07
Не где, а в полном описании YM2194 от Yamaha, это естественно, откуда ещё могут быть такие данные? :`(
2194? Это ещё что?;)

Я смотрел в даташите на AY3-8910, там таких тонкостей нет..

GriV
22.06.2005, 16:01
на скорпе все нечетнотактовые команды округляются до четных, отсюда и получается офигительный джиттер (частота плавает). попробуй переписать вывод оцифровки в четнотактовых командах.

Я знаю, что есть такой глюк, однако не понял я при чём тут YM и вывод в его ЦАПы, тут речь идёт не про то, что звук идёт (ну имеется в виду вывод оцифровки конечно) то быстрей то медленней, такие нюансы как округление до чётного такта я учитывал, речь про то, что появляется именно хрип, не знаю как его ещё назвать, в общем идёт тот же звук, однако имеено как будто поверх его ложится какой то хрип.

С другой стороны, даже если отбросить тот нюанс, что я выравнивал по тактам на чётнотактовые команды, то получается следующее: частота собсно звук.проца = 1,7 МГц (округлённо), в то же время частота выводимых данных окло 20кГц - мне кажется что порядок величин настолько несопоставимый, что программно образованный джиттер не внесёт такой задержки, чтобы она была заметна на слух

GriV
22.06.2005, 16:06
хватает, это чтобы предположить, что по какой то причине ЦАПы сбиваются - собственно оттуда и этот хрип...

Чтото вроде того, что вывод значений пришёл когда сопр находился в каком то состоянии, что он был неспопобен адекватно принять переданные данные...

Возможно проблема в триггерах регистров R8-RA?

Ronin
22.06.2005, 17:15
что они способны менять своё состояние чуть не каждые 1/2 такта CLK.
хм... посмотрю дома доку, что-то не верится.
и потом для любого ЦАПа есть такой параметр как "время установки" или что-то типа того.


частота собсно звук.проца = 1,7 МГц (округлённо
только там на входе F/16 стоит еще :)

код показал бы, может кто протестит у себя тоже.

lvd
22.06.2005, 18:51
хватает, это чтобы предположить, что по какой то причине ЦАПы сбиваются - собственно оттуда и этот хрип...

Чтото вроде того, что вывод значений пришёл когда сопр находился в каком то состоянии, что он был неспопобен адекватно принять переданные данные...

Возможно проблема в триггерах регистров R8-RA?

Выведи меандр и рассматривай его осциллоглядом, короче.

psb
23.06.2005, 14:49
это.. глупый вопрос, но... у тебя прерывания как-то юзаются? не из-за них хрип?

Ronin
23.06.2005, 15:45
что они способны менять своё состояние чуть не каждые 1/2 такта CLK.
а в каком это месте написано ?

это.. глупый вопрос, но... у тебя прерывания
в общем, давай код показывай.

GriV
24.06.2005, 12:47
однако раз уж надо то приведу:

Там была такая тема: каждый байт состоял из двух половинок,
младшая половинка есть громкость, старшая есть число повторов (кто не понял, по 4 бита каждая)

LD A,(HL)
AND 15
LD D,A
LD A,(HL)
AND #F0

LABEL1:OUT (C),D

<ВЫРАВНИВАНИЕ ПО ТАКТАМ>

SUB #10
JR NZ LABEL1

INC HL

ну и т.д.

jtn
24.06.2005, 15:54
ерунда какая-то. зачем несколько раз выводить в порт одно и тоже число? также непонятен смысл <ВЫРАВНИВАНИЕ ПО ТАКТАМ>

GriV
24.06.2005, 17:49
Каждое значение должно выводиться ровно раз в 80 тактов [раз в 80 тактов есть 44кГц] (вот тебе выравнивание по тактам), кроме того есть первый цикл, потерянный, где происходит увеличение указателя = HL, загрузка регистров = = AND #F LD D,A и т.д.

Т.о. я не стал просто расписывтаь эту ерунду, просто записал <выравнивание..> и всё..

Если сильно надо могу ОРИГИНАЛЬНЫЙ текст приложить, это мне кажется не так важно..

jtn
24.06.2005, 18:03
типа у тебя RLE еще параллельно распаковывается? (толку имхо мало для 4х битного звука)
все равно не то - меняй все нечетнотаковые команды на четные. потом проверяй.
бтв, а может у тебя сэмпл гудючий изначально? или попортился при переносе

Dr.Lion/RSM
24.06.2005, 18:39
ерунда какая-то. зачем несколько раз выводить в порт одно и тоже число? также непонятен смысл <ВЫРАВНИВАНИЕ ПО ТАКТАМ>
Когда-то я сам серъезно занимался оцифрованным звуком и скажу вам следующее.
Собственно говоря, вы знаете откуда берутся те самые выводимые одинаковые значения? Попробуйте сконвертировать 16-ти или 8-ми битные оцифровки в 4-х битный формат и посмотрите на результат - там действительно получается много повторяющихся цепочек одинаковых байт. А приминение RLE-подобного алгоритма - это весьма разумный подход, позволяющий сократить обьем полученой оцифровки в 2-4 раза, при этом распаковка возможна в реальном времени (слава Богу когда-то проверил все эти вещи лично)! Точная подборка времени выполнения одного прохода цикла вывода значения в порт обьясняется понятием частоты дискретизации. Чем короче цикл - тем выше частота, но частота дискретизации по возможности должна быть стабильной, а значит время выполнения одного прохода цикла - сторого подобранным, этим и обьясняется кусок кода <выравнивание по тактам>.
Да, кстати, когда-то я занимался вопросом конвертирования 8 бит оцифровок в 4 бит АЦП АУ'ка. Дело в том, что АЦП АУ'ка имеет не линейную, а логарифмическую шкалу зависимости выходного напряжения от входной цифровой комбинации. При конвертировании я использовал специальную табличку перевода 8>4 бит АУ'ка, что позволяло заметно улучшить качество сконверторованной оцифровки. Так вот, может вышеуказанные особенности АЦП АУ'ка как то влияют на качество звука при высокой частоте дискретизации?

GriV
24.06.2005, 20:04
Нет дело вовсе не в способе преобразования оцифровки (8 бит в 4 бита), потому что сам оцифровка играется нормально на других девайсах (интереса ради потом запускал на Sound Blaster на PC, так же не поленился написать опять же проигрыватель, которое выдавал это всё на ZX Beeper), нет, везде КРОМЕ AY звук шёл нормально... Один аук хрипел...
Даже таблицу конвертации переписал, ничего не помогло... Где то здесь же в форуме есть линк на спецификацию по ауку, там кстати написано распределение громокостей аука, там кстати же указано что она логарифмическая... Также я забивал более сложные таблицы конвертации (т.е. по умолчанию длина таблицы конвертации была 16 элементов, я её до 32 расширял (бОльший запас точности), ничего не помогало, тогда меня это не больно волновало, сейчаз же вопрос стал ребром...

lvd
24.06.2005, 20:57
Нет дело вовсе не в способе преобразования оцифровки (8 бит в 4 бита), потому что сам оцифровка играется нормально на других девайсах (интереса ради потом запускал на Sound Blaster на PC, так же не поленился написать опять же проигрыватель, которое выдавал это всё на ZX Beeper), нет, везде КРОМЕ AY звук шёл нормально... Один аук хрипел...
Даже таблицу конвертации переписал, ничего не помогло... Где то здесь же в форуме есть линк на спецификацию по ауку, там кстати написано распределение громокостей аука, там кстати же указано что она логарифмическая... Также я забивал более сложные таблицы конвертации (т.е. по умолчанию длина таблицы конвертации была 16 элементов, я её до 32 расширял (бОльший запас точности), ничего не помогало, тогда меня это не больно волновало, сейчаз же вопрос стал ребром...

Во-первых да, надо учитывать, что у АУка шкала громкостей логарифмическая (точнее, кусочно-линейная аппроксимация к оной - это хорошо видно на осциллографе), а кроме того, ты генерацию тона отрубаешь ли? Может он у тебя на макс. частоте работает (этого не слышно, естественно, но вдруг как-то на усилитель-етц влияет?)...

GriV
25.06.2005, 07:01
в том числе (с учётом тем не менее того, что я сам знаю конечно) Instrument и подобные ему программы... Так что нет там генератора, даже если бы он был, почему на более низких частотах вывода хвука его не слышно?

lvd
25.06.2005, 09:55
в том числе (с учётом тем не менее того, что я сам знаю конечно) Instrument и подобные ему программы... Так что нет там генератора, даже если бы он был, почему на более низких частотах вывода хвука его не слышно?

Тогда хз. Остаётся только смотреть осциллографом (покрмере я бы уж давно им ткнулся =)

Dr.Lion/RSM
25.06.2005, 16:26
кроме того, ты генерацию тона отрубаешь ли? Может он у тебя на макс. частоте работает (этого не слышно, естественно, но вдруг как-то на усилитель-етц влияет?)...
Кстати, дельное замечание! Если ты работаешь с АЦП АУ'ка то в обязательном порядке перед началом вывода оцифровки УСТАНОВИ биты 0-5 регистра 7 в состояние "1", тем самым ты запретишь влияние на выходной сигнал генератора тона и генератора шума. Так же не забывай, что при выводе бит 4 регистра 8(9,10) не должен устанавливаться в "1", иначе к выходному сигналу примажется генератор огибающей! Вообщем, запиши в регистр 7 число 63 и поизменяй значения регистров 0-6. Если характеристики выводимого звука не будут меняться, то генератор тона и генератор шума тут не при чем!

Так что нет там генератора, даже если бы он был, почему на более низких частотах вывода хвука его не слышно?
Есть такое понятие, как резонанс. Если окажется, что сигналы от внутренних генераторов влияют на выходной сигнал АЦП, то резонанс в определенном диапазоне частот дискретизации вполне реален (но это мои чисто теоретические соображения)! В этом случае попробуй немного изменить частоту дискретизации либо поэкспериментируй со значениями регистров 0-6 и 11-13!

GriV
07.11.2005, 08:47
однако же всё таки датаграмму работы я сделал

Вот оно в архиве приложено, я специально написал программу, которая бы выводила уровни громкости - от 0 до 15 - пробегая последовательно значения - и формируя на ЦАПе соответствующие уровни. (управляющий регистр номер 7 отключал = #FF; пробовал менять другие регистры, стабильно картина наблюдается одинаковая - из раза в раз)
Записывал на SB Live! 5.1 - может быть этот агрегат сам даёт помехи, но вот факт - после значени "15" переход в значение "0" сопровождается жуткими переколебаниями - причём ещё до старта перехода (джиттер внутри звукахи?). Малые значения тоже сопровождаются переколебаниями (видно опять же таки по графику) - причём сами переколебания значений происходят и в середине уже установленного значения.

В общем разумно я объяснить это не могу (есть только одно чувственное наполнение ситуцации - бред какой то :D), потому что длина переколебаний соответствует частоте около 8 кгц (квантование приведённого сигнала идёт на частоте 48 кгц, занимает же переколебание около 6 замеров). Может быть дело в ёмкостях которые стоят на выходе AY-ка?

Кстати подобными помехами обладал не только выводимый мной сигнал, так же и простые FM-музоны тоже давали помехи (сампл не стал приводить, думаю он просто не нужен), однако они неплохо маскируются на общем фоне (их почти не слышно).

P.S. Понятно что усислитель звукахи, ёмкости звукахи, провод от спекка до звукахи т.д. вносят свою погрешность, но то что и без звукахи хрип был, это факт...

P.P.S. Как то в ревюшках было написано цитата <<цитата:"И звук хороший.." - А что бывает и плохой? Оказывается бывает..>> - речь шла про AY. Может именно это и имелось в виду?

lvd
07.11.2005, 09:53
однако же всё таки датаграмму работы я сделал
Вот оно в архиве приложено, я специально написал программу, которая бы выводила уровни громкости - от 0 до 15 - пробегая последовательно значения - и формируя на ЦАПе соответствующие уровни. (управляющий регистр номер 7 отключал = #FF; пробовал менять другие регистры, стабильно картина наблюдается одинаковая - из раза в раз)
Записывал на SB Live! 5.1 - может быть этот агрегат сам даёт помехи, но вот факт - после значени "15" переход в значение "0" сопровождается жуткими переколебаниями - причём ещё до старта перехода (джиттер внутри звукахи?). Малые значения тоже сопровождаются переколебаниями (видно опять же таки по графику) - причём сами переколебания значений происходят и в середине уже установленного значения.

В общем разумно я объяснить это не могу (есть только одно чувственное наполнение ситуцации - бред какой то :D), потому что длина переколебаний соответствует частоте около 8 кгц (квантование приведённого сигнала идёт на частоте 48 кгц, занимает же переколебание около 6 замеров). Может быть дело в ёмкостях которые стоят на выходе AY-ка?


И всё же покажи схему, как сделан выход с АУка! И заодно осциллограф у кого-нибудь выпроси нормальный, им глянь...

GriV
07.11.2005, 11:13
И всё же покажи схему, как сделан выход с АУка! И заодно осциллограф у кого-нибудь выпроси нормальный, им глянь...

эххх придётся лазить в схему ;)
посмотрю...
А осциллограф я в руках держать не умею ;)

lvd
07.11.2005, 17:04
эххх придётся лазить в схему ;)
посмотрю...
А осциллограф я в руках держать не умею ;)

Тогда пусть его в руках владелец держит. И ручки крутит =)

Kirill Frolov (500:812/1.507)
11.11.2005, 12:37
Hемедленно нажми на RESET, Valery Grigoriev!

On Mon, 07 Nov 05 13:36:29 +0300, Valery Grigoriev wrote:


Записывал на SB Live! 5.1 - может быть этот агрегат сам даёт помехи, но вот
факт - после значени "15" переход в значение "0" сопровождается жуткими
переколебаниями - причём ещё до старта перехода (джиттер внутри звукахи?).
Малые значения тоже сопровождаются переколебаниями (видно опять же таки по
графику) - причём сами переколебания значений происходят и в середине уже
установленного значения.
В общем разумно я объяснить это не могу (есть только одно чувственное
наполнение ситуцации - бред какой то :D), потому что длина переколебаний
соответствует частоте около 8 кгц (квантование приведённого сигнала идёт на
частоте 48 кгц, занимает же переколебание около 6 замеров). Может быть дело в
ёмкостях которые стоят на выходе AY-ка?

Дело в индуктивностях проводов. Смотри осциллографом с нормальным
щупом -- такого не должно быть.

GriV
11.11.2005, 19:31
на частоте 48кгц????

Не должно там влияние отражённой волны быть. Если бы там мегагерцы были....

Схему я рассмотрел,

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

Отсаётся только AY (у меня на самом деле YM) винить.

ПРОСЬБА. У кого есть возможность проведите аналогичные замеры и выложите самплы!

GriV
11.11.2005, 19:35
З.Ы. Длина провода была 14 метров, может быть на самом деле влияние эха.... Я попробую с более коротким проводом сделать....

GriV
11.11.2005, 19:44
З.Ы.Ы. на каждый отсчёт 48 кгц сигнала там приходилось по одному переколебанию, итого около 21 мкс на длительность одного отражения (если рассматривать как вариант, что помехи наводит отражённая волна). 21 мкс отнесённая к скорости прохождения волны по кабелю (=скорость света в вакууме ;)) - будет около 6,5 км туда сюда волна должна пробежать, т.о. кабель должен иметь длину 3,25 км. Кажется кабель у меня чуток короче ;)))))

lvd
11.11.2005, 21:59
которой цифровалось. Одна последний вариант мне кажется маловероятным - ну не может быть чтобы производитель выпустил настолько ущебный продукт - который может штатно записывать в таком режиме и при этом подавать такие жуткие помехи.

Это не производитель, а пьяный китаец в подвале. ;)


Отсаётся только AY (у меня на самом деле YM) винить.
Кста ткнись картошкой прямо на выходы АУ, до резюков. Там точно нормальный сигнал (проверял осциллоглядом у себя).

GriV
12.11.2005, 01:18
херовый сигнал на выходе? Квак так???

lvd
12.11.2005, 20:35
херовый сигнал на выходе? Квак так???
В смысле что тогда сомнений не останется, что именно такая у тебя звуковуха. =)

GriV
13.11.2005, 12:25
Это не производитель, а пьяный китаец в подвале. ;)

Кста ткнись картошкой прямо на выходы АУ, до резюков. Там точно нормальный сигнал (проверял осциллоглядом у себя).

В смысле а после сопротивлений и после кабеля сигнал искажённый так же???

Kirill Frolov (500:812/1.507)
15.11.2005, 19:05
Hемедленно нажми на RESET, Valery Grigoriev!

On Sat, 12 Nov 05 04:16:04 +0300, Valery Grigoriev wrote:

Цитирую письмо полностью:


Hello, lvd

херовый сигнал на выходе? Квак так???

... GriV aka Valery Grigoriev

Я нихрена не понял.

Kirill Frolov (500:812/1.507)
15.11.2005, 19:05
Hемедленно нажми на RESET, Valery Grigoriev!

On Fri, 11 Nov 05 21:18:21 +0300, Valery Grigoriev wrote:


вариант, что помехи наводит отражённая волна). 21 мкс отнесённая к скорости
прохождения волны по кабелю (=скорость света в вакууме ;)) - будет около 6,5 км
туда сюда волна должна пробежать, т.о. кабель должен иметь длину 3,25 км.
Кажется кабель у меня чуток короче ;)))))

1. Меньше скорости света.
2. С длиной кабеля оно не связано.

GriV
17.11.2005, 15:24
прохождения сигнала, которая принимается равной скорости света это связано. Стоячая волна повляется (точнее не тухнет а отражается) если выходы провода нескомпенсированы активным сопротивлением равным волновому сопротивлению провода (а волновое сопротивление связано с индуктивностью и ёмкостью проводов). Именно потому (может кто помнит? ;)) на коксель от компов, волновое сопротивление которого равно 50 ом, на концы вешали заглушки-резюки (тоже по 50 ом;)). Именно поэтому ограничением для 10MBit Ethernet является 2,5 км провода - чтобы надёжно детектировать помехи и отражённые волны.

А смысл такой - квак так может быть чтобы столь короткий провод формировал столь большие помехи - рядом ведь электросварка не идёт, и нет никаких мощных потребителей энергии (читай: наводчиков помех).

Я и прошу потому - если у кого есть возможность - запищите временную диаграмму.

lvd
17.11.2005, 15:47
Именно поэтому ограничением для 10MBit Ethernet является 2,5 км провода - чтобы надёжно детектировать помехи и отражённые волны.


Нифига не поэтому. Это произвольная длина, связанная с временем ожидания коллизии с момента окончания передачи пакета. Т.е. это время такое, что в него с 2.5км гарантированно успеет другой передатчик прийти, если он начал что-то передавать. Если сделать больше - то будут моменты, когда коллизия была, но передатчик об этом не узнал -> он посчитает пакет переданным, а он в каких-то точках может быть не принят (испортится из-за коллизии). В результате будет коматоз.
В реальности ещё играет роль и ослабление и искажение сигнала по кабелю.

fk0
17.11.2005, 16:37
Я знаю, что есть такой глюк, однако не понял я при чём тут YM и вывод в его ЦАПы, тут речь идёт не про то, что звук идёт (ну имеется в виду вывод оцифровки конечно) то быстрей то медленней, такие нюансы как округление до чётного такта я учитывал, речь про то, что появляется именно хрип, не знаю как его ещё назвать, в общем идёт тот же звук, однако имеено как будто поверх его ложится какой то хрип.


А у тебя скорпион не зелёный-турбо? Он на бордюре разгоняется.

fk0
17.11.2005, 16:41
LD A,(HL) ; 7t.
AND 15 ; 7t.
LD D,A ; 4t.
LD A,(HL) ; 7t.
AND #F0 ; 7t.

LABEL1:OUT (C),D

<ВЫРАВНИВАНИЕ ПО ТАКТАМ> (ГДЕ?)

SUB #10 ; 7t.
JR NZ LABEL1 ; 13t, вроде, не помню уже

INC HL ; 6t.


А теперь посчитай такты в разных случаях...

GriV
17.11.2005, 19:41
Нифига не поэтому. Это произвольная длина, связанная с временем ожидания коллизии с момента окончания передачи пакета. Т.е. это время такое, что в него с 2.5км гарантированно успеет другой передатчик прийти, если он начал что-то передавать. Если сделать больше - то будут моменты, когда коллизия была, но передатчик об этом не узнал -> он посчитает пакет переданным, а он в каких-то точках может быть не принят (испортится из-за коллизии). В результате будет коматоз.
В реальности ещё играет роль и ослабление и искажение сигнала по кабелю.

угу, именно с этим - если бы сигнал двигался скажем с половинной скоростью, то пришлось бы кольцо делать не 2,5 км, а 1,25 ;)))

оффтоп: Ослабление и искажение репитеры на себя берут - их можно теоретически хоть скока ставить, а ограничение идёт именно по скорости передвижения сигнала. Если бы сигнал проходил всё моментально, то нафиг не нужны были бы ограничения по длине кабеля - наставил репитеров и тчк.

GriV
17.11.2005, 19:42
А у тебя скорпион не зелёный-турбо? Он на бордюре разгоняется.

Скорпион жёлтый, не разгоняется он, вопрос же не в скорпионе а в звуке...

GriV
28.11.2005, 17:19
Неужели ни у кого не осталось реального спектрума????

Неужели никто не может показать как на его АУке такое выводится????

GriV
27.05.2006, 15:57
как я и думал - проблема в выходных фильтрах самого AY-ка и во всей его дальнейшей обвязке (вплоть до самого усилителя).
AY пытается сформировать идеальный сигнал (1-чный ступенчатый) а в итоге изза фильтров и возникают эти переколебания. Типовая частота фильтра - 22 кГц (44 кГц для частоты квантизации сигнала) - видимо на это частоте сигнал и режется.