_sda 0 30 мая, 2018 Опубликовано 30 мая, 2018 · Жалоба Переход шины данных выполняется из домена 275МГц в домен 137,5МГц(децимация после фильтра). Причём STA на эту шину смотрит весьма положительно(см. скриншот). А сигнал-тап показывает в районе курсора явный "выбой" четырёх бит из шины. И по поведению в проекте я вижу что после децимации сигнал очень шумный(полно "иголок"). Сетапы-холды соблюдаются а шина "крошится". Это как? Что посоветуете, коллеги? Вообще-то я всегда доверял STA. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 30 мая, 2018 Опубликовано 30 мая, 2018 · Жалоба Переход шины данных выполняется из домена 275МГц в домен 137,5МГц(децимация после фильтра). Причём STA на эту шину смотрит весьма положительно(см. скриншот). А сигнал-тап показывает в районе курсора явный "выбой" четырёх бит из шины. И по поведению в проекте я вижу что после децимации сигнал очень шумный(полно "иголок"). Сетапы-холды соблюдаются а шина "крошится". Это как? Что посоветуете, коллеги? Вообще-то я всегда доверял STA. А как осуществляется перенос из домена в домен ? Обычно домены помечают, как пути которые STA вообще не должен анализировать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 30 мая, 2018 Опубликовано 30 мая, 2018 · Жалоба А как осуществляется перенос из домена в домен ? Обычно домены помечают, как пути которые STA вообще не должен анализировать. 1). Здесь data50 в домене 275, а data50r в домене 137,5МГц PROCESS (iclk2x) BEGIN if Rising_Edge(iclk2x) then data50r <= data50; end if; END PROCESS; 2). Вы не правы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
quato_a 3 30 мая, 2018 Опубликовано 30 мая, 2018 · Жалоба 1). Здесь data50 в домене 275, а data50r в домене 137,5МГц PROCESS (iclk2x) BEGIN if Rising_Edge(iclk2x) then data50r <= data50; end if; END PROCESS; Ставьте через 2 регистра, либо через разноклоковое FIFO, либо рукопожатиями (handshake). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 30 мая, 2018 Опубликовано 30 мая, 2018 · Жалоба Ставьте через 2 регистра, либо через разноклоковое FIFO, либо рукопожатиями (handshake). handshake здесь никаким боком. Согласно отчёту STA должно работать и с одним регистром. При нарушениях метастабильности "выбой" бит имеет другой характер. А насчёт фифо - это версия резервная,уж больно с ресурсами напряг. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 30 мая, 2018 Опубликовано 30 мая, 2018 · Жалоба Ставьте через 2 регистра, либо через разноклоковое FIFO, либо рукопожатиями (handshake). Вообще нет смысла гнать всю шину через 2 регистра. Можно это сделать с сигналом "готовность" и по его приходу читать данные... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MegaVolt 22 30 мая, 2018 Опубликовано 30 мая, 2018 · Жалоба Ставьте через 2 регистра, либо через разноклоковое FIFO, либо рукопожатиями (handshake).Не знаю что за оболочка. Но для Xilinx например отлично переход получается если оба клока сгенерены из одного делением на два. Где глюк если честно по картинкам не понял :( iclk2x это 275 МГц? Должна же быть половинная? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
yes 3 30 мая, 2018 Опубликовано 30 мая, 2018 · Жалоба все советы для асинхронных доменов :) а data50 тикает каждый такт на 275 или через один? может поэкспериментировать с привязкой этого "через один" - то есть добавить регистр с енабле на 275, а это енабле с т-триггера или его инверсии ну или фазу этого 137.5 подвигать, они же из одной PLL идут? ну а вообще никогда такого не видел, чтобы синхронные домены неправильно защелкивались - может в железе не все чисто? с формированием тактов, например upd: со STA картинку посмотрел - а с холдами там все хорошо? каким констрейном задано? все-таки multicycle по холдам неочевидно Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 30 мая, 2018 Опубликовано 30 мая, 2018 · Жалоба 2). Вы не правы. Вполне возможно :laughing: Однако домены то разные могут быть. Могут быть полностью асинхронные и независимые друг другу. Тогда в 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: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 30 мая, 2018 Опубликовано 30 мая, 2018 · Жалоба Вообще нет смысла гнать всю шину через 2 регистра. Можно это сделать с сигналом "готовность" и по его приходу читать данные... Ребята, давайте жить дружно... Какая готовность? Шина идёт с выхода фильтра, поток идёт непрерывно. А второй регистр,согласен, конечно смысла не имеет. все советы для асинхронных доменов :) а data50 тикает каждый такт на 275 или через один? может поэкспериментировать с привязкой этого "через один" - то есть добавить регистр с енабле на 275, а это енабле с т-триггера или его инверсии ну или фазу этого 137.5 подвигать, они же из одной PLL идут? ну а вообще никогда такого не видел, чтобы синхронные домены неправильно защелкивались - может в железе не все чисто? с формированием тактов, например 1).data50 тикает каждый такт на 275МГц. 2). Насчёт фазы - есть ещё куча всего разного в этих доменах, стоит 10 раз подумать прежде чем крутить... 3). Я тоже в ступоре... У меня был рабочий проект с банком из пяти фильтров, заказчик попросил добавить ещё один фильтр и пошло-поехало... Не знаю что за оболочка. Но для Xilinx например отлично переход получается если оба клока сгенерены из одного делением на два. Где глюк если честно по картинкам не понял :( iclk2x это 275 МГц? Должна же быть половинная? Сорри, это я недорассказал... Intel Quartus iclk2x - 137,5МГЦ iclk4x - 275МГЦ (в этом домене порождается шина data50) Клоки из PLL Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 30 мая, 2018 Опубликовано 30 мая, 2018 · Жалоба А приложите сюда SDC файлик. Дюже интересно посмотреть, что там происходит. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
yes 3 30 мая, 2018 Опубликовано 30 мая, 2018 · Жалоба > 1).data50 тикает каждый такт на 275МГц. еще раз про hold-ы напишу Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 30 мая, 2018 Опубликовано 30 мая, 2018 · Жалоба А приложите сюда SDC файлик. Дюже интересно посмотреть, что там происходит. Та похоже и я накосячил, хотелось по быстрячку... Поставил обычный FIR, а на выходе просто проредил. А надо было отполифазить.... Имхо, по любому будет лучше. Вот если не захочет - тогда тему продолжим. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MegaVolt 22 30 мая, 2018 Опубликовано 30 мая, 2018 · Жалоба Intel QuartusУвы не знаю по этому буду гадать по общей теории. Клоки из PLLВот верно ли учтено их фазовое соотношение на выходе? Частоты делённые получены делением или тоже с PLL? Софт из Xilinx делитель понимает сам и никакие времянки уточнять ручками не нужно. Но были глюки такого плана когда делители на 2 и на 4 запускались не синхронно и прошлось на них заводить сигнал ресет. Возможно у вас тот же глюк. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 30 мая, 2018 Опубликовано 30 мая, 2018 · Жалоба > 1).data50 тикает каждый такт на 275МГц. еще раз про hold-ы напишу Виноват, не заметил... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться