XMOS + AK4493 с нуля для ради удовольствия и науки
#21

Придется учиться феном :)

Ну, или обойтись 208-ми.
Удобно не XU а XUF - у них флешка уже внутри (но свободных ног это не добавляет!).
Ответ
#22

(12-09-2023, 09:45 AM)ActiveStalker Написал:  Вопрос: реально ли запаять в домашних условиях корпус 60-VFQFN (xmos xu 316)?  

Вообще не парься. Оно паяется без проблем, еще и самовыравнивается если чутка установил неровно. Но флюс хороший нужен. Контролировать качество можно под микроскопом.
Ответ
#23

(12-09-2023, 02:02 PM)Altor Audio Написал:  Удобно не XU а XUF - у них флешка уже внутри (но свободных ног это не добавляет!).
Со свободными ногами как - то не особо вижу проблем. Кроме 3х однобитных осталось 4 4х битных для GPIO

А какие если не секрет удобства от флешки? Обновлять прошивку легче?

Кстати постоянно читаю в даташитах, да и описания XMOS везде где могут рекомендуют PLL генераторы, PLL1700, называют их низкоджиттерными и крутыми. Я не совсем понимаю что это такое, скорей всего по i2c управляемые микросхемы с фазовой подстройкой частоты. Какие генераторы вообще лучше ипользовать? Частоты чем выше тем лучше? 768fs (33.8688, 36.864) или 512 fs?
Ответ
#24

(12-10-2023, 11:39 AM)ActiveStalker Написал:  
(12-09-2023, 02:02 PM)Altor Audio Написал:  Удобно не XU а XUF - у них флешка уже внутри (но свободных ног это не добавляет!).
Со свободными ногами как - то не особо вижу проблем. Кроме 3х однобитных осталось 4 4х битных для GPIO

От задачи зависит, проблема проблема разумеется только в 1-битных i/o. Например в 64-ногом 208-м для стерео мне хватает, а для  8-ми каналов по I2S уже нет (только по TDM, что не всегда приемлимо),  а вот в 48-ногом XS1 хватает и для 8-канального I2S.

Цитата:А какие если не секрет удобства от флешки? Обновлять прошивку легче?

В смысле? Без флешки оно работать будет только с подключенным XTag-ом под дебаггером, и пока питание не выключишь :)
Проц же из ОЗУ работает,туда прошивке надо как-то попадать.

В XMOS прошивка храниться во внешней флешке (обычно 8-ногая QSPI),  при включении она загружается в ОЗУ проца внутренним бутлоадером проца..
Просто XUF=XU+Flash, это гибридка - кристалл флешки засунули внутрь корпуса,рядом с кристаллом проца XU.
Чисто экономия места на плате, и больше ничего.

Цитата:Кстати постоянно читаю в даташитах, да и описания XMOS везде где могут рекомендуют PLL генераторы,  PLL1700, называют их низкоджиттерными и крутыми. Я не совсем понимаю что это такое, скорей всего по i2c управляемые микросхемы с фазовой подстройкой частоты. Какие генераторы вообще лучше ипользовать? Частоты чем выше тем лучше? 768fs (33.8688, 36.864) или 512 fs?

Не понимаю о чем ты.
XMOS - у нужен один осциллятор для тактирования проца (PLL у него внутри свой), и клок для I2S.
Я ставлю чаще всего 512Fs, если достаточно максимум РСМ384/DSD256, и 1024Fs если надо PCM758/DSD512 (нафиг ого кому надо - понять сложно, но иногда просят).

Внешние PLL могут понадобиться для спдиф-входа.
Иногда кому-то не хочется ставить два осциллятора на сетки 44х/48х, и ставят один программмируемый.
Ответ
#25

(12-10-2023, 01:35 PM)Altor Audio Написал:  В смысле? Без флешки оно работать будет только с подключенным XTag-ом под дебаггером, и пока питание не выключишь :)
Проц же из ОЗУ работает,туда прошивке надо как-то попадать.

