POZNAN UNIVE RSITY OF TE CHNOLOGY ACADE MIC JOURNALS No 87 Electrical Engineering 206 Robert SMYK* Maciej CZYŻAK* REALIZACJA NA POZIOMIE RTL OBLICZANIA PIERWIASTKA KWADRATOWEGO Z UŻYCIEM METODY NIEODTWARZAJĄCEJ Obliczanie pierwiasta wadratowego jest jedną z luczowych operacji cyfrowego przetwarzania sygnałów szczególnie przy obliczaniu modułu sygnałów zespolonych. W pracy przedstawiono algorytm obliczania pierwiasta wadratowego metodą nieodtwarzającą oraz jego uładową realizację. Metoda umożliwia oszczędną realizację uładową bazującą na sumatorach i rejestrach. Przeanalizowano wymagania sprzętowe obliczania pierwiasta wadratowego dla operandów 8-, 6- i 32-bitowych. Przedstawiono implementację w VHDL oraz wyni syntezy uładu dla wybranych wariantów w środowisu Altera Quartus II FPGA. SŁOWA KLUCZOWE: FPGA, moduł sygnałów zespolonych, metoda nieodtwarzająca, pierwiaste wadratowy. WSTĘP W wielu apliacjach cyfrowego przetwarzania sygnałów (CPS) istnieje potrzeba zastosowania efetywnego algorytmu obliczania pierwiasta wadratowego (PK). Typowym przyładem jest obliczanie modułu sygnału zespolonego na wyjściu procesora obliczającego szybą transformatę Fouriera. Z racji tego, że sygnały w rzeczywistych apliacjach CPS przetwarzane są z zachowaniem restrycyjnie nałożonych ograniczeń taich ja możliwie małe opóźnienie przy zachowaniu wysoiej częstotliwości potoowania, od uładu cyfrowego realizującego opisywany algorytm oczeuje się spełnienia ściśle oreślonych wymagań dotyczących parametrów czasowych. W literaturze znane są algorytmy iteracyjne obliczania PK stanowiące rozwinięcie metody Newtona-Raphsona (NR) []. W algorytmach tego typu w olejnych iteracjach obliczane są olejne przybliżenia PK. Głównym ograniczeniem tej lasy algorytmów jest silna zależność doładności obliczeń od liczby iteracji, tóra może być teoretycznie dowolna, oraz od przyjętego puntu * Politechnia Gdańsa.
280 Robert Smy, Maciej Czyża startowego. Choć spotyane są przyłady implementacji uładowych metody NR, jest to algorytm iteracyjny częściej stosowany w postaci implementacji programowych. W przypadu implementacji uładowej metody NR można założyć ustaloną liczbę iteracji i zrealizować ażdą z nich w postaci pojedynczego stopnia obliczeniowego. Tego typu podejście powoduje jedna niewspółmierny wzrost złożoności uładowej w przypadu onieczności uzysania założonej doładności obliczeń. Dodatowo poważnym ograniczeniem w implementacji uładowej tej metody jest potrzeba wyonywania mnożenia oraz dzielenia. Podsumowując, metoda NR ze względu na przedstawione właściwości nie jest w stanie spełnić wymagań, taich ja doładność oraz szybość obliczeń, stawianych przez współczesne apliacje CPS. Inną lasą algorytmów PK opiera się na algorytmie CORDIC [2-4], tóry powszechnie wyorzystywany jest w techniach CPS do realizacji funcji trygonometrycznych. Algorytm ten należy do lasy iteracyjnych. W pratyce obliczenie pierwiasta wadratowego wymaga przeprowadzenia do 0 iteracji. W ażdej iteracji wyonywane jest sumowanie oraz mnożenie przez potęgę liczby 2. Zasadniczą cechą algorytmu CORDIC jest to, że przy realizacji uładowej nie wymaga on stosowania mnożniów, przy doborze współczynniów w postaci ujemnych potęg 2 zastępowane są one przez przesunięcia binarne. Za pewną wadę można uznać onieczność dzielenia wyniu operacji przez wartość stałą ze względu na wyonywanie w ażdej iteracji tzw. pseudorotacji wetora wydłużającej jego długość. Warto wspomnieć, że producenci uładów FPGA często oferują specjalizowany IP Core realizujący algorytm CORDIC [5]. W pratyce, w przypadu apliacji CPS implementowanych w FPGA czynni ten może decydować o wyborze algorytmu PK bazującego na algorytmie CORDIC. Znane są również nieiteracyjne metody obliczania PK [6]. W realizacji uładowej bazującej na wyorzystaniu algorytmu alpha max plus beta min możliwe 2 2 jest bezpośrednie wyznaczenie modułu a b liczby zespolonej a j b. Ułady wyorzystujące tego typu podejście [7] charateryzują się, w odróżnieniu od bazujących na metodach iteracyjnych, z góry ustaloną na poziomie algorytmu liczbą stopni obliczeniowych oraz prawie dowolną do ustalenia doładnością na poziomie poniżej %. W niniejszej pracy przedstawiono algorytm oraz właściwości implementacji uładowej na poziomie RTL (ang. Register Transfer Level) metody nieodtwarzającej obliczania PK [8-]. Algorytm ten wyorzystuje stałą liczbę iteracji, a jego realizację uładową można zrealizować tylo przy wyorzystaniu sumatorów oraz rejestrów. W podrozdziale 2 przedstawiono algorytm obliczania PK metoda nieodtwarzającą, a w podrozdziale 3 przedstawiono jej implementację uładową.
Realizacja na poziomie RTL obliczania pierwiasta wadratowego z... 28 2. METODA NIEODTWARZAJĄCA OBLICZANIA PIERWIASTKA KWADRATOWEGO Przy obliczaniu PK metodą nieodtwarzającą wyorzystuje się reprezentację operandów w odzie uzupełnienia do 2. Algorytm ten w ażdej iteracji generuje przybliżoną wartość wyniu (rys. ). Jao wyni otrzymuje się wartość całowitą pierwiasta Q oraz resztę R X Q Q. W zależności od znau R w olejnych iteracjach odtwarza się olejny bit wartości pierwiasta Q, poprzez dodanie lub odejmowanie na odpowiedniej pozycji. Algorytm ten w ażdej iteracji wyznacza wartość pierwiasta bez odtwarzania wspomnianej reszty []. Zgodnie z przedstawionym schematem, liczba iteracji głównej pętli obliczeniowej zależna jest od długości reprezentacji binarnej liczby podpierwiastowej X. Załadając, że X jest liczbą n-bitową, pierwiaste wadratowy z X można obliczyć w n/2 roach. W celu bardziej szczegółowej analizy roów obliczeniowych rozważanego algorytmu, załóżmy, że liczba podpierwiastowa X ma reprezentację 6-bitową X x, x,..., x, ). Wartość całowita Q może być reprezentowana przez ( 5 4 x0 2 liczbę 8-bitową Q ( q7, q6,..., q, q0), a reszta R X Q jest liczbą co najwyżej 9-bitową o reprezentacji R ( r8, r7,..., r, r0 ). W algorytmie przyjmuje się, że na ażdą parę bitów liczby podpierwiastowej przypada jeden bit liczby reprezentującej wartość pierwiasta. Obliczenia w pierwszym rou prowadzi się dla pary x 5 x 4. Najstarszy bit wartości pierwiasta p 7 przyjmuje wartość 0, gdy ( x 5, x4 ) (0,0) lub, gdy odpowiednio ( x 5, x4 ) (0,), ( x 5, x4 ) (,0 ), ( x 5, x4 ) (,). W ogólności wartość q 7 można obliczyć jao różnicę 0 x 52 x4 2. Jeżeli różnica jest ujemna, to q 7 0, a w przeciwnym przypadu q 7. Wartość reszty w rou pierwszym dla = 7 oblicza się poprzez 0 0 0 wyonanie operacji R7 x5 2 x4 2 q72 q7 2, gdzie R 7 oznacza resztę uzysaną przy wyznaczaniu 7 bitu pierwiasta Q. W efecie R może przyjąć jedną z trzech wartości 0, lub 2. W olejnym rou dla pary bitów x, ) nowa wartość reszty dla =6 ( 3 x 2 5 2 2 0 wynosi R6 R7 2 x3 2 x2 2 i obliczana jest jao onatenacja R 7 i bitów { x 3, x 2}. Dalej wyznaczany jest szósty bit q 6 pierwiasta Q dla fragmentu liczby podpierwiastowej X o wartości i i 2 i x 2. Ponieważ q 2 q 0 2 5 x i 2 i 2 i 2 7 6 2 () można wyprowadzić ogólną formułę wyznaczania olejnego bitu pierwiasta Q. Obliczając prawą stronę () otrzymujemy
282 Robert Smy, Maciej Czyża ( 2 q7 ) ( 2 q7 ) 4 q7 q7 4 q7. (2) Korzystając z () i (2) uzysujemy R 2 0 7 2 x3 2 x2 2 4 q7. (3) Zależność ta może być zweryfiowana przez podstawienie 0 0 0 R7 x5 2 x4 2 q7 2 q7 2. Uogólniając powyższą procedurę dla olejnych roów obliczeniowych można uzysać formułę wyznaczania reszty dla - w postaci sh2 neg sh2 R R Q, (4) gdy R 0, gdzie sh2 sh2 R R ( R,x2,x2 2 ) oraz neg sh2 neg sh2 Q Q ( Q,0, ) Natomiast dla R 0 sh2 neg sh2 R R Q, (5) gdzie sh2 sh2 R R ( R,x2,x2 2 ) oraz neg sh2 neg sh2 Q Q ( Q,, ). START N R>=0 T N T N T R>=0 R<0 X=? P=P << R = R + (P << ) N=6, Q=0, R=0 i=n/2- R=((R<<2) ((X>>(2*i))&3)) - (P << 2 ) N i>=0 T P= P << R=((R<<2) ((X>>(2*i))&3)) - (P << 2 3) P,R STOP Rys.. Schemat bloowy programowego algorytmu metody nieodtwarzającej obliczania PK z X
Realizacja na poziomie RTL obliczania pierwiasta wadratowego z... 283 W celu analizy właściwości numerycznych przedstawionego algorytmu wyonano jego symulację programową w języu Python. Listing opracowanego programu przedstawiono na rysunu 2. Na rysunu 3 zaprezentowano porównanie przyładowych wyniów otrzymanych dla omawianego algorytmu PK z wyniami, tóre daje funcja biblioteczna sqrt(). Ja widać, wartości reszty dla X=280 i X=400 różnią się o od wyniów z funcji bibliotecznej. Może to wyniać z wewnętrznej reprezentacji liczb całowitych, tóra jest zawsze stała dla przyjętego typu danych i jest różna od założonej długości słowa n. Rys. 2. Implementacja programowa w Python algorytmu metody nieodtwarzającej obliczania PK Rys. 3. Przyładowe wynii zwracane przez program realizujący algorytm metody nieodtwarzającej obliczania PK
284 Robert Smy, Maciej Czyża 3. IMPLEMENTACJA UKŁADOWA METODY NIEODTWARZAJĄCEJ OBLICZANIA PIERWIASTKA KAWADRATOWEGO Ogólna idea przy realizacji uładowej algorytmu metody nieodtwarzającej PK polega na wyorzystaniu jednosti obliczającej z odpowiednimi rejestrami. W przedstawionej struturze na rysunu 4 dla n-bitowego słowa wejściowego X wyorzystano n+2-bitowy sumator ADD realizujący dodawanie lub odejmowanie w odzie U2. Wartość liczby podpierwiastowej podawana jest do rejestru SRL X przesuwającego w lewo o 2 pozycje. Na wejściach sumatora znajdują się rejestry: SR L pomocniczy rejestr n+2-bitowy, przechowujący bieżąca wartość reszty z poprzedniego rou uwzględnianą przy sumowaniu oraz SRL quot rejestr przesuwający w lewo przechowujący bieżącą wartość pierwiasta. Na wyjściu sumatora znajduje się rejestr SR rem przechowujący atualną wartość reszty. Najstarszy bit bieżącej reszty oreśla jej zna. Informacja ta jest wyorzystywana do oreślania znau bieżącej wartości pierwiasta podczas sumowania w atualnie realizowanym rou (MUX i U2). shift 5 4 3 2... 0 SRLX x5 x4 x3 x2 x x0 shift 8... 3 2 0 9 9..0 SRL 7 6... 0 SRLquot q7 q6 q q0 9 9 U2 0 MUX s 9 9..2 0 ADD 9..0 8 7 6... 0 SRrem r8 r7 r6 r r0 Rys. 4. Schemat bloowy implementacji uładowej algorytmu metody nieodtwarzającej obliczania PK dla zaresu n = 6 Na rysunu 5 przedstawiono opis w języu VHDL uładu realizującgo algorytm obliczania PK metodą nieodtwarzającą. Kod odzwierciedla struturę uładu opisaną wyżej. Przedstawione podejście pozwala na realizację strutur uła-
Realizacja na poziomie RTL obliczania pierwiasta wadratowego z... 285 dowych dla zaresów n-bitowych słowa wejściowego X, gdzie n 8,6,32,..., 2 dla 3,4,5,.... Zares ten można podawać bezpośrednio w opisie VHDL poprzez nadanie wartości zmiennej n przed wyonaniem syntezy. Dodatowo poprzez modyfiację parametrów syntezy taiego uładu można uzysać dwie różne implementacje uładowe: jedną w postaci strutury drzewiastej (rys. 6), drugą w postaci pojedynczej jednosti przetwarzającej (rys. 7) o onstrucji zbliżonej do ALU (ang. arithmetic logic unit). Rys. 5. Opis w VHDL uładowej n-bitowej implementacji algorytmu metody nieodtwarzającej obliczania PK Omawianą realizację uładową PK algorytmu metody nieodtwarzającej zasymulowano oraz poddano syntezie w środowisu FPGA Altera Quartus II dla uładu serii Cyclone V [2]. Przyładowe wynii symulacji potwierdzające poprawność pracy uładu w wersji 6-bitowej o struturze drzewiastej przedstawiono na rysunu 8. W tabeli przedstawiono wynii syntezy uładów w onfiguracjach dla zaresów 8-,6- i 32-bitowych.
286 Robert Smy, Maciej Czyża Rys. 6. Uładowa implementacja algorytmu metody nieodtwarzającej obliczania PK na poziomie RTL strutura drzewa Rys. 7. Uładowa implementacja algorytmu metody nieodtwarzającej obliczania PK na poziomie RTL strutura z ALU Rys. 8. Wyni symulacji uładowej implementacji algorytmu metody nieodtwarzającej obliczania PK (x liczba podpierwiastowa, qo wartość całowita pierwiasta, ro wartość całowita reszty) Tabela. Wynii syntezy w Altera Quartus II (uład FPGA Cyclone V) uładowej implementacji algorytmu metody nieodtwarzającej obliczania PK dla wariantu 8-, 6 i 32- bitowego Square rooter input x [no. bits] 8-bit 6-bit 32-bit Estimate of Logic utilization (ALMs needed) 2 66 246 Combinational ALUT usage for logic 4 32 492 -- 7 input functions 0 0 0 -- 6 input functions 0 0 0 -- 5 input functions 0 20 52 -- 4 input functions 2 2 52 -- <=3 input function 9 9 288 I/O pins 9 35 67 Maximum fan-out 2 33 7 Total fan-out 89 536 2079 Average fan-out 2.39 2.65 3.32
Realizacja na poziomie RTL obliczania pierwiasta wadratowego z... 287 4. PODSUMOWANIE W pracy zrealizowano algorytm obliczania pierwiasta wadratowego metodą nieodtwarzającą. Przedstawiono jego podstawowe własności numeryczne oraz wynii symulacji programowej. Algorytm działa na operandach całowitych i wyorzystuje stałą liczbę iteracji zależną od długości słowa wejściowego. W wyniu działania algorytmu uzysuje się wartość pierwiasta oraz wartość reszty. Przedstawiony algorytm pozwala na realizację uładową wyorzystującą tylo jeden sumator w jednym stopniu dla wersji z pojedynczą jednostą przetwarzającą lub n/2 sumatorów dla strutury drzewiastej. Przedstawiono wynii implementacji uładowej dla przyładowych zaresów n=8-, 6-, 32-bitowych. Opis uładu wyonano w VHDL oraz przeprowadzono syntezy w środowisu Altera Quartus II dla trzech wybranych wariantów. Opracowany opis uładu w VHDL, przedstawiony w tej pracy, ma charater ogólny z dowolnie ustalanym zaresem bitowym n. BIBLIOGRAFIA [] Kabuo H., Taniguchi T., Miyoshi A., Yamashita H., Urano M., Edamatsu H., Kuninobu S.: Accurate rounding scheme for the Newton-Raphson method using redundant binary representation, IEEE Trans. Comput., vol. 43, no., pp. 43 5, Jan. 994. [2] Volder J.E.: The CORDIC Trigonometric Technique: IRE Transactions on Electronic Computers, pp. 330-334, Sept. 959. [3] Meher P., K., Vallis J., Tso-Bing Juang, Sridharan K., Maharanta K.: 50 Years of CORDIC: Algorithms, Architectures, and Applications, IEEE Trans. Circuits Syst. Regular Papers, vol. 56, no. 9, pp. 893 907, Sept. 2009. [4] Ye M., Liu T., Ye Y., Xu G., Xu T.: FPGA Implementation of CORDIC-Based Square Root Operation for Parameter Extraction of Digital Pre-Distortion for Power Amplifiers, In Proc. of 200 6th International Conference on Wireless Communications Networing and Mobile Computing (WiCOM), pp. 4, 200. [5] Xilinx: LogiCORE IP CORDIC v4.0. Product specification. www.xilinx.com March 20. [6] Filip A. E: Linear approximations to sqrt(x 2 +y 2 ) having equiripple error characteristics, IEEE Trans. Audio Electroacoustics, vol. 2, no. 6, pp. 554 556, Dec. 973. [7] Czyża M., Smy R.: FPGA realization of an improved alpha max plus beta min algorithm. Poznan University of Technology Academic Journals Electrical Engineering, vol. 80, pp.5 60, 204. [8] Sutino T.: An efficient implementation of the nonrestoring square root algorithm in gate level, Int. Journal Comput. Theory Eng., vol. 3, no., pp. 46 5, 20.
288 Robert Smy, Maciej Czyża [9] Sutino T., Jidin Z.: Simplified VHDL coding of modified nonrestoring square root calculator. Int. J. Reconfigurable Embed. Syst., vol., no., pp. 37 42, 202. [0] Li Y., Chu W.: Implementation of Single Precision Floating Point Square Root on FPGAs, Proc. of 5th Annual IEEE Symposium on Field-Programmable Custom Computing Machines, pp.227-232, 997. [] Li Y., Chu W.: A New Non-Restoring Square Root Algorithm and Its VLSI Implementations, Proc. on 996 IEEE International Conference on Computer Design: VLSI in Computers and Processors, ICCD '96, pp. 538 544, 996. [2] Altera, Overview Cyclone V FPGA & SoC, www.altera.com, 0.206. IMPLEMENTATION AT THE RTL LEVEL OF SQUARE ROOTING WITH A USE OF NON-RESTORING METHOD Computation of square root is the crucial operation in digital signal processing, especially when computing the modulus of complex signals. In this wor we present the square rooting algorithm using non-restoring method and its implementation at the RTL level. The method allows for compact realization that uses adders and registers only. The hardware requirements for square rooting for 8-, 6- and 32-bit operand have been analyzed. An VHDL implementation has been presented as well as the results of synthesis for the chosen variants in Altera Quartus II environment. (Received: 7. 02. 206, revised: 5. 03. 206)