Страница 1 из 1

Проблема в понимании дизайна синхронных схем на ПЛИС.

Добавлено: Ср ноя 02, 2011 13:15:16
Alexlapb
Здравствуйте, есть проблема в понимании разработки синхронных схем на ПЛИС. Было бы очень интересно ознакомиться с корректно сделанными проектами по этой тематике. Так же очень любопытно прочитать о правилах и методике таких разработок. Буду очень благодарен за все возможные ссылки и литературу по данной тематике.

Спасибо!

Re: Проблема в понимании дизайна синхронных схем на ПЛИС.

Добавлено: Ср ноя 02, 2011 13:25:26
Леонид Иванович
А что тут непонятного - все триггеры в проекте тактируете одним и тем же клоком.

Как пример синхронного дизайна, реализация смешанного PWM (PWM + Delta-Sigma) на AHDL:

Код: Выделить всё

CONSTANT PWM_TOP_F = 10; -- PWM TOP fine
CONSTANT PWM_TOP_C = 10; -- PWM TOP coarse

SUBDESIGN S2PWM
(
	Clk					: INPUT;
	PwmFine[3..0]		: INPUT;
	PwmCoarse[3..0]	: INPUT;
	PWM					: OUTPUT;
)
VARIABLE
    CntC[3..0]       	: DFFE;
    CntF[4..0]       	: DFFE;
	PWMC, PWMF		: NODE;
BEGIN
	CntF[].clk = Clk;
	CntC[].clk = Clk;
	CntC[].ena = vcc;
	PWMF = CntF[4];

	IF CntC[] == PWM_TOP_C - 1
		THEN CntC[] = 0; CntF[].ena = vcc;
		ELSE CntC[] = CntC[] + 1; CntF[].ena = gnd;
	END IF;

	IF(PWMF)
 		THEN CntF[] = CntF[] + (0,PwmFine[]) - PWM_TOP_F;
	         PWMC = PwmCoarse[] + 1 > CntC[];

		ELSE CntF[] = CntF[] + (0,PwmFine[]);
	         PWMC = PwmCoarse[] > CntC[];
	END IF;

	PWM = DFF(PWMC, Clk, , );

END;

Re: Проблема в понимании дизайна синхронных схем на ПЛИС.

Добавлено: Ср ноя 02, 2011 13:34:36
Alexlapb
Спасибо за ответ. Этим и ограничивается разработка синхронных схем на ПЛИС? Или это более глубокая тема, со своими нюансами и тонкостями?

Re: Проблема в понимании дизайна синхронных схем на ПЛИС.

Добавлено: Ср ноя 02, 2011 13:39:29
Леонид Иванович
Это всего лишь отличительная черта. А вообще, это глубокая тема, весь Google завален информацией по теме Synchronous Design.

Re: Проблема в понимании дизайна синхронных схем на ПЛИС.

Добавлено: Ср ноя 02, 2011 13:51:26
Alexlapb
Информации много, но вся ли она нужна?!? Для меня ценность форумов заключается в том, что здесь есть люди значительно опытнее меня, т.е. те люди которые из всей масса информации посоветуют то что нужно. Это позволяет максимально эффективно осваивать материал.
Еще раз спасибо за внимание к моему вопросу.

Re: Проблема в понимании дизайна синхронных схем на ПЛИС.

Добавлено: Ср ноя 02, 2011 19:33:31
Kavka

Re: Проблема в понимании дизайна синхронных схем на ПЛИС.

Добавлено: Ср ноя 02, 2011 20:16:38
SII
Alexlapb писал(а):Спасибо за ответ. Этим и ограничивается разработка синхронных схем на ПЛИС? Или это более глубокая тема, со своими нюансами и тонкостями?
Сложности будут возникать на схемах больших размеров. Сигналы же распространяются не мгновенно, поэтому, если схема занимает приличное число ячеек, приходится тем или иным образом это учитывать. Сходу могу выделить следующие моменты:

