Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Синтез асинхронных логических схем
Форум разработчиков электроники ELECTRONIX.ru > Дополнительные разделы - Additional sections > Ищу работу
bsa1969
Про достоинства асинхронных схем известно - это пониженное энергопотребление.
Недостатки же - меньшее быстродействие(?), большая площадь, худшая тестируемость. На самом деле это миф, основанный на единственном недостатке асинхронных схем: неумении
их синтезировать. Мною разработан формальный метод синтеза асинхронных схем на стандартной элементной базе (в том числе и на самых простых двухвходовых элементах NOR,
NAND), который полностью устраняет вышеперечисленные недостатки.
Более того, разработана методика синтеза асинхронных схем, нечувствительных к задержкам даже в проводах. Правда для таких схем используются нестандартные элементы, похожие
на 2NOR, 2NAND. Единственное отличие - дополнительный выход, по сути являющийся инверсией одного из входов. Я не специалист по железу, поэтому корректная работа такого
элемента под вопросом.
Для наглядности пример (в базисе 2NAND, 2NOR, NOT). Исходное задание в виде STG.

# rcv-setup
# HP controller, by K. Stevens
# Meat state encoding
.inputs reqrcv sending acksend
.outputs enwoq rejsend
.graph
# 0
reqrcv+/1 enwoq+/1
sending+ place_1
# -> 1
place_1 sending-/1 reqrcv+/2
# -> 5
enwoq+/1 reqrcv-/1
# 5
reqrcv-/1 enwoq-/1
# -> 0
enwoq-/1 place_0
# 1
reqrcv+/2 rejsend+
sending-/1 place_0
# -> 2
rejsend+ sending-/2 acksend+
# 2
sending-/2 rejsend-
acksend+ rejsend-
# -> 3
rejsend- acksend-
# 3
acksend- enwoq+/2
# -> 4
enwoq+/2 reqrcv-/2
# 4
reqrcv-/2 enwoq-/2
# -> 0
enwoq-/2 place_0
place_0 reqrcv+/1 sending+
.marking { place_0 }
.end


enwoq = AND ( g, k )
rejsend = NOR ( i, k )
f = NOT ( reqrcv )
g = NOR ( f, sending )
h = AND ( sending, reqrcv )
i = NOR ( h, j )
j = NOR ( acksend, i )
k = NOR ( j, acksend )
andrewkrot
Вы ищете работу по синтезу асинхронных схем?
Anton75
Цитата
Более того, разработана методика синтеза асинхронных схем, нечувствительных к задержкам даже в проводах.


Вы не туда обратились. Вам в Нобелевский комитет.
Corner
Цитата(Anton75 @ Mar 17 2014, 10:00) *
Вы не туда обратились. Вам в Нобелевский комитет.


или в РАН, там таких уже половина...
RVlad
Может это наша реинкарнация <<NULL Convention Logic >> ??
Theseus Research Inc
Shivers
Какой макcимальный размер синтезируемого STG в вашем алгоритме?
Все что было разработано ранее, окучивало максимум 50 переменных. Собственно, мэппинг умеет делать только один известный мне тул -Petrify.

О независимости от задержек в проводах, очень интригующее заявление. Можете уточнить, речь идет о NCL, или о чем то другом?
Вам известно, что размер независящих от задержек в проводах элементов на порядок превышает размеры обычной комбинационной логики?
bsa1969
Цитата(Shivers @ Mar 18 2014, 06:19) *
Какой макcимальный размер синтезируемого STG в вашем алгоритме?
Все что было разработано ранее, окучивало максимум 50 переменных. Собственно, мэппинг умеет делать только один известный мне тул -Petrify.

О независимости от задержек в проводах, очень интригующее заявление. Можете уточнить, речь идет о NCL, или о чем то другом?
Вам известно, что размер независящих от задержек в проводах элементов на порядок превышает размеры обычной комбинационной логики?

p.s. если будет любопытно пообщаться на тему асинхронных схем, пишите на shadowpine гаф list РУ



