реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Перенос данных между доменами
_Anatoliy
сообщение May 30 2018, 11:12
Сообщение #1


Утомлённый солнцем
******

Группа: Свой
Сообщений: 2 589
Регистрация: 15-07-06
Из: г.Донецк
Пользователь №: 18 832



Переход шины данных выполняется из домена 275МГц в домен 137,5МГц(децимация после фильтра). Причём STA на эту шину смотрит весьма положительно(см. скриншот). А сигнал-тап показывает в районе курсора явный "выбой" четырёх бит из шины. И по поведению в проекте я вижу что после децимации сигнал очень шумный(полно "иголок"). Сетапы-холды соблюдаются а шина "крошится". Это как? Что посоветуете, коллеги? Вообще-то я всегда доверял STA.
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение May 30 2018, 11:24
Сообщение #2


В поисках себя...
****

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



Цитата(_Anatoliy @ May 30 2018, 14:12) *
Переход шины данных выполняется из домена 275МГц в домен 137,5МГц(децимация после фильтра). Причём STA на эту шину смотрит весьма положительно(см. скриншот). А сигнал-тап показывает в районе курсора явный "выбой" четырёх бит из шины. И по поведению в проекте я вижу что после децимации сигнал очень шумный(полно "иголок"). Сетапы-холды соблюдаются а шина "крошится". Это как? Что посоветуете, коллеги? Вообще-то я всегда доверял STA.

А как осуществляется перенос из домена в домен ?
Обычно домены помечают, как пути которые STA вообще не должен анализировать.
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение May 30 2018, 11:33
Сообщение #3


Утомлённый солнцем
******

Группа: Свой
Сообщений: 2 589
Регистрация: 15-07-06
Из: г.Донецк
Пользователь №: 18 832



Цитата(Flip-fl0p @ May 30 2018, 14:24) *
А как осуществляется перенос из домена в домен ?
Обычно домены помечают, как пути которые STA вообще не должен анализировать.

1). Здесь data50 в домене 275, а data50r в домене 137,5МГц
Код
PROCESS (iclk2x)
BEGIN    
    if Rising_Edge(iclk2x) then
        data50r <= data50;
    end if;
END PROCESS;

2). Вы не правы.
Go to the top of the page
 
+Quote Post
quato_a
сообщение May 30 2018, 11:38
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 86
Регистрация: 27-07-11
Из: Зеленоград
Пользователь №: 66 439



Цитата(_Anatoliy @ May 30 2018, 14:33) *
1). Здесь data50 в домене 275, а data50r в домене 137,5МГц
Код
PROCESS (iclk2x)
BEGIN    
    if Rising_Edge(iclk2x) then
        data50r <= data50;
    end if;
END PROCESS;


Ставьте через 2 регистра, либо через разноклоковое FIFO, либо рукопожатиями (handshake).


--------------------
Суббота начинается в понедельник
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение May 30 2018, 11:47
Сообщение #5


Утомлённый солнцем
******

Группа: Свой
Сообщений: 2 589
Регистрация: 15-07-06
Из: г.Донецк
Пользователь №: 18 832



Цитата(quato_a @ May 30 2018, 14:38) *
Ставьте через 2 регистра, либо через разноклоковое FIFO, либо рукопожатиями (handshake).

handshake здесь никаким боком. Согласно отчёту STA должно работать и с одним регистром. При нарушениях метастабильности "выбой" бит имеет другой характер.
А насчёт фифо - это версия резервная,уж больно с ресурсами напряг.
Go to the top of the page
 
+Quote Post
iosifk
сообщение May 30 2018, 11:48
Сообщение #6


Гуру
******

Группа: Модераторы
Сообщений: 3 916
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(quato_a @ May 30 2018, 14:38) *
Ставьте через 2 регистра, либо через разноклоковое FIFO, либо рукопожатиями (handshake).

Вообще нет смысла гнать всю шину через 2 регистра. Можно это сделать с сигналом "готовность" и по его приходу читать данные...


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
MegaVolt
сообщение May 30 2018, 11:49
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 672
Регистрация: 3-01-05
Из: Минск
Пользователь №: 1 783



Цитата(quato_a @ May 30 2018, 14:38) *
Ставьте через 2 регистра, либо через разноклоковое FIFO, либо рукопожатиями (handshake).
Не знаю что за оболочка. Но для Xilinx например отлично переход получается если оба клока сгенерены из одного делением на два.

Где глюк если честно по картинкам не понял sad.gif



iclk2x это 275 МГц? Должна же быть половинная?
Go to the top of the page
 
+Quote Post
yes
сообщение May 30 2018, 11:52
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 2 143
Регистрация: 23-12-04
Пользователь №: 1 640



все советы для асинхронных доменов sm.gif

а data50 тикает каждый такт на 275 или через один?
может поэкспериментировать с привязкой этого "через один" - то есть добавить регистр с енабле на 275, а это енабле с т-триггера или его инверсии
ну или фазу этого 137.5 подвигать, они же из одной PLL идут?

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

upd: со STA картинку посмотрел - а с холдами там все хорошо? каким констрейном задано? все-таки multicycle по холдам неочевидно
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение May 30 2018, 11:53
Сообщение #9


В поисках себя...
****

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



Цитата
2). Вы не правы.