В XMOS прошивка храниться во внешней флешке (обычно 8-ногая QSPI),  при включении она загружается в ОЗУ проца внутренним бутлоадером проца..
Просто XUF=XU+Flash, это гибридка - кристалл флешки засунули внутрь корпуса,рядом с кристаллом проца XU.
Чисто экономия места на плате, и больше ничего.
Спасибо я этого не знал

(12-10-2023, 01:35 PM)Altor Audio Написал:  Не понимаю о чем ты.
XMOS - у нужен один осциллятор для тактирования проца (PLL у него внутри свой), и клок для I2S.
Я ставлю чаще всего 512Fs, если достаточно максимум РСМ384/DSD256, и 1024Fs если надо PCM758/DSD512 (нафиг ого кому надо - понять сложно, но иногда просят).

О том, что у меня до сих пор не складывается вся картина, по этому могу задавать глупые вопросы. Я имел в виду не тактующий процессор осцилятор, а про те два, которые кратны сеткам 44.1 и 48 и подключены к MCLK ЦАП и параллельно на входной порт аудиоядра процессора (PORT_MCLK_IN). Насколько я понял моя задача сделать переключающий в зависимости от ЧД порт, через  аргумент пользовательской функции audioHwConfig(unsigned samFreq, ....). Далее нарисовать схему для переключателя генераторов в зависимости от значения этого порта. Но я везде читаю, например в описаниях EV.Boards и даташитах ЦАПов, что ОНИ рекомендуют использовать PLL генераторы
Цитата:A Cirrus Logic CS2100-CP PLL device. The CS2100 features both a clock generator and clock multiplier/jitter reduced clock frequency synthesizer (clean up) and can generate a low jitter audio clock based on a synchronisation signal provided by the xCORE
A Skyworks Si5351B PLL device. The Si5351 is an I2C configurable clock generator that is suited for replacing crystals, crystal oscillators, VCXOs, phase-locked loops (PLLs), and fanout buffers.
Вот я и спросил чем сейчас актуально тактовать мастерклок, и с какой частотой лучше брать пару 32/36 мГц или 22/24мГц (768fs или 512Fs)?
SPDIF входа не будет, тут и так хватает сложностей как для первой попытки.
Ответ
#26

Цитата:Насколько я понял моя задача сделать переключающий в зависимости от ЧД порт, через  аргумент пользовательской функции audioHwConfig(unsigned samFreq, ....).

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

Цитата:Но я везде читаю, например в описаниях EV.Boards и даташитах ЦАПов, что ОНИ рекомендуют использовать PLL генераторы