Ограничений по количеству переменных нет, поскольку алгоритм не занимается вычислением логических функций общего вида. Суть метода - корректное добавление дополнительных
сигналов с целью приведения исходного поведения к определенному виду. После приведения поведения к нужному виду вычисление логической функции (уже заранее известного
вида) - задача линейной сложности. Вообще метод не использует понятие состояние, только причинно-следственные связи между событиями.
Я знаком с Петрифай, более того знаком с его создателями. Могу сказать что недостатки Петрифай связаны с непониманием сути проблемы. Он эксплуатирует здравую идею
декомпозиции логических функций. Но известно, что далеко не всякую функцию можно разбить до нужного уровня. Петрифай пытается бороться с этим используя С-элементы,
упрощая тем самым функции возбуждения. Но это лишь несколько улучшает ситуацию, но не решает проблему. Проблема же декомпозиции связана исключительно с наличием кратных
сигналов, т.е. сигналов, которые "переключаются более чем 2 раза". Создатели же Петрифай, не понимая этого, жадничают при добавлении дополнительных сигналов. И как следствие
стараются добавлять именно кратные сигналы.
По независимости от задержек в проводах. Прошу прощения, я 10 лет был в творческом отпуске. Сходу не нашел в гугле, что такое NCL. Что касается элементов независящих от
задержек в проводах, о которых Вы говорите, я давно что-то читал. Они внутри себя содержат ряд ограничений, которые еще нужно реализовать. И конечно строить схемы из таких
огромных блоков слишком дорогое удовольствие. Я же веду речь о самом простом элементе на основе 2NOR, 2NAND (4 транзистора, или 5 для повышения устойчивости). Его впервые
описал Варшавскиий, а для схем независящих от задержек в проводах предложил использовать Стародубцев. Если найдете можно почитать Monotonic Circuits with Complete
Acknowledgement (Starodoubtsev, Bystrov, Yakovlev). Картинку прилепил. Суть этого элемента в новой реализации процесса перехвата. Подхватывающий сигнал подается на элемент,
затем снимается с дополнительного выхода этого элемента (уже в инвертированном виде), и только после этого запускает процесс приводящий к переключению подхватываемого
сигнала. Что касается сложности таких схем. На примере pe-send-ifc. На элементах NORAND NANDOR с произвольным числом входов: дополнительных сигналов 10, транзисторов 124.
На элементах NAND NOR с произвольным числом входов: дополнительных сигналов 18, транзисторов 176. На двухвходовых элементах: дополнительных сигналов 42, транзисторов 184.
Независящая от задержек в проводах: дополнительных сигналов 91, транзисторов 585. Основная причина удорожания последней схемы - кратные сигналы.
Если можно отправьте более точныt координаты для контактов на bsa1969@yandex.ru
Shivers
bsa1969
Написал на почту
bsa1969
Цитата(andrewkrot @ Mar 15 2014, 19:43) *
Вы ищете работу по синтезу асинхронных схем?



Было бы интересно попробовать.

Цитата(RVlad @ Mar 17 2014, 19:50) *
Может это наша реинкарнация <<NULL Convention Logic >> ??
Theseus Research Inc




Та не... Ведь все по-старому: транзистор открыт, транзистор закрыт?
Ну значит нагородили лишних сущностей.
bsa1969
CODE
# pe-send-ifc
# HP controller, by K. Stevens
# Meat state encoding
.inputs reqsend treq rdiq adbldout ackpkt
.outputs tack peack adbld
.graph
# 0
reqsend+ adbld+/1
treq+/1 adbld+/1
rdiq+/1 adbld+/1
# -> 1
adbld+/1 place_1
place_1 adbldout+/1

# 1
adbldout+/1 peack+/1
# -> 2
peack+/1 rdiq-/1

# 2
rdiq-/1 adbld-/1 tack+/1 peack-/1
# -> 3
peack-/1 place_3_0
adbld-/1 adbldout-/1
tack+/1 treq-/1
place_3_0 ackpkt+/1 rdiq+/2
adbldout-/1 place_3_1
treq-/1 place_3_2

# 3
rdiq+/2 adbld+/2
place_3_1 adbld+/2
place_3_2 adbld+/2

ackpkt+/1 peack+/2
place_3_1 peack+/2
place_3_2 peack+/2
# -> 4
adbld+/2 adbldout+/2
# -> 8
peack+/2 ackpkt-/1

