Трохи про проектуванні самосинхронных схем

На форумах по електроніці періодично згадують про самосинхронных схемах, але дуже мало хто розуміє, що це взагалі таке, які корисні властивості є у самосинхронных схем, і якими вадами вони володіють. Короткий текст нижче дозволить читачеві ознайомитися з азами синтезу найпростіших самосинхронных схем, і самому спробувати їх проектувати.

На початку кілька вступних слів. Асинхронними можна називати будь-які схеми без зовнішнього тактирования. При цьому різні види асинхронних схем використовують різний принцип роботи, і самосинхронные схеми – всього лише одна з їх різновидів. Під самосинхронными зазвичай розуміють т. н. полумодулярные схеми, за можливості їх представлення у вигляді алгебраїчних структур, складових полумодулярные решітки (хай вибачать мене математики за можливі неточності). Одна з особливостей полумодулярных (читати — самосинхронных) схем – незалежність від затримок, що на практиці означає працездатність схеми в будь-яких умовах, при яких транзистори здатні переключатися. Втім, ніхто не заважає проектувати самосинхронные схеми на механічних реле або будь-яких інших перключателях. Не секрет, що розробляти такі схеми дуже складно, але зате їм не загрожує відмова з-за перегріву, наприклад, або ефектів старіння.

З введенням все, і можна переходити до практики. За способом проектування всі самосинхронные схеми можна розділити на дві групи – автомати керування, і схеми з великою кількістю логіки. Звідки береться таке розділення. Автомати керування, це нескладні пристрої на кшталт лічильників, засувок, тригерів, або якихось невеликих контролерів. Ці пристрої в основному проектують вручну за допомогою мереж Петрі (мова опису паралельних динамічних процесів), а потім синтезують у Petrify або інших тулах. Під схемами з великою кількістю логіки слід розуміти звичні всім вузли обчислювальних пристроїв: контролери периферії, ПДП, блоки арифметики, та все що завгодно, де використовується множення, додавання, порівняння, мультиплексування і т. д. Подібні схеми занадто складно описуються мережами Петрі, і проектуються інакше (це тема окремого циклу публікацій, а то й цілого підручника). Тому почнемо з азів, з мереж Петрі.

Візьмемо в якості прикладу найпростіший самосинхронный лічильний тригер. Як і всі самосинхронные схеми, він працює за тим же принципом, що і кільцевої генератор на інверторах:



Сигнал P є рахунковим, сигнали x0,x1,y0,y1 – внутрішніми, пара {q0,q1} – вихідні сигнали лічильника, а cd – індикатор закінчення перехідних процесів у схемі. Якщо сигналcd замкнути на лічильний вхід P, автомат буде працювати нескінченно. Хто бажає, може в цьому переконатися за допомогою звичного всім моделювання:

Вихідний код нетлиста з тестбенчем
`timescale 1ns/10ps

module sim();
wire P,cd;
counter dut(.P(P), .cd(cd));
assign P = cd;
initial begin
force P=0;
force dut.x0=0;
force dut.x1=1;
#2;
release P;
release dut.x1;
release dut.x0;
end
endmodule

module counter(
input wire P,
output wire cd
);
wire x0, x1, y0, y1, q0, q1;
nand2 U1 (.A(y0), .B(x1), .Y(x0));
nand2 U2 (.A(y1), .B(x0), .Y(x1));
nand2 U3 (.A(y0), .B(x0), .Y(q0));
nand2 U4 (.A(y1), .B(x1), .Y(q1));
nand3 U5 (.A(P).B(q0), .C(y1), .Y(y0));
nand3 U6 (.A(P).B(q1), .C(y0), .Y(y1));
nand2 U7 (.A(q0), .B(q1), .Y(cd));
endmodule

module nand2(
input wire A, B,
output wire Y
);
assign #1 Y = ~(A & B);
endmodule

module nand3(
input wire A, B, C,
output wire Y
);
assign #1 Y = ~(A & B & C);
endmodule



Зверніть увагу, що в логічних елементів обов'язково повинна бути ненульова затримка, а схема вимагає початкової установки. В залозі (якщо хтось спробує зробити цю схему на ПЛІС або розсипи) початкова установка не вимагається.

А тепер займемося реверс-інжиніринг, щоб зрозуміти, як отримати схему лічильного тригера за допомогою мереж Петрі. Виберемо довільну початкову розстановку значень на виходах елементів (можна взяти з моделювання, або придумати самим):



Оскільки P=cd, P в наступний момент часу має змінитися на 1. Побудуємо граф, у вершинах якого будуть змінні, а ребра – напрям перемикання змінних. Змінні пометим знаком +, якщо вони переключилися з 0 на 1, а знаком мінус, якщо вони переключилися з 1 в 0. Граф введемо в редакторі Workcraft ( можна завантажити безкоштовно з сайту http://www.workcraft.org. Вибираємо меню File — Create work — Signal Transition Graph, і вводимо граф). Початкова перемикання сигналуP з 0 на 1 (тобто P+) пометим входить срелкой з гуртком (токеном). Вийде граф:



Після перемикання P 1 слід перемикання сигналу y0 0, потім x0 1, і т. д., поки не повернемося до початку. Як видно з графу, вихідні змінні {q1,q0} перемикаються в циклі 10-11-01-11-10-11 і т. д., що відповідає роботі лічильного тригера. Можна включити режим симулятора роботи мережі Петрі, для цього треба натиснути на іконку зеленого трикутника в правому нижньому вікні Editor Tools, а потім запустити симуляцію у діалоговому вище вікні Tool Controls.
Наступний крок – синтез графа в Petrify. Вибираємо в меню Tools – Synthesis – Complex gate synthesis [Petrify], і отримуємо лог:



Синтез пройшов успішно (що означає, що схема є полумодулярной самосинхронной), а отримані формули відповідають вихідній схемі. Реверс інжиніринг успішно виконаний.

З графа стає очевидно, що працездатність лічильного тригера не залежить від затримок: хоч би в яке місце схеми Ви не додали затримку, це лише уповільнить його роботу, але не змінить порядок перемикання елементів і не порушить логіку роботи схеми.

Описані процедури (порядку: від графа до схемою) дозволяють синтезувати і перевіряти на самосинхронность тільки схеми засувок, тригерів, лічильників, або довільних контролерів, чия поведінка описується мережею Петрі, що містить не більше 50 змінних. Більш складні схеми наведеним способом проектувати не можна (необхідно використовувати інші підходи до проектування). Але для вивчення основ розробки самосинхронных схем, розглянутий приклад лічильного тригера (а так само туторіали з дистрибутива workcraft) – саме те. Зацікавився теорією рекомендую почитати підручник з мереж Петрі та самосинхронным схемами: Мараховський В. Б., Розенблюм Л. Я., Яковлєв А. В. Моделювання паралельних процесів. Мережі Петрі, а так само вивчити матеріал на сайті розробників workcraft.
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.