0488 - OrCAD Cz.3

Niewątpliwie najbardziej spektakularnym programem pakietu OrCAD jest DRAFT. Niestety, zaznajomiliśmy z nim Czytelników już w zeszłym miesiącu. Dziś zapraszamy więc na wycieczkę po okolicach DRAFT-a. Aby nie zagubić się w gąszczu szczegółów, proponujemy zwiedzanie w stylu amerykańskim - rzut oka przez okno pędzącego autokaru. Celem, majaczącym gdzieś w oddali, jest płytka drukowana, zaprojektowana na podstawie schematu narysowanego za pomocą programu DRAFT oraz dokumentacja tego schematu.

Programy usługowe

Pierwszy obiekt, na który natkniemy się po drodze, to CLEANUP - program usuwający ze schematu nakładające się przewodzy i magistrale oraz ostrzegający o istnieniu innych nakładających się obiektów, np. etykiet. Wykonanie tego programu bezpośrednio po zakończeniu rysowania schematu pozwala zredukować liczbę błędów i ostrzeżeń podawanych przez inne programy usługowe.

Następna atrakcja - program ANNOTATE - warta jest uwagi wszystkich leniwych użytkowników OrCAD-a. Program ten automatycznie numeruje wszystkie podzespoły występujące na schemacie, zwalniając w ten sposób projektanta od konieczności pamiętania, że np. ostatni z kondensatorów umieszczonych na schemacie został oznaczony jako C63. Korzyści ze stosowania tego programu widać zwłaszcza wtedy, gdy modyfikacje schematu prowadzą do usunięcia z niego niektórych podzespołów. ANNOTATE pozwala wówczas uniknąć "dziur" w numeracji.

Najbardziej emocjonującą przygodą, jaką przeżyć można zwiedzając zaułki OrCAD-a, jest spotkanie z programem ERCHECK. Werifikuje on schemat pod kątem zgodności z zasadami mówiącymi, że nie wypada :

  • zwierać wyjść układów,
  • pozostawiać nie dołączonych wejść układów,
  • zwierać wyjść źródeł zasilania.

Do błędów i ostrzeżeń sygnalizowanych przez ERCHECK należy jednak podchodzić z pewną dozą sceptycyzmu. Po pierwsze - niektóre ostrzeżenia mają prawo pojawić się nawet w poprawnie zredagowanych schematach. Po drugie - niektóre informacje o błędach są fałszywe i wynikają (o czym dalej) z... błędów występujących w bibliotekach standardowych. Po trzecie - jeżeli ERCHECK nie sygnalizuje żadnych błędów, to.. jeszcze nic nie znaczy. Proponujemy informacje podawane przez omawiany program rozpatrywać zawsze w kontekście listy połączeń, o której za chwilę.

Najbardziej niedyskretnym programem usługowym OrCAD-a jest niewątpliwie NETLIST. Jest to źródło informacji o tym kto, z kim i... którym wyprowadzeniem. Inaczej mówiąc, NETLIST tworzy listę połączeń wszystkich podzespołów umieszczonych na schemacie. NETLIST umożliwia tworzenie listy połączeń w siedemnastu różnych formatach, dostosowanych m.in. do programów SPICE, PCAD, RACALREDAC. Dodajmy na marginesie, że pełna lista dostępnych formatów jest wyświetlana na ekranie monitora, gdy w wywołaniu programu NETLIST użyje się jakiejkolwiek niedozwolonej nazwy, np. BLABLABLA.

Lista połączeń jest tworzona głównie po to, aby umożliwić "przeniesienie" narysowanego schematu do programów symulacyjnych lub programów wspomagających projektowanie płytek drukowanych. Jednocześnie pozwala ona zweryfikować ostrzeżenia i błędy zgłaszane przez program ERCHECK. Listę połączeń schematu prezentowanego w poprzedniej części cyklu, zredagowaną w formacie COMPUTERVISION; przedstawia Rys.1.

Leniwy inżynier może liczyć na pomoc OrCAD-a również wtedy, gdy szef-sadysta zażąda od niego sporządzenia wykazu podzespołów występujących na schemacie. W tej sytuacji pomocny jest program PARLIST (Patrz Rys.2).

