Jump to content

    

Синтез асинхронных логических схем

Про достоинства асинхронных схем известно - это пониженное энергопотребление.

Недостатки же - меньшее быстродействие(?), большая площадь, худшая тестируемость. На самом деле это миф, основанный на единственном недостатке асинхронных схем: неумении

их синтезировать. Мною разработан формальный метод синтеза асинхронных схем на стандартной элементной базе (в том числе и на самых простых двухвходовых элементах 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 )

 

Share this post


Link to post
Share on other sites
Более того, разработана методика синтеза асинхронных схем, нечувствительных к задержкам даже в проводах.

 

Вы не туда обратились. Вам в Нобелевский комитет.

Share this post


Link to post
Share on other sites
Вы не туда обратились. Вам в Нобелевский комитет.

 

или в РАН, там таких уже половина...

Share this post


Link to post
Share on other sites

Какой макcимальный размер синтезируемого STG в вашем алгоритме?

Все что было разработано ранее, окучивало максимум 50 переменных. Собственно, мэппинг умеет делать только один известный мне тул -Petrify.

 

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

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

 

Share this post


Link to post
Share on other sites
Какой мак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

post-80934-1395128153_thumb.jpg

Share this post


Link to post
Share on other sites
Вы ищете работу по синтезу асинхронных схем?

 

 

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

 

Может это наша реинкарнация <<NULL Convention Logic >> ??

Theseus Research Inc

 

 

 

Та не... Ведь все по-старому: транзистор открыт, транзистор закрыт?

Ну значит нагородили лишних сущностей.

Share this post


Link to post
Share on other sites

# 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 )

 

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

Edited by Herz

Share this post


Link to post
Share on other sites
# 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 )

 

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

 

Чувака прет - не обращайте внимания...

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this