# 4
adbldout+/2 peack+/3
# -> 5
peack+/3 rdiq-/2

# 5
rdiq-/2 peack-/3 adbld-/2 tack-/2
# -> 6
adbld-/2 adbldout-/3
tack-/2 treq+/2
peack-/3 place_5_2
adbldout-/3 place_5_0
treq+/2 place_5_1
place_5_2 ackpkt+/2 rdiq+/3

# 6
place_5_0 peack+/4 tack+/3
place_5_1 peack+/4 tack+/3
ackpkt+/2 peack+/4 tack+/3

place_5_0 adbld+/3
place_5_1 adbld+/3
rdiq+/3 adbld+/3
# -> 1
adbld+/3 place_1
# -> 7
peack+/4 ackpkt-/3
tack+/3 treq-/3

# 7
ackpkt-/3 peack-/4 tack-/3
treq-/3 peack-/4 tack-/3
# -> 9
peack-/4 place_9_0
tack-/3 place_9_1
place_9_0 treq+/4 reqsend-
place_9_1 treq+/4 reqsend-

# 8
ackpkt-/1 tack-/4 peack-/5
# -> 9
peack-/5 place_9_0
tack-/4 place_9_1

# 9
treq+/4 tack+/5

# -> 0
# s4 conditions inputs... otherwise no USC !
reqsend- reqsend+ treq+/1 rdiq+/1
# -> 10
tack+/5 treq-/5

# 10
treq-/5 tack-/5
# -> 9
tack-/5 place_9_0 place_9_1

.marking { <reqsend-,reqsend+> <reqsend-,treq+/1> <reqsend-,rdiq+/1> }
.end


tack = NAND ( h2, i2 )
peack = NOR ( f2, w1 )
adbld = NAND ( u, f1 )
f = NAND ( reqsend , treq )
g = NAND ( rdiq , o1 )
h = NAND ( rdiq , p1 )
i = NAND ( adbldout , s )
j = NAND ( adbldout , r )
k = NAND ( ackpkt , o1 )
l = AND ( ackpkt , p1 )
m = AND ( l , j )
n = NOR ( m , o )
o = NOR ( n , f )
p = NOR ( h , f )
q = NAND ( j , p )
r = AND ( q , i )
s = NOT ( r )
t = NOR ( g , s )
u = NAND ( t , f )
v = NOR ( k , s )
w = NAND ( v , f )
f1 = NAND ( p , s )
g1 = NAND ( reqsend , h1 )
h1 = NAND ( w , g1 )
i1 = NOR ( w , g1 )
j1 = NOR ( u , j )
k1 = NOR ( i1 , j1 )
l1 = NAND ( i , m1 )
m1 = NAND ( k1 , l1 )
n1 = NAND ( h , l1 )
o1 = NAND ( n1 , k1 )
p1 = NOT ( o1 )
q1 = NAND ( n , t1 )
r1 = NAND ( reqsend , s1 )
s1 = NAND ( q1 , r1 )
t1 = AND ( r1 , u1 )
u1 = NAND ( v1 , q1 )
v1 = NOR ( o , t1 )
w1 = NOR ( g2 , u1 )
f2 = NOR ( n1 , p1 )
g2 = NAND ( m1 , p1 )
h2 = NOR ( o1 , t1 )
i2 = NOR ( k2 , j2 )
j2 = NOR ( f , r1 )
k2 = NOR ( f , g1 )


Ну, и зачем это здесь? В разделе "Ищу работу"? Что сказать-то хотели? Что владеете неким ноу-хау? Ну, так напишите по-русски. И сопроводите конкретикой.
Corner
Цитата(bsa1969 @ Mar 18 2014, 22:39) *
CODE
# pe-send-ifc
# HP controller, by K. Stevens
# Meat state encoding
.inputs reqsend treq rdiq adbldout ackpkt
.outputs tack peack adbld
.graph
# 0
reqsend+ adbld+/1
treq+/1 adbld+/1
rdiq+/1 adbld+/1
# -> 1
adbld+/1 place_1
place_1 adbldout+/1

# 1
adbldout+/1 peack+/1
# -> 2
peack+/1 rdiq-/1