Na koniec chcemy jeszcze przedstawić dwa programy usługowe, które wprawdzie nie wiążą się bezpośrednio z przekuwaniem schematu w płytkę drukowaną, lecz są istotne dla osób, które skłonne są traktować ORCAD-a jako narzędzie pracy, a nie jak pakiet programów, o którym wypada coś wiedzieć. COMPOSER oraz DECOMP służą do kompilacji i dekompilacji bibliotek. Biblioteki standardowe na dyskietkach instalacyjnych mają postać skompilowaną - równie zwięzłą, co mało czytelną. Dlatego też, aby wzbogacić je o dodatkowe podzespoły lub usunąć wykryte błędy, należy je najpierw zdekompilować. Program DECOMP tworzy zbiory, które łatwo jest modyfikować korzystając ze zwykłego edytora tekstu. Jedynym problemem, z jakim należy się tutaj liczyć, jest znaczna długość bibliotek, np. zdekompilowany zbiór DEVICE.LIB (biblioteka elementów dyskretnych) zajmuje ponad 200 KB - kęs nie do przełknięcia dla niektórych edytorów.

Poprawione, uzupełnione czy wręcz nowo utworzone biblioteki należy skompilować korzystając z programu COMPOSER. W zasadzie można tu eksperymentować do woli, należy jednak wziąć pod uwagę fakt, że istniejąca biblioteka jest kasowana w momencie rozpoczęcia kompilacji jej nowej wersji. Jeżeli podczas kompilacji wystąpią błędy, to nowa biblioteka nie zostanie zapisana na dysk, a więc... odrobina ostrożności nie zaszkodzi.

 0001  N00001          U3-22  U4-2   U2-22
 0002  GND             C1-2  U3-14  U2-14  U4-7
                       U1-14
 0003  RAM1\           U3-20
 0004  R/W             U3-27  U4-1  U2-27
 0005  RAM2\           U2-20
 0006  ROM\            U1-20  U1-22
 0007  VCC             U1-27  U1-1  U2-26  U3-26
                       C1-01  U3-28  U2-28  U4-14
                       U1-28
 0008  D0              U1-11  U2-11  U3-11
 0009  D1              U1-12  U2-12  U3-12
 0010  D2              U1-13  U2-13  U3-13
 0011  D3              U1-15  U2-15  U3-15
 0012  D4              U1-16  U2-16  U3-16
 0013  D5              U1-17  U2-17  U3-17
 0014  D6              U1-18  U2-18  U3-18
 0015  D7              U1-19  U2-19  U3-19
 0016  A0              U1-10  U2-10  U3-10
 0017  A1              U1-9  U2-9  U3-9
 0018  A2              U1-8  U2-8  U3-8
 0019  A3              U1-7  U2-7  U3-7
 0020  A4              U1-6  U2-6  U3-6
 0021  A5              U1-5  U2-5  U3-5
 0022  A6              U1-4  U2-4  U3-4
 0023  A7              U1-3  U2-3  U3-3
 0024  A8              U1-25  U2-25  U3-25
 0025  A9              U1-24  U2-24  U3-24
 0026  A10             U1-21  U2-21  U3-21
 0027  A11             U1-23  U2-23  U3-23
 0028  A12             U1-2  U2-2  U3-2 

Rys.1 Przykładowa lista połączeń.
 {De-Compiled Library}

 PREFIX
 END

 '88486'
 REFERENCE  'Super scalak'
 {X Size =}  16  {Y Size =}  20  {Parts per Package =}  1
 R1     31    SHORT   I/O     'SHORT'
 R3     32            PAS     'PAS'
 R5     33    DOT     HIZ     'DOT'
 R7     36    CLK     IN      'CLK'
 R9     38    SHORT   OUT     'SHORT'
 R11    40            OC      ''
 R12    41            I/O     'R12'
 R14    255   CLK     I/O     '255'
 R16    256   CLK     I/O     '256'
 R18    258   CLK     OUT     '258'
 L1     27            OUT     'L1'
 L3     19            OC      'L3'
 L4     20            OUT     'L4'
 L6     21            OUT     'N\e\g\a\c\j\a'
 L7     28            OUT     'O\P\I\S\U\'
 L10    10            OC      'OC'
 L12    14    SHORT   HIZ     'HIZ'
 L14    14    DOT     OUT     'OUT'
 L16    16    CLK     IN      'IN'
 L20    20            OUT     'L20'
 B5     5     DOT     IN      'DOLNY DRUT'
 B10    10            OUT     'B\1\0\'
 T6     6             IN      'TOP6'
 T9     9     CLK     OUT     'T9'
 L0     1     DOT     PWR     'Vcc'
 R0     7             PWR     'Vss'

 Rys.3 Definicja "Super scalaka".