Вполне возможно laughing.gif
Однако домены то разные могут быть. Могут быть полностью асинхронные и независимые друг другу. Тогда в SDC указывают (во всяком случае я сразу пишу, чтобы Timequest не анализировал эти пути):
Код
set_clock_groups -exclusive -group [get_clocks {clk1}] \
                            -group [get_clocks {clk2}]

Вот в этом случае либо DCFIFO либо Handshake.
А могут быть где частота другого домена, получена делением частоты исходного домена. Как у Вас.
Вот тут уже есть варианты.
1. Частота получена на обычном PLL.
2. Частота получена делением на триггере.
Обязательно должны быть указаны констрейны на эту частоту.
Я ещё применяю в этом случае альтеровский примитив. Хотя вроде Quartus должен его впихнут автоматом. Но это не точно.

Код
library altera;
    use altera.altera_primitives_components.all;
...
...
...
    clock_buff : GLOBAL
    port map
    (
        a_in  => new_clk,
        a_out => new_clk_buff
    );

А можно просто формировать сигнал валидности данных, и не заморачиваться с клоковым доменом rolleyes.gif
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение May 30 2018, 12:03
Сообщение #10


Утомлённый солнцем
******

Группа: Свой
Сообщений: 2 589
Регистрация: 15-07-06
Из: г.Донецк
Пользователь №: 18 832



Цитата(iosifk @ May 30 2018, 14:48) *
Вообще нет смысла гнать всю шину через 2 регистра. Можно это сделать с сигналом "готовность" и по его приходу читать данные...

Ребята, давайте жить дружно... Какая готовность? Шина идёт с выхода фильтра, поток идёт непрерывно.
А второй регистр,согласен, конечно смысла не имеет.

Цитата(yes @ May 30 2018, 14:52) *
все советы для асинхронных доменов sm.gif

а data50 тикает каждый такт на 275 или через один?
может поэкспериментировать с привязкой этого "через один" - то есть добавить регистр с енабле на 275, а это енабле с т-триггера или его инверсии
ну или фазу этого 137.5 подвигать, они же из одной PLL идут?

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

1).data50 тикает каждый такт на 275МГц.
2). Насчёт фазы - есть ещё куча всего разного в этих доменах, стоит 10 раз подумать прежде чем крутить...
3). Я тоже в ступоре... У меня был рабочий проект с банком из пяти фильтров, заказчик попросил добавить ещё один фильтр и пошло-поехало...

Цитата(MegaVolt @ May 30 2018, 14:49) *
Не знаю что за оболочка. Но для Xilinx например отлично переход получается если оба клока сгенерены из одного делением на два.

Где глюк если честно по картинкам не понял sad.gif



iclk2x это 275 МГц? Должна же быть половинная?

Сорри, это я недорассказал...
Intel Quartus
iclk2x - 137,5МГЦ
iclk4x - 275МГЦ (в этом домене порождается шина data50)
Клоки из PLL
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение May 30 2018, 12:57
Сообщение #11


В поисках себя...
****

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



А приложите сюда SDC файлик. Дюже интересно посмотреть, что там происходит.
Go to the top of the page
 
+Quote Post
yes
сообщение May 30 2018, 13:04
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 2 143
Регистрация: 23-12-04
Пользователь №: 1 640



> 1).data50 тикает каждый такт на 275МГц.

еще раз про hold-ы напишу
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение May 30 2018, 13:08
Сообщение #13


Утомлённый солнцем
******

Группа: Свой
Сообщений: 2 589
Регистрация: 15-07-06
Из: г.Донецк
Пользователь №: 18 832



Цитата(Flip-fl0p @ May 30 2018, 15:57) *
А приложите сюда SDC файлик. Дюже интересно посмотреть, что там происходит.

Та похоже и я накосячил, хотелось по быстрячку...
Поставил обычный FIR, а на выходе просто проредил. А надо было отполифазить....
Имхо, по любому будет лучше. Вот если не захочет - тогда тему продолжим.
Go to the top of the page
 
+Quote Post
MegaVolt
сообщение May 30 2018, 13:13
Сообщение #14


Знающий
****

Группа: Свой
Сообщений: 672
Регистрация: 3-01-05
Из: Минск
Пользователь №: 1 783



Цитата(_Anatoliy @ May 30 2018, 15:03) *
Intel Quartus
Увы не знаю по этому буду гадать по общей теории.
Цитата
Клоки из PLL
Вот верно ли учтено их фазовое соотношение на выходе?
Частоты делённые получены делением или тоже с PLL?

Софт из Xilinx делитель понимает сам и никакие времянки уточнять ручками не нужно.

Но были глюки такого плана когда делители на 2 и на 4 запускались не синхронно и прошлось на них заводить сигнал ресет. Возможно у вас тот же глюк.
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение May 30 2018, 13:23
Сообщение #15


Утомлённый солнцем
******

Группа: Свой
Сообщений: 2 589
Регистрация: 15-07-06
Из: г.Донецк
Пользователь №: 18 832



Цитата(yes @ May 30 2018, 16:04) *
> 1).data50 тикает каждый такт на 275МГц.

еще раз про hold-ы напишу


Виноват, не заметил...
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
5 чел. читают эту тему (гостей: 5, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th June 2018 - 05:35
Рейтинг@Mail.ru


Страница сгенерированна за 0.00948 секунд с 7
ELECTRONIX ©2004-2016