WinCUPL Damian Górski Korekta : Wojciech Zaborowski Kraków dnia 16.06.2004
1 1.1 Co to jest programowalna logika (ang. programmable logic PL) Logika programowalna, jak sama nazwa mówi jest to rodzina komponentów! " #$%&'(&)$*+(,&-#,./& 0-) 0-'1&! 2324! 4! & 2 562 2!7! "!5programmable logic devices -%1#8).&09#&-#&('&#-&9#- -%5 1.1.1 ASIC (ang. Application Specific Integrated Circuits): 8 4 : 4 7 5 #8). 7 ;2 7 2 ;! 3 4!& 4& 5< 2 :2 4!7 2! 72"!5mask 7! 15. 4! 274!5 8 7 7&! :3 :34! 5=! ;&.-&7 2 -&!2735 1.1.2 user programmable device UPD) 72 % 72 2 74! & 7!3 2 75'! 2 3& 2 2 #$% '( 7 7 4! 5 < ; 72 7 2&! 3 7 : : 5 27 makrocele (ang. macrocells). 7 24! 7 :3 :3& 2 potrzebne do projektu. 2
1.1.3 PROM (ang. Programmable Read Only Memories) & 27!!&2 :PROM 22 #$%& 2 7! '(5 < 2 : ('> 2 2 :3 4 :&7577:2725 3
4
1.1.4 PAL (ang. Programmable Array Logic) < 2 2 7! #$%& do ustalonych (ang. fixed) '(5 < 2 2 :! 3 zandowane & : #$%27 7 : '(5#- 77 2 77 2 PLD. 6 72 & #-5 =! 3 7! :& :& ::5 = 72 2 :&! 3" 1 7 7 72 pinami )?'5 2 7! 72 7 2&! 7 2 & :7 2 5 2! 2 27 wiele funkcji logicznych w technologii TTL. 1.1.5 GAL (ang. Generic Array Logic devices) 8 7& 3 72 #- > 77 5 6 7&! 72 #- >& 224!3 29#->& 7 #->5, :3 ;&2 3 2& 2! & 7 3 2! 75=:39#-32& 7 w projektowaniu. 5
1.1.6 PLA (ang. Programmable Logic Arrays), 727! #$%&)'(&7 jakiemukolwiek #$% 2 3 '(5-#772 2 :3 7: 7 2 ;& 7 2 4 :3! 5= 27 '( #$%& 23 7 2! 25 <2 :3 2 7 2 2 & producenci stworzyli PLA nazywany 2& 2 27 rejestrów z tablicy elementów OR do AND. 1.1.7 8 #- >& -#5 2 7 7 #-& : 2 :#$%&! ustalonego '(562 7 7 22termów, lub wykorzystanie 2 "!5expander 15 7 7!75 6
1.1.8 FPGA (ang. Field Programmable Gate Arrays) $7:& 2 7! & 72 7!5.2!2:3&2!& 4 7 :3 :3& 2 2 7 ;& :2 7 2 @ A5 $ 2! 4 : 7 #$%'5 =2!& 4! zegarów logicznych (.-21 7:; )?'")'215B!.- 7!! 2 7 5 8! 22 7 3 4 22! :5B )'.37! : : trójstanowe lub 7 5 2 2 4 74 7&! 3 2 4 :3 :35 =2 2 23 7 ;! 7 7 2 7.-5! 7 7 : : IOBs z blokami.-5-! 7! 7 2 : 73 2 2! 75 2 09#! 43 4! 773 7 5 709#!3747!! 7:37 2 4! 5 1.2! " 1.2.1! "# % 27! 2 5.'8"!5 Complimentary Metal Oxide 81&7,,-&GaAs (oparte o Arsenek Galu), oraz ECL (ang. Emiter Coupled -!1&75BiCMOS czy +.-?7 5%2 2!2+.- GaAs, jednak : 2 7!5'! 2 :3 2:: 7!75 1.2.2 "#! 7!! 2 7!! 2 4! 4 5. :3 2 2 & 5 3 7! 5 2 2 77 2 7*77 7 7!7:327 7 7!7 ;5 2 7*! 2 5 & 23 22 2 ', "!5 ' Time Programmable). Najnowsze!222!75 7
7! 2 7 2 5 < 2 :32 2 4!%)"!5Dual Inline Package), SKINNY-DIP, LCC (ang. Leaded Chip Carrier), PLCC (and. Plastik Leaded Chip Carrier), QFP (ang. Ruad Flat Pack), BGA (ang. Ball Grid Array), SOIC (ang. Small Outline I.C.), TSOP (ang. Thin Small Outline), oraz PGA (ang. Pin Grid #15! 3 72 pinami umieszczonymi po dwóch stronach, kwadratowe z 7 2& 77 2562 27!7!! 7!&2!3 2 :3 7 & 23 2727 5 1.3 $ %! 7! 2 7! 77 7 ; & 77! :?:5< 2 :37! 7 2 :4#8.)534 6+%+. -%&/+C 7('5 2 2!4 7! 7!!!5 7 6+%+. 272 7 ; & 7 7 2 2 @DA@EA72! :37 &! 5 3 7 4! 7 7 7 7!24 :75 1.4!&%'(,2 4 : 23 7 7 7 7zednim zaprogramowaniu &7&27 7!742!3! 225< 222 27 :!! 2!& 2 7 :5 2 77 2 27 2 7: 27:& 47 5 7!:!7 7 4 77:4!75 8
2 %%)$ 2 7 2 223 @!A (ang. 71& & 3!! 2 7& 7 7 23 2 2!& 4 5.- 72 ; 27! 2 7!5, 7 2 72 2 2&.-4727 75 2.1 %(% 872 &.-5 2.1.1 Definicja Pin / Node 4 )$ > 2 23 7 7!& 4 2 2 7 2! 75 < 7& 4 2 7 & 7 23 7 7!5 7277 23& 7 &! 3& 3 7 73 &77 72 piny, w takim wypadku miejsce, które normalnie zawiera numery 773 2725 2.1.2 &%' = 7:& & 2 & 2 7 727? 58 7 &3 :3 projektu 2.1.3 $ =& ; 2 2 E FG 2 25! 3 7!7 2 ponumerowanych rzeczy. 2.1.4 $**%# Tabela 2.1 Liczba Baza < :3 2 b 0 Binarna 0 B 1101 Binarna 13 O 663 Ósemkowa 435 D 92 % 2 92 h BA Szesnastkowa 186 O [300..477] Ósemkowa (zakres) 192-314 H 7FXX Szesnastkowa (zakres) 32512..32767 9
<2 2 7.- > 2 FG :&!7!7 3:EG 32 D5-! 3 H72 22 &2& 2 2 225%: 2 2 22 22"2 numery 7 2& 2 2 21 2.1.5 $%%# 62 4!7 5 62 72 7 7" 15$22! 7 :5 FIELD ADDRESS = [A7, A6, A5, A4, A3, A2, A1, A0]; FIELD DATA = [D7..D0]; FIELD Mode = [Up, Down, Hold]; 2.1.6 $(*# % 7!7 727!75 7 72"7 72!0)+-%1 3I 727 2 2!75 9 2 2 0)+-%& 7! 7 FG & 2 7 7 " 7! 7 15 8 2! 4 manipulowania adresami i zakresami szyn danych. 2.2 $%#, 2 72! 7& 4 7 ; 25 2.2.1 $ (# <.-272 27! #$%&'(&$', C'(5 $27 7 2 7 : wykonywania (ang. 7>2!2!15 Tabela 2.2 Operatory logiczne Operator Opis B :3!!A NOT 1 & A & B AND 2 # A # B OR 3 $ A $ B EXOR 4 10
2.2.2 $ ( &%# 8 :3 2 7 2 27 & 777 72 7 27& : ich wykonywania. Tabela 2.3 Operatory arytmetyczne Operator Opis B :3 ** 2**3! 1 * 2*1 2 / 4/2 Dzielenie 2 % 9%8 Modulo 2 + 2+4 Dodawanie 3-2-1 Odejmowanie 3 2.2.3 $ "# ( 2! 23 &2 3274 4 7! 7! 5 B7 27 2 &2 3& 277!!24 2 5.- 2 ;&24!3 5B7 2 2 ;.- 23 7 @.- -%?09# Language.7 A5 7 2 2 :22 Tabela 2.4 Rozszerzenia zmiennych Rozszerzenie 2 Opis.AP L < :2!27.AR L < :2! 7.CE L < :.+.CK L!:!7.CKMUX L Wybór multipleksowanego zegara.d L < :%7.DFB R < : 7 %makroceli.dq R < :J7 %.INT R =2!!:2!.IO R =2! :!pinu.j L < :67 6B.K L < :B7 6B.L L < :%7 latch.le L <:Latch Enable przerzutnika latch.lq R < :J7 7latch.OE L Programowane Output Enable.R L < :(7 (8.S L < :87 (8.SP L < :2!27.T L < :,7.TFB R < : 7,makroceli 11
2 7 7 2 ; Rozszerzenie.AP: ( 2 5# 2 & 23 2 2! 2 2 5 $ 7 @K5#L#MIA 7& 2 2 2 2:3@DA&!#2! 7 5,72 2!7 ;Atmel ATF1500. Rozszerzenie.AR: ( 2 2 & 43 2! 2256222 ; : 7 2!25 12
Rozszerzenie.CE: ( 2 5.+22227%&:e wyzwalane!"2%.+15 8 & 27 3 : termu CE (ang. Clock + 1 25 < 2%.+& #,*GNEE #,0DNEE.+& 2 2 3 2 D& 2! 2 3 2%5 8 7.-" 2 4 rodziny Atmel ATF1500) zrobi to za nas automatycznie. Rozszerzenie.CK: ( 2 5.B 2 :! 2! : 5 $ :3 7! 2! pinów albo, do termu produkcji. Rozszerzenie.CK wybierze term produkcji. ( 2! 2& 7 3! 2&! pinu (na!1&! # 72! 2:3& #,*ONE "7 15 Rozszerzenie.CKMUX: ( 2 5.BC27 3! 25 62 #,*ONE5) &#,*GNEE& #,0DNEE7!&27 2 13
5.BC"2 2 5.B15 2 5.BC2 2 5.B5 Rozszerzenie.D: ( 2 5%2&27 3:%27%5, 7 7& 7 4! -% Atmela na rejestry typu D. Dla PLD Atmela takich jak ATF16V8B/20V8B/22V10B, ATV750/B i ATV2500/B 2 5%23&:!72, inaczej CUPL!5 Rozszerzenie.DFB: ( 2 5%0 2 &! # 2 24! : & 2%! 7 2 7 :5, 4! 2 27 7 #,* ONE? #,*GNEE?5 ( 2 5%0 7 27 2 7!: 7 5 Rozszerzenie.DQ: Rozszerzenie 5%J 2 & 27 3 : 2%5! 2 2 : 25 $ 2 14
27 :J2%5( 2 227 #,0DNEE DGP& 2 5 Rozszerzenie.INT 62 2: :7 ; 5 23 2 : : 7@buried zarówno :3 2 5 ( 2 2 27 #,0DNEE DGP& 2 5 Rozszerzenie.IO: ( 2 )'2 2 7 ; pinów z 5 62 7! 2 72 7! pinów I/O oraz logiki typu A 2 5 62 7 7 :3.-5 15
Rozszerzenia.J i.k: ( 2 56 5B 2 274 :3 stru J K. Równania! 2 2 22 (+9)8,+(8+-+.,&!2: 27%,5,2 27 do.-2h5q5 Rozszerzenie.L: 62 & 27 3 : 2"!5 latch). To rozszerzenie 2!7 : 7 7 &4 #,0DNEE5! 2 7& 7 2 :makroceli jako zatrzaskowe (ang. Latched output). 16
Rozszerzenie.LE: ( 2 5-+ 2 2 : ; 2! latche. 62!7 7 2 : 7 7 &227 #,0DNEE5& 72 -+5 Rozszerzenie.LQ: ( 2 2 22 274 2 :!"!5 imput 1! 2 : 2 "!5 latched). ( 2 227 #,0DNEE makroceli 128, lub 2 5 Rozszerzenie.OE: ( 2 5'+ 2 2 7 274 2! :! termu produkcji. Jest wymagane przy wykorzystywaniu dwukierunkowych pinów I/O oraz indywidualnie programowalnych : 27 # #,*ONE?&#,*GNEE? #,0DNEE5 # &72:'+ kontrolowane na poziomie 7&#,0DNEE 2 2 5 Rozszerzenia.S i.r: 17
( 2 2274:3("reset) i S (set) rejestru S-R. (! #,0DNEE!3727 2! 2 2 (+9)8,+(8+-+.,2 : rejestr typu D lub,5,2 27.-2H5Q5 Rozszerzenie.SP: Rozszerzenie to jest stosowane do ustawienia synchronicznego presetu rejestru na : 5$7 & : K 2 72 2! &!:#2! 7 5 Rozszerzenie.T: ( 2 5,274:,275! 2 7&7 4! 27,5( 2 27 #,0DNEE#,*ONE?GNEE5 18
Rozszerzenie.TFB: Roz2 5,0 2 &! makrocela jest ustawiona na kombinacyjne :& 2,! 7 2 7 :5 62 #,*ONE#,*GNEE5( 2 5,07 27 27!: 7 5 2.2.4 & ("# (!.-723 [!] var [.ext] =exp; gdzie: var 2 7 & 2 2 2 4! 2 25 6 2 2 & 227 72 25.ext 2 7 2 7 72 4 2 7!. exp2" 715 =277 72&77 72: & : 5! jest operatorem komplementarnym. W standartowych równaniac! 2 7 72 5 #+$% 7 7 72 ;& 7 272! 2! ;5 872 #+$% 2 4 ;! & & 2 #+$%277 7!5 (! 2 22! 7!5 2.2.5 Operacje na zbiorach: < 2 2 7& 2 7 4! 23 22!7 5'7!3 & 5 19
< 7 7 7 " 1 2 & 72 77 7 7 7! 5 9727 & 2 3 2 :3 567 7 7 2 zbiorów pierwotnych. 9 7 & 2 & 7 2 & 2 R 2.2.6 $ ('# < 7 & 7 : 7! 2!& 27 :3 7 25 2 7 7 pozycjami w zbiorze. Gdy pozycja binarna w zmiennej jest równa 1 element w zbiorze pozostaje niezmieniony, gdy jest równa 0 element zostaje zanegowany, gdy jest równa C 2 25 < 2 7 2 723 &2 37 5 '7 : 3 & 327&7 72 [A3, A2, A1, A0]:& [B3..B0]:# [C3, C2, C1, C0]:$ 8 A3 & A2 & A1 & A0 B3 # B2 # B1 # B0 C3 $ C2 $ C1 $ C0 2.2.7 $ ( # '7 2 2 7 7 :& & 7 2 2 2 :& 7 :5 87 : 2 :2 25 2 432 2"!52bus): FIELD adres =[A3..A0]; $27723 2 select = adres:[c..f]; 2 select = addres:c # addres:d # addres:e # addres:f; 2.3 %, 7 72 2 2 & : 7&2447 5 20
2.3.1 Definiowanie tablicy prawdy:. 2 272 72! 2 2 45 6.- 2,#-+& 2 5 72 43 22 2 : :& 7 27 3 7 7 :: 2 : -2 : : 3 27 3 7 72 5 $27 7 7 2 72 hexadecymalnego, na BCD: FIELD input = [in3..0]; FIELD output = [out3..0]; TABLE input => output { 0=> 00; 1=>01; 2=>02; 3=>03; 4=>04; 5=>05; 6=>06; 7=>07; 8=>08; 9=>09; A=>10; B=>11; C=>12; D=>13; E=>14; F=>15; } 2.3.2 Definiowanie automatu stanów (ang. state machine) # 2! 4#%?) 2 @ 4& 72 27!2 222727 5A8 2! 7 5! : 23 7 7! 2!& :!:! 7 & : 7 3! :& :! 7 I 72&! ; :! poprzedniego stanu, jak i stanów innych przerzutników 2.- 2 7 72 2& 2 : 7 :3&! "!5 combinatorial logic), 2 2& 2& :3 2"!5 registered 721& :3 normalnych. < :>2! 27 Logika kombinatoryczna jest to dowolna kombinacja bramek logicznych (zwykle AND i '(1& 7 2! : 72 7,7 " 2 7 propagacji, ang. propagation delay time).,7 2 2 7 7 : " 27!1 2:5 2 > : 2 2& 2 7 27 5 =4 25 21
(22>2 7 & :4! 25 $ 2 2 7 2& 7 2 :35(2 : 72 7 Tco (ang. clock to 1& 2 2 7 7 2!!& 27 7:7 5 # 7 3 2&.- 27 2& 7 3 4 5 8 8+J+$.+ 4 : 2 27 7 & 4 4 25 ( 2 8+J+$.+ 2 8+J+$.+%& 8+J+$.+6B& 8+J+$.+(8 8+J+$.+,& : 2 & : 222!77 %&6B&(8&,5, 7 27 2 SEQUENCE state_var_list { PRESENT state_n0 IF (condition1)next state_n1; IF (condition2) NEXT state_n2 OUT out_n0; DEFAULT NEXT state_n0; PRESENT state_n1 NEXT state_n2;... PRESENT state_nn statements; } gdzie: state_var_list > 2 2 7 2& ; automatu stanów. state_n > 2 2 : 2 2STS 2" : 23! 215 statements warunki, U& :722725 2.3.3 Definiowanie wielu automatów stanowych. 8.- 4! 2!!7-%59 42 2& 7 & 2 7 2" &!2!72& 7 3 15 8 7 7 7 zbiorach na bitach stanów danego automatu, lub zdefiniowanie globalnego rejestru, który 27 5 < 3! 2& 2 25 < 7 :3 7&!! 2! : 2" 215, 2 2 7 &! 2 27! &!! :3 " 2 7@A15 < : 2 2! 3 & 3 &! 4!!5 22
2.3.4 $ " # 8 CONDITION7 7:2 7 2 274 4! & 7 72 2 ; boolowskich. 82jak 7 CONDITION { IF expr0 OUT var;.. IF exprn OUT var; DEFAULT OUT var; } =2! 7 &! : 2275 2.3.5 Definiowanie funkcji 8 0$.,)'$7 22 77 72 7!4 5$ 37 w równaniach logicznych do reprezentacji tej funkcji. Format definiowania funkcji jest 27 FUNCTION name ([Parameter0,...,Parametern]) { body } <! 3 4&5 9 7 7& 7 4 4 2 3 5 4 4 2 27 2! 5 = 4 22! 4& 7 72 4 2& 2 4 2 2 :3VWE5 2.3.6 Deklaracja MIN: % )$ 4 7 :327&7 :37 & 2& 2 25 % )$72 7 minimalizacji 2 7 2.-50227 MIN var [.ext] = level; gdzie: MIN >22 727 5 var jest 7; 2.ext jest opcjonalnym rozszerzeniem które identyfikuje funkcje zmiennej level>2 2E5H E5H 7 7 & 2 & Quine-McClusky, Presto, Espresso 23
7 777 MIN async_out = 0; /* no reduction */ MIN [outa, outb] = 1; /* Quine McClusky reduction*/ MIN count.d = 4; /* Espresso reduction */ 3 $ )$, :7.-7 7:.-:2.-4Windows. 3.1 +( B7.-27!&: 7 22 2 27 7 ;!7 22 7 45)4 2 7 2 7 7!2 7!4! -%& 22 72 5 #3.- 3.-XPrograms> <WinCUPL>, pojawi 2 2 2 75 24
=File New otwiera plik wzorcowy PLD dla nowego projektu. Open>27 4 Save> 7247 Save As> 7247 7 Print drukuje obecnie wybrany dokument Exit wychodzi z programu =Edit Cut przenosi zaznaczony tekst do schowka Copy kopiuje zaznaczony tekst do schowka Paste wsadza tekst ze schowka w miejsce obecnie wskazywane przez kursor Delete kasuje zaznaczony tekst Copy Message>7 :32 Search szuka podanego tekstu. Line To przechodzi do podanego numeru linii. =Options Compiler Options>7 7:7 &7 47 :5< 73 2 7 275 Minimalization > 2 272 & :! 75 2 4 32G5F5Q5 25
Optimalization > 272 7 :! 7 2 4 32G5F5Q5 Output files>7 7 :5 download>77 5 Doc File Options opcje dla pliku.doc (rodzaj reprezentacji danych w nim zawartych). Output> 7 : 2 kompilacji. Device > 7! 5 72 7 2 7 pld. #3 & 72 :3!! 7& 27 3 %) -..& 3 274 7 5 26
Simulator options>7 2 7 5pld Listing File> 7 :2 "5so). Append Vectors dodaje wektory testowe do pliku.jed. Display Results>:!4 2:35 =adka Run kompilacja, symulacja i analiza Device Specific Compile kompilacja obecnie zaznaczonego projektu na : 5 Device Specific Simulate - symulacja obecnie zaznaczonego projektu na : 5 =Utilities>7 5 =Device Library> 7 ;.- a Calculator> windows File Manager>exploratora windows. DOS Prompt>:7 ;%'8windows. 27
Project opcje projektu Load wczytuje projekt z pliku.pld. 8T> 727" 27 2 1 Windows Sposób radzenia sobie z wieloma otwartymi oknami Cascade otwieraj okna kaskadowo Title> 2 2 Arrange Icons > 7! CUPL Help pomoc on-line i ogólne informacje na temat CUPL 3.2, (%' JEDEC (rozszerzenie.1>27 :!5! "!5 absolute file) (.21>.8)"!5.- logic simulation program program symulacyjny). "5 21> 22 2! 7 5 Plik dokumentacji (.doc) zawiera rozszerzone równania logiczne i tablice symboli zmiennych. A Open PLA file (.7 1>7 4 ;5 4 Tutorial CUPL, 7 7!37!.-4 windows. 27 3727!&727 CUPL. 4.1 Tworzenie bramek 72 3 7!.- 4 2& 27 file 3open. 28
< 7 3 gates.pld z katalogu examples. Plik gates.pld 7 73 2.-5 $ 7:3 7! 2 7 5 272!.-5 29
$:Options -> Compiler '72&:7 2simulate, a 77 do Output file, wybierz tam JEDEC i 2 & 73 7 6+%+. 25 62 7 7 expanded macro i list, aby 347 5 9 7 7 2 2& 7 2! ompilacji. Z menu.7 3Device Specific.7 ": 7 2 4! 723 7 7 15, 4 27 7 & 2 7 6+%+.& symulacje i doda do programu wektory testowe. ; 7 2 2 7 & 27 4! 2F5G5 4.2 Licznik do 10 Ten 7 2 2.-" 2 instrukcje warunkowe) 72 37 DE57 " katalogu U7 21!7 35 62! :2! 25< up, down i 2 5 Asynchroniczny 7 2!2!&! 2! :35 < 2 27 23! 77!7 "1&27 27 3"!37 41 37 4"5doc) 30
************************************************************ Count10 ************************************************************ CUPL(WM) 4.7a Serial# MW-67999999 Device g16v8ms Library DLIB-h-36-11 Created Mon May 06 10:19:28 1996 Name Count10 Partno CA0018 Revision 02 Date 12/19/89 Designer Kahl Company Logical Devices, Inc. Assembly None Location None ============================================================ Expanded Product Terms ============================================================ Q0.d =>!Q0 &!Q1 &!Q2 & Q3 &!clr #!Q0 &!Q3 &!clr Q1.d =>!Q0 &!Q1 &!Q2 & Q3 &!clr & dir # Q0 &!Q1 &!Q3 &!clr &!dir #!Q0 & Q1 &!Q3 &!clr &!dir # Q0 & Q1 &!Q3 &!clr & dir #!Q0 &!Q1 & Q2 &!Q3 &!clr & dir Q2.d =>!Q0 &!Q1 &!Q2 & Q3 &!clr & dir # Q0 & Q1 &!Q2 &!Q3 &!clr &!dir #!Q1 & Q2 &!Q3 &!clr &!dir # Q0 & Q2 &!Q3 &!clr & dir #!Q0 & Q1 & Q2 &!Q3 &!clr Q3.d => Q0 &!Q1 &!Q2 & Q3 &!clr & dir #!Q0 &!Q1 &!Q2 &!Q3 &!clr & dir # Q0 & Q1 & Q2 &!Q3 &!clr &!dir #!Q0 &!Q1 &!Q2 & Q3 &!clr &!dir carry =>!Q0 &!Q1 &!Q2 &!Q3 &!clr & dir # Q0 &!Q1 &!Q2 & Q3 &!clr &!dir clear => clr count => Q3, Q2, Q1, Q0 down =>!clr & dir mode => clr, dir up =>!clr &!dir carry.oe => 1 31
627.- 272 2e. 8.- 2 2 4 "2 ;15 4.3 Kwadrat Z menu 4 35, 2 7 45$ 3 7! B & 3 pinów, dla tego projektu 7 3 H :3 P :3" 7 DQ*P15 = H piny :2 :&2 2P7)?'2 :5 $27 2 4 2 2! " 7 2! 0)+-%15 9! & 27 3 2 2 75 $ 3&.- 72 7 (++#,& 2 725 Name SQUARE; Partno XX; Date 05/01/96; Revision 01; Designer Chip Willman; Company Logical Devices Inc.; Assembly None; Location U1; Device G16V8; /**********************************************************/ /* This Design Example is an example of a lookup table to */ /* produce the square of a number coming in. */ /* */ /**********************************************************/ /* Allowable Target Device Types: */ /**********************************************************/ /** Inputs **/ Pin [2..5] = [I0..3] ; /* Input bus line 4 bits */ /** Outputs **/ Pin [12..19] = [Ot0..7] ; /* Output bus line 8 bits */ /** Declarations and Intermediate Variable Definitions **/ Field input = [I3..0]; Field output = [Ot7..0]; /** Logic Equations **/ Table input=>output { d 00 => d 000; d 01 => d 001; d 02 => d 004; $REPEAT A = [3..15] d {A} => d {A*A}; $REPEND } < 7!.- 2 2 7 2 2! 5 < 7 U7 25U 72 2 : 7 5 32