następny punkt » |
Każdy scalony układ programowalny zawiera pewien zestaw układów logicznych oraz strukturę ścieżek, która umożliwia realizowanie połączeń między poszczególnymi układami logicznymi, odpowiednio do potrzeb implementowanego projektu. Poglądowo wyjaśnia to rysunek XII.1. Na rysunku XII.1a pokazano przykładowy zestaw bramek i ścieżek: dwie bramki logiczne A i B oraz ścieżki a, b, c, d, e, f. Jeżeli będziemy chcieli połączyć wyjście bramki A z wejściem bramki B, to musimy wykonać połączenia takie jak pokazano na przykład na rysunku XII.1b.
Rys. XII.1. a) Przykładowy zestaw bramek i ścieżek w układzie programowalnym, b) przykładowa realizacja połączenia między bramkami A i B
Realizacja połączeń między dostępnymi układami za pomocą dostępnych ścieżek jest określana jako programowanie układu albo jako konfigurowanie układu.
Wyjaśnijmy teraz w jaki sposób, mając do dyspozycji gotowy (zamknięty w obudowie) układ scalony, można programować (wykonywać) połączenia pomiędzy poszczególnymi ścieżkami w strukturze scalonej. Znanych jest kilka metod realizacji takich połączeń. Jeden ze sposobów polega na wykorzystaniu struktur bezpiecznikowych. Jeżeli między dwoma ścieżkami umieścimy bezpiecznik, tak jak na rysunku XII.2a, to dopóki bezpiecznik ten nie zostanie przepalony, istnieje połączenie między ścieżkami a i b. Po przepaleniu bezpiecznika połączenie zostaje przerwane (rysunek XII.2b).
Rys. XII.2. Programowanie połączenia z wykorzystaniem bezpiecznika. a) Bezpiecznik sprawny, b) bezpiecznik przepalony
Przy wykorzystaniu bezpieczników, w układzie programowalnym na początku są wykonane wszystkie możliwe połączenia i programowanie polega na usuwaniu niepotrzebnych połączeń, a więc na przepalaniu odpowiednich bezpieczników. Programowanie struktury połączeń odbywa się w specjalnych programatorach. W tym przypadku proces programowania jest nieodwracalny. Źle zaprogramowany układ nadaje się jedynie do wyrzucenia.
Stosowane są również rozwiązania, w których zamiast bezpieczników wykorzystuje się tzw. antybezpieczniki, to znaczy elementy, które na początku nie przewodzą, a dopiero po zaprogramowaniu stanowią zwarcie. W tym przypadku, na początku w strukturze nie ma żadnych połączeń między ścieżkami i dopiero procedura programowania uaktywnia odpowiednie połączenia.
W innym rozwiązaniu, zamiast bezpieczników wykorzystuje się tranzystory z podwójną (pływającą) bramką. Symbol takiego tranzystora pokazano na rysunku XII.3. Dopóki na tę dodatkową bramkę Gf, która jest odizolowana od otoczenia, nie zostanie wprowadzony ładunek, to tranzystor zachowuje się jak zwykły tranzystor typu MOS - przy odpowiedniej polaryzacji tranzystor przewodzi prąd między drenem D a źródłem S. Jeżeli natomiast na dodatkową bramkę zostanie wprowadzony ładunek, to przy takiej samej polaryzacji jak poprzednio, tranzystor jest odcięty i nie przewodzi prądu między drenem D a źródłem S. Ponieważ pływająca bramka jest odizolowana od otoczenia, to ładunek wprowadzony na tę bramkę może utrzymywać się przez długi czas (minimum 10 lat) i stan połączenia realizowanego przez tranzystor można traktować jako stały.
Rys. XII.3. Tranzystor z podwójną bramką
Programowanie układów z tranzystorami z podwójna bramką jest realizowane w specjalnych programatorach. Jednak tym razem, w przypadku pomyłki można zmienić stan zaprogramowanych połączeń (wszystkich równocześnie), wykorzystując do tego celu specjalne urządzenie, tzw. kasownik, w którym układ może zostać naświetlony promieniami ultrafioletowymi, co powoduje usunięcie ładunków z pływających bramek. Następnie układ można ponownie zaprogramować.
W innym rozwiązaniu, do realizacji połączeń wykorzystuje się tranzystory MOS sterowane sygnałami pochodzącymi z współpracujących przerzutników FF; przykład połączenia pokazano na rysunku XII.4. Jeżeli w przerzutniku będzie zapamiętane logiczne zero, to tranzystor MOS nie przewodzi. Jeżeli natomiast w przerzutniku zapamiętana będzie jedynka logiczna, to tranzystor będzie przewodził.
Rys. XII.4. Realizacja programowanych połączeń z wykorzystaniem tranzystorów MOS i współpracujących przerzutników (komórek pamięci)
W tym przypadku programowanie struktur polega na zapisaniu informacji do przerzutników współpracujących z poszczególnymi tranzystorami MOS. Informację tę można wprowadzić na początku pracy z urządzeniem, bezpośrednio po włączeniu zasilania. Informacja o konfiguracji połączeń w układzie programowalnym będzie utrzymana do czasu wyłączenia zasilania i przy ponownym włączeniu zasilania musi być ponownie wprowadzona. Zauważmy, że w poprzednio omówionych rozwiązaniach zaprogramowana konfiguracja połączeń była utrzymywana niezależnie od tego czy zasilanie było włączone czy nie.
Jeszcze inna możliwość programowania połączeń polega na wykorzystaniu układów multiplekserów (rysunek XII.5). To rozwiązanie jest wygodne wtedy, gdy na daną ścieżkę chcemy przesłać sygnał z jednej z kilku ścieżek. Wyboru właściwej ścieżki wejściowej dokonuje się za pomocą wejść adresowych sterowanych z pomocniczych przerzutników. Programowanie połączeń polega, podobnie jak poprzednio, na zapisaniu właściwych informacji do poszczególnych przerzutników. Dodajmy, że w praktyce realizuje się to bez wyjmowania układu programowalnego z urządzenia.
Rys. XII.5. Łączenie ścieżek sygnałowych z wykorzystaniem multipleksera
Zanim przejdziemy do omówienia przykładowych układów programowalnych musimy poznać konwencję rysowania schematów przyjętą w układach programowalnych. Na rysunku XII.6a pokazano klasyczną konwencję rysowania symboli bramek logicznych (na przykładzie bramki AND), a na rysunku XII.6b pokazano konwencję stosowaną w układach programowalnych. Zauważmy, że w klasycznej konwencji ścieżki sygnałów wejściowych doprowadzane są bezpośrednio do symbolu bramki. W nowej konwencji do symbolu bramki dochodzi jedna linia, którą przecinają prostopadłe linie ścieżek sygnałowych. Jeżeli chcemy zaznaczyć, że określona ścieżka sygnałowa ma być dołączona do bramki, to na przecięciu tej ścieżki z linią dochodzącą do bramki wstawiany jest symbol połączenia.
Rys. XII.6. Dwie konwencje zaznaczania połączeń doprowadzanych do wejść bramek: a) klasyczna, b) stosowana w układach programowalnych
W obu przypadkach pokazanych na rysunku do wejść bramki doprowadzane są sygnały a i b. Sygnały c i d nie są doprowadzone do wejść bramki.
następny punkt » |