# 2
rdiq-/1 adbld-/1 tack+/1 peack-/1
# -> 3
peack-/1 place_3_0
adbld-/1 adbldout-/1
tack+/1 treq-/1
place_3_0 ackpkt+/1 rdiq+/2
adbldout-/1 place_3_1
treq-/1 place_3_2

# 3
rdiq+/2 adbld+/2
place_3_1 adbld+/2
place_3_2 adbld+/2

ackpkt+/1 peack+/2
place_3_1 peack+/2
place_3_2 peack+/2
# -> 4
adbld+/2 adbldout+/2
# -> 8
peack+/2 ackpkt-/1

# 4
adbldout+/2 peack+/3
# -> 5
peack+/3 rdiq-/2

# 5
rdiq-/2 peack-/3 adbld-/2 tack-/2
# -> 6
adbld-/2 adbldout-/3
tack-/2 treq+/2
peack-/3 place_5_2
adbldout-/3 place_5_0
treq+/2 place_5_1
place_5_2 ackpkt+/2 rdiq+/3

# 6
place_5_0 peack+/4 tack+/3
place_5_1 peack+/4 tack+/3
ackpkt+/2 peack+/4 tack+/3

place_5_0 adbld+/3
place_5_1 adbld+/3
rdiq+/3 adbld+/3
# -> 1
adbld+/3 place_1
# -> 7
peack+/4 ackpkt-/3
tack+/3 treq-/3

# 7
ackpkt-/3 peack-/4 tack-/3
treq-/3 peack-/4 tack-/3
# -> 9
peack-/4 place_9_0
tack-/3 place_9_1
place_9_0 treq+/4 reqsend-
place_9_1 treq+/4 reqsend-

# 8
ackpkt-/1 tack-/4 peack-/5
# -> 9
peack-/5 place_9_0
tack-/4 place_9_1

# 9
treq+/4 tack+/5

# -> 0
# s4 conditions inputs... otherwise no USC !
reqsend- reqsend+ treq+/1 rdiq+/1
# -> 10
tack+/5 treq-/5

# 10
treq-/5 tack-/5
# -> 9
tack-/5 place_9_0 place_9_1

.marking { <reqsend-,reqsend+> <reqsend-,treq+/1> <reqsend-,rdiq+/1> }
.end


tack = NAND ( h2, i2 )
peack = NOR ( f2, w1 )
adbld = NAND ( u, f1 )
f = NAND ( reqsend , treq )
g = NAND ( rdiq , o1 )
h = NAND ( rdiq , p1 )
i = NAND ( adbldout , s )
j = NAND ( adbldout , r )
k = NAND ( ackpkt , o1 )
l = AND ( ackpkt , p1 )
m = AND ( l , j )
n = NOR ( m , o )
o = NOR ( n , f )
p = NOR ( h , f )
q = NAND ( j , p )
r = AND ( q , i )
s = NOT ( r )
t = NOR ( g , s )
u = NAND ( t , f )
v = NOR ( k , s )
w = NAND ( v , f )
f1 = NAND ( p , s )
g1 = NAND ( reqsend , h1 )
h1 = NAND ( w , g1 )
i1 = NOR ( w , g1 )
j1 = NOR ( u , j )
k1 = NOR ( i1 , j1 )
l1 = NAND ( i , m1 )
m1 = NAND ( k1 , l1 )
n1 = NAND ( h , l1 )
o1 = NAND ( n1 , k1 )
p1 = NOT ( o1 )
q1 = NAND ( n , t1 )
r1 = NAND ( reqsend , s1 )
s1 = NAND ( q1 , r1 )
t1 = AND ( r1 , u1 )
u1 = NAND ( v1 , q1 )
v1 = NOR ( o , t1 )
w1 = NOR ( g2 , u1 )
f2 = NOR ( n1 , p1 )
g2 = NAND ( m1 , p1 )
h2 = NOR ( o1 , t1 )
i2 = NOR ( k2 , j2 )
j2 = NOR ( f , r1 )
k2 = NOR ( f , g1 )


Ну, и зачем это здесь? В разделе "Ищу работу"? Что сказать-то хотели? Что владеете неким ноу-хау? Ну, так напишите по-русски. И сопроводите конкретикой.


Чувака прет - не обращайте внимания...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.