Jump to content

    

Quartus 17.0 Pin Planner Current Strength

31 минуту назад, DuHast сказал:

Все входные и выходные сигналы крайне желательно пропускать через fast input/output trigger'ы, расположенные в пинах ПЛИС

Почему? Первый раз об этом слышу. Я, например, когда задаю входные/выходные констрейны, полностью полагаюсь на Quartus в этом плане. Он сам решает какие сигналы как пропускать.

Share this post


Link to post
Share on other sites

Выходные fast триггеры выравнивают сигналы на шине данных по фронту тактового сигнала перед выходом из плис. Если у вас в схеме есть триггеры то квартус,  скорее всего сам разместится их в пинах, т.е. в фаст тригерах. Но если выход вашей схемы логика, то квартус просто может не справиться с вашими констрейнами.

С входами ситуация аналогичная. 

Share this post


Link to post
Share on other sites
35 минут назад, DuHast сказал:

Выходные fast триггеры выравнивают сигналы на шине данных по фронту тактового сигнала перед выходом из плис. Если у вас в схеме есть триггеры то квартус,  скорее всего сам разместится их в пинах, т.е. в фаст тригерах. Но если выход вашей схемы логика, то квартус просто может не справиться с вашими констрейнами.

С входами ситуация аналогичная. 

Пока не сталкивался с тем, что Quartus не использует входные/выходные регистры когда по времянке не укладывается.

Share this post


Link to post
Share on other sites
On ‎9‎/‎6‎/‎2019 at 8:46 AM, dinam said:

Пока не сталкивался с тем, что Quartus не использует входные/выходные регистры когда по времянке не укладывается.

ТС писал, что у него входной сигнал заведён прямиком на ФИФО, т.е. между входным пином и входным триггером ФИФО ничего нет. В такой ситуации Fast Input Pin задействованы не будут, а время задержки входного сигнала будет сильно зависеть от того,  где будет расположена в ФИФО внутри ПЛИС. Конечно, правильно расставленные констрейны помогут квартусу сделать всё корректно,  но защёлкивание входной шины в Fast триггерах помогут ему гораздо больше.

Хуже ситуация, когда по неопытности пишут код типа

a <= input_1 and input_2

т.е. входные пины сперва идут на логику.

 

Share this post


Link to post
Share on other sites
В 07.09.2019 в 13:46, DuHast сказал:

Хуже ситуация, когда по неопытности пишут код типа

a <= input_1 and input_2

т.е. входные пины сперва идут на логику.

Наверно, я ещё не совсем опытен. Но не вижу в этом никакого криминала. Если сигналы низкочастотные, то пусть Quartus разводит сигналы как хочет. Если высокочастотные, то констрейны подскажут как развести. Или Quartus опять напортачит?

Ну и приведите по вашему правильный код.

Share this post


Link to post
Share on other sites
2 hours ago, dinam said:

Ну и приведите по вашему правильный код.

В процессе, тактируемом клоком:

In1 <= inpit_1;

In2 <= input_2;

a <= In1 and In2;

Сигналы input, сперва попадут на триггеры(которые квартус, скорее всего, сделает fast), а уже потом на логику.

Share this post


Link to post
Share on other sites
On 9/5/2019 at 3:26 PM, Lmx2315 said:

..а как вы узнаёте что данные сбойные, а не такие пришли?

вывожу по udp. Проблема, видимо не во входах. Смотрел Signal Tap'ом на входе fifo и все стоит ровно. Причем если я генерирую данные на самой ПЛИС и завожу их на FIFO, то все отлично. Но если завожу через ножки(используя тот же модуль генерации данных, только на другой точно такой же плате), то в последовательности появляется лишние 2 байта. Передаю я 16-битный счетчик. FIFO вход 16 бит, выход 8. Ощущение будто данные из FIFO неправильно забираются. Причем это происходит именно тогда, когда данные идут снаружи платы, а не генерируются внутри. И происходит это строго в определенный момент, когда младший байт доходит до FF, например: ...FD05 FE05 FF05 007E  0006 0106. Откуда это 007E вылезает непонятно, причем эти 2 байта всегда разные. На вход FIFO все приходит правильно.

