|
Переключение входов I2S на плис |
|
|
|
Mar 6 2017, 11:02
|
Участник

Группа: Участник
Сообщений: 66
Регистрация: 4-01-14
Пользователь №: 79 899

|
Добрый день! Посоветуйте, как правильно реализовать. Имеется 4 асинхронных друг от друга входные группы сигналов I2S (сигналы data, lrck, bck внутри одной группы между собой синхронны). Необходимо переключать эти группы на выход и полученную на выходе группу сигналов необходимо перепривязать к другому тактовому сигналу (EXTERNAL) асинхронному входным сигналам I2S. Сетки частот групп сигналов I2S могут быть разными (lrck - 44,1; 48; 88,2; 96 ... 384 KHz соответственно меняется bck от 2,8 MHz до 24,576 MHz), Данные могут быть 16 или 24 бита. Может просто отсутствовать группа сигналов I2S по любому из входов, это нормально. Иными словами, на одном из входов может быть 48 kHz, 24 bit, на другом входе - 88,2 kHz, 16 bit. Как правильно это сделать? 1. Входные сигналы каждой групп завести на мультиплексоры, переключать, потом подать dual clock FIFO, получить новую стеку сигналов lrck, bck привязанную к тактовому сигналу (EXTERNAL). 2. Установить на каждой входной группе I2S по dual clock FIFO, получить новую стеку сигналов lrck, bck привязанную к тактовому сигналу (EXTERNAL) и подать на мультиплексоры? 3. Что-то другое? PLL в предложенных мною вариантах не задействовано. Может вместо DC FIFO использовать dual clock RAM?
Сообщение отредактировал Evgeny72 - Mar 6 2017, 12:07
|
|
|
|
|
 |
Ответов
|
Mar 6 2017, 11:22
|
Гуру
     
Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369

|
Цитата(Evgeny72 @ Mar 6 2017, 14:02)  Добрый день! Посоветуйте, как правильно реализовать. Имеется 4 асинхронных друг от друга входные группы сигналов I2S (сигналы data, lrck, bck внутри одной группы между собой синхронны). Необходимо переключать эти группы на выход и полученную на выходе группу сигналов необходимо перепривязать к другому тактовому сигналу (EXTERNAL) асинхронному входным сигналам I2S. Сетки частот групп сигналов I2S могут быть разными (lrck - 44,1; 48; 88,2; 96 ... KHz соответственно меняется bck), Данные могут быть 16 или 24 бита. Может просто отсутствовать группа сигналов I2S по любому из входов, это нормально. Иными словами, на одном из входов может быть 48 kHz, 24 bit, на другом входе - 88,2 kHz, 16 bit. Как правильно это сделать? 1. Входные сигналы каждой групп завести на мультиплексоры, переключать, потом подать dual clock FIFO, получить новую стеку сигналов lrck, bck привязанную к тактовому сигналу (EXTERNAL). 2. Установить на каждой входной группе I2S по dual clock FIFO, получить новую стеку сигналов lrck, bck привязанную к тактовому сигналу (EXTERNAL) и подать на мультиплексоры? 3. Что-то другое? PLL в предложенных мною вариантах не задействовано. Может вместо DC FIFO использовать dual clock RAM? Даже 96 KHz это гораздо меньше, чем 50 или 100 Мгц частоты всего остального проекта. Я бы сразу же на входе сделал привязку к системной частоте через пару триггеров. И потом бы сделал автоматы для приема-передачи... По поводу FIFO... А что на 50 или 100 Мгц Вы не успеете принять 96 кГц? Зачем оно нужно?
--------------------
www.iosifk.narod.ru
|
|
|
|
|
Mar 7 2017, 04:15
|
Частый гость
 
Группа: Участник
Сообщений: 190
Регистрация: 13-02-17
Пользователь №: 95 415

|
Цитата(Flip-fl0p @ Mar 6 2017, 13:20)  У меня вопрос возник по физическому подключению к шине I2C. Как правильно выводы SLAVE устройства , реализованного в FPGA, подключать на эту шину ? Естественно порты будут назначены в файле верхнего уровня как INOUT. Требуется ли рекомендуемая подтяжка выводов к питанию через резистор 10 кОм ? Шина I2C несмотря на простоту является на практике основным источником геморроя в России. Просто первое место  Подтяжка 10К обязательна на обоих линиях, а лучше 2К. В общем касательно I2C если не хотите потратить месяцы на глючную работу этой шины сделайте все строго по рекомендациям, как немцы, очень пунктуально. А как получите стабильную работу упрощайте сколько угодно. Что касается DVI, нельзя с FPGA напрямую тащить линии на разъем DVI где он потом пойдет через кабель на монитор. Правильное решение это поставать буфер I2C и снаружи у разъема обязательно защиту от статики. Или как минимум сделайте как на макетной плате, резисторы по 100 ом последовательно и диоды Шоттки на землю и питание прямо у разъема.
Сообщение отредактировал hsoft - Mar 7 2017, 04:20
|
|
|
|
|
Mar 7 2017, 05:14
|

