PL227527B1 - Sposób asynchronicznego przetwarzania danych cyfrowych i asynchroniczny układ cyfrowy do stosowania tego sposobu, zbudowany zwłaszcza w strukturze FPGA - Google Patents
Sposób asynchronicznego przetwarzania danych cyfrowych i asynchroniczny układ cyfrowy do stosowania tego sposobu, zbudowany zwłaszcza w strukturze FPGAInfo
- Publication number
- PL227527B1 PL227527B1 PL412575A PL41257515A PL227527B1 PL 227527 B1 PL227527 B1 PL 227527B1 PL 412575 A PL412575 A PL 412575A PL 41257515 A PL41257515 A PL 41257515A PL 227527 B1 PL227527 B1 PL 227527B1
- Authority
- PL
- Poland
- Prior art keywords
- input
- output
- apr
- data
- parallel
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 46
- 238000012545 processing Methods 0.000 title claims abstract description 11
- MXBCYQUALCBQIJ-RYVPXURESA-N (8s,9s,10r,13s,14s,17r)-13-ethyl-17-ethynyl-11-methylidene-1,2,3,6,7,8,9,10,12,14,15,16-dodecahydrocyclopenta[a]phenanthren-17-ol;(8r,9s,13s,14s,17r)-17-ethynyl-13-methyl-7,8,9,11,12,14,15,16-octahydro-6h-cyclopenta[a]phenanthrene-3,17-diol Chemical compound OC1=CC=C2[C@H]3CC[C@](C)([C@](CC4)(O)C#C)[C@@H]4[C@@H]3CCC2=C1.C1CC[C@@H]2[C@H]3C(=C)C[C@](CC)([C@](CC4)(O)C#C)[C@@H]4[C@@H]3CCC2=C1 MXBCYQUALCBQIJ-RYVPXURESA-N 0.000 claims abstract description 68
- 238000012546 transfer Methods 0.000 claims abstract description 20
- 230000001960 triggered effect Effects 0.000 claims abstract description 4
- 230000002596 correlated effect Effects 0.000 claims description 3
- 238000013461 design Methods 0.000 abstract description 23
- 241000009298 Trigla lyra Species 0.000 abstract 1
- 230000001360 synchronised effect Effects 0.000 description 38
- 101100270014 Arabidopsis thaliana APR2 gene Proteins 0.000 description 14
- 101100066027 Homo sapiens FAM215A gene Proteins 0.000 description 14
- 102100026728 Uncharacterized protein FAM215A Human genes 0.000 description 14
- 101100464779 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) CNA1 gene Proteins 0.000 description 12
- 101100464782 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) CMP2 gene Proteins 0.000 description 11
- 102100038026 DNA fragmentation factor subunit alpha Human genes 0.000 description 10
- 102100038023 DNA fragmentation factor subunit beta Human genes 0.000 description 10
- 101100277639 Homo sapiens DFFB gene Proteins 0.000 description 10
- 101000950906 Homo sapiens DNA fragmentation factor subunit alpha Proteins 0.000 description 10
- 230000008901 benefit Effects 0.000 description 10
- 238000010586 diagram Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 10
- 238000004891 communication Methods 0.000 description 9
- 238000004088 simulation Methods 0.000 description 9
- 230000015572 biosynthetic process Effects 0.000 description 8
- 238000012790 confirmation Methods 0.000 description 8
- 230000001934 delay Effects 0.000 description 7
- 238000003786 synthesis reaction Methods 0.000 description 7
- 238000013459 approach Methods 0.000 description 6
- 102100033657 All-trans retinoic acid-induced differentiation factor Human genes 0.000 description 5
- 102100040862 Dual specificity protein kinase CLK1 Human genes 0.000 description 5
- 208000001613 Gambling Diseases 0.000 description 5
- 101000733623 Homo sapiens All-trans retinoic acid-induced differentiation factor Proteins 0.000 description 5
- 230000036961 partial effect Effects 0.000 description 5
- 102000008482 12E7 Antigen Human genes 0.000 description 4
- 108010020567 12E7 Antigen Proteins 0.000 description 4
- 101000893549 Homo sapiens Growth/differentiation factor 15 Proteins 0.000 description 4
- 101000692878 Homo sapiens Regulator of MON1-CCZ1 complex Proteins 0.000 description 4
- 102100026436 Regulator of MON1-CCZ1 complex Human genes 0.000 description 4
- 230000004913 activation Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 4
- 238000010276 construction Methods 0.000 description 4
- 230000007717 exclusion Effects 0.000 description 4
- 230000006641 stabilisation Effects 0.000 description 4
- 238000011105 stabilization Methods 0.000 description 4
- 102100026816 DNA-dependent metalloprotease SPRTN Human genes 0.000 description 3
- 101710175461 DNA-dependent metalloprotease SPRTN Proteins 0.000 description 3
- 230000009977 dual effect Effects 0.000 description 3
- 230000007257 malfunction Effects 0.000 description 3
- 230000002829 reductive effect Effects 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 102100040844 Dual specificity protein kinase CLK2 Human genes 0.000 description 2
- 102100040856 Dual specificity protein kinase CLK3 Human genes 0.000 description 2
- 101000749294 Homo sapiens Dual specificity protein kinase CLK1 Proteins 0.000 description 2
- 101000749291 Homo sapiens Dual specificity protein kinase CLK2 Proteins 0.000 description 2
- 101000749304 Homo sapiens Dual specificity protein kinase CLK3 Proteins 0.000 description 2
- 101100001773 Oryza sativa subsp. japonica AOC gene Proteins 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000011156 evaluation Methods 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000003672 processing method Methods 0.000 description 2
- 230000000630 rising effect Effects 0.000 description 2
- 241000238876 Acari Species 0.000 description 1
- 241000218691 Cupressaceae Species 0.000 description 1
- 101001057135 Homo sapiens Melanoma-associated antigen H1 Proteins 0.000 description 1
- 102100027256 Melanoma-associated antigen H1 Human genes 0.000 description 1
- 240000007182 Ochroma pyramidale Species 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 230000004308 accommodation Effects 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 239000000872 buffer Substances 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000010959 commercial synthesis reaction Methods 0.000 description 1
- 230000000875 corresponding effect Effects 0.000 description 1
- 230000009849 deactivation Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000012938 design process Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Landscapes
- Logic Circuits (AREA)
- Multi Processors (AREA)
Abstract
W sposobie moduły potokowe (MP) łączy się w potoku między sobą co najmniej dwubitową magistralą sterującą (MS), przenoszącą sygnały żądania przekazania (Req) i potwierdzenia odbioru (Ack) danych dla co najmniej jednego układu kombinacyjnego (CL). Sygnał żądania przekazania (Req) przesyła się z poprzedniego do następnego modułu potokowego (MP), zaś sygnał potwierdzenia odbioru (Ack) z tego następnego do tego poprzedniego modułu potokowego (MP). Wewnętrzną magistralę wejściową (MI1, MI2) danych dla bieżącego układu kombinacyjnego (CL) łączy się z wyjściem równoległym (QO) danych poprzedniego modułu potokowego (MP). Wewnętrzną magistralę wyjściową (MO1, MO2) z danymi z bieżącego układu kombinacyjnego (CL1, CL2) łączy się z wejściem równoległym (DI) danych następnego modułu potokowego (MP). W pamięci wewnętrznej modułu potokowego (MP) zapisuje się stan jego wyjścia równoległego (QO) danych. Istotą sposobu jest to, że jako moduł potokowy (MP) stosuje się asynchroniczny rejestr potokowy APR, który wyzwala się różnicą danych na jego wejściu równoległym (DI) a zapamiętanym, w pamięci wewnętrznej tego rejestru potokowego APR, stanem jego wyjścia równoległego (QO) danych. Wyzwolenie bieżącego rejestru potokowego koreluje się z sygnałem żądania przekazania (Req) danych z poprzedniego rejestru potokowego APR lub z sygnałem potwierdzenia odbioru (Ack) danych z następnego rejestru potokowego APR. Przekazanie sygnału żądania przekazania (Req) wykonuje się poprzez co najmniej jeden zewnętrzny rejestr potokowy (A_APR1,..., A_APRi) o budowie podobnej jak rejestru potokowego (APR). W przypadku wielowejściowego układu kombinacyjnego (CL) stosuje się osobne wejściowe rejestry potokowe APR11, APR12 dla każdego z wejść układu kombinacyjnego (CL). Przedmiotem wynalazku jest także asynchroniczny układ cyfrowy do asynchronicznego przetwarzania danych cyfrowych sposobem według wynalazku. Wynalazek znajduje zastosowanie zwłaszcza przy projektowaniu układów FPGA.
Description
Przedmiotem wynalazku jest sposób asynchronicznego przetwarzania danych cyfrowych i asynchroniczny układ cyfrowy do stosowania tego sposobu, zbudowany zwłaszcza w strukturze FPGA.
Elektroniczne układy cyfrowe implementowane w strukturach FPGA znane są powszechnie z literatury naukowo-technicznej, na przykład z publikacji:
[1] E. Brundvand, „Using FPGAs to Implement Self-Timed Systems”, University of Utah, January 8, 1992.
[2] K. Maheswaran, „Implementing Self-Timed Circuits in Field Programmable Gate Arrays”, Master Thesis, U. C., Davis, 1995.
[3] L. Lloyd, K. Heron, A.M. Koelmans, A. V. Yakovlev, „Asynchronous microprocessors: From high level model to FPGA implementation”, Journal of System Architecture, No. 45, 1999.
[4] W. Erhard, A. Reinsch, T. Schober, „First steps towards a reconfigurable asynchronous system”, In IEEE International Workshop on Rapid System Prototyping, June 1999.
[5] T. Q. Ho, J. B. Rigaud, L. Fesquet, M. Renaudin, R. Rolland, „Implementing Asynchronous Circuits on LUT Based FPGAs”, Reconfigurable Computing is Going Mainstream 12th Int. Conf., Montpellier, 2002, pp. 35-46.
[6] C. Pham-Quoc, H. C. Minh, A. V. Dinh-Duc, „Hazard-free Muller Gates for Implementing Asynchronous Circuits on Xilinx FPGA”, IEEE Int. Symp. on Electronic Design, Test and Application, Jan. 2010, pp. 289-292.
[7] C. Pham-Quoc, A. V. Dinh-Duc, „New approaches to design asynchronous circuits on FPGAs”, Int. Conf. on Advanced Technologies for Communications, Oct. 2009, pp. 63-67.
[8] D. L. Oliveira, S. S. Sato, O. Saotome, R. T. de Carvalho, „Hazard-Free Implementation of the Extended Burst-Mode Asynchronous Controllers in Look-Up Table based FPGA”, 4th Southern Conf. on Programmable Logic, March 2008, pp. 143-148.
[9] P. D. Ferguson, A. Efthymiou, T. Arslan, D. Hume, „Optimising Self-Timed FPGA Circuits”, Proc. of the 2010 13th Euromicro Conf. on Digital System Design: Architectures, Methods and Tools, 2010, pp. 563-570.
[10] H. Saito, N. Hamada, T. Yoneda, T. Nanya, „A floorplan method for asynchronous circuits with bundled-data implementation on FPGAs”, Proceedings of IEEE Int. Symposium on Circuits and Systems, May 2010, pp. 925-928.
[11] Ch. J. Chen, W. M. Cheng, R. F. Tsai, H. Y. Tsai, T. Ch. Wang, „A pipelined asynchronous 8051 soft-core implemented with Balsa”, IEEE Asia Pacific Conf. on Circuits and Systems, Dec. 2008, pp. 976-979.
[12] Y. Liu, G. Xie, P. Chen, J. Chen, Z. Li, „Designing an asynchronous FPGA processor for lowpower sensor networks”, IEEE Int. Symp. on Signals, Circuits and Systems, July 2009, pp. 63-67.
[13] C. J. Chen, W. M. Cheng, H. Y. Tsai, and J. C. Wu, “A Quasi-Delay-Insensitive Microprocessor Core Implementation for Microcontrollers”, Journal of Information Science and Engineering, Vol. 25, No. 2, Mar. 2009, pp. 543-557.
[14] N. Minas, M. Marshall, G. Russell, A. Yakovlev, „Asynchronous Processor with Both Online and Offline Testing Capabilities”, IEEE Int. Symp. on Asynchronous Circuits and Systems, April 2008, pp. 128-137.
[15] T. Suto, K. Ichijo, Y. Yoshioka, „Design and Evaluation of Burst-Mode Asynchronous 8-Bit Microprocessor Using Standard FPGA Development System „IEEE Int. Symp. on Defect and Fault Tolerance in VLSI System”s, Oct. 2010, pp. 172-179.
[16] D .L. Oliveira, L. A. Faria, E. Lussari, „FPGA implementation of robust asynchronous wrappers for G1obally-Asynchronous systems (GALS)”, VIII Southern Conf. on Programmable Logic (SPL), March 2012, pp. 1-6.
[17] Y. Zafar, M.M. Ahmad, „Globally Asynchronous Locally Synchronous Micropipelined Processor Implementation in FPGA”, IEEE Int. Conf. on Emerging Technologies, Sept. 2005, pp. 277-282.
Znakomita większość współcześnie powstających projektów systemów cyfrowych opiera się na dwóch zasadniczych założeniach: wszystkie sygnały są binarne oraz czas ma naturę dyskretną określoną przez kolejne takty sygnału zegarowego. Odrzucenie drugiego z wymienionych założeń prowadzi do budowy systemów określanych jako asynchroniczne. W systemach asynchronicznych nie występuje globalny sygnał zegarowy, synchronizujący przesyłanie danych. Przyjęcie założenia o dyskretnej natuPL 227 527 B1 rze czasu w przypadku systemów synchronicznych, znakomicie upraszcza proces projektowania. Między innymi mogą być ignorowane takie zjawiska jak hazard oraz wyścigi. Zjawisk tych nie można już pominąć podczas projektowania systemów asynchronicznych. Jednak systemy asynchroniczne charakteryzują się pewnymi istotnymi zaletami w stosunku do konwencjonalnych systemów synchronicznych. Do zalet tych można zaliczyć:
1. Brak problemów z dystrybucją globalnego sygnału zegarowego
Coraz większa złożoność systemów cyfrowych musi wiązać się ze wzrostem uwagi poświęconej przez projektantów na zagadnienia związane z dystrybucją sygnału zegarowego. Aktywne zbocze zegara powinno docierać w tym samym czasie do, często znacznie oddalonych geometrycznie, części układu scalonego. Występujące różnice faz sygnału zegarowego (zjawisko określane jako clock skew) mogą prowadzić do błędnego działania układu synchronicznego. Konieczne jest wówczas obniżenie częstotliwości taktowania, co wiąże się ze spadkiem szybkości działania. W układach asynchronicznych, wobec braku globalnego sygnału zegarowego, problemy te nie występują.
2. Większa szybkość działania
Szybkość działania systemów synchronicznych ograniczona jest poprzez szybkość działania najwolniejszego elementu w systemie (worst case performance). W układach asynchronicznych wiele podsystemów może pracować współbieżnie i wówczas wydajność ograniczona jest przez zależności czasowe pomiędzy przepływem danych i sygnałów sterujących w systemie. Szybkość działania systemów asynchronicznych może zmieniać się w sposób dynamiczny (poszczególne podsystemy mogą wykryć moment czasu w którym wykonywanie operacji zostanie zakończone) i stąd szybkość działania determinowana jest poprzez element o przeciętnym czasie wykonania operacji (average case performance).
3. Możliwość adaptacji do zmiennych warunków pracy
Opóźnienia wnoszone przez poszczególne elementy logiczne układu scalonego mogą się zmieniać wraz ze zmianą parametrów procesu produkcyjnego, temperatury czy też napięcia zasilania układu. Projektant układów synchronicznych musi brać pod uwagę kombinację najgorszego przypadku spośród wymienionych czynników, dobierając odpowiednio częstotliwość taktowania całego systemu. Ze względu na adaptacyjną naturę układów asynchronicznych (wykrywanie momentu zakończenia wykonywania operacji) układy asynchroniczne pracują poprawnie odpowiednio zwiększając lub zmniejszając szybkość przetwarzania, niezależnie od zmian wnoszonych przez czynniki zewnętrzne.
4. Mniejszy pobór mocy
W przypadku układów asynchronicznych nie ma potrzeby stosowania dodatkowych drajwerów i buforów dla sygnału zegarowego, redukujących zjawisko różnicy faz (clock skew). W układach synchronicznych nawet w danej chwili nieużywane komponenty są cały czas taktowane sygnałem zegarowym powodując niepotrzebne straty mocy. W odniesieniu do współczesnych konstrukcji synchronicznych wysoko wydajnych mikroprocesorów szacuje się, że moc tracona na dystrybucję sygnału zegarowego stanowi nawet połowę mocy pobieranej przez cały układ (typowa wartość to około 30%). W przypadku układów asynchronicznych moc tracona jest tylko w komponentach, które są w danej chwili aktywne (realizują określone operacje).
5. Mniejsza emisja zakłóceń elektromagnetycznych
Zasadnicza aktywność systemów synchronicznych skoncentrowana jest wokół pewnej ściśle określonej częstotliwości. Niemal cała energia wypromieniowanych zakłóceń elektromagnetycznych skupiona jest w wąskim paśmie wokół częstotliwości sygnału zegarowego oraz jej harmonicznych. Sposób działania poszczególnych stopni lub podsystemów w układach asynchroniczny jest nieskorelowany, stąd widmo zakłóceń ma charakter znacznie bardziej rozproszony. Mniejsza jest również maksymalna amplituda tych zakłóceń.
6. Większe możliwości modularyzacji systemu
Poszczególne komponenty lub podsystemy układów asynchronicznych, a także całe systemy mogą być ze sobą bezpośrednio łączone bez konieczności dodatkowej synchronizacji, tak jak ma to miejsce w przypadku systemów synchronicznych, taktowanych różnymi częstotliwościami zegarowymi.
7. Skuteczne działanie elementów realizujących arbitraż (wzajemne wykluczenie) oraz praca z zewnętrznymi sygnałami wejściowymi
Elementy, które gwarantują poprawną realizację wzajemnego wykluczenia (mutual exclusion) niezależnych sygnałów oraz synchronizacja z sygnałem zegarowym zewnętrznych sygnałów wejściowych są podatne na występowanie zjawiska metastabilności. Stan metastabilny charakteryzuje się między innymi wydłużeniem, w ogólnym przypadku nieokreślonym, czasu odpowiedzi układu. W systemach
PL 227 527 B1 synchronicznych wszystkie elementy systemu powinny charakteryzować się ograniczonymi opóźnieniami. Dlatego też istnieje duże prawdopodobieństwo, że synchroniczna realizacja elementów wzajemnego wykluczenia będzie prowadziła do błędnego działania układu. Z kolei systemy asynchroniczne są w stanie oczekiwać arbitralnie długi czas na ukończenie operacji swoich podsystemów, zapewniając tym samym poprawną realizację elementów wzajemnego wykluczenia. Dodatkowo, ponieważ w systemach asynchronicznych nie występuje sygnał zegarowy z którym muszą być synchronizowane inne sygnały, systemy te charakteryzują się znacznie lepszą akomodacją zewnętrznych sygnałów wejściowych, które z natury są asynchroniczne.
Mimo wymienionych wyżej zalet systemów asynchronicznych, jak również faktu, iż zainteresowanie nimi datuje się już od połowy lat 50-tych ubiegłego wieku, to jednak wciąż systemy te nadzwyczaj rzadko realizowane są w praktycznych aplikacjach. Istotnym problemem utrudniającym stosowanie układów asynchronicznych na szeroką skalę, jest niedostatek efektywnych metodologii projektowania i mała dostępność narzędzi wspomagających proces projektowania układów asynchronicznych. Inną słabą stroną systemów asynchronicznych jest także to, że ze względu na konieczność eliminacji zjawisk takich jak hazard oraz implementacji logiki odpowiedzialnej za generowanie sygnałów żądania lub potwierdzenia wykonania operacji - systemy te często są znacznie bardziej złożone (zajmują większą powierzchnię krzemu) od analogicznych systemów realizowanych w sposób synchroniczny. Również wiedza na temat zagadnień projektowania układów asynchronicznych nie jest zbyt rozpowszechniona.
Bardzo dynamicznie rozwijające się obecnie struktury programowalne FPGA (Field Programmable Gate Array), z punktu widzenia inżynierskiego, są bardzo atrakcyjne. Oferują możliwość szybkiego prototypowania układów cyfrowych i prowadzenia eksperymentów, przy minimalnych kosztach. Jednakże środowiska projektowe dostarczane przez producentów układów programowalnych służą zasadniczo do projektowania układów synchronicznych. Chociaż możliwa jest specyfikacja układu asynchronicznego przy pomocy jednego z języków opisu sprzętu (Hardware Description Language) lub za pomocą schematu, to jednak - jak podają producenci, implementacja takiego układu może zawierać hazardy i wyścigi. Powszechnie używane języki opisu sprzętu nie wspierają też typowych mechanizmów komunikacji stosowanych w układach asynchronicznych. Projektant ma ograniczony wpływ na proces dekompozycji funkcji boole'owskich i rozmieszczania logiki w poszczególnych blokach logicznych układu FPGA. Dodatkowo w układach FPGA występuje pewna nieprzewidywalność czasowa wyników implementacji projektu w strukturze fizycznej (trudno jest z góry przewidzieć wartość opóźnień wnoszonych przez wewnętrzne połączenia pomiędzy poszczególnymi blokami logicznymi). Czynniki te mogą wprowadzać hazard do implementacji danego układu, nawet mimo tego, iż specyfikacja tego układu (na przykład schemat na poziomie bramek logicznych) jest wolna od hazardu.
Obecnie stosowane są dwa podejścia do realizacji systemów asynchronicznych w strukturach FPGA. Pierwsze z nich, znacznie rzadziej spotykane, opiera się na wykorzystaniu układów FPGA o specjalnej budowie umożliwiającej realizację układów asynchronicznych. Tego typu struktury integrują w swoim wnętrzu elementy koordynujące typu rendezvous i arbiter oraz charakteryzują się specjalną architekturą pola komutacyjnego, zapewniającą realizację bezpiecznych rozgałęzień izochronicznych. Wśród układów o specjalnej architekturze można wymienić projekty MONTAGE, STACC, PCA, PHCB lub PGA-STC. Jednak są to układy praktycznie niedostępne szerszemu gronu projektantów. Drugie podejście wykorzystuje do budowy układów asynchronicznych typowe, dostępne w handlu, struktury FPGA. Tego typu rozwiązania wydają się być bardzo atrakcyjne ze względu na dostępność, niski koszt i wciąż rosnące zasoby sprzętowe komercyjnych układów FPGA, jak również ze względu na możliwość łączenia technik synchronicznych i asynchronicznych w jednym układzie programowalnym.
Chociaż w ciągu ostatnich lat można zaobserwować znaczący wzrost liczby publikacji dotyczących realizacji układów asynchronicznych w strukturach FPGA, zainteresowanie tą tematyką datuje się niemal od początku masowej dostępności struktur FPGA na rynku. Jedna z pierwszych prac dotyczących realizacji układów asynchronicznych w typowych strukturach FPGA została opublikowana w 1992 przez pracownika Uniwersytetu w Utah [1]. Zaproponowano tam bibliotekę makrokomórek dla układów asynchronicznych przeznaczoną dla układów Actel FPGA. Zastosowany został dwufazowy protokół komunikacyjny dla sygnałów sterujących i protokół typu bundled data dla sygnałów danych. Niemniej jednak zjawisko hazardów w tych makrokomórkach nie zostało omówione.
W innej pracy z 1995 roku ujawniono podobny zbiór makrokomórek dla układów Xilinx FPGA z rodziny XC4000 [2]. W celu poprawnej implementacji układu asynchronicznego zaproponowano wykorzystanie tak zwanych sprzętowych makr (hard macro) wymuszających odpowiedni sposób partycjonowania i prowadzenia połączeń wewnątrz układu FPGA przez komercyjne narzędzia projektowe. Jako
PL 227 527 B1 przykład ilustrujący wykorzystanie opracowanych mikrokomórek została między innymi pokazana implementacja asynchronicznego 4-bitowego potokowego układu mnożącego.
W kolejnej pracy [3] przedstawiono konstrukcję asynchronicznego mikroprocesora o nazwie ADLX. Autorzy zastosowali metodologię projektowania opartą na układach mikropotokowych. Syntezy mikroprocesora dokonano częściowo z wykorzystaniem opisu funkcjonalnego w języku VHDL i komercyjnych narzędzi syntezy (CYPRESS WARP), jak również stosując oprogramowanie Petrify. Jakkolwiek autorzy wspominają o implementacji mikroprocesora w strukturach FPGA, to jednak faktycznie implementacji tej dokonali w prostych układach programowalnych o strukturze PAL (22V10) i CPLD (Maxi 10).
Do celów modelowania układów asynchronicznych i ich implementacji w strukturach FPGA autorzy pracy [4] zaproponowali wykorzystanie pewnej klasy interpretowanych sieci Petriego (Control Engineering Interpreted - CEI Petri Net). W pracy podano sposób odwzorowania modelu CEI sieci Petriego do układu sprzętowego, który może być bezpośrednio zaimplementowany w strukturach FPGA. Pokazany został też przykład implementacji sumatora typu CC A (Carry Completion Adder). W celu uniknięcia hazardów i wyścigów, które mogą zostać wprowadzone przez narzędzia syntezy autorzy nadmienili, iż implementacji w układach Xilinx FPGA dokonali w sposób „manualny”, wykorzystując specjalnie przygotowane makra RPM (Relationally Placed Macro).
Bardziej ogólna metodologia szybkiego prototypowania układów asynchronicznych typu QDI (Quasi Delay Insensitive) w strukturach Xilinx FPGA została pokazana w pracy [5]. Skoncentrowano tam uwagę na bezhazardowej implementacji C-elementu Mullera jako podstawowego komponentu bibliotecznego. W celu uniknięcia hazardów C-element (2 lub 4 wejściowy) został zamodelowany na poziomie opisu w postaci listy połączeń XNF (Xilinx Netlist Format - format obecnie nie wspierany) oraz zastosowano odpowiednio przygotowany plik wymuszeń projektanta (constraint file) dla narzędzi planowania i rozmieszczania połączeń. Tak zaprojektowany element biblioteczny może być następnie wielokrotnie używany i poddawany syntezie w sposób automatyczny przez typowe narzędzia projektowe. Jako przykład implementacji autorzy podają strukturę 4-bitowego potokowego sumatora.
Interesujący i jednocześnie prosty sposób bezhazardowej implementacji C-elementu Mullera w strukturach Xilinx FPGA z rodziny Spartan 3 zaproponowano w pracy [6]. Rozwiązanie może być również zastosowane dla układów FPGA, opartych o tablice LUT, innych producentów. Pomysł polega na strukturalnej specyfikacji w języku opisu sprzętu (Verilog lub VHDL) C-elementu Mullera i zastosowaniu pliku wymuszeń projektanta z odpowiednimi dyrektywami, tak by zapewnić realizację bezhazardową tego elementu (w przypadku tylko 2 lub 3 wejściowego C-elementu, wymuszenia projektanta nie są potrzebne). Wadą tego rozwiązania jest konieczność wykonania „ręcznej” analizy pliku wynikowego generowanego przez narzędzia syntezy i wyłowienia z niego nazw instancji użytych tablic LUT, które powinny być rozmieszczone w obrębie tego samego bloku logicznego CLB i następnie użycia tych nazw w kontekście odpowiedniej dyrektywy (RLOC) w pliku wymuszeń projektanta.
W innej pracy [7] pokazano również zaadaptowanie opracowanego wcześniej zastawu narzędzi pod nazwą PAiD do celów automatycznej generacji list połączeń EDIF oraz odpowiednich wymuszeń projektanta dla układów asynchronicznych quasi niewrażliwych na opóźnienia (QDI), realizowanych w strukturach FPGA.
Sposób pozwalający dokonać implementacji pewnej klasy układów asynchronicznych, opisanych za pomocą specyfikacji rozszerzonego trybu pakietowego (extended Burst Mode, XBM) - odmiany automatu sekwencyjnego Mealy'ego, przedstawiono w pracy [8]. Autorzy demonstrują sposób uzyskania specyfikacji XBM projektowanego układu, wolnej od hazardu zasadniczego. Następnie specyfikacja ta przekształcana jest do postaci strukturalnego połączenia bramek logicznych i przerzutników RS. Niemniej jednak szczegóły implementacyjne dla struktur FPGA nie są tutaj rozważane (w wyniku implementacji układu asynchronicznego w FPGA hazard może się pojawić, mimo, że specyfikacja projektowanego układu jest bezhazardowa).
Ogólna procedura konwersji układów synchronicznych do ich asynchronicznego odpowiednika, wykorzystującego 4-ro fazowy protokół komunikacyjny typu bundled data, implementowanego w typowych strukturach FPGA, pokazana jest w pracy [9]. Procedura odnosi się do opisu układu na poziomie listy połączeń EDIF. Konwersja wymaga przygotowanej wcześniej biblioteki asynchronicznych komponentów, takich jak C-element Mullera, zastosowania elementu opóźniającego, specjalnego asynchronicznego kontrolera odpowiedzialnego za obsługę protokołu komunikacyjnego oraz utworzenia odpowiednich wymuszeń projektanta (constraints file). W pracy nie podano jednak szczegółów dotyczących architektury elementów koordynujących (C-elementu) czy asynchronicznego kontrolera. W tym ostatnim przypadku podano jedynie graf STG opisujący działanie kontrolera. Jako element opóźniający autorzy
PL 227 527 B1 proponują zastosowanie szeregowego połączenia tablic LUT lub bramek XOR realizujących funkcję szybkiego przeniesienia dla operacji arytmetycznych wewnątrz bloków CLB struktur FPGA. Jako przykład ilustrujący sposób autorzy opisują implementację konwertera formatów dla sygnału wideo.
Z kolei w pracy [10] autorzy proponują specyficzny sposób implementacji układów asynchronicznych (typu bundled data) w strukturach FPGA, bazujący na wykorzystaniu narzędzi planowania podłoża dla FPGA. Sposób minimalizuje opóźnienia wnoszone przez układ sterujący, odpowiedzialny za obsługę protokołu komunikacyjnego. Wynikiem zastosowania tego sposobu jest plik z wymuszeniami projektanta odnoszący się do rozmieszczenia elementów projektowanego układu wewnątrz struktury FPGA.
Wśród przykładowych implementacji układów asynchronicznych nie brakuje również bardziej skomplikowanych realizacji, takich jak mikroprocesory. W pracy [11] autorzy przedstawili projekt asynchronicznego mikrokontrolera 8051 zrealizowanego z wykorzystaniem środowiska projektowego Balsa. Implementacji mikrokontrolera dokonano w układach Xilinx FPGA z rodziny Spartan-IIE. W celu uniknięcia hazardów wyłączono funkcję optymalizacji logicznej w narzędziach Xilinx, w wyniku czego implementacja asynchronicznego mikrokontrolera wymagała 10226 bloków logicznych typu slice, podczas gdy synchroniczny odpowiednik tego mikrokontrolera potrzebował tylko 926 takich bloków.
Lepsze wyniki implementacji osiągnęli autorzy projektu specjalizowanego, asynchronicznego mikroprocesora dla sieci czujników o niskim poborze mocy [12]. Implementacji mikroprocesora dokonano również w strukturach Xilinx FPGA z rodziny Spartan 3A. Zastosowano kodowanie typu bundled data, dzięki czemu nie zachodziła konieczność eliminacji hazardów w układach kombinacyjnych. Jednak takie podejście wymagało dodatkowego użycia narzędzi analizy czasowej, planowania geometrii podłoża oraz sprzętowych makr w celu zidentyfikowania i dopasowania odpowiednich opóźnień. Końcowa implementacja okazała się bardzo efektywna pod względem zużycia energii.
Asynchroniczną implementację mikrokontrolera kompatybilnego z rodziną PIC 18 Mircochip, wykonanego jako 4-fazowy układ potokowy z kodowaniem podwójna szyna (dual rail) opisano w pracy [13]. Implementacji dokonano w układach Altera FPGA. Specyfikacji asynchronicznych komponentów mikrokontrolera dokonano na poziomie bramek logicznych (schemat), aczkolwiek autorzy nie rozważają potencjalnych problemów, takich jak hazardy, mogących pojawić się podczas implementacji w FPGA.
W pracy [14] opisano z kolei implementację asynchronicznego mikroprocesora RISC, który posiada zdolność wykrywania błędów mogących pojawić się w czasie działania procesora. Efektywną implementację w FPGA uzyskano poprzez zastosowanie odpowiednich wymuszeń projektanta. Jako elementy opóźniające wykorzystano łańcuch bramek XOR.
Odmienną technikę projektowania układów asynchronicznych niż układy potokowe zastosowano w przypadku 8-bitowego mikroprocesora opisanego w pracy [15]. Wykorzystano tam asynchroniczne układy pracujące w trybie pakietowym (burst mode). Projekt mikroprocesora wykonano w środowisku MINIMALIST a wynikową listę połączeń zaimportowano do typowego środowiska projektowego dla struktur FPGA. Autorzy nie podają jednak żadnych szczegółów dotyczących implementacji układów asynchronicznych w FPGA. Można jednak domniemywać, że podobnie jak w przypadku [11], wyłączona została funkcja optymalizacji logicznej w narzędziach syntezy - asynchroniczna wersja mikroprocesora wymagała aż 33 razy większej liczby zasobów logicznych FPGA niż wersja synchroniczna.
Interesującą techniką projektowania z pogranicza układów asynchronicznych i synchronicznych są tzw. układy GALS (Globally Asynchronous Locally Synchronous) - globalnie asynchroniczne, lokalnie synchroniczne. Układy takie składają się z połączonych ze sobą kolejnych stopni, komunikujących się asynchronicznie za pomocą typowego protokołu komunikacyjnego przesyłania danych z potwierdzeniem. Pojedynczy stopień takich układów zawiera całkowicie synchroniczny submoduł realizujący określoną funkcjonalność, taktowany lokalnie wytwarzanym w ramach danego stopnia sygnałem zegarowym.
W pracy [16] opisano budowę takiego lokalnego generatora sygnału taktującego, nadającego się do implementacji w strukturach FPGA. Podano także sposób budowy interfejsu wejściowego i wyjściowego (iasynchronous wrapper), odpowiedzialnego za koordynację wymiany danych pomiędzy poszczególnymi stopniami układów G ALS. Zaletą takiego podejścia projektowego jest to, że implementacja układów GALS w strukturach FPGA przebiega w sposób bardzo zbliżony do projektowania układów synchronicznych - nie jest wymagana interwencja projektanta w sposób działania narzędzi syntezy dla układów FPGA (aczkolwiek konieczny jest właściwy dobór wartości opóźnienia dla bloku generatora lokalnego w przypadku pracy [16], co wymaga przeprowadzenia co najmniej symulacji czasowej układu).
PL 227 527 B1
Technikę GALS wykorzystano również w pracy [17], w której opracowano 4-fazowy mikropotok asynchronicznych z kodowaniem typu podwójna szyna. Pokazano tam architekturę rejestru sterowanego zdarzeniami (event controlled register), odpowiedzialnego za zatrzaskiwanie danych w ramach pojedynczego stopnia mikropotoku, oraz architekturę elementu opóźniającego. Element opóźniający składał się z licznika taktowanego lokalnie wytwarzanym sygnałem zegarowym (ring oscillator). Jako przykład wykorzystania zaproponowanego sposobu autorzy pokazują konstrukcję nieskomplikowanego asynchronicznego mikroprocesora.
Z powyższego przeglądu istniejących rozwiązań dotyczących implementacji układów asynchronicznych w komercyjnych strukturach FPGA wynika, że we wszystkich przypadkach układów wykorzystujących 4-ro fazowy protokół komunikacyjny typu bundled data poprawna implementacja tych układów wymagała stosowania specjalnych zabiegów ze strony użytkownika, polegających na tworzeniu sprzętowych makr, wykorzystaniu narzędzi planowania podłoża, ingerencji w strukturę układu na poziomie listy połączeń EDIF lub stosowania specyficznych wymuszeń projektanta. W przypadku kodowania typu podwójna szyna autorzy odpowiednich prac jawnie nie wspominają co prawda o takich zabiegach (zakładając, że takie komponenty jak C-element Mullera implementowane są poprawnie - co nie musi zachodzić w każdym przypadku), ale też sposób kodowania dual rail wiąże się z koniecznością innego podejścia do projektowania układów. Nie można w takim przypadku wprost wykorzystać typowych narzędzi syntezy na przykład do projektowania układów czysto kombinacyjnych.
Na fig. I przedstawiono znaną typową realizację synchroniczną układu cyfrowego, w którym moduły potokowe MP łączy się w potoku między sobą do wykonania operacji przekazania i odbioru danych, dla co najmniej jednego układu kombinacyjnego CL w postaci pierwszego albo drugiego układu kombinacyjnego CL1, CL2, umieszczonego pomiędzy nimi. Układ cyfrowy posiada magistralę pierwotna MD danych, która dla tego przykładu jest złożona z pierwszej zewnętrznej magistrali wejściowej MA, pierwszej i drugiej wewnętrznej magistrali wejściowej MI1, MI2, pierwszej i drugiej wewnętrznej magistrali wyjściowej MO1, MO2 oraz zewnętrznej magistrali wyjściowej MY. Wewnętrzną magistralę wejściową MU, MI2 dla bieżącego układu kombinacyjnego CL1, CL2 łączy się z wyjściem danych poprzedniego modułu potokowego MP, zaś wewnętrzną magistralę wyjściową MO1, MO2 z danymi z tego bieżącego układu kombinacyjnego CL1, CL2 łączy się z wejściem danych następnego modułu potokowego MP. Moduły potokowe MP są w postaci pierwszego, drugiego albo trzeciego lokalnego przerzutnika R1, R2, R3 (flip-flop) typu D, stanowiącego element pamięciowy i zatrzaskujący (pamiętający) stan swego wyjścia danych. Wszystkie lokalne przerzutniki R1, R2, R3 są taktowane wspólnym, zewnętrznym sygnałem taktującym CLK. Okres tego zewnętrznego sygnału taktującego CLK jest tak dobrany, by był nieco dłuższy od najdłuższego czasu propagacji spośród wszystkich układów kombinacyjnych CL1, CL2.
Z kolei na fig. II pokazano znaną realizację asynchroniczną układu cyfrowego, analogicznego do przedstawionego na fig. I dla realizacji synchronicznej. Moduły potokowe MP są połączone w potoku między sobą dwubitową magistralą sterującą MS, przenoszącą sygnały żądania przekazania Req i potwierdzenia odbioru Ack, do wykonania operacji przekazania i odbioru danych, dla co najmniej jednego układu kombinacyjnego CL1, CL2 umieszczonego pomiędzy dwoma modułami potokowymi MP. Sygnał żądania przekazania Req przesyła się z poprzedniego do następnego modułu potokowego MP, zaś sygnału potwierdzenia odbioru Ack z tego następnego do tego poprzedniego modułu potokowego MP. Podobnie jak poprzednio, układ cyfrowy posiada magistralę pierwotną MD danych, która jest złożona z pierwszej zewnętrznej magistrali wejściowej MA, wewnętrznych magistral wejściowych MI1, MI2, wewnętrznych magistral wyjściowych MO1, MO2 oraz zewnętrznej magistrali wyjściowej MY. Wewnętrzną magistralę wejściową MI1, MI2 dla bieżącego układu kombinacyjnego CL1, CL2 łączy się z wyjściem danych poprzedniego modułu potokowego MP, zaś wewnętrzną magistralę wyjściową MO1, MO2 z danymi z tego bieżącego układu kombinacyjnego CL1, CL2 łączy się z wejściem danych następnego modułu potokowego MP. W tym przypadku moduł potokowy MP jest złożony z lokalnego układu sterującego CTL i lokalnego przerzutnika R1, R2 albo R3 typu D. W lokalnym układzie sterującym CTL, w odpowiedzi na sygnał żądania przekazania Req danych z poprzedniego stopnia potoku i pod warunkiem nieaktywnego sygnału potwierdzenia odbioru Ack danych, pochodzącego ze stopnia następnego, wytwarzany jest lokalny sygnał taktujący w postaci pierwszego, drugiego lub trzeciego lokalnego sygnału taktującego CLK1, CLK2, CLK3, taktującego przypisany do niego lokalny przerzutnik R1, R2, R3. Jednocześnie jest generowany sygnał potwierdzenia odbioru Ack skierowany do stopnia poprzedzającego i wysyłany sygnał żądania przekazania Req do następnego stopnia potoku. Sygnał ten jest podawany na wejście układu sterującego CTL następnego stopnia przez układ opóźniający Delay, którego czas opóźnienia jest tak dobrany, aby był nieznacznie większy od czasu propagacji bieżącego układu
PL 227 527 B1 kombinacyjnego CL1, CL2 wraz z czasem potrzebnym na ustabilizowanie impulsów hazardowych. Konieczność stosowania układu opóźniającego Delay, którego realizacja w strukturach FPGA nie jest prosta, ma kluczowe znaczenie dla tej znanej realizacji asynchronicznej układu cyfrowego.
Sposób asynchronicznego przetwarzania danych cyfrowych, w którym moduły potokowe łączy się w potoku między sobą co najmniej dwubitową magistralą sterującą, przenoszącą sygnały żądania przekazania i potwierdzenia odbioru, do wykonania operacji przekazania i odbioru danych, dla co najmniej jednego układu kombinacyjnego umieszczonego pomiędzy dwoma modułami potokowymi, przy czym sygnał żądania przekazania przesyła się z poprzedniego do następnego modułu potokowego, zaś sygnału potwierdzenia odbioru z tego następnego do tego poprzedniego modułu potokowego, a ponadto wewnętrzną magistralę wejściową danych dla bieżącego układu kombinacyjnego łączy się z wyjściem równoległym danych poprzedniego modułu potokowego, zaś wewnętrzną magistralę wyjściową z danymi z tego bieżącego układu kombinacyjnego łączy się z wejściem równoległym danych następnego modułu potokowego, przy czym w pamięci wewnętrznej modułu potokowego zapisuje się stan jego wyjścia równoległego danych, według wynalazku charakteryzuje się tym, że jako moduł potokowy stosuje się asynchroniczny rejestr potokowy, który wyzwala się różnicą danych pomiędzy danymi na jego wejściu równoległym a zapamiętanym, w pamięci wewnętrznej tego rejestru potokowego, stanem jego wyjścia równoległego danych.
Korzystnie, wyzwolenie bieżącego rejestru potokowego koreluje się z sygnałem żądania przekazania danych z poprzedniego rejestru potokowego lub sygnałem potwierdzenia odbioru danych z następnego rejestru potokowego.
Dalsze korzyści są uzyskiwane, jeśli przekazanie sygnału żądania przekazania z poprzedniego rejestru potokowego, poprzedzającego bieżący układ kombinacyjny, do następnego rejestru potokowego, następującego po tym bieżącym układzie kombinacyjnym wykonuje się poprzez co najmniej jeden zewnętrzny rejestr potokowy o budowie podobnej jak rejestru potokowego, przy czym wyjście równoległe i wejście równoległe danych tego następnego rejestru potokowego łączy się dwubitową magistralą wtórną danych poprzez układ inkrementacji, trzecie wejście zespolone i trzecie wyjście zespolone dwubitowego zespołu trzecich przerzutników typu D oraz dwubitowe wejście równoległe i dwubitowe wyjście równoległe danych zewnętrznego rejestru potokowego, a ponadto sygnał żądania przekazania z poprzedniego rejestru potokowego podaje się na trzecie wejście taktujące tego zespołu trzecich przerzutników, a na wejście następnego rejestru potokowego poprzez zewnętrzny rejestr potokowy, zaś sygnał potwierdzenia odbioru z następnego rejestru potokowego podaje się równolegle na wejścia poprzedniego rejestru potokowego i zewnętrznego rejestru potokowego.
Kolejne korzyści uzyskuje się, jeżeli w przypadku wielowejściowego układu kombinacyjnego stosuje się osobne wejściowe rejestry potokowe dla każdego z wejść układu kombinacyjnego, a sygnały żądania przekazania z tych wejściowych rejestrów potokowych, na trzecie wejście taktujące zespołu trzecich przerzutników i wejście zewnętrznego rejestru potokowego, podaje się poprzez wielowejściową czwartą bramkę (G4), korzystnie typu AND.
Asynchroniczny układ cyfrowy do asynchronicznego przetwarzania danych cyfrowych, zbudowany zwłaszcza w strukturze FPGA, zawierający moduły potokowe połączone szeregowo w potoku między sobą co najmniej dwubitową magistralą sterującą, przenoszącą sygnały żądania przekazania i potwierdzenia odbioru, do wykonania operacji przekazania i odbioru danych, dla co najmniej jednego układu kombinacyjnego umieszczonego pomiędzy dwoma modułami potokowymi, przy czym sygnał żądania przekazania jest przesyłany z poprzedniego do następnego modułu potokowego, zaś sygnału potwierdzenia odbioru z tego następnego do tego poprzedniego modułu potokowego, a ponadto wewnętrzna magistrala wejściowa danych dla bieżącego układu kombinacyjnego jest połączona z wyjściem równoległym danych poprzedniego modułu potokowego, zaś wewnętrzna magistrala wyjściowa z danymi z tego bieżącego układu kombinacyjnego jest połączona z wejściem równoległym danych następnego modułu potokowego, przy czym moduł potokowy posiada blok pamięci wewnętrznej stanu jego wyjścia równoległego danych w postaci zespołu pierwszych przerzutników typu D, połączonego pierwszym wejściem zespolonym danych z wejściem równoległym modułu potokowego i pierwszym wyjściem zespolonym danych połączonym z wyjściem równoległym tego modułu potokowego, według wynalazku charakteryzuje się tym, że moduł potokowy jest w postaci asynchronicznego rejestru potokowego zawierającego pierwszy komparator z wejściami porównywanymi o krotności pokrywającej krotność wejścia równoległego danych i wyjścia równoległego danych rejestru potokowego oraz połączonymi odpowiednio z tym wejściem równoległym i wyjściem równoległym, a pierwsze wyjście sygnałowe pierwszego komparatora jest połączone poprzez wielowejściową pierwszą bramkę, korzystnie typu
PL 227 527 B1
AND, z pierwszym wejściem taktującym zespołu pierwszych przerzutników typy D, a ponadto rejestr potokowy posiada wejście żądania i wyjście żądania dla sygnałów żądania przekazania oraz wejście potwierdzenia i wyjście potwierdzenia dla sygnałów potwierdzenia odbioru, przy czym wejście żądania jest połączone z wejściem zezwalającym pierwszego komparatora i osobnym wejściem pierwszej bramki, zaś wejście potwierdzenia z kolejnym wejściem pierwszej bramki, a wyjście żądania i wyjście potwierdzenia są połączone z wyjściem tej pierwszej bramki.
Korzystnie, w rejestrze potokowym asynchronicznego układu połączenie wejścia równoległego danych z pierwszym wejściem zespolonym zespołu pierwszych przerzutników typu D jest poprzez pierwszy multiplekser z wejściami przełączanymi, o krotności pokrywającej krotność wejścia równoległego i wyjścia równoległego tego rejestru potokowego, połączonymi odpowiednio z tym wejściem równoległym i wyjściem równoległym, przy czym pierwsze wyjście multipleksowe pierwszego multipleksera jest połączone z pierwszym wejściem zespolonym danych zespołu pierwszych przerzutników, zaś pierwsze wejście przełączające pierwszego multipleksera jest połączone z pierwszym wyjściem sygnałowym pierwszego komparatora.
Dalsze korzyści uzyskuje się, jeśli rejestr potokowy asynchronicznego układu posiada drugi komparator z wejściami porównywanymi, o krotności pokrywającej krotność wejścia równoległego i wyjścia równoległego tego rejestru potokowego oraz połączonymi odpowiednio z pierwszym wyjściem multipleksowym pierwszego multipleksera rejestru potokowego i jego wyjściem równoległym, a drugie wyjście sygnałowe drugiego komparatora jest połączone z następnym wejściem pierwszej bramki rejestru potokowego.
Kolejne korzyści są uzyskiwane, jeżeli rejestr potokowy asynchronicznego układu zawiera drugi i trzeci multiplekser, drugi przerzutnik typu D oraz drugą i trzecią bramkę typu NOT, przy czym drugi multiplekser z dwoma jednobitowymi wejściami ustawionymi na „1” i „0” jest połączony swym wyjściem z drugim wejściem jednobitowym danych drugiego przerzutnika, a ponadto trzeci multiplekser z dwoma jednobitowymi wejściami jest połączony swym wyjściem z drugim wejściem taktującym tego drugiego przerzutnika, przy czym wyjście pierwszej bramki jest połączone poprzez drugą bramkę z pierwszym wejściem trzeciego multipleksera, a jego drugie wejście z wejściem potwierdzenia rejestru potokowego, zaś drugie wyjście jednobitowe drugiego przerzutnika jest połączone z wejściami przełączającymi drugiego i trzeciego multipleksera oraz wyjściem żądania rejestru potokowego i przez trzecią bramkę z wejściem jego pierwszej bramki, do którego jest połączone, poprzez trzeci multiplekser i drugi przerzutnik, wejście potwierdzenia rejestru potokowego.
Następne korzyści uzyskuje się, jeśli w asynchronicznym układzie połączenie wyjścia żądania poprzedniego rejestru potokowego, poprzedzającego bieżący układ kombinacyjny, z wejściem żądania następnego rejestru potokowego, następującego po tym bieżącym układzie kombinacyjnym, jest przez wejście żądania i wyjście żądania co najmniej jednego zewnętrznego rejestru potokowego, którego budowa jest identyczna jak rejestru potokowego, przy czym wyjście równoległe i wejście równoległe danych tego następnego rejestru potokowego są połączone dwubitową magistralą wtórną danych poprzez układ inkrementacji, trzecie wejście zespolone i trzecie wyjście zespolone dwubitowego zespołu trzecich przerzutników typu D oraz dwubitowe wejście równoległe i dwubitowe wyjście równoległe danych zewnętrznego rejestru potokowego, a ponadto wyjście żądania poprzedniego rejestru potokowego jest dołączone do trzeciego wejścia taktującego tego zespołu trzecich przerzutników, a do wejścia żądania następnego rejestru potokowego poprzez wejście żądania i wyjście żądania zewnętrznego rejestru potokowego, zaś wyjście potwierdzenia następnego rejestru potokowego jest połączone równolegle z wejściem potwierdzenia poprzedniego rejestru potokowego i zewnętrznego rejestru potokowego. W przypadku wielowejściowego układu kombinacyjnego asynchroniczny układ posiada osobne wejściowe rejestry potokowe dla każdego z wejść układu kombinacyjnego, a wyjścia żądania wejściowych rejestrów potokowych są dołączone do trzeciego wejścia taktującego zespołu trzecich przerzutników i równolegle do wejścia żądania zewnętrznego rejestru potokowego poprzez wielowejściową czwarta bramkę, korzystnie typu AND.
Zgodnie z wynalazkiem jest opracowana nowa, a zarazem prosta realizacja asynchronicznych układów cyfrowych w komercyjnych strukturach FPGA, wykorzystujących 4-fazowy protokół komunikacyjny typu bundled data. W odróżnieniu od dotychczas istniejących rozwiązań asynchroniczny układ cyfrowy według wynalazku pozwala na zastosowanie dokładnie tej samej metodyki projektowania (programowania) jak w przypadku typowych synchronicznych układów cyfrowych w strukturze FPGA. Nie jest wymagana żadna interwencja projektanta w sposób działania narzędzi syntezy programowej. Je10
PL 227 527 B1 dynie konieczne jest przeprowadzenie symulacji czasowej, po wykonaniu operacji planowania i wyznaczania połączeń dla konkretnego układu FPGA, ostatecznie weryfikującej działanie asynchronicznego układu cyfrowego. Wykonanie tej symulacji jednakże jest również częścią metodyki projektowania układów synchronicznych, chociaż w wielu praktycznych przypadkach takich układów symulacja ta może być pominięta.
Asynchroniczny układ cyfrowy według wynalazku charakteryzuje się zastosowaniem nowego, specjalnie zaprojektowanego, asynchronicznego rejestru potokowego umieszczanego pomiędzy kolejnymi stopniami asynchronicznego potoku, którego zadaniem jest zarówno zatrzaskiwanie danych jak również generowanie sygnałów sterujących, koordynujących dla stopnia poprzedniego i następnego. Architektura tego rejestru potokowego ma znaczenie kluczowe. Zapewnia niewrażliwość na zjawisko hazardu, którego źródłem mogą być wewnętrzne układy kombinacyjne, a także, pod pewnymi warunkami, zewnętrzny układ kombinacyjny realizujący zasadniczą funkcję przetwarzania danych.
Stan techniki został pokazany na rysunku na schematach blokowych, na którym fig. 1 przedstawia typową realizację synchroniczną układu cyfrowego, zaś fig. 2 - znaną realizację asynchroniczną układu cyfrowego, analogicznego do przedstawionego na fig. 1 dla realizacji synchronicznej. Z kolei przedmiot wynalazku jest pokazany w przykładach wykonania na rysunku, na którym fig. 1 przedstawia asynchroniczny układ cyfrowy według wynalazku na schemacie blokowym, fig. 2 - rejestr potokowy tego asynchronicznego układu cyfrowego na schemacie szczegółowym, fig. 3 - asynchroniczny układ cyfrowy w wykonaniu z jednowejściowym układem kombinacyjnym i członem opóźniającym na schemacie ogólnym, fig. 4 - asynchroniczny układ cyfrowy w wykonaniu z jednowejściowym układem kombinacyjnym i członem opóźniającym na schemacie ogólnym, fig. 5 - wyniki symulacji czasowej asynchronicznego układu cyfrowego w wykonaniu pokazanym na fig. 4, zaś fig. 6 i 7 przedstawiają jako przykład zastosowania wynalazku 8-bitowy mikrokontroler zgodny z Picoblaze firmy Xilinx, odpowiednio w wersji synchronicznej i asynchronicznej, na schematach blokowych. Oznaczenia użyte w tekście opisu, zastrzeżeń i skrótu, odnoszące się do rysunku, obejmują fig. I, II z opisu stanu techniki oraz fig. 1-5 z opisu przykładu wykonania wynalazku, natomiast oznaczenia na fig. 6 i 7 dotyczących zastosowania wynalazku, nie zostały użyte w tym tekście.
W sposobie asynchronicznego przetwarzania danych cyfrowych, według wynalazku w przykładach wykonania, moduły potokowe MP łączy się w potoku między sobą dwubitową magistralą sterującą MS, przenoszącą sygnały żądania przekazania Req i potwierdzenia odbioru Ack, do wykonania operacji przekazania i odbioru danych, dla co najmniej jednego układu kombinacyjnego CL, CL1, CL2 umieszczonego pomiędzy dwoma modułami potokowymi MP. Sygnał żądania przekazania Req przesyła się z poprzedniego do następnego modułu potokowego MP, zaś sygnału potwierdzenia odbioru Ack z tego następnego do tego poprzedniego modułu potokowego MP. Wewnętrzną magistralę wejściową MI1, MI2 danych dla bieżącego układu kombinacyjnego CL1, CL2 łączy się z wyjściem równoległym QO danych poprzedniego modułu potokowego MP. Z kolei wewnętrzną magistralę wyjściową MO1, MO2 z danymi z tego bieżącego układu kombinacyjnego CL1, CL2 łączy się z wejściem równoległym DI danych następnego modułu potokowego MP. W pamięci wewnętrznej modułu potokowego MP zapisuje się stan jego wyjścia równoległego QO danych.
Jako moduł potokowy MP stosuje się asynchroniczny rejestr potokowy APR w postaci pierwszego, drugiego albo trzeciego rejestru potokowego APRI, APR2, APR3, który wyzwala się różnicą danych pomiędzy danymi na jego wejściu równoległym DI a zapamiętanym, w pamięci wewnętrznej tego rejestru potokowego APR, stanem jego wyjścia równoległego QO danych. Wyzwolenie bieżącego rejestru potokowego APR koreluje się z sygnałem żądania przekazania Req danych z poprzedniego rejestru potokowego APR i sygnałem potwierdzenia odbioru Ack danych z następnego rejestru potokowego APR.
W innym wykonaniu sposobu według wynalazku przekazanie sygnału żądania przekazania Req z poprzedniego rejestru potokowego APR, poprzedzającego bieżący układ kombinacyjny CL, CL1, CL2, do następnego rejestru potokowego APR, następującego po tym bieżącym układzie kombinacyjnym CL, CL1, CL2 wykonuje się poprzez co najmniej jeden zewnętrzny rejestr potokowy A_APRI, ... , A_APRi o budowie podobnej jak rejestru potokowego APR. W tym przypadku wyjście równoległe QO i wejście równoległe DI danych następnego rejestru potokowego APR łączy się dwubitową magistralą wtórną ME danych poprzez układ inkrementacji DIN, trzecie wejście zespolone D3 i trzecie wyjście zespolone Q3 dwubitowego zespołu trzecich przerzutników DFF3 typu D oraz dwubitowe wejście równoległe DI i dwubitowe wyjście równoległe QO danych zewnętrznego rejestru potokowego A_APRI,... , A_APRi.
PL 227 527 B1
Sygnał żądania przekazania Req z poprzedniego rejestru potokowego APR podaje się na trzecie wejście taktujące TI3 zespołu trzecich przerzutników DFF3, a na wejście następnego rejestru potokowego APR poprzez zewnętrzny rejestr potokowy A_APRI, ..., A_APRi. Sygnał potwierdzenia odbioru Ack z następnego rejestru potokowego APR podaje się równolegle na wejścia poprzedniego rejestru potokowego APR i zewnętrznego rejestru potokowego A_APRI,..., A_APRi.
W kolejnym wykonaniu sposobu według wynalazku, w przypadku wielowejściowego układu kombinacyjnego CF i co najmniej jednym opóźniającym zewnętrznym rejestrem potokowym A_APRI,..., A_APRi, stosuje się osobne wejściowe rejestry potokowe APRI1, APRI2 dla każdego z wejść układu kombinacyjnego CF, a sygnały żądania przekazania Req z tych wejściowych rejestrów potokowych APRI1, APRI2 podaje się poprzez wielowejściową czwartą bramkę G4 typu AND na trzecie wejście taktujące T13 zespołu trzecich przerzutników DFF3 i wejście zewnętrznego rejestru potokowego A_APRI, ..., A_APRi.
Asynchroniczny układ cyfrowy do asynchronicznego przetwarzania danych cyfrowych, według wynalazku w przykładach wykonania, jest zbudowany w strukturze FPGA oraz zawiera moduły potokowe MP połączone szeregowo w potoku między sobą dwubitową magistralą sterującą MS, przenoszącą sygnały żądania przekazania Req i potwierdzenia odbioru Ack, do wykonania operacji przekazania i odbioru danych, dla co najmniej jednego układu kombinacyjnego CF umieszczonego pomiędzy dwoma modułami potokowymi MP, przy czym sygnał żądania przekazania Req jest przesyłany z poprzedniego do następnego modułu potokowego MP, zaś sygnał potwierdzenia odbioru Ack z tego następnego do tego poprzedniego modułu potokowego MP. Asynchroniczny układ cyfrowy posiada magistralę pierwotna MD danych, która w przykładzie wykonania jest złożona z pierwszej zewnętrznej magistrali wejściowej MA, pierwszej i drugiej wewnętrznej magistrali wejściowej MI1, MI2, pierwszej i drugiej wewnętrznej magistrali wyjściowej MO1, MO2 oraz zewnętrznej magistrali wyjściowej MY. Wewnętrzna magistrala wejściowa MI1, MI2 danych dla bieżącego układu kombinacyjnego CL jest połączona z wyjściem równoległym QO danych poprzedniego modułu potokowego MP. Wewnętrzna magistrala wyjściowa MO1, MO2 z danymi z bieżącego układu kombinacyjnego CL1, CL2 jest połączona z wejściem równoległym DI danych następnego modułu potokowego MP. Moduł potokowy MP posiada blok pamięci wewnętrznej stanu jego wyjścia równoległego QO danych w postaci zespołu pierwszych przerzutników DFF1 typu D, połączonego pierwszym wejściem zespolonym DI danych z wejściem równoległym DI modułu potokowego MP i pierwszym wyjściem zespolonym Q1 danych połączonym z wyjściem równoległym QO tego modułu potokowego MP.
Moduł potokowy MP asynchronicznego układu cyfrowego jest w postaci asynchronicznego rejestru potokowego APR zawierającego pierwszy komparator CMP1 z wejściami porównywanymi CI1 i CI2 o krotności pokrywającej krotność wejścia równoległego DI danych i wyjścia równoległego QO danych rejestru potokowego APR oraz połączonymi odpowiednio z tym wejściem równoległym DI i wyjściem równoległym QO. Pierwsze wyjście sygnałowe YS1 pierwszego komparatora CMP1 jest połączone poprzez wielowejściową pierwszą bramkę G1 typu AND z pierwszym wejściem taktującym Tli zespołu pierwszych przerzutników DFF1 typy D. Ponadto, rejestr potokowy APR posiada wejście żądania RI i wyjście żądania RO dla sygnałów żądania przekazania Req oraz wejście potwierdzenia A1 i wyjście potwierdzenia AO dla sygnałów potwierdzenia odbioru Ack. Wejście żądania RI jest połączone z wejściem zezwalającym EN pierwszego komparatora CMP1 i osobnym wejściem pierwszej bramki G1, zaś wejście potwierdzenia A1 z kolejnym wejściem pierwszej bramki G1, a wyjście żądania RO i wyjście potwierdzenia AO są połączone z wyjściem tej pierwszej bramki G1. Połączenie wejścia równoległego DI danych z pierwszym wejściem zespolonym DI zespołu pierwszych przerzutników DFF1 typu D jest poprzez pierwszy multiplekser MUX 1 z pierwszym i drugim wejściem przełączanym M1, M2, o krotności pokrywającej krotność wejścia równoległego DI i wyjścia równoległego QO tego rejestru potokowego APR oraz połączonymi odpowiednio z tym wejściem równoległym DI i wyjściem równoległym QO. Pierwsze wyjście multipleksowe YI pierwszego multipleksera MUX1 jest połączone z pierwszym wejściem zespolonym DI danych zespołu pierwszych przerzutników DFF1. Z kolei pierwsze wejście przełączające SI pierwszego multipleksera MUX1 jest połączone z pierwszym wyjściem sygnałowym YS1 pierwszego komparatora CMP 1. Rejestr potokowy APR posiada drugi komparator CMP2 z wejściami porównywanymi C3 i C4, o krotności pokrywającej krotność wejścia równoległego DI i wyjścia równoległego QO tego rejestru potokowego APR oraz połączonymi odpowiednio z pierwszym wyjściem multipleksowym YI pierwszego multipleksera MUX1 rejestru potokowego APR i jego wyjściem równoległym QO, a drugie wyjście sygnałowe YS2 drugiego komparatora CMP2 jest połączone z następnym wejściem pierwszej bramki G1 rejestru potokowego APR. Ponadto rejestr potokowy APR zawiera drugi i
PL 227 527 B1 trzeci multiplekser MUX2, MUX3, drugi przerzutnik DFF2 typu D oraz drugą i trzecią bramkę G2 i G3 typu NOT. Drugi multiplekser MUX2 z dwoma jednobitowymi wejściami ustawionymi na „1” i „0” jest połączony swym wyjściem z drugim wejściem jednobitowym D2 danych drugiego przerzutnika DFF2. Trzeci multiplekser MUX3 z dwoma jednobitowymi wejściami jest połączony swym wyjściem z drugim wejściem taktującym TI2 tego drugiego przerzutnika DFF2. Wyjście pierwszej bramki G1 jest połączone poprzez drugą bramkę G2 z pierwszym wejściem trzeciego multipleksera MUX3, a jego drugie wejście z wejściem potwierdzenia A1 rejestru potokowego APR. Drugie wyjście jednobitowe Q2 drugiego przerzutnika DFF2 jest połączone z wejściami przełączającymi drugiego i trzeciego multipleksera MUX2 i MUX3 oraz wyjściem żądania RO rejestru potokowego APR i przez trzecią bramkę G3 z wejściem jego pierwszej bramki G1, do którego jest połączone, poprzez trzeci multiplekser MUX3 i drugi przerzutnik DFF2, wejście potwierdzenia A1 rejestru potokowego APR.
W innym wykonaniu asynchronicznego układu cyfrowego według wynalazku połączenie wyjścia żądania RO poprzedniego rejestru potokowego APR, poprzedzającego bieżący układ kombinacyjny CL, z wejściem żądania RI następnego rejestru potokowego APR, następującego po tym bieżącym układzie kombinacyjnym CL, jest realizowane przez wejście żądania RI i wyjście żądania RO co najmniej jednego zewnętrznego rejestru potokowego A_APRI,..., A_APRi, którego budowa jest identyczna jak rejestru potokowego APR. Wyjście równoległe QO i wejście równoległe DI danych następnego rejestru potokowego APR są połączone dwubitową magistralą wtórną ME danych poprzez układ inkrementacji DIN, trzecie wejście zespolone D3 i trzecie wyjście zespolone Q3 dwubitowego zespołu trzecich przerzutników DFF3 typu D oraz dwubitowe wejście równoległe DI i dwubitowe wyjście równoległe QO danych zewnętrznego rejestru potokowego A_APRI,..., A_APRi. Wyjście żądania RO poprzedniego rejestru potokowego APR jest dołączone do trzeciego wejścia taktującego T13 zespołu trzecich przerzutników DFF3, a do wejścia żądania RI następnego rejestru potokowego APR poprzez wejście żądania RI i wyjście żądania RO zewnętrznego rejestru potokowego A_APRI, ..., A_APRi. Wyjście potwierdzenia AO następnego rejestru potokowego APR jest połączone równolegle z wejściem potwierdzenia A1 poprzedniego rejestru potokowego APR i zewnętrznego rejestru potokowego A_APRI,..., A_APRi.
W kolejnym wykonaniu asynchronicznego układu cyfrowego według wynalazku, jest on wyposażony w pierwszą i drugą zewnętrzną magistralę wejściową MA, MB, wielowejściowy układ kombinacyjny CL i co najmniej jeden opóźniający zewnętrzny rejestr potokowy A_APRI,..., A_APRi. Asynchroniczny układ posiada osobne wejściowe rejestry potokowe APRI1, APRI2 połączone na wejściach z osobną zewnętrzną magistralą wejściową MA, MB oraz na wyjściu z osobnym wejściem układu kombinacyjnego CL, a wyjścia żądania RO wejściowych rejestrów potokowych APRI1, APRI2 są dołączone do trzeciego wejścia taktującego T13 zespołu trzecich przerzutników DFF3 poprzez wielowejściową czwarta bramkę G4 typu AND. Ponadto wyjście czwartej bramki jest połączone z wejściem żądania RI następnego rejestru potokowego APR poprzez wejście żądania RI i wyjście żądania RO zewnętrznego rejestru potokowego A_APRI,..., A_APRi. Wyjście potwierdzenia AO z następnego rejestru potokowego APR jest połączone równolegle z wejściami potwierdzenia AI poprzedniego rejestru potokowego APR i zewnętrznego rejestru potokowego A_APRI,..., A_APRi.
Ogólna idea działania poszczególnych stopni potoku w asynchronicznym układzie cyfrowym według wynalazku, pokazanym na fig. 1, jest podobna do wykorzystanej w znanej realizacji asynchronicznej układu cyfrowego pokazanej na fig. II. Wymiana danych pomiędzy poszczególnymi stopniami jest determinowana poprzez sygnały sterujące podawane na wejście żądania RI (Request Input) i wejście potwierdzenia Al (Acknowledge Input) oraz odbierane z wyjścia żądana RO (Request Output) i wyjścia potwierdzenia AO (Acknowledge Output). Jednak ważną cechą jest brak konieczności stosowania układów opóźniających Delay. W asynchronicznym rejestrze potokowym APRI, APR2, APR3 jest wykrywana zmiana stanu magistrali pierwotnej MD na jego zewnętrznym wejściu równoległym DI i na tej podstawie są generowane odpowiednie sygnały sterujące. Zachowanie asynchronicznego układu cyfrowego zbudowanego przy użyciu zaproponowanych rejestrów potokowych, APRI, APR2, APR3 jest zatem nieco podobne do zachowania pewnej klasy układów asynchronicznych, zwanej układami quasi niewrażliwymi na opóźnienia (QDI - Quasi Delay Insensitive). Jednak takie układy zazwyczaj konstruowane są z użyciem kodowania danych typu podwójna szyna (dual rail) co utrudnia ich syntezę przy pomocy typowych narzędzi stosowanych dla FPGA. W przypadku rozwiązań według wynalazku właściwość quasi niewrażliwości na opóźnienia, jednak w pewnym ograniczonym zakresie, osiągnięto stosując kodowanie bundled data, dzięki czemu jest stosowana taka sama metodyka projektowania jak dla układów synchronicznych.
PL 227 527 B1
Na fig. 2 przedstawiono architekturę kluczowego elementu asynchronicznego układu cyfrowego według wynalazku, to jest asynchronicznego rejestru potokowego APR, o budowie identycznej jak pierwszego, drugiego i trzeciego rejestru potokowego APR1, APR2, APR3. Pogrubionymi liniami na schemacie przedstawiono wielobitowe magistrale danych. Każdy z rejestrów potokowych APR składa się z wielobitowego pierwszego multipleksera MUX1, dwóch jednobitowych multiplekserów MUX2 i MUX3, każdy o dwóch wejściach danych, dwóch komparatorów CMP1 i CPM2 realizujących operację porównania stanu swych dwóch wielobitowych wejść porównywanych, odpowiednio pierwszego i drugiego CI1 i CI2 oraz trzeciego i czwartego CI3 i CI4 (gdy ich stany są różne na wewnętrznym wyjściu sygnałowym YS1 albo YS2 odpowiedniego komparatora CMP1 albo CPM2 pojawia się stan wysoki), zespołu pierwszych przerzutników DFF1 typu D, pierwszej bramki G1 typu AND, dwóch bramek G2 i G3 typu NOT oraz pojedynczego drugiego przerzutnika DFF2 typu D. Dzięki zastosowaniu asynchronicznych rejestrów potokowych APR o opisanej architekturze jest możliwa realizacja dowolnego układu cyfrowego jako układu asynchronicznego.
Działanie asynchronicznego rejestru potokowego APR jest następujące. Jakakolwiek reakcja na sygnał wejściowy występujący na jego zewnętrznym wejściu równoległym DI danych ma miejsce tylko, gdy jego wejście żądania RI znajdzie się w stanie wysokim, co oznacza zgłoszenie żądania wykonania operacji. Jeżeli tak jest, wówczas w pierwszym komparatorze CMP1 jest monitorowany stan magistrali na wejściu równoległym DI rejestru potokowego APR i jeżeli okaże się, że stan ten jest różny od stanu magistrali na jego zewnętrznym wyjściu równoległym Q0 danych, na wewnętrznym pierwszym wyjściu sygnałowym YS1 pierwszego komparatora CMP1 pojawia się stan wysoki, podawany na pierwsze wejście przełączające S1 pierwszego multipleksera MUX1, co powoduje jego przełączenie i udostępnienie na jego wewnętrznym pierwszym wyjściu multipleksowym YI danych z wejścia równoległego DI danych rejestru potokowego APR. To z kolei powoduje zadziałanie drugiego komparatora CMP2 i spełnienie wszystkich warunków do włączenia pierwszej bramki G1 typu AND. Pojawienie się zbocza narastającego na wyjściu pierwszej bramki G1, które połączone jest z pierwszym wejściem taktującym Tl1 zespół pierwszych przerzutników DFF1, spowoduje zapamiętanie danych (stanu magistrali zewnętrznego wejścia równoległego DI danych rejestru potokowego APR) w zespole pierwszych przerzutników DFF1 i jednocześnie zmianę stanu drugiego wyjścia jednobitowego Q2 drugiego przerzutnika DFF2 na wysoki, a tym samym stanu wyjścia żądania RO rejestru potokowego APR, to znaczy następuje aktywacja wejścia żądania RI następnego rejestru potokowego APR do wykonania operacji przez następny stopień potoku. Wyłączenie pierwszej bramki G1 następuje wówczas, gdy spełniony zostanie jeden z następujących warunków: wyłączone zostaną komparatory CMP1 lub CMP2, co następuje wówczas, gdy stan magistrali zewnętrznego wejścia równoległego DI danych rejestru potokowego APR jest identyczny jak magistrali jego zewnętrznego wyjścia równoległego QO danych) lub drugie wyjście jednobitowe Q2 drugiego przerzutnika DFF2 przejdzie w stan wysoki. Deaktywacja wyjściowego sygnału żądania RO bieżącego modułu dla wykonania operacji przez następny moduł nastąpi wówczas, gdy wejściowy sygnał potwierdzenia Al w bieżącym module przyjmie stan wysoki, co jak już wspomniano ma miejsce po aktywacji wyjścia żądania RO rejestru potokowego APR i aktywacji wejścia żądania RI rejestru potokowego APR następnego stopienia potoku.
W układach asynchronicznych nie mogą być zaniedbywane takie zjawiska jak hazard. W przypadku asynchronicznego układu cyfrowego według wynalazku potencjalnym źródłem impulsów hazardu logicznego są wewnętrzne komparatory CMP1 i CMP2 asynchronicznego rejestru potokowego APR oraz zewnętrzne układy kombinacyjne CL1, CL2. Jednak analizując strukturę rejestru potokowego APR pokazanego na fig. 2 można wykazać, że w komparatorach CMP1 i CMP2 może wystąpić jedynie hazard dynamiczny. Dalej można wykazać, że hazard ten nie wpływa negatywnie na działanie rejestru potokowego APR, jeżeli czas impulsu hazardu dynamicznego jest mniejszy od sumy czasów propagacji drugiego komparatora CMP2 i pierwszej bramki G1 typu AND (wraz z opóźnieniami wnoszonymi przez połączenia wewnątrz struktury FPGA), pomniejszonej o czas ustalania danych (setup time) zespołu pierwszych przerzutników DFF1. Jeżeli czas trwania impulsu hazardu dynamicznego jest większy od sumy czasów propagacji drugiego komparatora CMP2 i pierwszej bramki G1 wówczas również nie spowoduje to negatywnych skutków. Błędne działanie rejestru potokowego APR może zatem pojawić się tylko w bardzo wąskim oknie czasowym o szerokości czasu ustalania danych dla zespołu pierwszych przerzutników DFF 1. Dodatkowo realne impulsy hazardu dynamicznego są jednak znacznie krótsze niż pierwszy z wyżej wymienionych warunków. Oznacza to bardzo małe prawdopodobieństwo błędnego działania układu na skutek pojawienia się impulsów hazardu dynamicznego w wewnętrznych komparatorach CMP1 i CMP2 rejestru potokowego APR.
PL 227 527 B1
Drugim źródłem hazardu, mogącym potencjalnie powodować nieprawidłowe działanie rejestru potokowego APR są zewnętrzne układy kombinacyjne CL1, CL2, realizujące zasadniczą funkcję przetwarzania danych w asynchronicznym potoku. Jednak w takim przypadku rejestr APR wykazuje pewną odporność na impulsy hazardowe. Również w tym przypadku można wykazać, że jeżeli czas stabilizacji impulsów hazardu na zewnętrznym wejściu danych DI rejestru potokowego APR jest krótszy niż suma czasów propagacji drugiego komparatora CMP2 i pierwszej bramki G1 (wraz z opóźnieniami wnoszonymi przez połączenia wewnątrz struktury FPGA) pomniejszonej o czas ustalania danych zespołu pierwszych przerzutników DFF1, wówczas wystąpienie takich impulsów nie spowoduje zakłócenia pracy rejestru potokowego APR.
Opisana wyżej odporność rejestru potokowego APR na zjawiska hazardu jest istotną właściwością jego architektury. Dlatego też, w przeciwieństwie do wielu znanych układów opisywanych w literaturze, nie zachodzi konieczność dokonywania specjalnych zabiegów ingerencji w sposób działania narzędzi syntezy w układach FPGA (przy programowaniu asynchronicznego układu według wynalazku), po to by eliminować niepożądane zjawiska hazardu.
W przypadku stosunkowo nieskomplikowanych układów kombinacyjnych CL1, CL2, realizujących funkcję przetwarzania danych wewnątrz asynchronicznego potoku, w celu realizacji asynchronicznego układu cyfrowego według wynalazku wystarczy wykorzystać schemat połączeń rejestrów potokowych APR z fig. 1. Jednak jeżeli czas stabilizacji impulsów hazardowych (lub ogólnie stabilizacji danych na wyjściu układu kombinacyjnego CL1, CL2, wynikający ze złożonej struktury takiego układu) jest dłuższy niż wspomniany wcześniej warunek, wówczas należy zastosować układy połączenia rejestrów potokowych APR, przykładowo pokazanych na fig. 3 i 4.
Układ kombinacyjny CL1 asynchronicznego układu elektronicznego pokazanego w przykładzie wykonania na fig. 3 ma pierwszą wewnętrzną magistralę wejściową MI1 (n-bitową) danych i pierwszą wewnętrzną magistralę wyjściową MO1 (m-bitową) danych. Pierwsza wewnętrzna magistrala wejściowa MI1 pierwszego układu kombinacyjnego CL 1 jest dołączona do wyjścia równoległego QO poprzedniego, pierwszego rejestru potokowego APRI i podobnie pierwsza wewnętrzna magistrala wyjściowa MO1 pierwszego układu kombinacyjnego CL1 jest dołączona do wejścia równoległego DI danych następnego, drugiego rejestru potokowego APR2, analogicznie jak pokazano na fig. 1, przy czym budowa pierwszego i drugiego rejestru potokowego APRI i APR2 jest identyczna jak rejestru potokowego APR, pokazanego na fig. 2. Jednak teraz wejście żądania RI drugiego rejestru potokowego APR2 nie jest połączone bezpośrednio z wyjściem żądania RO pierwszego rejestru potokowego APRI, lecz przez dodatkowy łańcuch zewnętrznych rejestrów potokowych A_APRI, A_APRi, których budowa jest identyczna jak rejestru potokowego APR, a jedynie liczba bitów wejścia równoległego DI i wyjścia równoległego QO danych jest tu zredukowana do 2. Łańcuch ten pełni rolę układu opóźniającego Delay pokazanego w opisie stanu techniki na fig. II dla opóźnienia sygnału żądania przekazania Req danych. Dobór odpowiedniej wartości opóźnienia jest dokonywany w wyniku przeprowadzania symulacji czasowej, poprzez ustalenie liczby połączonych w łańcuch zewnętrznych rejestrów potokowych A_APRI,..., A_APRi. Dodatkowo, istotną rolę odgrywa tutaj układ złożony z 2-bitowego zespołu trzecich przerzutników DFF3 typu D oraz układu inkrementacji DIN, realizującego arytmetyczną funkcję inkrementacji 2-bitowej wartości znajdującej się na wejściu tego układu inkrementacji DIN. Takie połączenie tego dodatkowego układu jest konieczne ze względu na właściwość rejestru potokowego APR, taką, że reaguje on tylko na dane pojawiające się na jego wejściu równoległym DI danych, których wartość jest inna niż w nim zapamiętana w bloku pamięci wewnętrznej stanu jego wyjścia równoległego QO. Wartość 2-bitowa, występująca na wejściu układu inkrementacyjnego DIN, pobierana jest z wyjścia równoległego QO drugiego rejestru potokowego APR2 jako dwa najbardziej znaczące bity tego wyjścia równoległego QO. Podobnie wartość pojawiająca się na 2-bitowym wyjściu równoległym QO zewnętrznego rejestru potokowego A_APRi łączona jest z m-bitową wartością występującą na pierwszej wewnętrznej magistrali wyjściowej MO1 układu kombinacyjnego CL1, w taki sposób, że wartość z wyjścia równoległego QO zewnętrznego rejestru potokowego A_APRi stanowi dwa najbardziej znaczące bity, a wartość pierwszej wewnętrznej magistrali wyjściowej MO1 układu kombinacyjnego CL, CL1 stanowi m najmniej znaczących bitów. Tak utworzona m+2 bitowa wartość podawana jest na wejście równoległe DI drugiego rejestru potokowego APR2.
Układ kombinacyjny CL, CL1, asynchronicznego układu cyfrowego pokazanego w przykładzie wykonania na fig. 4 ma dwie magistrale wejściowe danych: pierwszą częściową magistralę wejściową MIC1 (n1-bitową) oraz drugą częściową magistralę wejściową MIC2 (n2-bitową) i jedną pierwszą wewnętrzną magistralę wyjściową MO1 (m-bitową) danych. Częściowe magistrale wejściowe MIC1, MIC2
PL 227 527 B1 pierwszego układu kombinacyjnego CL1 są dołączone do zewnętrznych wyjść równoległych QO pierwszego i drugiego wejściowego rejestru potokowego APRI1 i APRI2, przy czym budowa wejściowych rejestrów potokowych APRI1 i APRI2 jest identyczna jak rejestru potokowego APR, pokazanego na fig. 2. Podobnie pierwsza wewnętrzna magistrala wyjściowa MO1 pierwszego układu kombinacyjnego jest dołączona do zewnętrznego wejścia równoległego DI danych następnego, drugiego rejestru potokowego APR2, analogicznie jak ma to miejsce w przypadku pokazanym na fig. 1. Jednak teraz wejście żądania RI drugiego rejestru potokowegoAPR2 nie jest połączone bezpośrednio z wyjściami żądania RO wejściowych rejestrów potokowych APRI1 i APRI2 lecz te wyjścia żądania RO są połączone z wejściem żądania RI drugiego rejestru potokowegoAPR2 poprzez czwartą bramkę G4 typu AND oraz, podobnie jak w poprzednim wykonaniu asynchronicznego układu, przez dodatkowy łańcuch zewnętrznych rejestrów potokowych A_APRI,... A_APRi, których budowa jest identyczna jak rejestru potokowego APR z fig. 2, a jedynie liczba bitów wejścia równoległego DI danych i wyjścia równoległego danych QO jest tu zredukowana do 2. Łańcuch ten pełni rolę układu opóźniającego Delay pokazanego w opisie stanu techniki na fig. II dla opóźnienia sygnału żądania przekazania Req danych. Dobór odpowiedniej wartości opóźnienia musi być dokonany w wyniku przeprowadzania symulacji czasowej, poprzez ustalenie liczby połączonych w łańcuch zewnętrznych rejestrów potokowych A_APRI,..., A_APRi. Istotną rolę odgrywa tutaj dodatkowy układ złożony z 2-bitowego zespołu trzecich przerzutników DFF3 typu D oraz układu inkrementacji DIN, realizującego arytmetyczną funkcję inkrementacji 2-bitowej wartości znajdującej się na wejściu tego układu inkrementacji DIN. Takie połączenie tego dodatkowego układu, podobnie jak w poprzednim wykonaniu z pojedynczym pierwszym rejestrem APRI, jest konieczne ze względu na właściwość rejestru potokowego APR taką, że reaguje on tylko na dane pojawiające się na jego wejściu równoległym DI danych, których wartość jest inna niż w nim zapamiętana w bloku pamięci wewnętrznej stanu jego wyjścia równoległego QO.
Na fig. 5 przedstawiono wyniki symulacji czasowej asynchronicznego układu cyfrowego, analogicznego do pokazanego na fig. 4, a wykonującego mnożenie dwóch 8-bitowych liczb całkowitych. Wspomniane liczby całkowite są podawane odpowiednio na częściowe magistrale wejściowe MIC1 i MIC2 pierwszego układu kombinacyjnego CL1, który w tym przypadku pełni funkcję mnożenia. Algorytm mnożenia jest analogiczny jak przy pomocy kartki papieru i ołówka. Jak wynika w wykresu czasowego z fig. 5, czas stabilizacji danych na pierwszej wewnętrznej magistrali wyjściowej MO1 pierwszego układu kombinacyjnego CL1 wynosi tutaj około 10 ns, stąd zachodzi konieczność zastosowania trzech zewnętrznych rejestrów potokowych A_APRI,..., A_APRi, połączonych w łańcuchu realizującym opóźnienie sygnału żądania przekazania Req, do wykonania operacji przekazania danych do drugiego rejestru potokowego APR2.
Jako przykład wykorzystania asynchronicznego układu cyfrowego według wynalazku został zaprojektowany asynchroniczny mikrokontroler, zgodny z 8-bitowym mikrokontrolerem Picoblaze oferowanym przez firmę Xilinx. Zaprojektowano najpierw wersję synchroniczną tego mikrokontrolera, a następnie na tej podstawie wersję asynchroniczną. Architektura obydwu wersji pokazana jest odpowiednio na fig. 6 i 7. Dodatkowo, zaprojektowana wersja synchroniczna charakteryzuje się dwukrotnie szybszym rdzeniem od pierwowzoru mikrokontrolera oferowanego przez firmę Xilinx (cykl maszynowy mikrokontrolera trwa tylko jeden takt zegara, podczas gdy dla mikrokontrolera firmy Xilinx liczba taktów zegara wynosi dwa). Obydwie wersje mikrokontrolera zostały opisane w języku opisu sprzętu Verilog.
Jak pokazano na fig. 7, asynchroniczna wersja mikrokontrolera Picoblaze ma architekturę zbliżoną do wersji synchronicznej, a różni się wprowadzeniem czterech asynchronicznych rejestrów potokowych. Dwa pierwsze rejestry potokowe odpowiedzialne są za ustalenie następnej wartości licznika rozkazów (adresu kolejnego rozkazu do pobrania) i pobrania rozkazu z pamięci programu. Pamięć programu zrealizowana jest w układzie FPGA jako tak zwana pamięć block RAM (blok dedykowanej pamięci RAM wewnątrz FPGA). Pamięć ta jest pamięcią synchroniczną, dlatego też jako sygnał zegarowy dla tej pamięci został wykorzystany sygnał z wyjścia potwierdzenia drugiego rejestru potokowego. Kolejny, trzeci rejestr potokowy ustala dane na wejściu jednostki arytmetyczno-logicznej, a czwarty rejestr potokowy odpowiada za zapamiętanie wyniku operacji jednostki arytmetyczno-logicznej. Wynik ten, zależnie od realizowanej instrukcji, może być zapisany w zespole szesnastu 8-bitowych rejestrów wewnętrznych mikrokontrolera. Zapis danych do tych rejestrów odbywa się w czasie narastającego zbocza sygnału generowanego przez sygnał z wyjścia potwierdzenia pierwszego rejestru potokowego.
Weryfikację działania asynchronicznego mikrokontrolera przeprowadzono zarówno wykonując symulacje czasowe dla implementacji w układach FPGA Xilinx z rodziny Spartan 3 (XC3S700A) i Spar16
PL 227 527 B1 tan 6 (XC6SLX9), a także fizycznie implementując mikrokontroler na płytach ewaluacyjnych z tymi układami FPGA. Sprawdzono też działanie mikrokontrolera dla układów FPGA innego producenta niż Xilinx - wybrano płytę ewaluacyjną z układem Lattice MachX02. W każdym przypadku potwierdzono prawidłowe działanie mikrokontrolera, gdzie wykonywał on program testowy wyliczający liczby pierwsze w wyznaczonym przedziale. Stwierdzono również zmniejszenie poboru mocy dynamicznej o około 20% w przypadku asynchronicznej wersji mikrokontrolera.
Pokazany przykład asynchronicznej realizacji dość złożonego układu cyfrowego, jakim jest mikrokontroler, potwierdza skuteczność opracowanego asynchronicznego układu cyfrowego według wynalazku. Implementacja asynchronicznych układów cyfrowych, według wynalazku, w strukturach FPGA nie wymaga stosowania żadnych dodatkowych zabiegów ze strony projektanta i przebiega w identyczny sposób jak podczas projektowania układów synchronicznych. Dodatkową zaletą jest również to, że całkowity wzrost zapotrzebowania na zasoby logiczne układu FPGA - w porównaniu z wersją synchroniczną projektowanego układu, jest stosunkowo niewielki, mniejszy od 15%.
Wykaz oznaczeń
Ack - potwierdzenie odbioru,
AI - wejście potwierdzenia,
AO - wyjście potwierdzenia,
APR - rejestr potokowy,
APRI, APR2, APR3 - pierwszy, drugi, trzeci rejestr potokowy,
APR_I1, APR_I2 - pierwszy, drugi wejściowy rejestr potokowy,
A_APRI, ... A_APRi - pierwszy,..., i-ty zewnętrzny rejestr potokowy,
CI1, CI2, CI3, CI4 - pierwsze, drugie, trzecie, czwarte wejście porównywane;
CL - układ kombinacyjny,
CL1, CL2 - pierwszy, drugi układ kombinacyjny,
CLK - zewnętrzny sygnał taktujący,
CLK1, CLK2, CLK3 - pierwszy, drugi, trzeci, lokalny sygnał taktujący,
CMP1, CMP2 - pierwszy, drugi komparator,
CTL - układ sterujący,
DI, D3 - pierwsze, trzecie wejście zespolone,
D2 - drugie wejście jednobitowe,
Delay - układ opóźniający,
DFF1, DFF2, DFF3 - pierwszy, drugi, trzeci przerzutnik,
DI - wejście równoległe,
DIN - układ inkrementacyjny,
EN - wejście zezwalające,
G1, G2, G3, G4 - pierwsza, druga, trzecia, czwarta bramka,
M1, M2 - pierwsze, drugie wejście przełączane,
MA, MB - pierwsza, druga zewnętrzna magistrala wejściowa,
MD - magistrala pierwotna,
ME - magistrala wtórna,
MI1, MI2 - pierwsza, druga wewnętrzna magistrala wejściowa,
MIC1, MIC2 - pierwsza, druga częściowa magistrala wejściowa,
MO1, MO2 - pierwsza, druga wewnętrzna magistrala wyjściowa,
MP - moduł potokowy,
MS - magistrala sterująca,
MUX1, MUX2, MUX3 - pierwszy, drugi, trzeci multiplekser,
MY - zewnętrzna magistrala wyjściowa,
Q1, Q3 - pierwsze, trzecie wyjście zespolone,
Q2 - drugie wyjście jednobitowe,
QO - wyjście równoległe,
R1, R2, R3 - pierwszy, drugi, trzeci lokalny przerzutnik,
Reg - żądanie przekazania,
RI - wejście żądania,
RO - wyjście żądania,
S1 - pierwsze wejście przełączające,
TI1, TI2, TI3 - pierwsze, drugie, trzecie wejście taktujące,
PL 227 527 B1
YI - pierwsze wyjście multipleksowe,
YS1, YS2 - pierwsze, drugie wyjście sygnałowe.
Claims (11)
1. Sposób asynchronicznego przetwarzania danych cyfrowych, w którym moduły potokowe łączy się w potoku między sobą co najmniej dwubitową magistralą sterującą, przenoszącą sygnały żądania przekazania i potwierdzenia odbioru, do wykonania operacji przekazania i odbioru danych, dla co najmniej jednego układu kombinacyjnego umieszczonego pomiędzy dwoma modułami potokowymi, przy czym sygnał żądania przekazania przesyła się z poprzedniego do następnego modułu potokowego, zaś sygnału potwierdzenia odbioru z tego następnego do tego poprzedniego modułu potokowego, a ponadto wewnętrzną magistralę wejściową danych dla bieżącego układu kombinacyjnego łączy się z wyjściem równoległym danych poprzedniego modułu potokowego, zaś wewnętrzną magistralę wyjściową z danymi z tego bieżącego układu kombinacyjnego łączy się z wejściem równoległym danych następnego modułu potokowego, przy czym w pamięci wewnętrznej modułu potokowego zapisuje się stan jego wyjścia równoległego danych, znamienny tym, że jako moduł potokowy (MP) stosuje się asynchroniczny rejestr potokowy (APR), który wyzwala się różnicą danych pomiędzy danymi na jego wejściu równoległym (DI) a zapamiętanym, w pamięci wewnętrznej tego rejestru potokowego (APR), stanem jego wyjścia równoległego (QO) danych.
2. Sposób według zastrz. 1, znamienny tym, że wyzwolenie bieżącego rejestru potokowego (APR) koreluje się z sygnałem żądania przekazania (Req) danych z poprzedniego rejestru potokowego (APR).
3. Sposób według zastrz. 1 albo 2, znamienny tym, że wyzwolenie bieżącego rejestru potokowego (APR) koreluje się z sygnałem potwierdzenia odbioru (Ack) danych z następnego rejestru potokowego (APR).
4. Sposób według zastrz. 1 albo 2, albo 3, znamienny tym, że przekazanie sygnału żądania przekazania (Req) z poprzedniego rejestru potokowego (APR), poprzedzającego bieżący układ kombinacyjny (CL), do następnego rejestru potokowego (APR), następującego po tym bieżącym układzie kombinacyjnym (CL) wykonuje się poprzez co najmniej jeden zewnętrzny rejestr potokowy (A APRI, A APRi) o budowie podobnej jak rejestru potokowego (APR), przy czym wyjście równoległe (QO) i wejście równoległe (DI) danych tego następnego rejestru potokowego (APR) łączy się dwubitową magistralą wtórną (ME) danych poprzez układ inkrementacji (DIN), trzecie wejście zespolone (D3) i trzecie wyjście zespolone (Q3) dwubitowego zespołu trzecich przerzutników (DFF3) typu D oraz dwubitowe wejście równoległe (DI) i dwubitowe wyjście równoległe (QO) danych zewnętrznego rejestru potokowego (A_APRI, ..., A_APRi), a ponadto sygnał żądania przekazania (Req) z poprzedniego rejestru potokowego (APR) podaje się na trzecie wejście taktujące (TI3) tego zespołu trzecich przerzutników (DFF3), a na wejście następnego rejestru potokowego (APR) poprzez zewnętrzny rejestr potokowy (A_APRI, ..., A_APRi), zaś sygnał potwierdzenia odbioru Ack z następnego rejestru potokowego (APR) podaje się równolegle na wejścia poprzedniego rejestru potokowego (APR) i zewnętrznego rejestru potokowego (A_APRI,..., A_APRi).
5. Sposób według zastrz. 4, znamienny tym, że w przypadku wielowejściowego układu kombinacyjnego (CL) stosuje się osobne wejściowe rejestry potokowe (APRI1, APRI2) dla każdego z wejść układu kombinacyjnego (CL), a sygnały żądania przekazania (Req) z tych wejściowych rejestrów potokowych (APRI1, APRI2), na trzecie wejście taktujące (TI3) zespołu trzecich przerzutników (DFF3) i wejście zewnętrznego rejestru potokowego (A_APRI, ..., A_APRi), podaje się poprzez wielowejściową czwartą bramkę (G4), korzystnie typu AND.
6. Asynchroniczny układ cyfrowy do asynchronicznego przetwarzania danych cyfrowych, zbudowany zwłaszcza w strukturze FPGA, zawierający moduły potokowe połączone szeregowo w potoku między sobą co najmniej dwubitową magistralą sterującą, przenoszącą sygnały żądania przekazania i potwierdzenia odbioru, do wykonania operacji przekazania i odbioru danych, dla co najmniej jednego układu kombinacyjnego umieszczonego pomiędzy dwoma modułami potokowymi, przy czym sygnał żądania przekazania jest przesyłany z poprzedniego do następnego modułu potokowego, zaś sygnał potwierdzenia odbioru z tego następnego do
PL 227 527 B1 tego poprzedniego modułu potokowego, a ponadto wewnętrzna magistrala wejściowa danych dla bieżącego układu kombinacyjnego jest połączona z wyjściem równoległym danych poprzedniego modułu potokowego zaś wewnętrzna magistrala wyjściowa z danymi z tego bieżącego układu kombinacyjnego jest połączona z wejściem równoległym danych następnego modułu potokowego, przy czym moduł potokowy posiada blok pamięci wewnętrznej stanu jego wyjścia równoległego danych w postaci zespołu pierwszych przerzutników typu D, połączonego pierwszym wejściem zespolonym danych z wejściem równoległym modułu potokowego i pierwszym wyjściem zespolonym danych połączonym z wyjściem równoległym tego modułu potokowego, znamienny tym, że moduł potokowy (MP) jest w postaci asynchronicznego rejestru potokowego (APR) zawierającego pierwszy komparator (CMP1) z wejściami porównywanymi (CII i CI2) o krotności pokrywającej krotność wejścia równoległego (DI) danych i wyjścia równoległego (QO) danych rejestru potokowego (APR) oraz połączonymi odpowiednio z tym wejściem równoległym (DI) i wyjściem równoległym (QO), a pierwsze wyjście sygnałowe (YS1) pierwszego komparatora (CMP1) jest połączone poprzez wielowejściową pierwszą bramkę (G1), korzystnie typu AND, z pierwszym wejściem taktującym (TI1) zespołu pierwszych przerzutników (DFF1) typu D, a ponadto rejestr potokowy (APR) posiada wejście żądania (RI) i wyjście żądania (RO) dla sygnałów żądania przekazania (Req) oraz wejście potwierdzenia (Al) i wyjście potwierdzenia (AO) dla sygnałów potwierdzenia odbioru (Ack), przy czym wejście żądania (RI) jest połączone z wejściem zezwalającym (EN) pierwszego komparatora (CMP1) i osobnym wejściem pierwszej bramki (G1), zaś wejście potwierdzenia (Al) z kolejnym wejściem pierwszej bramki (G1), a wyjście żądania (RO) i wyjście potwierdzenia (AO) są połączone z wyjściem tej pierwszej bramki (G1).
7. Asynchroniczny układ według zastrz. 6, znamienny tym, że w jego rejestrze potokowym (APR) połączenie wejścia równoległego (DI) danych z pierwszym wejściem zespolonym (DI) zespołu pierwszych przerzutników (DFF1) typu D jest poprzez pierwszy multiplekser (MUX1) z wejściami przełączanymi (M1, M2), o krotności pokrywającej krotność wejścia równoległego (DI) i wyjścia równoległego (QO) tego rejestru potokowego (APR), połączonymi odpowiednio z tym wejściem równoległym (DI) i wyjściem równoległym (QO), przy czym pierwsze wyjście multipleksowe (Yl) pierwszego multipleksera (MUX1) jest połączone z pierwszym wejściem zespolonym (DI) danych zespołu pierwszych przerzutników (DFF1), zaś pierwsze wejście przełączające (S1) pierwszego multipleksera (MUX1) jest połączone z pierwszym wyjściem sygnałowym (YS1) pierwszego komparatora (CMP1).
8. Asynchroniczny układ według zastrz. 7, znamienny tym, że jego rejestr potokowy (APR) posiada drugi komparator (CMP2) z wejściami porównywanymi (CI3 i CI4), o krotności pokrywającej krotność wejścia równoległego (DI) i wyjścia równoległego (QO) tego rejestru potokowego (APR) oraz połączonymi odpowiednio z pierwszym wyjściem multipleksowym (Yl) pierwszego multipleksera (MUX1) rejestru potokowego (APR) i jego wyjściem równoległym (QO), a drugie wyjście sygnałowe (YS2) drugiego komparatora (CMP2) jest połączone z następnym wejściem pierwszej bramki (G1) rejestru potokowego (APR).
9. Asynchroniczny układ według zastrz. 6 albo 7, albo 8, znamienny tym, że jego rejestr potokowy (APR) zawiera drugi i trzeci multiplekser (MUX2, MUX3), drugi przerzutnik (DFF2) typu D oraz drugą i trzecią bramkę (G2 i G3) typu NOT, przy czym drugi multiplekser (MUX2) z dwoma jednobitowymi wejściami ustawionymi na „1” i „0” jest połączony swym wyjściem z drugim wejściem jednobitowym (D2) danych drugiego przerzutnika (DFF2), a ponadto trzeci multiplekser (MUX3) z dwoma jednobitowymi wejściami jest połączony swym wyjściem z drugim wejściem taktującym (TI2) tego drugiego przerzutnika (DFF2), przy czym wyjście pierwszej bramki (G1) jest połączone poprzez drugą bramkę (G2) z pierwszym wejściem trzeciego multipleksera (MUX3), a jego drugie wejście z wejściem potwierdzenia (Al) rejestru potokowego (APR), zaś drugie wyjście jednobitowe (Q2) drugiego przerzutnika (DFF2) jest połączone z wejściami przełączającymi drugiego i trzeciego multipleksera (MUX2 i MUX3) oraz wyjściem żądania (RO) rejestru potokowego (APR) i przez trzecią bramkę (G3) z wejściem jego pierwszej bramki (G1), do którego jest połączone, poprzez trzeci multiplekser (MUX3) i drugi przerzutnik (DFF2), wejście potwierdzenia (Al) rejestru potokowego (APR).
10. Asynchroniczny układ według zastrz. 6 albo 7, albo 8, albo 9, znamienny tym, że połączenie wyjścia żądania (RO) poprzedniego rejestru potokowego (APR), poprzedzającego bieżący układ kombinacyjny (CL), z wejściem żądania (RI) następnego rejestru potokowego (APR),
PL 227 527 B1 następującego po tym bieżącym układzie kombinacyjnym (CL), w asynchronicznym układzie jest przez wejście żądania (RI) i wyjście żądania (RO) co najmniej jednego zewnętrznego rejestru potokowego (A_APRI,..., A_APRi), którego budowa jest identyczna jak rejestru potokowego (APR), przy czym wyjście równoległe (QO) i wejście równoległe (DI) danych tego następnego rejestru potokowego (APR) są połączone dwubitową magistralą wtórną (ME) danych poprzez układ inkrementacji (DIN), trzecie wejście zespolone (D3) i trzecie wyjście zespolone (Q3) dwubitowego zespołu trzecich przerzutników (DFF3) typu D oraz dwubitowe wejście równoległe (DI) i dwubitowe wyjście równoległe (QO) danych zewnętrznego rejestru potokowego (A_APRI,..., A_APRi), a ponadto wyjście żądania (RO) poprzedniego rejestru potokowego (APR) jest dołączone do trzeciego wejścia taktującego (TI3) tego zespołu trzecich przerzutników (DFF3), a do wejścia żądania (RI) następnego rejestru potokowego (APR) poprzez wejście żądania (RI) i wyjście żądania (RO) zewnętrznego rejestru potokowego (A_APRI, A_APRi), zaś wyjście potwierdzenia (AO) następnego rejestru potokowego (APR) jest połączone równolegle z wejściem potwierdzenia (Al) poprzedniego rejestru potokowego (APR) i zewnętrznego rejestru potokowego (A_APRI, ..., A_APRi).
11. Asynchroniczny układ według zastrz. 10, znamienny tym, że w przypadku wielowejściowego układu kombinacyjnego (CL) posiada osobne wejściowe rejestry potokowe (APRI1, APRI2) dla każdego z wejść układu kombinacyjnego (CL), a wyjścia żądania (RO) wejściowych rejestrów potokowych (APRI1, APRI2) są dołączone do trzeciego wejścia taktującego (TI3) zespołu trzecich przerzutników (DFF3) i równolegle do wejścia żądania (RI) zewnętrznego rejestru potokowego (A_APRI,..., A_APRi) poprzez wielowejściową czwarta bramkę (G4), korzystnie typu AND.
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| PL412575A PL227527B1 (pl) | 2015-06-02 | 2015-06-02 | Sposób asynchronicznego przetwarzania danych cyfrowych i asynchroniczny układ cyfrowy do stosowania tego sposobu, zbudowany zwłaszcza w strukturze FPGA |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| PL412575A PL227527B1 (pl) | 2015-06-02 | 2015-06-02 | Sposób asynchronicznego przetwarzania danych cyfrowych i asynchroniczny układ cyfrowy do stosowania tego sposobu, zbudowany zwłaszcza w strukturze FPGA |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| PL412575A1 PL412575A1 (pl) | 2016-12-05 |
| PL227527B1 true PL227527B1 (pl) | 2017-12-29 |
Family
ID=57405877
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| PL412575A PL227527B1 (pl) | 2015-06-02 | 2015-06-02 | Sposób asynchronicznego przetwarzania danych cyfrowych i asynchroniczny układ cyfrowy do stosowania tego sposobu, zbudowany zwłaszcza w strukturze FPGA |
Country Status (1)
| Country | Link |
|---|---|
| PL (1) | PL227527B1 (pl) |
-
2015
- 2015-06-02 PL PL412575A patent/PL227527B1/pl unknown
Also Published As
| Publication number | Publication date |
|---|---|
| PL412575A1 (pl) | 2016-12-05 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP5354427B2 (ja) | 集積回路のための再構成可能論理ファブリックおよび再構成可能論理ファブリックを構成するためのシステムおよび方法 | |
| Muttersbach et al. | Practical design of globally-asynchronous locally-synchronous systems | |
| EP2024884B1 (en) | Systems and methods for performing automated conversion of representations of synchronous circuit designs to and from representations of asynchronous circuit designs | |
| US8739101B1 (en) | Systems and methods for reducing logic switching noise in parallel pipelined hardware | |
| JP3331968B2 (ja) | グリッチ分析と低減に重点をおいたレジスタトランスファレベルの電力消費最適化回路、方法、及び記録媒体 | |
| US8671371B1 (en) | Systems and methods for configuration of control logic in parallel pipelined hardware | |
| JP5985900B2 (ja) | 動作合成装置、動作合成装置を備えたデータ処理システム、及び、動作合成プログラム | |
| KR20200098635A (ko) | 프로그래밍가능 제어 회로를 사용한 클록 신호들의 선택적 제공 | |
| US10606972B2 (en) | Method, design program, and design apparatus of a high level synthesis process of a circuit | |
| US9552328B2 (en) | Reconfigurable integrated circuit device | |
| US10302698B1 (en) | Estimation of power consumed by combinatorial circuitry | |
| Oliveira et al. | Using FPGAs to implement asynchronous pipelines | |
| Ahmed et al. | Packing techniques for virtex-5 FPGAs | |
| Oliveira et al. | Design of locally-clocked asynchronous finite state machines using synchronous CAD tools | |
| CN118131854A (zh) | 时钟插入延迟系统和方法 | |
| Garcia et al. | Synthesis of locally-clocked asynchronous systems with bundled-data implementation on FPGAs | |
| Low et al. | Variation tolerant AFPGA architecture | |
| Hajduk | Simple method of asynchronous circuits implementation in commercial FPGAs | |
| Oliveira et al. | Implementation of Asynchronous Pipelines with QDI Template onto FPGAs Using Commercial Tools | |
| Manoranjan et al. | An a-FPGA architecture for relative timing based asynchronous designs | |
| Daigneault et al. | Fast description and synthesis of control-dominant circuits | |
| Ferguson et al. | Optimising self-timed FPGA circuits | |
| Taraate | Design guidelines for FPGA based design | |
| Oliveira et al. | Design of asynchronous systems on FPGA using direct mapping and synchronous specification | |
| Simatic et al. | High-level synthesis for event-based systems |