KefiroK 0 Posted January 14 (edited) · Report post Добрый день! Заранее извините за неправильные термины. В работе с ПЛИС я новичок. Я передаю пакет данных с частотой CLOCK 112 MHz. Затем мне присылают ответный пакет на такой же частоте 112 MHz, при таких условиях всё работает. Вопрос такой. Как мне принять данные если ответный пакет может мне поступить на частоте от 100 MHz до 115 MHz? Просто я не представляю от чего оттолкнуться. Edited January 14 by KefiroK Quote Ответить с цитированием Share this post Link to post Share on other sites
des00 0 Posted January 14 · Report post 3 minutes ago, KefiroK said: Просто я не представляю от чего оттолкнуться. от типа интерфейса: с передачей тактовой источника или нет. Если тактовая источника есть и это именно тактовая, то проблем особых нет. Если же передача асинхронная, тогда возможны варианты Quote Ответить с цитированием Share this post Link to post Share on other sites
slkhome 0 Posted January 15 · Report post Если тактовой частоты отдельно не передается: Как вариант, гнать в канале все время какую-нибудь случайную проследовательность, по которой подстраивать тактовую частоту приемника. И по ней уже принимать данные. Данные, конечно, в свою очередь должны быть упакованы в пакет с преамбулой и контрольной суммой, так как нужно определять начало информационного пакета и наличие возможных ошибок при таком типе обмена. Подробности расскажете? Какая ПЛИС? Описание интерфейса? Протокола? Quote Ответить с цитированием Share this post Link to post Share on other sites
KefiroK 0 Posted January 15 · Report post 14.01.2022 в 14:02, des00 сказал: от типа интерфейса: с передачей тактовой источника или нет. Если тактовая источника есть и это именно тактовая, то проблем особых нет. Если же передача асинхронная, тогда возможны варианты Передача происходит синхронно. Вместе с пакетом данных передается и тактовая частота 112 MHz. Ответный пакет приходит так же синхронно, но есть вероятность того что ответная тактовая может быть плавающей от 100-115 MHz. Плисина Altera MAX 10. Quote Ответить с цитированием Share this post Link to post Share on other sites
RobFPGA 0 Posted January 15 · Report post 2 hours ago, KefiroK said: Передача происходит синхронно. Вместе с пакетом данных передается и тактовая частота 112 MHz. Ответный пакет приходит так же синхронно, но есть вероятность того что ответная тактовая может быть плавающей от 100-115 MHz. Плисина Altera MAX 10. То есть у вас разная тактовая передается в оба направления? На передачу есть шина данных и тактовая и на прием отдельная шина данных и отдельная линия тактовой? Нужно конкретно понимать структуру вашего дизайна чтобы не гадать что и как. Quote Ответить с цитированием Share this post Link to post Share on other sites
KefiroK 0 Posted January 17 · Report post 15.01.2022 в 17:11, RobFPGA сказал: То есть у вас разная тактовая передается в оба направления? На передачу есть шина данных и тактовая и на прием отдельная шина данных и отдельная линия тактовой? Нужно конкретно понимать структуру вашего дизайна чтобы не гадать что и как. Да, у передачи две шины тактовая и данные, и на прием две шины тактовая и данные. Только по линии передачи тактовая точно 112 MHz. А на ответной шине может быть плавающая от 100 - 115. Quote Ответить с цитированием Share this post Link to post Share on other sites
nice_vladi 0 Posted January 17 · Report post 1 hour ago, KefiroK said: Да, у передачи две шины тактовая и данные, и на прием две шины тактовая и данные. Только по линии передачи тактовая точно 112 MHz. А на ответной шине может быть плавающая от 100 - 115. Поставить по приему ФИФО, по заголовку пакета его сбрасывать, потом копить в нем весь пакет и вычитывать-обрабатывать. Если "плотность" пакетов не сильно большая - должно взлететь. Либо даже не весь пакет, а первые сколько-то слов. Что бы быть уверенным, что не будет underflow буфера. Quote Ответить с цитированием Share this post Link to post Share on other sites
KefiroK 0 Posted January 19 (edited) · Report post 17.01.2022 в 10:21, nice_vladi сказал: Поставить по приему ФИФО, по заголовку пакета его сбрасывать, потом копить в нем весь пакет и вычитывать-обрабатывать. Если "плотность" пакетов не сильно большая - должно взлететь. Либо даже не весь пакет, а первые сколько-то слов. Что бы быть уверенным, что не будет underflow буфера. Спасибо большое!! Этот вариант работает. Но можно ли как-то обойтись без FIFO, чтобы перейти из одного клокового домена в другой. Ну чтобы как-то перейти с одной тактовой частоты на другую Edited January 19 by KefiroK Quote Ответить с цитированием Share this post Link to post Share on other sites
nice_vladi 0 Posted January 19 · Report post 16 minutes ago, KefiroK said: Спасибо большое!! Этот вариант работает. Но можно ли как-то обойтись без FIFO, чтобы перейти из одного клокового домена в другой. Ну чтобы как-то перейти с одной тактовой частоты на другую Если частоты сопоставимы - то фифо самый простой вариант. Если есть перетактирование - то можно попытаться детектировать фронт тактового сигнала и по этому фронту защелкивать шину данных. Поставить два регистра последовательно и пропустить через них принимаемую шину данных. Курите на тему clock domain crossin. Например это ЗЫ. телепат в действии) Quote Ответить с цитированием Share this post Link to post Share on other sites
Maverick_ 10 Posted January 19 · Report post 53 minutes ago, KefiroK said: Спасибо большое!! Этот вариант работает. Но можно ли как-то обойтись без FIFO, чтобы перейти из одного клокового домена в другой. Ну чтобы как-то перейти с одной тактовой частоты на другую Можно на базе двухпортовой памяти организовать двойной буффер Quote Ответить с цитированием Share this post Link to post Share on other sites
Alex11 0 Posted January 19 · Report post 31 minutes ago, nice_vladi said: Поставить два регистра последовательно и пропустить через них принимаемую шину данных. Это может исправить только фазовые ошибки. При расхождении частот не сработает. Здесь можно на входной частоте принять байт (или сколько нужно по протоколу), затем сформировать готовность данных и по этому сигналу перетаскивать эти данные в другой домен (112 МГц). Частота обработки должна быть заведомо выше, чем максимальная входная (деленная на количество бит в приеме). Quote Ответить с цитированием Share this post Link to post Share on other sites
nice_vladi 0 Posted January 19 · Report post 27 minutes ago, Alex11 said: Это может исправить только фазовые ошибки. При расхождении частот не сработает Ну да, это я погорячился. Quote Ответить с цитированием Share this post Link to post Share on other sites