|
Перенос данных между доменами |
|
|
|
May 30 2018, 11:33
|

Утомлённый солнцем
     
Группа: Свой
Сообщений: 2 646
Регистрация: 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). Вы не правы.
|
|
|
|
|
May 30 2018, 11:38
|

Частый гость
 
Группа: Свой
Сообщений: 95
Регистрация: 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).
--------------------
Суббота начинается в понедельник
|
|
|
|
|
May 30 2018, 11:49
|
Знающий
   
Группа: Свой
Сообщений: 779
Регистрация: 3-01-05
Из: Минск
Пользователь №: 1 783

|
Цитата(quato_a @ May 30 2018, 14:38)  Ставьте через 2 регистра, либо через разноклоковое FIFO, либо рукопожатиями (handshake). Не знаю что за оболочка. Но для Xilinx например отлично переход получается если оба клока сгенерены из одного делением на два. Где глюк если честно по картинкам не понял  iclk2x это 275 МГц? Должна же быть половинная?
|
|
|
|
|
May 30 2018, 11:52
|
Гуру
     
Группа: Свой
Сообщений: 2 198
Регистрация: 23-12-04
Пользователь №: 1 640

|
все советы для асинхронных доменов  а data50 тикает каждый такт на 275 или через один? может поэкспериментировать с привязкой этого "через один" - то есть добавить регистр с енабле на 275, а это енабле с т-триггера или его инверсии ну или фазу этого 137.5 подвигать, они же из одной PLL идут? ну а вообще никогда такого не видел, чтобы синхронные домены неправильно защелкивались - может в железе не все чисто? с формированием тактов, например upd: со STA картинку посмотрел - а с холдами там все хорошо? каким констрейном задано? все-таки multicycle по холдам неочевидно
|
|
|
|
|
May 30 2018, 11:53
|

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

|
Цитата 2). Вы не правы. Вполне возможно Однако домены то разные могут быть. Могут быть полностью асинхронные и независимые друг другу. Тогда в 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 ); А можно просто формировать сигнал валидности данных, и не заморачиваться с клоковым доменом
|
|
|
|
|
May 30 2018, 12:03
|

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

|
Цитата(iosifk @ May 30 2018, 14:48)  Вообще нет смысла гнать всю шину через 2 регистра. Можно это сделать с сигналом "готовность" и по его приходу читать данные... Ребята, давайте жить дружно... Какая готовность? Шина идёт с выхода фильтра, поток идёт непрерывно. А второй регистр,согласен, конечно смысла не имеет. Цитата(yes @ May 30 2018, 14:52)  все советы для асинхронных доменов  а data50 тикает каждый такт на 275 или через один? может поэкспериментировать с привязкой этого "через один" - то есть добавить регистр с енабле на 275, а это енабле с т-триггера или его инверсии ну или фазу этого 137.5 подвигать, они же из одной PLL идут? ну а вообще никогда такого не видел, чтобы синхронные домены неправильно защелкивались - может в железе не все чисто? с формированием тактов, например 1).data50 тикает каждый такт на 275МГц. 2). Насчёт фазы - есть ещё куча всего разного в этих доменах, стоит 10 раз подумать прежде чем крутить... 3). Я тоже в ступоре... У меня был рабочий проект с банком из пяти фильтров, заказчик попросил добавить ещё один фильтр и пошло-поехало... Цитата(MegaVolt @ May 30 2018, 14:49)  Не знаю что за оболочка. Но для Xilinx например отлично переход получается если оба клока сгенерены из одного делением на два. Где глюк если честно по картинкам не понял  iclk2x это 275 МГц? Должна же быть половинная? Сорри, это я недорассказал... Intel Quartus iclk2x - 137,5МГЦ iclk4x - 275МГЦ (в этом домене порождается шина data50) Клоки из PLL
|
|
|
|
|
May 30 2018, 13:13
|
Знающий
   
Группа: Свой
Сообщений: 779
Регистрация: 3-01-05
Из: Минск
Пользователь №: 1 783

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