В поисках себя...
   
Группа: Свой
Сообщений: 729
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140

|
Цитата(hsoft @ Mar 7 2017, 07:15)  Шина I2C несмотря на простоту является на практике основным источником геморроя в России. Просто первое место  Подтяжка 10К обязательна на обоих линиях, а лучше 2К. В общем касательно I2C если не хотите потратить месяцы на глючную работу этой шины сделайте все строго по рекомендациям, как немцы, очень пунктуально. А как получите стабильную работу упрощайте сколько угодно. Что касается DVI, нельзя с FPGA напрямую тащить линии на разъем DVI где он потом пойдет через кабель на монитор. Правильное решение это поставать буфер I2C и снаружи у разъема обязательно защиту от статики. Или как минимум сделайте как на макетной плате, резисторы по 100 ом последовательно и диоды Шоттки на землю и питание прямо у разъема. У меня несколько другая задача  Принимаю DVI поток от источника DVI сигнала (например ПК), далее этот поток пересинхронизирую, расшифровываю T.M.D.S декодером. Ну а раскодированные данные я через кадровый буфер вывожу на матрицу через параллельный интерфейс. По сути я делаю свой монитор. Матрица есть и она встроена в макетную плату DE1-SoC-MTL2 . Источник сигнала есть - обычный персональный компьютер. Поэтому основная задача, которую надо решить в первую очередь - сообщить источнику DVI сигнала данные о матрице в соответствии со стандартом VESA. Для этого надо реализовать DDC канал. На сколько я помню у ALTERA есть PULL_UP, PULL_DOWN. Можно же их использовать ?
Сообщение отредактировал Flip-fl0p - Mar 7 2017, 05:19
|
|
|
|
|
Mar 7 2017, 05:39
|
Частый гость
 
Группа: Участник
Сообщений: 190
Регистрация: 13-02-17
Пользователь №: 95 415

|
Цитата(Flip-fl0p @ Mar 7 2017, 06:14)  а сколько я помню у ALTERA есть PULL_UP, PULL_DOWN. Можно же их использовать ? Достаточно посмотреть документацию на SoC, там резисторы названы как "weak pull-up" и значение приводится 25К. https://www.altera.com/en_US/pdfs/literatur...-v/cv_51002.pdf стр.16. Использовать такие для шины I2C рискованно.
Сообщение отредактировал hsoft - Mar 7 2017, 05:42
|
|
|
|
Сообщений в этой теме
Evgeny72 Переключение входов I2S на плис Mar 6 2017, 11:02     Flip-fl0p Цитата(hsoft @ Mar 7 2017, 08:39) Достато... Mar 7 2017, 07:00      Flip-fl0p Продолжаю в свободное от работы время изучать шину... Mar 16 2017, 09:05       RobFPGA Приветствую!
Цитата(Flip-fl0p @ Mar ... Mar 16 2017, 09:45        Flip-fl0p Цитата(RobFPGA @ Mar 16 2017, 12:45) Прив... Mar 16 2017, 10:17         RobFPGA Приветствую!
Цитата(Flip-fl0p @ Mar... Mar 16 2017, 13:21 Burenkov Sergey Цитата(Evgeny72 @ Mar 6 2017, 14:02) Добр... Mar 6 2017, 12:17 Evgeny72 Цитата(Burenkov Sergey @ Mar 6 2017, 16:1... Mar 6 2017, 13:00  Bad0512 Цитата(Evgeny72 @ Mar 6 2017, 20:00) samp... Mar 7 2017, 02:45   Evgeny72 Цитата(Bad0512 @ Mar 7 2017, 06:45) Что б... Mar 7 2017, 05:40    Bad0512 Цитата(Evgeny72 @ Mar 7 2017, 12:40) В мо... Mar 7 2017, 05:44     Evgeny72 Цитата(Bad0512 @ Mar 7 2017, 09:44) Дело ... Mar 7 2017, 06:51 zxcv Цитата(Evgeny72 @ Mar 6 2017, 14:02) Имее... Mar 6 2017, 19:12 Evgeny72 Цитата(zxcv @ Mar 6 2017, 23:12) 1. Для э... Mar 7 2017, 05:35 Golikov A. Я бы даже сказал что внешние резисторы как раз и д... Mar 16 2017, 10:06 Golikov A. а чего бы не поставить туда логическое И, которым ... Mar 16 2017, 12:48 Flip-fl0p Цитата(Golikov A. @ Mar 16 2017, 15:48) а... Mar 16 2017, 13:01  Golikov A. Цитата(Flip-fl0p @ Mar 16 2017, 16:0... Mar 17 2017, 12:51 alexadmin Хочу задать наводящий вопрос: коллеги, вы в курсе ... Mar 17 2017, 13:35 Flip-fl0p Цитата(alexadmin @ Mar 17 2017, 16:35) Хо... Mar 17 2017, 13:44
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|