algorithmus 4 entwurf sequentieller schaltkreise nach der methode huffman-mealy

2
Algorithmus 4 Entwurf sequentieller Schaltkreise nach der Methode Huffman-Mealy Von Y. Wallach, Haifa (Eingegangen am 14. ~ebruar 1.967) procedure Reduktion (Zeilen, Spalten, nzust, naus); value Zeilen, Spalten; integer Zeilen, Spalten; integer array nzust, naus; begin integer na, nb, nc, nd, ngrp, nr; booIean la, lb; integer array temp [l:Zeilen], nenn [l:Zeilen, ]:Spalten]; comment Die Prozedur behandelt das erste Stadium des Entwurfes einer Digitalanlage, und zwar die Reduktion eines sequentiellml SchMt- werkes nach dem Verfahren yon Huffman-MeMy (siehe z.B. D. A. Huffman: The synthesis of sequential switching circuits, J. Franklin Institute, 257 (1954), S. 161--190, 275--303). Dabei sind Mle SchaltwerkgrSBen (Eingabe, Ausgabe, Geds voll- sti~ndig spezifiziert und als nzust = Matrix der ni~chsten Zusti~nde, naus = Matrix der Ausgaben, beide mit Zeilen-~ Zeilenanzahl und Spalten = Spaltenanzahl, eingelesen. Als Resultat erh~lt man die Zustandstabelle mit einer mSglichst kleinen Anzahl yon Zusts (Zeilen). Zu beachten ist, daI~ man, um die bei Huffman vorkom- menden P~eihenverschiebungen zu vermeiden, die Unterprozedur Umnennen beniitzt. Ferner wird auf die verh~ltnism~l~ig groge Anzahl der Befehle der Form: for i: = Anfang step Schritt until Endwert do if Relation then die 5frets aueh in anderen logischen Prozeduren vorkommen und die in Algol nicht kiirzer geschrieben werden kSnnen, aufmerksam gemacht; procedure Umnen. nen; for na: = 1 step 1 until Zeilen do lomb: = I step i until Spalten do nenn [na, nb ]: = temp [nzust [na, nb ] ]; ngrp: = 0; nr: = Zeilen-- 1; for na: = 1 step 1 until Zeilen do temp [na]: = 0; for ha:= 1 step 1 until nr do if temp [na] = 0 then begin nd: = temp [na]: = ngrp ~- 1; for nb:= na ~- 1 step 1 until Zeilen do

Upload: y-wallach

Post on 10-Jul-2016

218 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Algorithmus 4 Entwurf sequentieller Schaltkreise nach der Methode Huffman-Mealy

Algorithmus 4

Entwurf sequentieller Schaltkreise nach der Methode Huffman-Mealy

Von

Y. Wallach, Haifa

(Eingegangen am 14. ~ebruar 1.967)

procedure Reduk t ion (Zeilen, Spal ten, nzust, naus); value Zeilen, Spal ten; integer Zeilen, Spal ten; integer array nzust, naus; begin integer na, nb, nc, nd, ngrp, nr; booIean la, lb;

integer array temp [l:Zeilen], nenn [l:Zeilen, ]:Spal ten]; comment Die Prozedur behandelt das erste Stadium des Entwurfes einer Digitalanlage, und zwar die Reduktion eines sequentiellml SchMt- werkes nach dem Verfahren yon Huffman-MeMy (siehe z . B . D. A. Huffman: The synthesis of sequential switching circuits, J. Franklin Institute, 257 (1954), S. 161--190, 275--303). Dabei sind Mle SchaltwerkgrSBen (Eingabe, Ausgabe, Geds voll- sti~ndig spezifiziert und als nzust = Matrix der ni~chsten Zusti~nde, naus = Matrix der Ausgaben, beide mit Z e i l e n - ~ Zeilenanzahl und Spal ten = Spaltenanzahl, eingelesen. Als Resultat erh~lt man die Zustandstabelle mit einer mSglichst kleinen Anzahl yon Zus ts (Zeilen). Zu beachten ist, daI~ man, um die bei Huffman vorkom- menden P~eihenverschiebungen zu vermeiden, die Unterprozedur U m n e n n e n beniitzt. Ferner wird auf die verh~ltnism~l~ig groge Anzahl der Befehle der Form:

for i: = A n f a n g step Schritt until Endwer t do if Relat ion then die 5frets aueh in anderen logischen Prozeduren vorkommen und die in Algol nicht kiirzer geschrieben werden kSnnen, aufmerksam gemacht;

procedure Umnen. nen; for na: = 1 step 1 until Zei len do

l o m b : = I step i unti l Spal ten do nenn [na, nb ]: = temp [nzust [na, nb ] ]; ngrp: = 0; nr: = Z e i l e n - - 1; for na: = 1 step 1 until Zei len do temp [na]: = 0; for h a : = 1 step 1 until nr do if temp [na] = 0 then begin nd: = temp [na]: = ngrp ~- 1;

for n b : = na ~- 1 step 1 until Zei len do

Page 2: Algorithmus 4 Entwurf sequentieller Schaltkreise nach der Methode Huffman-Mealy

168 Y. WALLACIt: Entwurf sequentieller Schaltkreise

if temp [ n b ] = 0 then begin

for nc: = 1 step 1 until Spal ten do if naus [nb, nc] ~= naus [na, nc] then goto va; t emp [nb]: = n d ;

va: end; ngrp: = n d end der Umgrupp ierung; Umnennen; vb:la: = lb: = false; for nd: = 1 step 1 until ngrp do begin

for ha: = 1 step 1 until nr do if t emp [na] = n d then begin

for nb: - - na + 1 step 1 until ZeiIen do if t emp [nb ] = ncl then begin

for he: = 1 step 1 until Spal ten do if nenn [ha, nc] ~= nenn [nb, nc] then begin

la: = lb: = true; temp [nb]: = ngrp + 1; goto vc end;

vc: end; R lb then begin

~grp: -= ngrp + 1; lb: = false; goto vd end

end; vd: end; if la then begin

Umnennen; goto vb end der Unterteilung; for ha: = 1 step 1 until ngrp do begin

for n b : = na step 1 until Zei len do if t emp [nb ] = na then begin t emp [nb]: = temp [na];

for n c : - ~ 1 step 1 until Spal ten do begin nd: = nenn [ha, nc]; nzust [na, nc]: = nenu [nb, nc];

menu [nb, nc]: = n d ; nd: = naus [na, nc]; nau~ [na, nc]: -~ naus [nb, nc];

naus [nb, nc]: = n d end; goto ve

end; re: end; Ze, len: = ngrp

end der Reduk t ion;