--- * --- * ---

 Revised: January  7, 1988 
 Revision 1

 Bill Of Materials        January 22, 1988    21:06:33      Page

  Item    Quantity   Reference            Part
 ------------------------------------------------
     1         1     U1                   2764
     2         2     U1,U3                6264
     3         1     U4                   74LS04
     4         1     C1                   100 uF

 Rys.2 Przykładowy wykaz podzespołów.

Dla tych, co chcą, a nie mogą

Rys. 3.a

Z myślą o Czytelnikach, którzy chcieliby praktycznie zaznajomić się z OrCAD-em, a nie mają możliwości skorzystania z oryginalnej dokumentacji, zamieszczamy skrótowe informacje o składni zleceń pozwalających wywołać omówione wyżej programy usługowe. Pragniemy zaznaczyć, że ograniczamy się tutaj do następującego przypadku :

  • schemat narysowany na jednym arkuszu,
  • OrCAD zainstalowany na dysku stałym.

ANNOTATE schemfile/M - automatyczna numeracja podzespołów schematu zapisanego w zbiorze "schemfile".

CLEANUP schemfile - usunięcie ze schematu "schemfile" nakładających się obiektów.

COMPOSER filename libname - kompilacja biblioteki.

DECOMP libname filename - dekompilacja biblioteki.

ERRCHECK schemfile - sprawdzenie poprawności schematu "schemfile" (informacje o błędach wyświetlane na ekranie).

ERCHECK schemfile errfile - sprawdzenie poprawności schematu "schemfile" (informacje o błędach zapisywane w zbiorze "errfile").

NETLIST schemfile format/S - utworzenie listy połączeń w formacie "format" dla schematu "schemfile" (lista wyświetlana na ekranie).

NETLIST schemfile netfile format/S - utworzenie listy połączeń w formacie "format" dla schematu "schemfile" (lista zapisywana w "netfile").

PARTLIST schemfile - utworzenie wykazu podzespołów schematu "schemfile" (wykaz wyświetlany na ekranie).

PARTLIST schemfile partfile - utworzenie wykazu podzespołów schematu "schemfile" (wykaz zapisywany w "partfile").

Biblioteki

O wypożyczaniu elementów z biblioteki pisaliśmy poprzednim razem. Teraz zajmiemy się zaopatrzeniem biblioteki w nowe pozycję. Postanowiliśmy przedstawić zasady tworzenia bibliotek na podstawie przykładów, które proponujemy potraktować jako rebusy do samodzielnego rozwiązania.

