|
|
  |
Altera Timequest. Констрейны для неизвестного клока, Как описать клок, точное значение которого неизвестно ? |
|
|
|
Mar 20 2018, 17:45
|

В поисках себя...
   
Группа: Свой
Сообщений: 729
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140

|
Цитата(Inanity @ Mar 20 2018, 19:05)  Очевидно, что по максимальной частоте, т.е. в вашем случае - 80Мгц, если я правильно понял. Если проект на этой частоте по времянке проходит, то и на 25Мгц всё будет ок. Я пока так и сделал Но есть подозрение, что это не совсем верно. Поскольку вполне может быть так, что из-за того, что пути между регистрами выровнены для максимальной частоты, эти пути могут быть непригодными для минимальной.
|
|
|
|
|
Mar 20 2018, 19:22
|
Местный
  
Группа: Участник
Сообщений: 221
Регистрация: 6-07-12
Пользователь №: 72 653

|
Цитата(Flip-fl0p @ Mar 20 2018, 20:45)  Но есть подозрение, что это не совсем верно. Поскольку вполне может быть так, что из-за того, что пути между регистрами выровнены для максимальной частоты, эти пути могут быть непригодными для минимальной. Нет, почему же? В общем случае должны выполняться требования setup и hold для всех триггеров в схеме. Если это правило выполняется для частоты Fmax, то тем более будет выполняться и для меньших частот. Есть другой подвох. У вас есть в схеме асинхронные сигналы? Если таковые имеются и переход из одного клокового домена в другой осуществляется через синхронизаторы на регистрах, то при изменении частоты проект может по естественным причинам перестать нормально работать. Допустим, у вас проект тактируется снаружи частотой в диапазоне 25-80Мгц. Предположим, что на вход приходит единичный асинхронный импульс с длительностью 25нс (40МГц). Вы как положено с помощью синхронизатора делаете этот импульс синхронным для вашей схемы. Пока частота вашей схемы достаточно высока, импульс будет корректно пойман. Но если частота опуститься допустим с 80МГц до 25, то естественно, импульс будет пропущен (или будет ловиться, но иногда, как повезёт). Тоже самое может произойти для выходного сигнала вашей схемы, который будет входом для какого-нибудь другого блока со своей частотой. Короче говоря, за длительностью импульсов надо следить. А если дизайн на 100% синхронный, то при снижении частоты ничего не должно ломаться.
Сообщение отредактировал Inanity - Mar 20 2018, 19:25
|
|
|
|
|
Mar 21 2018, 04:40
|

В поисках себя...
   
Группа: Свой
Сообщений: 729
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140

|
Цитата(Inanity @ Mar 20 2018, 22:22)  Нет, почему же? В общем случае должны выполняться требования setup и hold для всех триггеров в схеме. Если это правило выполняется для частоты Fmax, то тем более будет выполняться и для меньших частот.
Есть другой подвох. У вас есть в схеме асинхронные сигналы? Если таковые имеются и переход из одного клокового домена в другой осуществляется через синхронизаторы на регистрах, то при изменении частоты проект может по естественным причинам перестать нормально работать.
Допустим, у вас проект тактируется снаружи частотой в диапазоне 25-80Мгц. Предположим, что на вход приходит единичный асинхронный импульс с длительностью 25нс (40МГц). Вы как положено с помощью синхронизатора делаете этот импульс синхронным для вашей схемы. Пока частота вашей схемы достаточно высока, импульс будет корректно пойман. Но если частота опуститься допустим с 80МГц до 25, то естественно, импульс будет пропущен (или будет ловиться, но иногда, как повезёт). Тоже самое может произойти для выходного сигнала вашей схемы, который будет входом для какого-нибудь другого блока со своей частотой. Короче говоря, за длительностью импульсов надо следить. А если дизайн на 100% синхронный, то при снижении частоты ничего не должно ломаться. Все переходы между доменами я делал через FIFO. А одиночные сигналы я синхронизирую путем handshake, как-раз для того, чтобы не беспокоиться на счет того, что короткий импульс может потеряться. Я просто как-то на зарубежном форуме натыкался на аналогичную тему про то, как описывать такие клоки, да вот как-то не гуглится теперь эта тема.
|
|
|
|
|
Mar 22 2018, 07:51
|
Знающий
   
Группа: Свой
Сообщений: 572
Регистрация: 17-11-05
Из: СПб, Россия
Пользователь №: 10 965

