Jump to content

    
Sign in to follow this  
KefiroK

Обмен данных по КС LVDS. Verilog.

Recommended Posts

Добрый день! Заранее извините за неправильные термины. В работе с ПЛИС я новичок.

Я передаю пакет данных с частотой CLOCK 112 MHz. Затем мне присылают ответный пакет на такой же частоте 112 MHz, при таких условиях всё работает. 

Вопрос такой. Как мне принять данные если ответный пакет может мне поступить на частоте от 100 MHz до 115 MHz?

Просто я не представляю от чего оттолкнуться.

Edited by KefiroK

Share this post


Link to post
Share on other sites
3 minutes ago, KefiroK said:

Просто я не представляю от чего оттолкнуться.

от типа интерфейса: с передачей тактовой источника или нет. Если тактовая источника есть и это именно тактовая, то проблем особых нет. Если же передача асинхронная, тогда возможны варианты

Share this post


Link to post
Share on other sites

Если тактовой частоты отдельно не передается:

Как вариант, гнать в канале все время какую-нибудь случайную проследовательность, по которой подстраивать тактовую частоту приемника. И по ней уже принимать данные. 

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

Подробности расскажете? Какая ПЛИС? Описание интерфейса? Протокола?

Share this post


Link to post
Share on other sites
14.01.2022 в 14:02, des00 сказал:

от типа интерфейса: с передачей тактовой источника или нет. Если тактовая источника есть и это именно тактовая, то проблем особых нет. Если же передача асинхронная, тогда возможны варианты

Передача происходит синхронно. Вместе с пакетом данных передается и тактовая частота 112 MHz. Ответный пакет приходит так же синхронно, но есть вероятность того что ответная тактовая может быть плавающей от 100-115 MHz. Плисина Altera MAX 10.

Share this post


Link to post
Share on other sites
2 hours ago, KefiroK said:

Передача происходит синхронно. Вместе с пакетом данных передается и тактовая частота 112 MHz. Ответный пакет приходит так же синхронно, но есть вероятность того что ответная тактовая может быть плавающей от 100-115 MHz. Плисина Altera MAX 10.

То есть  у вас разная тактовая передается в оба  направления?  На передачу есть шина данных и  тактовая и на прием отдельная шина данных и отдельная линия тактовой? 
Нужно конкретно понимать структуру вашего дизайна чтобы не гадать что и как.

 

Share this post


Link to post
Share on other sites
15.01.2022 в 17:11, RobFPGA сказал:

То есть  у вас разная тактовая передается в оба  направления?  На передачу есть шина данных и  тактовая и на прием отдельная шина данных и отдельная линия тактовой? 
Нужно конкретно понимать структуру вашего дизайна чтобы не гадать что и как.

 

Да, у передачи две шины тактовая и данные, и на прием две шины тактовая и данные. Только по линии передачи тактовая точно 112 MHz. А на ответной шине может быть плавающая от 100 - 115.

Share this post


Link to post
Share on other sites
1 hour ago, KefiroK said:

Да, у передачи две шины тактовая и данные, и на прием две шины тактовая и данные. Только по линии передачи тактовая точно 112 MHz. А на ответной шине может быть плавающая от 100 - 115.

Поставить по приему ФИФО, по заголовку пакета его сбрасывать, потом копить в нем весь пакет и вычитывать-обрабатывать. Если "плотность" пакетов не сильно большая - должно взлететь.

Либо даже не весь пакет, а первые сколько-то слов. Что бы быть уверенным, что не будет underflow буфера.

Share this post


Link to post
Share on other sites
17.01.2022 в 10:21, nice_vladi сказал:

Поставить по приему ФИФО, по заголовку пакета его сбрасывать, потом копить в нем весь пакет и вычитывать-обрабатывать. Если "плотность" пакетов не сильно большая - должно взлететь.

Либо даже не весь пакет, а первые сколько-то слов. Что бы быть уверенным, что не будет underflow буфера.

Спасибо большое!! Этот вариант работает. Но можно ли как-то обойтись без FIFO, чтобы перейти из одного клокового домена в другой. Ну чтобы как-то перейти с одной тактовой частоты на другую

Edited by KefiroK

Share this post


Link to post
Share on other sites
16 minutes ago, KefiroK said:

Спасибо большое!! Этот вариант работает. Но можно ли как-то обойтись без FIFO, чтобы перейти из одного клокового домена в другой. Ну чтобы как-то перейти с одной тактовой частоты на другую

Если частоты сопоставимы - то фифо самый простой вариант. Если есть перетактирование - то можно попытаться детектировать фронт тактового сигнала и по этому фронту защелкивать шину данных.

Поставить два регистра последовательно и пропустить через них принимаемую шину данных. Курите на тему clock domain crossin. Например это

ЗЫ. телепат в действии)

Share this post


Link to post
Share on other sites
53 minutes ago, KefiroK said:

Спасибо большое!! Этот вариант работает. Но можно ли как-то обойтись без FIFO, чтобы перейти из одного клокового домена в другой. Ну чтобы как-то перейти с одной тактовой частоты на другую

Можно на базе двухпортовой памяти организовать двойной буффер

Share this post


Link to post
Share on other sites
31 minutes ago, nice_vladi said:

Поставить два регистра последовательно и пропустить через них принимаемую шину данных.

Это может исправить только фазовые ошибки. При расхождении частот не сработает.

Здесь можно на входной частоте принять байт (или сколько нужно по протоколу), затем сформировать готовность данных и по этому сигналу перетаскивать эти данные в другой домен (112 МГц). Частота обработки должна быть заведомо выше, чем максимальная входная (деленная на количество бит в приеме).

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this