Share this post


Link to post
Share on other sites

Давайте уточним. Проект где вы стоите  SignalTap  на входе ФИФО и проект, когда вы видите ошибки - это один и тот же проект? Или вы увидели ошибки, собрали новый проект с SignalTap и увидели, что на входе ФИФО всё ок?

И ещё, было бы не плохо посмотреть временные диаграммы на входе и выходе ФИФО при переходе через  FF

Share this post


Link to post
Share on other sites
16 часов назад, excly сказал:

 FIFO вход 16 бит, выход 8. 

не пойму как вы данные проверяете:

Вы заполняете фифо полностью , останавливаете процесс и выкачиваете его?

Или у вас поток, причём на выходе (раз ширина фифо сужается) удвоенная входная частота? На входе было 50 , а на выходе 100 МГц?

Share this post


Link to post
Share on other sites
43 minutes ago, Lmx2315 said:

не пойму как вы данные проверяете:

Вы заполняете фифо полностью , останавливаете процесс и выкачиваете его?

Или у вас поток, причём на выходе (раз ширина фифо сужается) удвоенная входная частота? На входе было 50 , а на выходе 100 МГц?

заполнение FIFO идет на 50МГЦ, но не непрерывно, а с паузами между посылками(так было изначально. сейчас частота 5МГЦ, но это ничего не изменило). как только в FIFO набирается количество слов, равное размеру пакета UDP, начинается отправка сначала заголовка, а потом и самих данных, которые и находятся в FIFO на частоте 125МГц. Той же частоте, на которой работает ethernet PHY. процесс заполнения не останавливается.

3 hours ago, DuHast said:

Давайте уточним. Проект где вы стоите  SignalTap  на входе ФИФО и проект, когда вы видите ошибки - это один и тот же проект? Или вы увидели ошибки, собрали новый проект с SignalTap и увидели, что на входе ФИФО всё ок?

И ещё, было бы не плохо посмотреть временные диаграммы на входе и выходе ФИФО при переходе через  FF

это один и тот же проект. Частота на выходе FIFO 125Мгц. SignalTap получилось завести на 500Мгц, поэтому временная диаграмма на выходе будет не сильно то и точная. Хочу еще раз обратить внимание, что если данные генерируются на этой же ПЛИС, то никаких ошибок не происходит

Share this post


Link to post
Share on other sites
5 hours ago, Lmx2315 said:

не пойму как вы данные проверяете:

Вы заполняете фифо полностью , останавливаете процесс и выкачиваете его?

Или у вас поток, причём на выходе (раз ширина фифо сужается) удвоенная входная частота? На входе было 50 , а на выходе 100 МГц?

посмотрел выход той платы, которая генерирует счетчик, на анализаторе и заметил, что в тот момент, когда FF превращается в 00, на линии клока появляется лишний фронт. Видимо так и появляются непонятные данные в FIFO. Вопрос в том, как это победить?

1.png

Edited by excly

Share this post


Link to post
Share on other sites
5 минут назад, excly сказал:

 на линии клока появляется лишний фронт. Видимо так и появляются непонятные данные в FIFO. Вопрос в том, как это победить?

А как сделано согласование на линии клока?

И уж если есть возможность эти клоки "щупать" импульсами " 500Мгц", то кто же мешает сразу сделать CDC и слегка фильтрануть "клоки"?

Share this post


Link to post
Share on other sites
7 минут назад, excly сказал:

Вопрос в том, как это победить?

 

Подтяните клоковый сигнал, на входе вашей плисины, к нулю килоомным резистором.

Share this post


Link to post
Share on other sites
33 minutes ago, Lmx2315 said:

Подтяните клоковый сигнал, на входе вашей плисины, к нулю килоомным резистором.

на той ПЛИС, которая генерирует или той, которая принимает?

Share this post


Link to post
Share on other sites

..на той что принимает.

А как физически выглядит соединение между источником сигнала и приёмником?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now