Не помню чтобы они такое рекомендовали.
Впрочем, они последние годы такую х-ню несут. что не удивлюсь если это и так. Я последние их доки и ДШ читал очень бегло, "по диагонали".
У меня самый применяемый их проц - XS1-L6A-64-TQ48-C5, хотя они его уже не выпускают (суки), у меня зазпас пока не кончился, да и найти его еще можно (не L6 так L8, даже программу менять не надо). Реже 208-е (у меня на платах обычно стоит и разведена внешняя флешка, так что я могу что XU208, что XUF208 ставить - однго время они были в большом дефиците, использовал то, что удавалось найти.

Мы тут специально асинхроный USB с ОС городим, чтобы от всяких ФАПЧей избавиться, и клок ему с ЦАПа тянем а не наоборот, чтьобы заодно и от джиттера в изоляторах и прочем по дороге, а ни предлагают его обратно ФАПЧ, причем не самй лучший вернуть?!

С другой сторороны, AFAIK большинство  овременных осциллиторов (особенно мемсов) и так с ФАПЧ внутри и программируются на нужную частоту при производстве. Но при этом им удается как-то получать очень неплохие характеристики по джиттеру.

Цитата:SPDIF входа не будет,

Тогда нафиг тебе ФАПЧ?

Цитата:и с какой частотой лучше брать пару 32/36 мГц или 22/24мГц (768fs или 512Fs)?

Разве сейчас 768 и 384 еще кто-то использует? Я про них уже и забыл давно.
Я выше писал - у меня почти везде 512, это хватает на РСМ384 и ДСД256.  
Выше имхо оно нафиг не надо, но если кому надо - я ставлю 1024.
Ответ
#27

(12-11-2023, 12:12 AM)Altor Audio Написал:  Да, но этоже элементарно делается - в эту функкцию передается значение семплрейта, вычисляешь какая сетка и дергаешь соответственно ножкой. 1-битный порт тут не нужен.

out port port_4c = XS1_PORT_4C;

void audioHwConfig(unsigned samFreq, ...other args){
(samFreq % 44100 == 0)? port_4c |=(1<<2) : port_4c &= ~(1<<2);
}

3 бит управляет сеткой. Кратные 44.1 = 1, остальное 0. Это пример, там в функции еще другие аргументы. Частота мастерклока, ДСД вкл\выкл, и что - то еще для стрима

(12-11-2023, 12:12 AM)Altor Audio Написал:  Тогда нафиг тебе ФАПЧ?
Мне нужно 2 генератора, Как Вы сказали 512 fs (22.5792, 24.576) вот я и спрашивал что сейчас актуально для этих целей. Обычные кварцевые осциляторы или есть готовые управляемые устройства? может есть какие то популярные?(поисковик не очень помагает, много старой информации)
(12-11-2023, 12:12 AM)Altor Audio Написал:  чтьобы заодно и от джиттера в изоляторах и прочем по дороге,
Изоляторы... Нужно делать гальваническую развязку процессора от ЦАП? все линии и i2c тоже? в чем вообще ее смысл? Почему ее обычно ставят между процессором и ЦАП а не например полностью отвязывают входящий USB сигнал, чтобы не иметь ничего общего с неоднозначным потенциалом на корпусе компа питающегося от сети например?
Ответ
#28

(12-11-2023, 06:36 AM)ActiveStalker Написал:  port_4c |=(1<<2) : port_4c &= ~(1<<2);

Так делать не надо, надо считать весбь порт в переменную, изменить в ней нудныйбит и записать переменную в порт.
Типа так:
Код:
#define PORT32A_PEEK(X) {asm("peek %0, res[%1]":"=r"(X):"r"(XS1_PORT_32A));}
#define PORT32A_OUT(X)  {asm("out res[%0], %1"::"r"(XS1_PORT_32A),"r"(X));}

...
void DSD_On(unsigned ON) {
    unsigned tmp;
    PORT32A_PEEK(tmp);
    if(ON)  tmp |= 0x10; else  tmp &= (~0x10); // 4th bit
    PORT32A_OUT(tmp);
}



Цитата:Мне нужно 2 генератора, Как Вы сказали 512 fs  (22.5792, 24.576) вот я и спрашивал что сейчас актуально для этих целей. Обычные кварцевые осциляторы или есть готовые управляемые устройства? может есть какие то популярные?(поисковик не очень помагает, много старой информации)
У меня или два обычных осциллятора от NDK, или один 2-х частотный 532-й силабс.
Переключаются  вот тем самым сигналом.
Осцилляторы, разумеется, стоят после развязки, рядом с ЦАПом.


Цитата:Нужно делать гальваническую развязку процессора от ЦАП? все линии и i2c тоже?

Я делаю. 
Кроме I2C - его в большинстве моих конструкций нет, за ненадобностью, а в тех что есть - там SPI а не I2C.

Цитата:Почему ее обычно ставят между процессором и ЦАП а не например полностью отвязывают входящий USB сигнал,

Потому что это сложнее, дороже и если не хуже, то уж точно не лучше.

Развязку по USB чаще используют отдельную внешнюю, как раз для использования с готовыми ЦАПами, у которых ее нет внутри по I2S.
Кроме того, у меня та часть что до развязки - от самого USB питается.
Ответ
#29

(12-11-2023, 07:40 AM)Altor Audio Написал:  Так делать не надо, надо считать весбь порт в переменную, изменить в ней нудныйбит и записать переменную в порт.
Типа так:
Ну если считывать и записывать прям через Ассемблер... То я его совсем не знаю. Спасибо, учту.
(12-11-2023, 07:40 AM)Altor Audio Написал:  Кроме того, у меня та часть что до развязки - от самого USB питается.
Да, я так и понял. Кстати чем вызвано желание питать процессор от USB? Предполагаю так будет меньше связь между блоками через источник или просто удобство?
(12-09-2023, 02:02 PM)Altor Audio Написал:  Удобно не XU а XUF - у них флешка уже внутри (но свободных ног это не добавляет!).
Ага. Те же 2 однобитных порта отжали, которые использовались для этого в XU. Но если не многоцапие, то фиг с ним наверное. Разобрался, да сильно удобно, не нужно дополнительную микросхему ставить
(12-11-2023, 07:40 AM)Altor Audio Написал:  У меня или два обычных осциллятора от NDK
Пин Tri-state можно использовать для переключения генераторов? Я посмотрел по описанию но не совсем понял. Ноль - обрыв цепи, единица - подключен ? можно запараллелить их, один включить другой выключить?
Ответ
#30

(12-11-2023, 12:53 PM)ActiveStalker Написал:  
(12-11-2023, 07:40 AM)Altor Audio Написал:  Так делать не надо, надо считать весбь порт в переменную, изменить в ней нудныйбит и записать переменную в порт.
Типа так:
Ну если считывать и записывать прям через Ассемблер... То я его совсем не знаю. Спасибо, учту.

В примерах есть, собствнно, я выше написал как.

Цитата:Кстати чем вызвано желание питать процессор от USB? Предполагаю так будет меньше связь между блоками через источник или просто удобство?

Да, так удобнее, не надо делать еще дин изолированный канал в блоке питания. А у меня в некоторых ЦАПах их и так уже 4.

Цитата:Пин Tri-state можно использовать для переключения генераторов? Я посмотрел по описанию но не совсем понял. Ноль - обрыв цепи, единица - подключен ? можно запараллелить их, один включить другой выключить?

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

Что сейчас лучше всего использовать для гальванической развязки? Насколько я понимаю нужна минимальная суммарная паразитная емкость и высокая скорость для i2s, особенно мастерклока. Кроме них еще нужно отделять i2c+gpio (3...4 порта) . Читал что используют ADuM1401, там 4 порта, как раз на i2s в одной микросхеме. Это хороший вариант или есть что - то лучше? больше портов например или более новое?
Ответ
#32

АДУМы (кроме юсбишных 3165/3166) идут лесом сразу.

Можно ТИшные ISOшки, но лично я предпочитаю силабовские (ныне скайворковские) SI86xx, чаще всего 8661 - один порт MCLK из ЦАПа в иксмос, остальные из иксмоcа на ЦАП - WCLK, BCLK, SDATA, ну и Mute, 44/48, PCM/DSD. Поскольку их тут 6, а линий остается только 5, то лишний обычным оптроном (последние 3 ведь не надо быстрых).
Если нужно еще ЦАПом управлять по SPI, то тогда ставлю две 8661.
Причем в этом случае удобно использовать только 4 линии на передачу, а 5-ю оставлять в воздухе - тогда в тот-же футпринт можно запаивать как 8661 так и 8662.
Если надо не SPI а I2C, то тогда в любом случае второй чип - 8600.

К сожалению, у этих силабсов нет 3-го состояния, и если оно нужно, то приходится после них ставить еще 74LVC245 или аналогичное. Но это копейки.
ТИшные - с 3-м состоянием, но силабсы меньше всех шумят (особенно по сравнению с адумами).
Ответ
#33

Силабсы самые тихие, старые адумы юзать вообще противопоказано

"The universal aptitude for ineptitude makes any human accomplishment an incredible miracle." John Stapp
Ответ
#34

Я делал на Si8641, служебные оптроном, опора 48Мгц
Ответ
#35

Si8641 - отличная штука, когда надо 3-е состояние, как раз для I2S :)
Но я в свое время закупил пачку 8661, вот и ставлю их почти везде, а где надо 3-е - ставлю после них регистр.
Ответ
#36

(12-14-2023, 03:39 AM)Altor Audio Написал:  Si8641 - отличная штука, когда надо 3-е состояние, как раз для I2S :)
Но я в свое время закупил пачку 8661, вот и ставлю их почти везде, а где надо 3-е - ставлю после них регистр.
Не совсем понимаю когда такое может быть полезно. При параллельных шинах, если одну нужно как будто физически отключить?
Ответ
#37

Именно. Для нескольких I2S на одну шину.
У меня в 10-й серии с USB шло через 245-й регистр, "1" на nOE его выключает, и включает выход STM32 джиттероподавителя (JKill) с спдифов.
Ответ
#38

Все никак не могу разобраться с запуском процессора. Смотрю на описание XU208 и XUF208. Если я всё правильно понял в XU флешка подключается к пинам 1В 4В 1С, тип флешки выбирается первыми тремя битами порта 4B (XOD4 XOD5 XOD6). Наверное меня интересует вариант QSPI master (0 0 0 , вот только не понял нужны ли подтягивающие к земле резисторы или они там уже изначально есть), дальше еще больше непонятного. Всё это должно запуститься из флешки в том случае если не установлен 5 бит в Sequrity Register. В противном случае программа запускается из OTP. Наверное OTP это неперезаписываемая одноразовая память а этот 5 бит, скорей всего по умолчанию НЕ установлен. Если это так тогда мои действия:

