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

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Alexlapb
Первый раз сказал Мяу!
Сообщения: 22
Зарегистрирован: Вс дек 12, 2010 01:16:52

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

Сообщение Alexlapb »

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

Спасибо!
Реклама
Аватара пользователя
Леонид Иванович
Друг Кота
Сообщения: 4779
Зарегистрирован: Сб апр 02, 2011 12:40:46
Откуда: Минск
Контактная информация:

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

Сообщение Леонид Иванович »

А что тут непонятного - все триггеры в проекте тактируете одним и тем же клоком.

Как пример синхронного дизайна, реализация смешанного 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;
Реклама
Alexlapb
Первый раз сказал Мяу!
Сообщения: 22
Зарегистрирован: Вс дек 12, 2010 01:16:52

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

Сообщение Alexlapb »

Спасибо за ответ. Этим и ограничивается разработка синхронных схем на ПЛИС? Или это более глубокая тема, со своими нюансами и тонкостями?
Аватара пользователя
Леонид Иванович
Друг Кота
Сообщения: 4779
Зарегистрирован: Сб апр 02, 2011 12:40:46
Откуда: Минск
Контактная информация:

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

Сообщение Леонид Иванович »

Это всего лишь отличительная черта. А вообще, это глубокая тема, весь Google завален информацией по теме Synchronous Design.
Реклама
Эиком - электронные компоненты и радиодетали
Alexlapb
Первый раз сказал Мяу!
Сообщения: 22
Зарегистрирован: Вс дек 12, 2010 01:16:52

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

Сообщение Alexlapb »

Информации много, но вся ли она нужна?!? Для меня ценность форумов заключается в том, что здесь есть люди значительно опытнее меня, т.е. те люди которые из всей масса информации посоветуют то что нужно. Это позволяет максимально эффективно осваивать материал.
Еще раз спасибо за внимание к моему вопросу.
Реклама
Аватара пользователя
Kavka
Мудрый кот
Сообщения: 1810
Зарегистрирован: Чт июн 10, 2010 08:55:35
Откуда: Сибирские Афины

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

Сообщение Kavka »

Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Реклама
SII
Вымогатель припоя
Сообщения: 635
Зарегистрирован: Пт янв 30, 2009 14:50:35
Откуда: Солнечногорск

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

Сообщение SII »

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

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

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

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

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

В общем, нюансов хватает, но они обычно проявляются только в достаточно сложных проектах.
Аватара пользователя
Meteor
Друг Кота
Сообщения: 3961
Зарегистрирован: Пн июл 13, 2009 14:37:39
Откуда: Московская область, наукоград.....
Контактная информация:

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

Сообщение Meteor »

SII писал(а):3) В некоторых случаях бывает целесообразно часть схемы тактировать фронтом синхросигнала, а другую часть -- спадом.
Лучше избегать в одном проекте работы от разных фронтов. На эти грабли многие наступили - обоснования можно поискать на сахаре и электронисе. Если коротко, то ПЛИС не любят синтеза разнотактируемых триггеров.
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
Аватара пользователя
Леонид Иванович
Друг Кота
Сообщения: 4779
Зарегистрирован: Сб апр 02, 2011 12:40:46
Откуда: Минск
Контактная информация:

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

Сообщение Леонид Иванович »

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

Вернуться в «Микроконтроллеры и ПЛИС»