Вопросы по электронике?

и задачки для интервью.
User avatar
kosmo
Уже с Приветом
Posts: 2197
Joined: 08 May 2004 01:11
Location: Kalifornia

Post by kosmo »

flip_flop wrote:Однако делают комбинацию - сначала scrambler, затем - 8b/10b encoder. Зачем? Вопрос обобщает два предыдущих.
Может быть, Вы имеете в виду 8b-10b коррекцию ошибок?
User avatar
KP580BE51
Уже с Приветом
Posts: 15007
Joined: 14 Jun 2005 11:50
Location: Ukraine

Post by KP580BE51 »

kosmo wrote:
flip_flop wrote:Однако делают комбинацию - сначала scrambler, затем - 8b/10b encoder. Зачем? Вопрос обобщает два предыдущих.
Может быть, Вы имеете в виду 8b-10b коррекцию ошибок?

Если я все правильно понял, то в 10 мбитных сетях был манчестер. В 100 ввели 8б/10б. Цель - избавится от постоянной состааляющей. Избыточность 10мбитной была 2, посему и ввели это. Коды оно не восстанавливает, зато самосинхронизуется. АФАИК.
User avatar
Dm.uk
Уже с Приветом
Posts: 5834
Joined: 12 Apr 2001 09:01
Location: нэподалеку от Ireland

Post by Dm.uk »

> Судя по тому, что я раскопал в Сети, проблема согласования клоков - намного более фундаментальная, чем это снаскоку мне показалось.

ыыы :wink:

> Кроме того, она относительно недавно более-менее исчерпывающим образом понята и описана - во всяком случае если судить по обилию исследовательской литературы датированной концом 80-х и 90-ми годами, не говоря уже о работам 2-3 летней давности. Видимо это и есть настоящая причина, почему в Питерском ЕЕ этому не учили - некому было по-человечески учить (полагая, что Вы получали образование до середины 90-х).

закончил в феврале 95 ...


> В итоге, вопрос 1.а - это просто в самую точку из тех самых вопросов, что я что я и искал: элементарно формулируемая но нетривиальная фундаментальная проблема, для правильного исчерпывающего решения которой нужно тщательно разбираться. Причём не в деталях, а именно в "физике" вопроса.

во-во,
еше "на пальцах" про решение написано, например, тут:
http://www.xilinx.com/bvdocs/appnotes/xapp094.pdf

пока не поняли Fig.1 ...


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

:great:

... необходимо помнить что при "Place & Route" (SoC, ASIC, FPGA, PCB, whatever) длина "проводов" (на, допустим, 64-х битной whatever_шине) будет разной. Т.е. "сигнал" на 0-ом бите дойдет "до цели" через время t0, на 1-ом через t1, на 2-ом через t2 итд. При етом t0 не равно t1, t0 не равно t2, t1 не равно t2 итд ...

Есть еше несложный "подвопрос" - а если Вы передаете из домена в домен данные какого-либо счетчика, который меняет свое значение на + или - 1 за такт ?

> Возможное решение - свести задачу к 1.б к 1.а: сериализовать слово, затем пропустить через однобитный согласователь домена, после чего обратно десериализовать.

:?

Решение, конечно, правильное, но посчитайте сколько тактов Вы потеряете если у Вас, например, 64-х битные данные ...

Думайте, думайте ... :wink: Можно внимательно топик еше раз прочитать ... :wink:


> Вы имеете в виду 8b-10b коррекцию ошибок?

Вы - кандидат на ДВА в четверти :mrgreen: Речь идет о 8-bits-to-10-bits (and back) encoding/decoding


ладно, пора понемногу "колоться"

часть ответов на вопросы про "зачем ето (8b/10b + scramblerЫ) делается так то и так то" можно найти в спецификации на интерфейс в котором eти "механизмы" используются. Например, http://www.serialata.org/docs/serialata10a.pdf

спек на вышеупомянутый Ethernet не читал (т.к. не разрабатывал ничего с ним), но думаю что аналогичный документ с "растолковываниями" можно найти
User avatar
KP580BE51
Уже с Приветом
Posts: 15007
Joined: 14 Jun 2005 11:50
Location: Ukraine