Kilku słów ostrzeżenia wymagają biblioteki standardowe. W bibliotece TTL.LIB zauważyliśmy błędne określenie rodzaju wyjść w układach 74LS125 i 74LS126. Podano tam typ wyjścia OUT, podczas gdy powinno być HIZ (trój-stanowe). Podobnych drobnych błędów jest więcej. One to właśnie powodują podawanie przez program ERCHECK fałszywych ostrzeżeń. Przyczyną kłopotów mogą być także wyprowadzenia masy, oznaczane dla niektórych układów scalonych jako GND, dla innych - VSS oraz wyprowadzenia "plusa" zasilania (VCC lub VDD). W razie wątpliwości dobrze jest sprawdzić na liście połączeń, czy zasilanie zostało prawidłowo doprowadzone do wszystkich podzespołów.

 {De-Compiled Library}

 PREFIX
  '74LS'   = 'LS'      { PREFIX - stały przedrostek }
  '74S'    = 'S'       {    dla grópy elementów     }
  '74ALS'  = 'ALS'
  '74AS'   = 'AS'
  '74HCT'  = 'HCT'
  '74HC'   = 'HC'
  '74'
 END

 '74LS00'
 '74S00'
 '74ALS00'             { Spis elementów, które przedstawiane }
 '74AS00'              {  będą tym samym obrazem graficznym, }
 '74HCT00'             {     z takimi samymi symbolami       }
 '74HC00'              {      i rodzajami wyprowadzeń.       }
 '7400'
 '74LS24'
 '7426'
 '74S37'
 '7437'
 '74LS132'
 '74HCT132'
 '74HC132'
 '74ALS1000'
 '74AS1000'
 
 {X Size =} 6     {Y Size =} 4     {Parts per Package =} 4
 L1     1     4     9    12        IN  'I0'
 L3     2     5    10    13        IN  'I1'
 R2     3     6     8    11  DOT  OUT  'O'
 T0    14    14    14    14       PWR  'VCC'
 B0     7     7     7     7       PWR  'GND'
 {  0} ###############################################...............

 Mapa bitowa bramki NAND 7400

 { 40} ###############################################...............

 CONVERT
 L1      1     4     9    12  IN   'I0'
 L3      2     5    10    13  IN   'I1'
 R2      3     6     8    11  OUT  'O'
 T0     14    14    14    14  PWR  'VCC'
 B0      7     7     7     7  PWR  'GND'
 {  0} ###########################################.....................

 Alternatywna mapa bitowa

 { 40} ###########################################.....................

 '74LS09'
 '74S09'          { Jak w przykładzie powyżej, lecz zamianie }
 '74ALS09'        {      ulegają symbole oraz rodzaje        }
 '74HC09'         {          wyprowadzeń elementu.           }
 '74HC09'
 '7409'
 {X Size =}  6    {Y Size =} 4    {Parts per Package =} 4
 L1     1     4     9    12    IN   'I0'
 L3     2     5    10    13    IN   'I1'
 R2     3     6     8    11    OC   'O'
 T0    14    14    14    14    PWR  'VCC'
 B0     7     7     7     7    PWR  'GND'
 BITMAP '74LS00'
 CONVERT
 L1    01    04    09    12       IN   'I0'
 L3    02    05    10    13       IN   'I1'
 R2    03    06    08    11  DOT  OC   'O'
 T0    14    14    14    14       PWR  'VCC'
 B0     7     7     7     7       PWR  'GND'
 CONVERT '74LS00'

 Rys.5 Fragmenty definicji bramki 7400 i 7409.

--- * --- * ---

 'ELIT'
 REFERENCE 'C'

 {X Size =}  2      {Y Size =}  2      {Parts per Package =}
 T1  SHORT  PAS '1'
 B1  SHORT  PAS '2'

 {  0} ..........#..........
 {  1} ..........#....#.....
 {  2} ..........#....#.....
 {  3} ..........#..#####...
 {  4} ..........#....#.....
 {  5) ..........#....#.....
 {  6} ..........#..........
 {  7} ...###############...
 {  8} ...#.............#...
 {  9} ...###############...
 { 10} .....................
 { 11} ...###############...
 { 12} ...###############...
 { 13} ...###############...
 { 14} ..........#..........
 { 15} ..........#..........
 { 16} ..........#..........
 { 17} ..........#..........
 { 18} ..........#..........
 { 19} ..........#..........
 { 20} ..........#..........

 CONVERT
 T1  SHORT  PAS '1'
 B1  SHORT  PAS '2'

 {  0} ..........#..........
 {  1} ..........#..........
 {  2} ..........#......#...
 {  3} ..........#......#...
 {  4} ..........#....#####.
 {  5) ..........#......#...
 {  6} ..........#......#...
 {  7} ..........#..........
 {  8} ..#.......#.......#..
 {  9} ..#..###########..#..
 { 10} ..#...............#..
 { 11} ..#################..
 { 12} ..........#..........
 { 13} ..........#..........
 { 14} ..........#..........
 { 15} ..........#..........
 { 16} ..........#..........
 { 17} ..........#..........
 { 18} ..........#..........
 { 19} ..........#..........
 { 20} ..........#..........

 Rys.4 Definicja kondensatora elektrolitycznego.