|
Цитата(Flip-fl0p @ Mar 20 2018, 20:45)  Я пока так и сделал Но есть подозрение, что это не совсем верно. Поскольку вполне может быть так, что из-за того, что пути между регистрами выровнены для максимальной частоты, эти пути могут быть непригодными для минимальной. Есть такая штука, как physically exclusive clocks, позволяющая задавать разные тактовые сигналы на одном и том же порту. Если хочется наверняка - можно добавить и 25 и 80 (или вообще целый перечень), хотя смысла, и на мой тоже взгляд, особого нет.
|
|
|
|
|
Mar 22 2018, 20:03
|
Знающий
   
Группа: Свой
Сообщений: 654
Регистрация: 24-01-07
Из: Воронеж
Пользователь №: 24 737

|
Цитата(Flip-fl0p @ Mar 20 2018, 13:21)  PLL настроена таким образом, что у нас опорная частота умножается и делится на некие коэффициенты, которые никогда не меняются. (коэффициенты рассчитаны таким образом, чтобы не превышалась максимальная частота VCO( ГУН) по спецификации на чип). Но вся проблема в том, что опорный клок у меня может лежать в диапазоне от 25Мгц до 80 Мгц. (т.е иметь любое значение, характерное для значения пиксельной частоты VESA) ИМХО такая схема вообще не будет работать. В большинстве случаев PLL в ПЛИС не позволит использовать такой диапазон входных частот без перестройки коэффициентов. Т.к. диапазон VCO будет выходить за допустимые пределы. Ну например: Cyclone IV Fvco = 600-1300 МГц. Т.е. перекрытие 2.16 раз, а нужно 25-80 МГц, т.е. 3.2 раза.
|
|
|
|
|
Mar 23 2018, 08:04
|
Местный
  
Группа: Свой
Сообщений: 375
Регистрация: 9-10-08
Из: Таганрог, Ростовская обл.
Пользователь №: 40 792

|
Цитата(dvladim @ Mar 22 2018, 23:03)  ИМХО такая схема вообще не будет работать. В большинстве случаев PLL в ПЛИС не позволит использовать такой диапазон входных частот без перестройки коэффициентов. Т.к. диапазон VCO будет выходить за допустимые пределы. Ну например: Cyclone IV Fvco = 600-1300 МГц. Т.е. перекрытие 2.16 раз, а нужно 25-80 МГц, т.е. 3.2 раза. А КАК ПЛИС узнает, что на её вход подали именно 25 МГц, а не 40 или 80? Если проект разводится на 80 МГЦ, то 25 работать будут! Можно прогнать TimeQuest на минимальную частоту и на максимальную, не компилируя при это сам проект! Если slack отсутствуют - то все работать будет!
--------------------
Глупцы игнорируют сложность. Прагматики терпят ее. Некоторые могут избегать ее. Гении ее устраняют.
|
|
|
|
|
Mar 23 2018, 08:07
|

В поисках себя...
   
Группа: Свой
Сообщений: 729
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140

|
Цитата(dvladim @ Mar 22 2018, 23:03)  ИМХО такая схема вообще не будет работать. В большинстве случаев PLL в ПЛИС не позволит использовать такой диапазон входных частот без перестройки коэффициентов. Т.к. диапазон VCO будет выходить за допустимые пределы. Ну например: Cyclone IV Fvco = 600-1300 МГц. Т.е. перекрытие 2.16 раз, а нужно 25-80 МГц, т.е. 3.2 раза. Это если VCO выходит за разумные пределы В моем случае коэффициенты PLL подобраны таким образом, чтобы частота VCO не выходила за пределы спецификации. Например: У меня Cyclone V SEMA5F31C6 По спецификации максимальная частота VCO 1600 Мhz На вход FPGA подается видеосигнал VESA 800x600 60 Hz pixel_clk 40 Mhz pixel_clk я применяю в качестве опорного клока На PLL я получаю частоту VCO путем умножения опорного клока (который как раз и неизвестен - т.е может быть разным в зависимости от разрешения видеосигнала) на 10. А остальные частоты получаю делением этой частоты. В моем случае я получаю частоты: VGA_clk - равный частоте опорного клока т.е делю частоту VCO на 10. RX0_clk - частота в 5 раз выше опорного клока для DDR регистров - т.е делю частоту на 2 RX1_clk - частота в 5 раз выше опорного клока для DDR регистров - т.е делю частоту на 2 RX2_clk - частота в 5 раз выше опорного клока для DDR регистров - т.е делю частоту на 2 Данные коэффициенты у меня никогда не меняются. Таким образом я покрываю все возможные разрешения VESA, где скорость передачи данных не выше 800 Mb/s (частота pixel_clk не больше 80 Mhz). Т.к основное ограничение накладывают LVDS приёмники, которые ограничены приемом 800 Mb/s т.е (DDR клоком в 400 Мгц). И частота VCO у меня никогда не превышает максимальную.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|