Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
OpublikowałBrygida Cwojdziński Został zmieniony 11 lat temu
1
Mnożenie dwóch liczb 64-bitowych przy zastosowaniu automatu synchronicznego
Orkiszewski Marcin
2
Założenia projektowe:
Wykorzystanie automatu synchronicznego Wpisywanie danych w postaci liczb 16-bitowych Przechowywanie danych w wewnętrznych rejestrach układu
3
Algorytm mnożenia: A B C D * v x y z Az Bz Cz Dz Ay By Cy Dy
Ax Bx Cx Dx + Av Bv Cv Dv …
4
Opis algorytmu: A ∙ B = (a1 ∙ a2 ∙ a3 ∙ a4) ∙ (b1 ∙ b2 ∙ b3 ∙ b4)
5
Opis algorytmu: Akumulator[31..0] = a4 ∙ b4,
Akumulator[48..16] = a3 ∙ b4 + Akumulator[31..16], Akumulator[49..16] = a4 ∙ b3 + Akumulator[48..16], Akumulator[64..32] = a3 ∙ b3 + Akumulator[49..32], Akumulator[65..32] = a2 ∙ b4 + Akumulator[64..32], Akumulator[66..32] = a4 ∙ b2 + Akumulator[65..32], Akumulator[80..48] = a1 ∙ b4 + Akumulator[65..48], Akumulator[81..48] = a4 ∙ b1 + Akumulator[80..48], Akumulator[82..48] = a2 ∙ b3 + Akumulator[81..48], Akumulator[83..48] = a3 ∙ b2 + Akumulator[82..48], Akumulator[96..64] = a1 ∙ b3 + Akumulator[83..64], Akumulator[97..64] = a3 ∙ b1 + Akumulator[96..64], Akumulator[98..64] = a2 ∙ b2 + Akumulator[97..64], Akumulator[ ] = a1 ∙ b2 + Akumulator[98..80], Akumulator[ ] = a2 ∙ b1 + Akumulator[ ], Akumulator[ ] = a1 ∙ b1 + Akumulator[ ].
6
Opis algorytmu: Wykonywanie operacji na podzielonych danych umożliwia sekwencyjną realizację algorytmu. Akumulacja danych w jednym rejestrze zmniejsza liczbę potrzebnych zasobów (wymagana odpowiednia kolejność dodawań). Zastosowanie mniejszych układów mnożących i sumujących. Możliwość wykonywania kilku operacji w jednym takcie zegara. Możliwość wykonywania operacji już podczas wpisywania danych.
7
Realizacja:
8
Realizacja: Wersja 1: wykonywanie jednego mnożenia i sumowania
w jednym stanie automatu automat 19-to stanowy (4 stany przeznaczone na wpis danych) 8 rejestrów 16-to bitowych 1 rejestr 128-to bitowy mnożenia i dodawania wykonywane asynchronicznie
9
Symulacja: FFFFFFFFFFFFFFFF ∙ FFFFFFFFFFFFFFFF
= FFFFFFFFFFFFFFFE
10
Realizacja: Działa !! Wyniki kompilacji (dla układu Cyclone II):
36,28 MHz 2559 LE's uuuu…..
11
Realizacja: Wersja 2: jak poprzednio
mnożenia i dodawania wykonywane synchronicznie (16 multiplikatorów) 89.53 MHz 1292 LE's lepiej….
12
Realizacja: Wersja 3: obliczenia wykonywane w zależności od stanu następnego (next_state) 130,89 MHz 1288 LE's szybciej…
13
Realizacja: Wersja 4: automat jako multiplekser
1 multiplikator, 1 sumator! 155,62 MHz 427 LE's !!
14
Symulacja: Błędne wpisywanie danych (?)
15
Realizacja: Opóźnienia wynikają ze zbyt długiego czasu wpisywania danych tSU Wersja 5 : rejestr przed multiplekserem wejściowym Wersja 6: dane wpisywane poprzez rejestr przesuwający (co 16 bitów)
16
Realizacja: LE’s CLK (MHz) tSU (ns) 425 165,02 4,551 431 167,14 4,771
Rejestr przesuwający BALANCED 425 165,02 4,551 Rejestr przesuwający AREA 431 167,14 4,771 Demultiplekser za rejestrem wejściowym 446 165,73 4,728 Demultiplekser przed rejestrem wejściowym 427 155,62 4,983
17
Inna realizacja: automat 5 stanowy (4 stany wpis danych, 1 stan obliczeń) układ mnożący 128 bitów x 128 bitów 260 MHz 828 LE's
18
Podsumowanie: LE’s CLK (MHz) Wersja 1 2559 36,28 Wersja 2 1292 89.53
1288 130,89 Wersja 4 427 155,62 Wersja 5 446 165,73 Wersja 6 BALANCED 425 165,02 Wersja 6 AREA 431 167,14 Mnożenie 128 x128 828 260
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.