Перейти к содержанию
    

Как объеденить две шины

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

Есть две шины данных. Каждая из шин синхронизируется своим клоком, причем частоты этих клоков равны, но они сдвинуты по фазе. Сдвиг считаем неизвестным и может варьироваться от нуля до пи. Требуется объединить две шины в одну, ну и как следствие привести их к одному клоку. У кого какие идеи есть по данному вопросу?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Есть две шины данных. Каждая из шин синхронизируется своим клоком, причем частоты этих клоков равны, но они сдвинуты по фазе. Сдвиг считаем неизвестным и может варьироваться от нуля до пи. Требуется объединить две шины в одну, ну и как следствие привести их к одному клоку. У кого какие идеи есть по данному вопросу?

А что за шины? И как такое вообще случилось? PLL может сгенерить два клока, причем с заданым углом между ними.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А что за шины? И как такое вообще случилось? PLL может сгенерить два клока, причем с заданым углом между ними.

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

 

Используйте FIFO, и будет Вам счастье.

С таким же успехом Вы могли сказать напиши нужный код и будет тебе счастье.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Ну так и работать от клока внешней FPGA.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну так и работать от клока внешней FPGA.

Эти данные нужно передать третьему чипу который на вход принимает один клок. Поэтому объединять все таки нужно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Эти данные нужно передать третьему чипу который на вход принимает один клок. Поэтому объединять все таки нужно.

На выходе должна получиться 8-разрядная шина с удвоенным клоком?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На выходе должна получиться 8-разрядная шина с удвоенным клоком?

Нет. На выходе должна быть шина с разрядностью двух шин(допустим на вход идут две восьмибитных соответственно на выходе должны быть одна шестнадцатибитная). С клоком тоже думаю понятно частота должна быть такой же как на входе. Странно как забыл это указать когда создавал тему...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нет. На выходе должна быть шина с разрядностью двух шин(допустим на вход идут две восьмибитных соответственно на выходе должны быть одна шестнадцатибитная). С клоком тоже думаю понятно частота должна быть такой же как на входе. Странно как забыл это указать когда создавал тему...

Тогда попробуйте синтезировать два 8и битных FIFO на пару слов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Есть две шины данных. Каждая из шин синхронизируется своим клоком, причем частоты этих клоков равны, но они сдвинуты по фазе. Сдвиг считаем неизвестным и может варьироваться от нуля до пи. Требуется объединить две шины в одну, ну и как следствие привести их к одному клоку.

Кроме двух FIFO посоветую следующее: пересинхронизировать одну из шин на другой клок. Законстрейнить это исходя из худшего соотношения фаз. Т.е. принять данные в регистры каждый на своем клоке, затем одну из шин перебросить на другой клок. Запас в 180 градусов у вас есть.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У кого какие идеи есть по данному вопросу?

У меня на сайте в статьях "Краткий Курс HDL", смотрите раздел о CDC. Там перечислены все варианты...

Удачи!

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Насколько я понимаю, сдвиг будет фиксированным? для выравнивания сдвигов можно воспользоваться задержками в ногах

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Обе шины защёлкиваем в 16-битный регистр клоком первой шины. Накладываем ограничение на вход второй шины (задержка в полпериода относительно клока)

set_input_delay -max [expr $T/2] -clock Clk1 [get_ports Data2]

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...