Rys. 4a

 {De-Compiled Library}

 PREFIX
 END

 'MA'
 {X Size =} 1     {Y Size =} 1    {Parts per Package =} 0
 T1     PWR  ''
 {  0} ...........
 {  1} ...........
 {  2} ...........
 {  3} ...........
 {  4} ..#####....
 {  5} .......#...
 {  6} ..######...
 {  7} .#.....#...
 {  8} ..######...
 {  9} ......#....
 { 10} .......#...

 'MC'
 {X Size =} 1     {Y Size =} 1     {Partsper Package =} 0
 T1     PWR  ''
 {  0} ...........
 {  1} ...........
 {  2} ......#....
 {  3} .....#.....
 {  4} ..######...
 {  5} .#......#..
 {  6} .#.........
 {  7} .#......#..
 {  8} ..######...
 {  9} ...........
 { 10} ...........

 Rys.6 Biblioteka polskich liter.

Przejdźmy teraz do omówienia sposobu definiowania elementów bibliotecznych. Na początek proponujemy zapoznanie się z Rys.3, przedstawiającym zaprojektowany przez nas "super scalak", któremu nadaliśmy oznaczenie 88486. Po prawej stronie definicji tekstowej zamieściliśmy symbol graficzny "super scalak-a". Staraliśmy się maksymalnie zróżnicować rodzaje wyprowadzeń tego układu (np. IN,OUT), ich usytuowanie, nazwy i numeracje, a także sposób rysowania wyprowadzeń (np.SHORT,DOT). Jednostką używaną przy określaniu gabarytów obiektu jest 10 punktów (pikseli) obrazu. Ta sama dotyczy lokalizacji wyprowadzeń na obrysie obiektu, a litera (L, R, T lub B) oznacza odpowiedni blok obrysu. Dla obiektu przyjmowany jest obrys prostokątny, chyba że (jak w następnym przykładzie) definicja zawiera tzw. mapę bitową, która pozwala określić kształt definiowanego symbolu z rozdzielczością jednego piksela.

Jak zapewne uważny Czytelnik zauważył, w przypadku umieszczania na schemacie niektórych podzespołów w dyrektywie PLACE pojawia się opcja CONVERT. Jej istnienie oznacza, że w definicji podzespołu występują dwie mapy bitowe. Przykład tak zdefiniowanego elementu przedstawia Rys. 4. Jest to kondensator elektrolityczny, który przedstawiliśmy w formie zgodnej i niezgodnej z Polską Normą. Liczne przykłady możliwości zastosowania alternatywnej mapy bitowej znajdujemy w bibliotece TTL.LIB, np. bramkę NAND można przedstawić jako bramkę OR z zanegowanymi wejściami.

Twórcy pakietu OrCAD zadbali o wygodę użytkownika tworzącego bibliotekę podzespołów. Jeżeli różne podzespoły biblioteczne mają te same symbole graficzne, to wystarczy zdefiniować dla nich jedną wspólną mapę bitową. Widać to wyraźnie na Rys. 5, który przedstawia fragmenty definicji bramki 7400, pochodzące z biblioteki TTL.LIB. Fragmenty te uzupełniliśmy naszym komentarzem wyjaśniającym rolę poszczególnych fragmentów definicji, natomiast wszystkie komentarze podane w języku angielskim zostały umieszczone w tekście automatycznie, podczas dekompilacji biblioteki.

Końcowy fragment rysunku przedstawia definicję bramki 7409 opartą na mapie bitowej bramki 7400, lecz ze zmienionymi rodzajami wyprowadzeń. Podobnie, zmieniając numerację wyprowadzeń, można uzyskać np. definicję bramki 7401.

Przy okazji omawiania bibliotek chcemy przedstawić jedną z możliwości zastosowania polskich liter w opisach schematów. Nietrudno się w tym momencie domyślić, że chodzi o bibliotekę podzespołów będących... polskimi literami. Rys. 6, przedstawia początkowy fragment takiej biblioteki zbudowanej przez nas, a wykorzystanej po raz pierwszy podczas rysowania schematów do artykułu "Atari ST i monitory" ("Komputer" 12/87).

Marek Matuszczak, Mariusz Dec, "Komputer " Kwiecień 1988r.