1) просто подключить QSPI флешку к соответствующим пинам. Возможно поставить подтягивающие к земле резисторы на XOD4 XOD5 XOD6 и прошивать XTAG ом его столько раз, сколько мне нужно будет без каких либо шифров. После перезапуска инфа на флешке остается.

2)Если это XUF тогда подтянуть резистором 1к порт 1B к VDDIOL (3.3в) как на картинке в описании, и тоже самое - записывать в флеш память то что мне нужно любое количество раз. А Sequrity Register вообще не трогать и не вникать что это такое, чтобы не убить процессор

Подскажите если что - то напутал, спасибо.
Ответ
#39

У меня Внешнеяя флешка (IS25LQ080B) была подключена так:
1 нога, CE - XOD01/1B с пуллапом
2 нога, SO.Q1 - XOD05/4B
3 нога, WP/Q2 - XOD06/4B
5 нога, SI/Q0- XOD04/4B
6 нога, SCLK - XOD10/1C - оно-же WCLK I2S
7 нога? HOLD/Q3 - XOD04/4B


Seсurity Register самому вообще трогать не надо, с ним прошивальщик/дебаггер сам разберется.


При отладке (запуске из дебаггера), флешка вообще ненужна, он записывает код в ОЗУ и из него стартует, при этом флешку не трогает (если не попросить об этом специально).
Но это для 13 и 14 Composer Studio, с последними их творениями я не работал (и вооще не очень понимаю как там работать - там-же нет IDE?).
The following 1 user says Thank You to Altor Audio for this post:
  • ActiveStalker (12-17-2023)
Ответ
#40

А можно ли на лету переключать тип выходного фильтра в ЦАП? Допустим я создам функцию, которая будет привязана к кнопке, при каждом нажатии будет по кругу выбирать один из 3....5 вариантов фильтра и записывать это по i2c в соответствующий регистр ЦАП. Нажал кнопку - переключился вых фильтр. Это так работает, или нужно делать reset после каждого изменения в регистрах? Не уверен, но кажется мне, что можно налету, иначе как бы работал софтовый РГ цапа
Ответ


Возможно похожие темы ...
Тема / Автор Ответы Просмотры Последний пост

Перейти к форуму:


Пользователи, просматривающие эту тему: 1 Гость(ей)