Post by KP580BE51 »

Dm.uk wrote:во-во,
еше "на пальцах" про решение написано, например, тут:
http://www.xilinx.com/bvdocs/appnotes/xapp094.pdf
пока не поняли Fig.1 ...

Тут скорее проблемма, чем решение.

В теории, с того XORа единица появится не может.

:great:

... необходимо помнить что при "Place & Route" (SoC, ASIC, FPGA, PCB, whatever) длина "проводов" (на, допустим, 64-х битной whatever_шине) будет разной. Т.е. "сигнал" на 0-ом бите дойдет "до цели" через время t0, на 1-ом через t1, на 2-ом через t2 итд. При етом t0 не равно t1, t0 не равно t2, t1 не равно t2 итд ...


Я не скажу про вафли, но спектре можно задать в атрибутах, насколько может быть разброс в длинне проводов шины и максимальную длинну.Также можно задать минимальную длинну клока.

Есть еше несложный "подвопрос" - а если Вы передаете из домена в домен данные какого-либо счетчика, который меняет свое значение на + или - 1 за такт ?

> Возможное решение - свести задачу к 1.б к 1.а: сериализовать слово, затем пропустить через однобитный согласователь домена, после чего обратно десериализовать.

Тормоза будут.
Ябы FIFO асинхронное поставил. Хотя если это счетчик, то после него - куча D триггеров, которые защелкиваются темже клоком что и счетчик, и еще куча D тригеров, которые уже защелкиваются "своим" счетчиком. Это не идиальное решение, но зачем тащить сигнал со СЧЕТЧИКА в другой домен я не знаю. Проще сигнал инкримента/декремента протащить.

часть ответов на вопросы про "зачем ето (8b/10b + scramblerЫ) делается так то и так то" можно найти в спецификации на интерфейс в котором eти "механизмы" используются. Например, http://www.serialata.org/docs/serialata10a.pdf

Красиво сделано. Захотелось винт купить с SATA. Но там написано что к примеру клок восстанавливают PLLем. Тогда собственно цифровой части 8b/10b остается только найти начало байта, а программной CRC проверить "все ок или нет". Получается что задача побита на кусочки и уже решаема "малой кровью".

Попутно выясняется что SATA можно гальванически развязать, и длинна кабеля может быть довольно большой. Тогда не ясно, почему это не стандарт для подключения ВНЕШНИХ дисков. Все необходимое уже есть.
User avatar
flip_flop
Уже с Приветом
Posts: 4379
Joined: 20 Jun 2001 09:01

Post by flip_flop »

KP580BE51 wrote: Тогда не ясно, почему это не стандарт для подключения ВНЕШНИХ дисков. Все необходимое уже есть.

Давно уже в спецификациях - http://www.serialata.org/docs/PHYii%20S ... 052604.pdf
User avatar
kosmo
Уже с Приветом
Posts: 2197
Joined: 08 May 2004 01:11
Location: Kalifornia

Post by kosmo »

KP580BE51 wrote:Тут скорее проблемма, чем решение.
В теории, с того XORа единица появится не может.
Это смотря в рамках какой теории.
User avatar
kosmo
Уже с Приветом
Posts: 2197
Joined: 08 May 2004 01:11
Location: Kalifornia

Post by kosmo »

Dm.uk wrote:Есть еше несложный "подвопрос" - а если Вы передаете из домена в домен данные какого-либо счетчика, который меняет свое значение на + или - 1 за такт ?

Не делая никаких допущений о частотах клоков? :)
User avatar
Dm.uk
Уже с Приветом
Posts: 5834
Joined: 12 Apr 2001 09:01
Location: нэподалеку от Ireland

Post by Dm.uk »

> Не делая никаких допущений о частотах клоков? :)

разумеется решение "с 2 тиггерами" требует "допушения" :-) Смысл вопроса (точнее подвопроса, назовем его 1.б.1.) в том как "красиво" сделать "трансфер" (с допушениями как в 1.а., но без "громоздскости" которое требуется при решении 1.б. :-)


