Проблема в понимании дизайна синхронных схем на ПЛИС.
Проблема в понимании дизайна синхронных схем на ПЛИС.
Здравствуйте, есть проблема в понимании разработки синхронных схем на ПЛИС. Было бы очень интересно ознакомиться с корректно сделанными проектами по этой тематике. Так же очень любопытно прочитать о правилах и методике таких разработок. Буду очень благодарен за все возможные ссылки и литературу по данной тематике.
Спасибо!
Спасибо!
- Реклама
- Леонид Иванович
- Друг Кота
- Сообщения: 4779
- Зарегистрирован: Сб апр 02, 2011 12:40:46
- Откуда: Минск
- Контактная информация:
Re: Проблема в понимании дизайна синхронных схем на ПЛИС.
А что тут непонятного - все триггеры в проекте тактируете одним и тем же клоком.
Как пример синхронного дизайна, реализация смешанного PWM (PWM + Delta-Sigma) на AHDL:
Как пример синхронного дизайна, реализация смешанного 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: Проблема в понимании дизайна синхронных схем на ПЛИС.
Спасибо за ответ. Этим и ограничивается разработка синхронных схем на ПЛИС? Или это более глубокая тема, со своими нюансами и тонкостями?
- Леонид Иванович
- Друг Кота
- Сообщения: 4779
- Зарегистрирован: Сб апр 02, 2011 12:40:46
- Откуда: Минск
- Контактная информация:
Re: Проблема в понимании дизайна синхронных схем на ПЛИС.
Это всего лишь отличительная черта. А вообще, это глубокая тема, весь Google завален информацией по теме Synchronous Design.
Re: Проблема в понимании дизайна синхронных схем на ПЛИС.
Информации много, но вся ли она нужна?!? Для меня ценность форумов заключается в том, что здесь есть люди значительно опытнее меня, т.е. те люди которые из всей масса информации посоветуют то что нужно. Это позволяет максимально эффективно осваивать материал.
Еще раз спасибо за внимание к моему вопросу.
Еще раз спасибо за внимание к моему вопросу.
- Реклама
Re: Проблема в понимании дизайна синхронных схем на ПЛИС.
Может вот это ещё поможет
http://radiokot.ru/forum/viewtopic.php? ... 76#p600676
http://radiokot.ru/forum/viewtopic.php? ... 13#p568613
http://radiokot.ru/forum/viewtopic.php? ... 76#p600676
http://radiokot.ru/forum/viewtopic.php? ... 13#p568613
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
-
SII
- Вымогатель припоя
- Сообщения: 635
- Зарегистрирован: Пт янв 30, 2009 14:50:35
- Откуда: Солнечногорск
Re: Проблема в понимании дизайна синхронных схем на ПЛИС.
Сложности будут возникать на схемах больших размеров. Сигналы же распространяются не мгновенно, поэтому, если схема занимает приличное число ячеек, приходится тем или иным образом это учитывать. Сходу могу выделить следующие моменты:Alexlapb писал(а):Спасибо за ответ. Этим и ограничивается разработка синхронных схем на ПЛИС? Или это более глубокая тема, со своими нюансами и тонкостями?
1) У ПЛИС имеются специальные линии, предназначенные для разводки синхросигналов по кристаллу. В сложных проектах надо учитывать их количество, характеристики и т.п. вещи. Кроме того, возможно, потребуется вручную прописывать, что такие-то сигналы должны разводиться именно такими линиями, а не абы какими (компиляторы сами по себе могут некорректно такие линии выявлять, да и в любом случае, явная подсказка не помешает; кроме того, число синхролиний весьма ограничено, а разводка таких сигналов по обычным линиям чревата существенным падением предельно допустимых частот или вообще какими-нибудь глюками).
2) Крупные схемы обычно бывает целесообразно делить на несколько кусков поменьше, каждый со своей синхронизацией. Возникает, правда, вопрос, как их заставить работать совместно, но при грамотном разбиении это особых проблем не представляет.
3) В некоторых случаях бывает целесообразно часть схемы тактировать фронтом синхросигнала, а другую часть -- спадом. Поскольку сами схемы срабатывают не мгновенно, но за вполне предсказуемое время (в документации на ПЛИС всё это расписано для отдельных ячеек, блоков памяти и т.п.; из используемого инструментария можно "вытрясти" времена для конкретных схем), такой подход может позволить поднять общую частоту, если требуется "двухступенчатая" обработка, причём каждая ступень вписывается по времени в полупериод синхронизации (естественно, с запасом).
4) Средства проектирования обычно "видят", что схема большая, и более-менее адекватно понижают предельно возможные частоты работы. Необходимо контролировать, чтобы они не падали слишком низко, т.е. чтобы задача всё равно решалась адекватно. Если частота недопустимо низкой получилась, необходимо перерабатывать схему.
В общем, нюансов хватает, но они обычно проявляются только в достаточно сложных проектах.
- Meteor
- Друг Кота
- Сообщения: 3961
- Зарегистрирован: Пн июл 13, 2009 14:37:39
- Откуда: Московская область, наукоград.....
- Контактная информация:
Re: Проблема в понимании дизайна синхронных схем на ПЛИС.
Лучше избегать в одном проекте работы от разных фронтов. На эти грабли многие наступили - обоснования можно поискать на сахаре и электронисе. Если коротко, то ПЛИС не любят синтеза разнотактируемых триггеров.SII писал(а):3) В некоторых случаях бывает целесообразно часть схемы тактировать фронтом синхросигнала, а другую часть -- спадом.
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
- Леонид Иванович
- Друг Кота
- Сообщения: 4779
- Зарегистрирован: Сб апр 02, 2011 12:40:46
- Откуда: Минск
- Контактная информация:
Re: Проблема в понимании дизайна синхронных схем на ПЛИС.
Прямо набор вредных советов 
В сихронных проектах нужна только одна линия гобального клока. Естественно, клок должен быть разведен на всём кристалле глобально.SII писал(а):У ПЛИС имеются специальные линии, предназначенные для разводки синхросигналов по кристаллу. В сложных проектах надо учитывать их количество
Разводить глобальными линиями внутренние сигналы - это больше похоже на изврат. Тем более, не все семейства это позволяют. У MAX CPLD, например, глобальные линии привязаны к внешним пинам, и задействовать их для внутренних сигналов нет возможности.SII писал(а):Кроме того, возможно, потребуется вручную прописывать, что такие-то сигналы должны разводиться именно такими линиями, а не абы какими
Никогда так не следует делать!SII писал(а):Крупные схемы обычно бывает целесообразно делить на несколько кусков поменьше, каждый со своей синхронизацией
Переход с одного клок-домена в другой требует синхронизаторов, а это потеря двух тактов. Разные клок-домены можно делать лишь в том случае, если в проекте есть асинхронные части. Например, slave SPI-интерфейса.SII писал(а):Возникает, правда, вопрос, как их заставить работать совместно, но при грамотном разбиении это особых проблем не представляет.
Никогда так не следует делать! Прямой путь к глюкам! Вся схема должна тактироваться фронтом одного и того же синхросигнала.SII писал(а):В некоторых случаях бывает целесообразно часть схемы тактировать фронтом синхросигнала, а другую часть -- спадом.
Это называется конвейер.SII писал(а):если требуется "двухступенчатая" обработка
Не нужна. Просто тактируйте всю схему общим клоком, ну и по ходу разруливайте проблемы с таймингами, чтобы времена установки/удержания были в норме.Alexlapb писал(а): Информации много, но вся ли она нужна?!?