1) У ПЛИС имеются специальные линии, предназначенные для разводки синхросигналов по кристаллу. В сложных проектах надо учитывать их количество, характеристики и т.п. вещи. Кроме того, возможно, потребуется вручную прописывать, что такие-то сигналы должны разводиться именно такими линиями, а не абы какими (компиляторы сами по себе могут некорректно такие линии выявлять, да и в любом случае, явная подсказка не помешает; кроме того, число синхролиний весьма ограничено, а разводка таких сигналов по обычным линиям чревата существенным падением предельно допустимых частот или вообще какими-нибудь глюками).

2) Крупные схемы обычно бывает целесообразно делить на несколько кусков поменьше, каждый со своей синхронизацией. Возникает, правда, вопрос, как их заставить работать совместно, но при грамотном разбиении это особых проблем не представляет.

3) В некоторых случаях бывает целесообразно часть схемы тактировать фронтом синхросигнала, а другую часть -- спадом. Поскольку сами схемы срабатывают не мгновенно, но за вполне предсказуемое время (в документации на ПЛИС всё это расписано для отдельных ячеек, блоков памяти и т.п.; из используемого инструментария можно "вытрясти" времена для конкретных схем), такой подход может позволить поднять общую частоту, если требуется "двухступенчатая" обработка, причём каждая ступень вписывается по времени в полупериод синхронизации (естественно, с запасом).

4) Средства проектирования обычно "видят", что схема большая, и более-менее адекватно понижают предельно возможные частоты работы. Необходимо контролировать, чтобы они не падали слишком низко, т.е. чтобы задача всё равно решалась адекватно. Если частота недопустимо низкой получилась, необходимо перерабатывать схему.

В общем, нюансов хватает, но они обычно проявляются только в достаточно сложных проектах.

Re: Проблема в понимании дизайна синхронных схем на ПЛИС.

Добавлено: Ср ноя 02, 2011 20:31:28
Meteor
SII писал(а):3) В некоторых случаях бывает целесообразно часть схемы тактировать фронтом синхросигнала, а другую часть -- спадом.
Лучше избегать в одном проекте работы от разных фронтов. На эти грабли многие наступили - обоснования можно поискать на сахаре и электронисе. Если коротко, то ПЛИС не любят синтеза разнотактируемых триггеров.

Re: Проблема в понимании дизайна синхронных схем на ПЛИС.

Добавлено: Чт ноя 03, 2011 10:22:21
Леонид Иванович
Прямо набор вредных советов :)
SII писал(а):У ПЛИС имеются специальные линии, предназначенные для разводки синхросигналов по кристаллу. В сложных проектах надо учитывать их количество
В сихронных проектах нужна только одна линия гобального клока. Естественно, клок должен быть разведен на всём кристалле глобально.
SII писал(а):Кроме того, возможно, потребуется вручную прописывать, что такие-то сигналы должны разводиться именно такими линиями, а не абы какими
Разводить глобальными линиями внутренние сигналы - это больше похоже на изврат. Тем более, не все семейства это позволяют. У MAX CPLD, например, глобальные линии привязаны к внешним пинам, и задействовать их для внутренних сигналов нет возможности.
SII писал(а):Крупные схемы обычно бывает целесообразно делить на несколько кусков поменьше, каждый со своей синхронизацией
Никогда так не следует делать!
SII писал(а):Возникает, правда, вопрос, как их заставить работать совместно, но при грамотном разбиении это особых проблем не представляет.
Переход с одного клок-домена в другой требует синхронизаторов, а это потеря двух тактов. Разные клок-домены можно делать лишь в том случае, если в проекте есть асинхронные части. Например, slave SPI-интерфейса.
SII писал(а):В некоторых случаях бывает целесообразно часть схемы тактировать фронтом синхросигнала, а другую часть -- спадом.
Никогда так не следует делать! Прямой путь к глюкам! Вся схема должна тактироваться фронтом одного и того же синхросигнала.
SII писал(а):если требуется "двухступенчатая" обработка
Это называется конвейер.
Alexlapb писал(а): Информации много, но вся ли она нужна?!?
Не нужна. Просто тактируйте всю схему общим клоком, ну и по ходу разруливайте проблемы с таймингами, чтобы времена установки/удержания были в норме.