Может быть, Вы имеете в виду 8b-10b коррекцию ошибок?flip_flop wrote:Однако делают комбинацию - сначала scrambler, затем - 8b/10b encoder. Зачем? Вопрос обобщает два предыдущих.
Вопросы по электронике?
-
- Уже с Приветом
- Posts: 2197
- Joined: 08 May 2004 01:11
- Location: Kalifornia
-
- Уже с Приветом
- Posts: 15007
- Joined: 14 Jun 2005 11:50
- Location: Ukraine
kosmo wrote:Может быть, Вы имеете в виду 8b-10b коррекцию ошибок?flip_flop wrote:Однако делают комбинацию - сначала scrambler, затем - 8b/10b encoder. Зачем? Вопрос обобщает два предыдущих.
Если я все правильно понял, то в 10 мбитных сетях был манчестер. В 100 ввели 8б/10б. Цель - избавится от постоянной состааляющей. Избыточность 10мбитной была 2, посему и ввели это. Коды оно не восстанавливает, зато самосинхронизуется. АФАИК.
-
- Уже с Приветом
- Posts: 5834
- Joined: 12 Apr 2001 09:01
- Location: нэподалеку от Ireland
> Судя по тому, что я раскопал в Сети, проблема согласования клоков - намного более фундаментальная, чем это снаскоку мне показалось.
ыыы
> Кроме того, она относительно недавно более-менее исчерпывающим образом понята и описана - во всяком случае если судить по обилию исследовательской литературы датированной концом 80-х и 90-ми годами, не говоря уже о работам 2-3 летней давности. Видимо это и есть настоящая причина, почему в Питерском ЕЕ этому не учили - некому было по-человечески учить (полагая, что Вы получали образование до середины 90-х).
закончил в феврале 95 ...
> В итоге, вопрос 1.а - это просто в самую точку из тех самых вопросов, что я что я и искал: элементарно формулируемая но нетривиальная фундаментальная проблема, для правильного исчерпывающего решения которой нужно тщательно разбираться. Причём не в деталях, а именно в "физике" вопроса.
во-во,
еше "на пальцах" про решение написано, например, тут:
http://www.xilinx.com/bvdocs/appnotes/xapp094.pdf
пока не поняли Fig.1 ...
> Видимо дело в том, что в случае 1.б ситуация усугублятеся ещё относительной взаимной нестабильностью отдельных бит данных перескающих границы доменов, поэтому нужно не только домены согласовывать, но и следить за тем, чтобы не прочитать по разным линиям значения, которые не имеют друг к другу никакого отношения, т.е. чтобы не прочитать слова "частично правильно" - все биты "правильные", однако "пришли" они из разных слов.
... необходимо помнить что при "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-х битные данные ...
Думайте, думайте ... Можно внимательно топик еше раз прочитать ...
> Вы имеете в виду 8b-10b коррекцию ошибок?
Вы - кандидат на ДВА в четверти Речь идет о 8-bits-to-10-bits (and back) encoding/decoding
ладно, пора понемногу "колоться"
часть ответов на вопросы про "зачем ето (8b/10b + scramblerЫ) делается так то и так то" можно найти в спецификации на интерфейс в котором eти "механизмы" используются. Например, http://www.serialata.org/docs/serialata10a.pdf
спек на вышеупомянутый Ethernet не читал (т.к. не разрабатывал ничего с ним), но думаю что аналогичный документ с "растолковываниями" можно найти
ыыы
> Кроме того, она относительно недавно более-менее исчерпывающим образом понята и описана - во всяком случае если судить по обилию исследовательской литературы датированной концом 80-х и 90-ми годами, не говоря уже о работам 2-3 летней давности. Видимо это и есть настоящая причина, почему в Питерском ЕЕ этому не учили - некому было по-человечески учить (полагая, что Вы получали образование до середины 90-х).
закончил в феврале 95 ...
> В итоге, вопрос 1.а - это просто в самую точку из тех самых вопросов, что я что я и искал: элементарно формулируемая но нетривиальная фундаментальная проблема, для правильного исчерпывающего решения которой нужно тщательно разбираться. Причём не в деталях, а именно в "физике" вопроса.
во-во,
еше "на пальцах" про решение написано, например, тут:
http://www.xilinx.com/bvdocs/appnotes/xapp094.pdf
пока не поняли Fig.1 ...
> Видимо дело в том, что в случае 1.б ситуация усугублятеся ещё относительной взаимной нестабильностью отдельных бит данных перескающих границы доменов, поэтому нужно не только домены согласовывать, но и следить за тем, чтобы не прочитать по разным линиям значения, которые не имеют друг к другу никакого отношения, т.е. чтобы не прочитать слова "частично правильно" - все биты "правильные", однако "пришли" они из разных слов.
... необходимо помнить что при "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-х битные данные ...
Думайте, думайте ... Можно внимательно топик еше раз прочитать ...
> Вы имеете в виду 8b-10b коррекцию ошибок?
Вы - кандидат на ДВА в четверти Речь идет о 8-bits-to-10-bits (and back) encoding/decoding
ладно, пора понемногу "колоться"
часть ответов на вопросы про "зачем ето (8b/10b + scramblerЫ) делается так то и так то" можно найти в спецификации на интерфейс в котором eти "механизмы" используются. Например, http://www.serialata.org/docs/serialata10a.pdf
спек на вышеупомянутый Ethernet не читал (т.к. не разрабатывал ничего с ним), но думаю что аналогичный документ с "растолковываниями" можно найти
-
- Уже с Приветом
- Posts: 15007
- Joined: 14 Jun 2005 11:50
- Location: Ukraine
Dm.uk wrote:во-во,
еше "на пальцах" про решение написано, например, тут:
http://www.xilinx.com/bvdocs/appnotes/xapp094.pdf
пока не поняли Fig.1 ...
Тут скорее проблемма, чем решение.
В теории, с того XORа единица появится не может.
... необходимо помнить что при "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 можно гальванически развязать, и длинна кабеля может быть довольно большой. Тогда не ясно, почему это не стандарт для подключения ВНЕШНИХ дисков. Все необходимое уже есть.
-
- Уже с Приветом
- Posts: 4379
- Joined: 20 Jun 2001 09:01
KP580BE51 wrote: Тогда не ясно, почему это не стандарт для подключения ВНЕШНИХ дисков. Все необходимое уже есть.
Давно уже в спецификациях - http://www.serialata.org/docs/PHYii%20S ... 052604.pdf
-
- Уже с Приветом
- Posts: 2197
- Joined: 08 May 2004 01:11
- Location: Kalifornia
-
- Уже с Приветом
- Posts: 2197
- Joined: 08 May 2004 01:11
- Location: Kalifornia
-
- Уже с Приветом
- Posts: 5834
- Joined: 12 Apr 2001 09:01
- Location: нэподалеку от Ireland
> Не делая никаких допущений о частотах клоков?
разумеется решение "с 2 тиггерами" требует "допушения" Смысл вопроса (точнее подвопроса, назовем его 1.б.1.) в том как "красиво" сделать "трансфер" (с допушениями как в 1.а., но без "громоздскости" которое требуется при решении 1.б.
> Я бы FIFO асинхронное поставил.
"макро", или "свое" ? Если свое то как именно Вы его будете делать ? (как "развяжете" "домены")
> Хотя если это счетчик, то после него - куча D триггеров, которые защелкиваются темже клоком что и счетчик, и еще куча D тригеров, которые уже защелкиваются "своим" счетчиком.
если правильно Вас понял то Вы предлагаете ~ следуюшее решение :
Домен 1
N-битный счетчик -> [edited, my mistake]
Домен 2
N флипфлопов -> N флипфлопов
решение неправильное, потому что (см. выше)
> Проще сигнал инкримента/декремента протащить.
одно из правильных решений Минус его в том что нужны два счетчика.
разумеется решение "с 2 тиггерами" требует "допушения" Смысл вопроса (точнее подвопроса, назовем его 1.б.1.) в том как "красиво" сделать "трансфер" (с допушениями как в 1.а., но без "громоздскости" которое требуется при решении 1.б.
> Я бы FIFO асинхронное поставил.
"макро", или "свое" ? Если свое то как именно Вы его будете делать ? (как "развяжете" "домены")
> Хотя если это счетчик, то после него - куча D триггеров, которые защелкиваются темже клоком что и счетчик, и еще куча D тригеров, которые уже защелкиваются "своим" счетчиком.
если правильно Вас понял то Вы предлагаете ~ следуюшее решение :
Домен 1
N-битный счетчик -> [edited, my mistake]
Домен 2
N флипфлопов -> N флипфлопов
решение неправильное, потому что (см. выше)
> Проще сигнал инкримента/декремента протащить.
одно из правильных решений Минус его в том что нужны два счетчика.
Last edited by Dm.uk on 19 Sep 2005 11:46, edited 1 time in total.
-
- Уже с Приветом
- Posts: 15007
- Joined: 14 Jun 2005 11:50
- Location: Ukraine
Dm.uk wrote:> Я бы FIFO асинхронное поставил.
"макро", или "свое" ? Если свое то как именно Вы его будете делать ? (как "развяжете" "домены")
Макро. Оно уже готовое было в ПЛИСине. Если свое, то для начала, посмотрел-бы как это ФИФО описано в моделе для верилоговского симулятора.
Так, "с лету" не скажу.
> Хотя если это счетчик, то после него - куча D триггеров, которые защелкиваются темже клоком что и счетчик, и еще куча D тригеров, которые уже защелкиваются "своим" счетчиком.
если правильно Вас понял то Вы предлагаете ~ следуюшее решение :
Домен 1
N-битный счетчик -> N флипфлопов ->
Домен 2
-> N флипфлопов
решение неправильное, потому что (см. выше)
Я понял так, что под счетчиком имелась некая абстракция.
И всеже почему не правильное? Я подразумевал как мнимум что счетчик асинхронный. И неправильная передача не допустима. Вообще, ОЧЕНЬ не люблю я абстрактные задачи. Может быть неправильная передача допустима, зато вот задержка на такт не допустима.
> Проще сигнал инкримента/декремента протащить.
одно из правильных решений Минус его в том что нужны два счетчика.
Что 2 счетчика, что 1 счетчик и в 2 раза больше триггеров. Какая разница? Счетчик в общем-то тотже триггер. Да и клоки в этом случае все равно как-то согласовывать. И счетчик может быть с предустановкой. А предустановка тоже может быть синхронная/асинхронная.
-
- Уже с Приветом
- Posts: 5834
- Joined: 12 Apr 2001 09:01
- Location: нэподалеку от Ireland
> Я не скажу про вафли, но спектре можно задать в атрибутах, насколько может быть разброс в длинне проводов шины и максимальную длинну.
Вы никогда не получите два "провода" абсолютно одинаковой длины ( с точностью до 0.000000000000ххх :шинк ). Т.е. с помошью хорошей P&R tool Вы можете минимизировать ошибку, не более. Также не забудьте про погрешность изготовителя, "side effects" всего-всего (отдельный разговор, для внеклассного чтения) итд
> Макро. Оно уже готовое было в ПЛИСине.
мы, в данном топике, говорим о теории вцелом, а не об особенностях какого-либо семейства FPGA ...
> И всеже почему неправильное?
посмотрите что автор топика пишет про то почему нельзя решать задачу 1.б. "в лоб" как и задачу 1.а.
Вы никогда не получите два "провода" абсолютно одинаковой длины ( с точностью до 0.000000000000ххх :шинк ). Т.е. с помошью хорошей P&R tool Вы можете минимизировать ошибку, не более. Также не забудьте про погрешность изготовителя, "side effects" всего-всего (отдельный разговор, для внеклассного чтения) итд
> Макро. Оно уже готовое было в ПЛИСине.
мы, в данном топике, говорим о теории вцелом, а не об особенностях какого-либо семейства FPGA ...
> И всеже почему неправильное?
посмотрите что автор топика пишет про то почему нельзя решать задачу 1.б. "в лоб" как и задачу 1.а.
-
- Уже с Приветом
- Posts: 15007
- Joined: 14 Jun 2005 11:50
- Location: Ukraine
Dm.uk wrote:> Я не скажу про вафли, но спектре можно задать в атрибутах, насколько может быть разброс в длинне проводов шины и максимальную длинну.
Вы никогда не получите два "провода" абсолютно одинаковой длины ( с точностью до 0.000000000000ххх :шинк ). Т.е. с помошью хорошей P&R tool Вы можете минимизировать ошибку, не более. Также не забудьте про погрешность изготовителя, "side effects" всего-всего (отдельный разговор, для внеклассного чтения) итд
Прошу прощения, А ОНО, ВООБЩЕ, НАДО? Я нигде не встречал в документации фразы типа "задержка на этом пине 1.6243253452356245634562456245ns. Если написано что MOSFET закрывается за 10нс (маленький) то положить 15нс и не компасировать себе мозги. ИМХО, достаточно чтобы клок пришел позже на время //значительно// позже разброса прихода сигнала про линиям данных. К примеру часто на клок ставят согласовательные резисторы а на данные/адрес не ставят. Причина - пока дойдет клок, данные уже отрезанируют. Но клок на один такт должен придти один.
> Макро. Оно уже готовое было в ПЛИСине.
мы, в данном топике, говорим о теории вцелом, а не об особенностях какого-либо семейства FPGA ...
Я как раз про это. Я не про теорию а про практику. Как оно примерно работает я представляю. Поэтому знаю какие глюки можно ждать и как их бороть.
> И всеже почему неправильное?
посмотрите что автор топика пишет про то почему нельзя решать задачу 1.б. "в лоб" как и задачу 1.а.
Посмотрел, не нашел. Кажется часть топика я не вижу.
-
- Уже с Приветом
- Posts: 5834
- Joined: 12 Apr 2001 09:01
- Location: нэподалеку от Ireland
> Посмотрел, не нашел. Кажется часть топика я не вижу.
tengiz> Видимо дело в том, что в случае 1.б ситуация усугублятеся ещё относительной взаимной нестабильностью отдельных бит данных перескающих границы доменов, поэтому нужно не только домены согласовывать, но и следить за тем, чтобы не прочитать по разным линиям значения, которые не имеют друг к другу никакого отношения, т.е. чтобы не прочитать слова "частично правильно" - все биты "правильные", однако "пришли" они из разных слов.
мне кажется что Вы не уловили ето самое "почему".
> Прошу прощения, А ОНО, ВООБЩЕ, НАДО?
дело не в том какая именно погрешность (того или иного), а в том что каждый миллионный/миллиардный/триллионный раз Вы будете видеть то что написал Tengiz выше ...
PS (к вопросу про китайских EE)
tengiz> Видимо дело в том, что в случае 1.б ситуация усугублятеся ещё относительной взаимной нестабильностью отдельных бит данных перескающих границы доменов, поэтому нужно не только домены согласовывать, но и следить за тем, чтобы не прочитать по разным линиям значения, которые не имеют друг к другу никакого отношения, т.е. чтобы не прочитать слова "частично правильно" - все биты "правильные", однако "пришли" они из разных слов.
мне кажется что Вы не уловили ето самое "почему".
> Прошу прощения, А ОНО, ВООБЩЕ, НАДО?
дело не в том какая именно погрешность (того или иного), а в том что каждый миллионный/миллиардный/триллионный раз Вы будете видеть то что написал Tengiz выше ...
PS (к вопросу про китайских EE)
-
- Уже с Приветом
- Posts: 15007
- Joined: 14 Jun 2005 11:50
- Location: Ukraine
Dm.uk wrote:> Посмотрел, не нашел. Кажется часть топика я не вижу.
tengiz> Видимо дело в том, что в случае 1.б ситуация усугублятеся ещё относительной взаимной нестабильностью отдельных бит данных перескающих границы доменов, поэтому нужно не только домены согласовывать, но и следить за тем, чтобы не прочитать по разным линиям значения, которые не имеют друг к другу никакого отношения, т.е. чтобы не прочитать слова "частично правильно" - все биты "правильные", однако "пришли" они из разных слов.
мне кажется что Вы не уловили ето самое "почему".
процетирую сам себя.
Хотя если это счетчик, то после него - куча D триггеров, которые защелкиваются темже клоком что и счетчик, и еще куча D тригеров, которые уже защелкиваются "своим" счетчиком.
Это? Темже клоком==он защелкивает ТЕКУЩЕЕ положение счетчика. И потом уже происходит несколько медленный процесс инкрементирования.
(Я как-бы в курсе как счетчик работает, хотябы на уровне К155ИЕ5 )
> Прошу прощения, А ОНО, ВООБЩЕ, НАДО?
дело не в том какая именно погрешнось (того или иного), а в том что каждый миллионный/миллиардный/триллионный раз Вы будете видеть то что написал Tengiz выше ...
А это не ОЧЕВИДНО?
-
- Уже с Приветом
- Posts: 15007
- Joined: 14 Jun 2005 11:50
- Location: Ukraine
KP580BE51 wrote:Это? Темже клоком==он защелкивает ТЕКУЩЕЕ положение счетчика. И потом уже происходит несколько медленный процесс инкрементирования.
(Я как-бы в курсе как счетчик работает, хотябы на уровне
Напишу дискрамблер, да, я знаю что и так можно поймать процесс переключения. Но тут уже нужно изучать что, как, и почему. Тут уже задача не теоретическая, а пракическая, типа "насколько запаздывает сигнал "есть данные" относительно собственно данных". Нет, не люблю я абстрактных задач.
-
- Уже с Приветом
- Posts: 5834
- Joined: 12 Apr 2001 09:01
- Location: нэподалеку от Ireland