> Я бы FIFO асинхронное поставил.

"макро", или "свое" ? Если свое то как именно Вы его будете делать ? (как "развяжете" "домены")

> Хотя если это счетчик, то после него - куча D триггеров, которые защелкиваются темже клоком что и счетчик, и еще куча D тригеров, которые уже защелкиваются "своим" счетчиком.

если правильно Вас понял то Вы предлагаете ~ следуюшее решение :

Домен 1
N-битный счетчик -> [edited, my mistake]

Домен 2
N флипфлопов -> N флипфлопов

решение неправильное, потому что (см. выше)


> Проще сигнал инкримента/декремента протащить.

одно из правильных решений :wink: Минус его в том что нужны два счетчика.
Last edited by Dm.uk on 19 Sep 2005 11:46, edited 1 time in total.
User avatar
KP580BE51
Уже с Приветом
Posts: 15007
Joined: 14 Jun 2005 11:50
Location: Ukraine

Post by KP580BE51 »

Dm.uk wrote:> Я бы FIFO асинхронное поставил.

"макро", или "свое" ? Если свое то как именно Вы его будете делать ? (как "развяжете" "домены")

Макро. Оно уже готовое было в ПЛИСине. Если свое, то для начала, посмотрел-бы как это ФИФО описано в моделе для верилоговского симулятора. :)

Так, "с лету" не скажу.

> Хотя если это счетчик, то после него - куча D триггеров, которые защелкиваются темже клоком что и счетчик, и еще куча D тригеров, которые уже защелкиваются "своим" счетчиком.

если правильно Вас понял то Вы предлагаете ~ следуюшее решение :

Домен 1
N-битный счетчик -> N флипфлопов ->

Домен 2
-> N флипфлопов

решение неправильное, потому что (см. выше)


Я понял так, что под счетчиком имелась некая абстракция.

И всеже почему не правильное? Я подразумевал как мнимум что счетчик асинхронный. И неправильная передача не допустима. Вообще, ОЧЕНЬ не люблю я абстрактные задачи. Может быть неправильная передача допустима, зато вот задержка на такт не допустима.

> Проще сигнал инкримента/декремента протащить.
одно из правильных решений :wink: Минус его в том что нужны два счетчика.

Что 2 счетчика, что 1 счетчик и в 2 раза больше триггеров. Какая разница? Счетчик в общем-то тотже триггер. Да и клоки в этом случае все равно как-то согласовывать. И счетчик может быть с предустановкой. А предустановка тоже может быть синхронная/асинхронная.
User avatar
Dm.uk
Уже с Приветом
Posts: 5834
Joined: 12 Apr 2001 09:01
Location: нэподалеку от Ireland

Post by Dm.uk »

> Я не скажу про вафли, но спектре можно задать в атрибутах, насколько может быть разброс в длинне проводов шины и максимальную длинну.

Вы никогда не получите два "провода" абсолютно одинаковой длины ( с точностью до 0.000000000000ххх :шинк ). Т.е. с помошью хорошей P&R tool Вы можете минимизировать ошибку, не более. Также не забудьте про погрешность изготовителя, "side effects" всего-всего (отдельный разговор, для внеклассного чтения) итд


> Макро. Оно уже готовое было в ПЛИСине.

мы, в данном топике, говорим о теории вцелом, а не об особенностях какого-либо семейства FPGA ...


> И всеже почему неправильное?

посмотрите что автор топика пишет про то почему нельзя решать задачу 1.б. "в лоб" как и задачу 1.а.
User avatar
KP580BE51
Уже с Приветом
Posts: 15007
Joined: 14 Jun 2005 11:50
Location: Ukraine

Post by KP580BE51 »

Dm.uk wrote:> Я не скажу про вафли, но спектре можно задать в атрибутах, насколько может быть разброс в длинне проводов шины и максимальную длинну.
Вы никогда не получите два "провода" абсолютно одинаковой длины ( с точностью до 0.000000000000ххх :шинк ). Т.е. с помошью хорошей P&R tool Вы можете минимизировать ошибку, не более. Также не забудьте про погрешность изготовителя, "side effects" всего-всего (отдельный разговор, для внеклассного чтения) итд

