Jump to content

    
Sign in to follow this  
aat_81

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

Recommended Posts

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

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

Share this post


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

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

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

Share this post


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

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

 

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

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

Share this post


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

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

Share this post


Link to post
Share on other sites
Ну так и работать от клока внешней FPGA.

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

Share this post


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

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

Share this post


Link to post
Share on other sites
На выходе должна получиться 8-разрядная шина с удвоенным клоком?

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

Share this post


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

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

Share this post


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

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

Share this post


Link to post
Share on other sites
У кого какие идеи есть по данному вопросу?

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

Удачи!

 

Share this post


Link to post
Share on other sites

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

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

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