Programowalne układy przetwarzania sygnałów Projektowanie
Transkrypt
Programowalne układy przetwarzania sygnałów Projektowanie
Programowalne układy przetwarzania sygnałów Projektowanie układów generujących ciągi pseudolosowe z użyciem automatów komórkowych LHCA Automaty komórkowe Automaty komórkowe LHCA (Linear Hybrid Cellular Automata) używane są do generowania wektorów testowych (np. w technice BIST). Automat składa się z komórek, które komunikują się tylko z sąsiednimi komórkami, nie ma długich linii sygnałowych jak w LFSR. 2004 Projektowanie programowalnych układów scalonych 2 Automaty komórkowe Można zbudować automat z komórek o regule 150 i 90 który będzie wytwarzał sekwencję o maksymalnej długości: • okres o długości 1 dla stanu początkowego 00...0 • okres o długości 2n-1 dla każdego innego stanu początkowego Reguła 90: Reguła 150: 2004 s’i = si-1 ⊕ si+1 s’i = si-1 ⊕ si ⊕ si+1 Projektowanie programowalnych układów scalonych 3 Automaty komórkowe Można zbudować automat z komórek o regule 150 i 90 o minimalnym koszcie – zbudowany z jednej lub dwóch komórek 150 a pozostałe o regule 90 Przykładowy automat: (10) 2, 7 oznacza automat o długości 10 komórek, w którym komórki o indeksie 2 i 7 (licząc od lewej strony) posiadają regułę 150 a pozostałe regułę 90. Ten sam automat zapisany w postaci wektora [0, 1, 0, 0, 0, 0, 1, 0, 0, 0], gdzie 1 oznacza regułę 150, a symbol 0 oznacza regułę 90. Można otrzymać automat o tych samych własnościach licząc od prawej strony, np. [0, 0, 0, 1, 0, 0, 0, 0, 1, 0]. 2004 Projektowanie programowalnych układów scalonych 4 Automaty komórkowe Tabelę opisującą automaty komórkowe o minimalnym koszcie dla n<500 (n – liczba komórek) można znaleźć w artukule: KEVIN CATTELL AND SHUJIAN ZHANG: Minimal Cost OneDimensional Linear Hybrid Cellular Automata of Degree Through 500, JOURNAL OF ELECTRONIC TESTING: Theory and Applications,6,255-258 (1995), 1995 Kluwer Academic Publishers, Boston. 2004 Projektowanie programowalnych układów scalonych 5 Fragment tablicy CA dla n<500 Deg. (1) (2) (3) (4) (5) (6) (7) (8) (9) (10) (11) (12) (13) (14) (15) (16) (17) (18) (19) (20) (21) (22) (23) 2004 LHCA 1 1 1 13 1 1 3 23 1 27 1 37 5 1 3 1 15 5 1 17 3 23 1 10 5 1 Deg. (51) (52) (53) (54) (55) (56) (57) (58) (59) (60) (61) (62) (63) (64) (65) (66) (67) (68) (69) (70) (71) (72) (73) LHCA 1 2 29 1 9 17 4 14 9 17 4 15 2 38 1 10 5 31 35 1 1 19 15 8 1 1 37 17 6 55 9 Deg. (101) (102) (103) (104) (105) (106) (107) (108) (109) (110) (111) (112) (113) (114) (115) (116) (117) (118) (119) (120) (121) (122) (123) LHCA 1 20 33 15 2 40 1 30 19 1 35 14 13 27 25 1 22 41 16 33 30 1 3 73 45 14 51 Deg. (151) (152) (153) (154) (155) (156) (157) (158) (159) (160) (161) (162) (163) (164) (165) (166) (167) (168) (169) (170) (171) (172) (173) LHCA 27 40 13 66 1 2 24 33 1 61 1 151 1 116 73 1 24 26 3 130 72 1 60 1 113 81 22 37 3 1 Deg. (201) (202) (203) (204) (205) (206) (207) (208) (209) (210) (211) (212) (213) (214) (215) (216) (217) (218) (219) (220) (221) (222) (223) LHCA 1 26 24 7 1 103 57 1 71 1 130 74 1 1 17 2 169 1 56 59 29 4 26 53 50 49 47 1 2 12 9 Deg. (251) (252) (253) (254) (255) (256) (257) (258) (259) (260) (261) (262) (263) (264) (265) (266) (267) (268) (269) (270) (271) (272) (273) Projektowanie programowalnych układów scalonych LHCA 1 4 31 93 1 55 1 127 49 1 181 21 4 89 1 3 189 95 2 173 69 46 103 1 73 1 210 81 5 3 109 1 6 Przykład realizacji CA (8) 2,3 LIBRARY ieee; BEGIN USE ieee.std_logic_1164.ALL; Reg: PROCESS (clk) ENTITY lhca6 IS BEGIN -- [0,1,1,0,0,0,0,0] PORT (clk : IN STD_LOGIC; IF clk'event AND (clk = '1') THEN x_in : IN STD_LOGIC; r(1) <= r(2) XOR x_in; -- r90 y : OUT STD_LOGIC); r(2) <= r(1) XOR r(2) XOR r(3); -- r150 END lhca6; r(3) <= r(2) XOR r(3) XOR r(4); -- r150 ARCHITECTURE lhca_arch OF lhca6 IS r(4) <= r(3) XOR r(5); -- r90 SIGNAL r : STD_LOGIC_VECTOR(1 TO 8); r(5) <= r(4) XOR r(6); -- r90 r(6) <= r(5) XOR r(7); -- r90 r(7) <= r(6) XOR r(8); -- r90 r(8) <= r(7); -- r90 END IF; END PROCESS Reg; y <= r(1); END lhca_arch; 2004 Projektowanie programowalnych układów scalonych 7 Przykład realizacji CA (8) 2,3 2004 Projektowanie programowalnych układów scalonych 8 Automaty CA w FPGA W niektórych układach FPGA przerzutniki inicjowane są wartością 0, stąd rejestr CA zbudowany na bramkach XOR ma wówczas okres = 1. Aby zawartość rejestru 0..00 była jedną z sekwencji 2n-1, należy użyć bramek XNOR (not XOR). 2004 Projektowanie programowalnych układów scalonych 9 Programowalne układy przetwarzania sygnałów Przykład projektu filtru cyfrowego o skończonej odpowiedzi impulsowej z wykorzystaniem dekompozycji funkcjonalnej Zastosowanie dekompozycji funkcjonalnej Opis w języku HDL RTL opis Synteza funkcjonalna Części projektu Sieć logiczna Optymalizacja logiczna DEKOMPOZYCJA Odwzorowanie technologiczne FPGA 2004 Projektowanie programowalnych układów scalonych 11 Filtr cyfrowy FIR Filtr cyfrowy FIR 15-rzędu o współczynnikach: h(n) = {-6,0,33,0,-116,0,490,802,490,0,-116,0,33,0,-6} Próbki wejściowe 8-bitowe ze znakiem 2004 Projektowanie programowalnych układów scalonych 12 Porównanie realizacji Realizacja dla układu Flex10K70 EPF10K70RC240-4 2004 realizacja FIR komórek przerzutników f [MHz] o stałych współczynnikach 576 139 5,02 ww. i kodowanie CSD 494 139 6,06 ww. i symetria 374 139 9,32 o stałych współczynnikach i DA 1314 140 16,58 o stałych współczynnikach i zdekomponawanej tablicy DA 746 140 17,8 Projektowanie programowalnych układów scalonych 13 Porównanie realizacji Realizacja przykładowych firltów z artykułu: Goodman D.J., Carey M.J., (1977). Nine Digital Filters for Decimation and Interpolation, IEEE Trans. on Acoustics, Speech and Signal Processing 25(2), pp.121-126. FIR wejść/ komórek logicznych potrzebnych wyjść do realizacji jednej tablicy DA bez dekompozycji z dekompozycją F4 7/8 12 9 F5 11 / 11 45 32 F6 11 / 11 66 45 F7 11 / 12 48 35 F8 15 / 12 136 64 F9 19 / 16 279 159 2004 Projektowanie programowalnych układów scalonych 14 Porównanie realizacji FIR filtr bez dekompozycji DA LCs(FFs) fmax [MHz] filtr z dekompozycją DA LCs(FFs) fmax [MHz] F4 224(71) 25.25 204(71) 26.60 F5 527(106) 21.05 444(106) 22.03 F6 710(106) 19.27 551(106) 19.61 F7 576(107) 20.62 476(107) 20.96 F8 1314(140) 22.73 746(140) 22.73 F9 2533(175) 14.47 1564(175) 20.92 123,39 3985 132,85 1 0,67726 1,076667 Suma 5884 1 2004 Projektowanie programowalnych układów scalonych 15 Literatura do wykładu Również wydanie 2: 2004 Projektowanie programowalnych układów scalonych 16