реклама на сайте
подробности

 
 
> Синтез асинхронных логических схем
bsa1969
сообщение Mar 15 2014, 13:48
Сообщение #1





Группа: Новичок
Сообщений: 4
Регистрация: 15-03-14
Пользователь №: 80 934



Про достоинства асинхронных схем известно - это пониженное энергопотребление.
Недостатки же - меньшее быстродействие(?), большая площадь, худшая тестируемость. На самом деле это миф, основанный на единственном недостатке асинхронных схем: неумении
их синтезировать. Мною разработан формальный метод синтеза асинхронных схем на стандартной элементной базе (в том числе и на самых простых двухвходовых элементах 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 )
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
bsa1969
сообщение Mar 18 2014, 18:39
Сообщение #2





Группа: Новичок
Сообщений: 4
Регистрация: 15-03-14
Пользователь №: 80 934



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 )


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

Сообщение отредактировал Herz - Mar 19 2014, 16:29
Go to the top of the page
 
+Quote Post
Corner
сообщение Mar 27 2014, 13:59
Сообщение #3


Профессионал
*****

Группа: Участник
Сообщений: 1 072
Регистрация: 11-12-12
Пользователь №: 74 815



Цитата(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 )


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


Чувака прет - не обращайте внимания...
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 15:06
Рейтинг@Mail.ru


Страница сгенерированна за 0.01411 секунд с 7
ELECTRONIX ©2004-2016