Прошу прощения, А ОНО, ВООБЩЕ, НАДО? Я нигде не встречал в документации фразы типа "задержка на этом пине 1.6243253452356245634562456245ns. Если написано что MOSFET закрывается за 10нс (маленький) то положить 15нс и не компасировать себе мозги. ИМХО, достаточно чтобы клок пришел позже на время //значительно// позже разброса прихода сигнала про линиям данных. К примеру часто на клок ставят согласовательные резисторы а на данные/адрес не ставят. Причина - пока дойдет клок, данные уже отрезанируют. Но клок на один такт должен придти один. :)
> Макро. Оно уже готовое было в ПЛИСине.

мы, в данном топике, говорим о теории вцелом, а не об особенностях какого-либо семейства FPGA ...

Я как раз про это. Я не про теорию а про практику. Как оно примерно работает я представляю. Поэтому знаю какие глюки можно ждать и как их бороть.
> И всеже почему неправильное?
посмотрите что автор топика пишет про то почему нельзя решать задачу 1.б. "в лоб" как и задачу 1.а.

Посмотрел, не нашел. Кажется часть топика я не вижу.
User avatar
Dm.uk
Уже с Приветом
Posts: 5834
Joined: 12 Apr 2001 09:01
Location: нэподалеку от Ireland

Post by Dm.uk »

> Посмотрел, не нашел. Кажется часть топика я не вижу.

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

мне кажется что Вы не уловили ето самое "почему".


> Прошу прощения, А ОНО, ВООБЩЕ, НАДО?

дело не в том какая именно погрешность (того или иного), а в том что каждый миллионный/миллиардный/триллионный раз Вы будете видеть то что написал Tengiz выше ...

PS (к вопросу про китайских EE) :wink:
User avatar
KP580BE51
Уже с Приветом
Posts: 15007
Joined: 14 Jun 2005 11:50
Location: Ukraine

Post by KP580BE51 »

Dm.uk wrote:> Посмотрел, не нашел. Кажется часть топика я не вижу.

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

мне кажется что Вы не уловили ето самое "почему".

процетирую сам себя.
Хотя если это счетчик, то после него - куча D триггеров, которые защелкиваются темже клоком что и счетчик, и еще куча D тригеров, которые уже защелкиваются "своим" счетчиком.

Это? Темже клоком==он защелкивает ТЕКУЩЕЕ положение счетчика. И потом уже происходит несколько медленный процесс инкрементирования.
(Я как-бы в курсе как счетчик работает, хотябы на уровне К155ИЕ5 )
> Прошу прощения, А ОНО, ВООБЩЕ, НАДО?

дело не в том какая именно погрешнось (того или иного), а в том что каждый миллионный/миллиардный/триллионный раз Вы будете видеть то что написал Tengiz выше ...

А это не ОЧЕВИДНО?
User avatar
KP580BE51
Уже с Приветом
Posts: 15007
Joined: 14 Jun 2005 11:50
Location: Ukraine

Post by KP580BE51 »

KP580BE51 wrote:Это? Темже клоком==он защелкивает ТЕКУЩЕЕ положение счетчика. И потом уже происходит несколько медленный процесс инкрементирования.
(Я как-бы в курсе как счетчик работает, хотябы на уровне

Напишу дискрамблер, да, я знаю что и так можно поймать процесс переключения. Но тут уже нужно изучать что, как, и почему. Тут уже задача не теоретическая, а пракическая, типа "насколько запаздывает сигнал "есть данные" относительно собственно данных". Нет, не люблю я абстрактных задач. :(
User avatar
Dm.uk
Уже с Приветом
Posts: 5834
Joined: 12 Apr 2001 09:01
Location: нэподалеку от Ireland

Post by Dm.uk »

> ИМХО, достаточно чтобы клок пришел позже на время //значительно// позже разброса прихода сигнала про линиям данных.

а ведь мы понятия не имеем когда (в какой момент времени, относительно клока первого домена) "придет" клок второго домена ...

Return to “Головоломки”