Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Konwencje nazywania sygnałów w układach cyfrowych, równaniach i kodzie programów

ghost666 01 Lip 2018 01:49 1791 3
  • Konwencje w tworzeniu oznaczeń dla zmiennych czy funkcji są niezwykle widoczne. Warto jest używać spójnego sposobu tworzenia nazw w swoich projektach - schematach urządzeń elektrycznych, oprogramowaniu etc. Dzięki temu będą one znacznie czytelniejsze dla odbiorców. W poniższym materiale przyjrzymy się kilku konwencjom, stosowanych w różnych aplikacjach.

    Konwencje nazywania zmiennych i funkcji w C/C++

    W programowaniu zasadniczo mamy do wyboru jedną z dwóch konwencji - snake_case lub camelCase - obie one wspierane są tak przez C i C++ jak i większość innych, współcześnie używanych języków programowania. Pierwsza z nich, jak sugeruje wygląd samej nazwy, polega na rozdzielaniu poszczególnych słów znakiem podkreślnika - _. Na przykład:

    Code:
    int  main_loop_counter = 0;


    Natomiast druga - camelCase - polega na rozdzielaniu słów rozpoczynaniem ich wielką literą (oprócz pierwszego słowa). Ten sposób nazywania zmiennych oraz funkcji ma istotną zaletę w postaci tworzenia krótszych nazw, co nie jest bez znaczenia. Przykładowa zmienna oznaczona camelCase wygląda tak:

    Code:
    int  mainLoopCounter = 0;


    Wiele osób preferuje ten rodzaj notacji z uwagi na bardziej zwarte nazwy. Większość osób korzysta z klasycznego camelCase - zaczynającego się małą literą. Jego alternatywna wersja, nazywana czasami PascalCase, zaczyna się wielką literą:

    Code:
    int  MainLoopCounter = 0;


    Jedną z modyfikacji powyższych zapisów nazw jest tzw. notacja węgierska, czyli poprzedzanie nazwy zmiennej literą, która odpowiada typowi zmiennej czy funkcji, z jaką mamy do czynienia. W ten sposób:

    Code:
    int  i_main_loop_counter = 0;

    Code:
    int  iMainLoopCounter = 0;


    Więcej o konwencjach nazywania zmiennych (i nie tylko) znaleźć możemy w tym artykule.

    Konwencje nazywania sygnałów logicznych/cyfrowych

    Sposób zapisu nazw sygnałów logicznych w obwodach cyfrowych także może być różny - zależnie od preferencji użytkownika. Istnieje kilka metod zapisu i tak długo, jak długo jest on jednoznaczny i spójny w całej tworzonej przez nas dokumentacji, stosować możemy dowolny z opisanych poniżej systemów notacji. Poniżej przedstawiono przykładowy układ logiczny wraz z opisanymi sygnałami. Na tym przykładzie będziemy operować.

    Konwencje nazywania sygnałów w układach cyfrowych, równaniach i kodzie programów






    Z uwagi na podobieństwa pomiędzy arytmetyką boolowską, a operacjami na zwykłych liczbach, w zapisie wykorzystywać można podobieństwa - AND do mnożenia oraz OR do dodawania. Stąd też często widzimy zamiast y = a & b zapis y = ab lub zamiast y = a || b zapis y = a + b. Taki zapis wynika między innymi z faktu, że znaki mnożenia i dodawania są znacznie częściej używane, a co za tym idzie - dostęp do nich na klawiaturze jest znacznie lepszy.

    Innym problemem jest negacja. Jeśli zapisujemy równania logiczne na kartce to najprostszą metodą jest narysowanie poziomej kreski nad daną wartością, co opisuje jej negację. Taka notacja jest najwygodniejszym i najbardziej kompaktowym sposobem zapisania negacji, który jest dodatkowo niezwykle intuicyjny. Korzystając z tego zapisu dla pokazanego układu bramek równanie zapisać można jako:

    Konwencje nazywania sygnałów w układach cyfrowych, równaniach i kodzie programów


    Oczywiście, taką notyfikację możemy także wykorzystywać w połączeniu z znakami & oraz | do opisu operacji AND oraz OR. Dodatkowo warto jest skorzystać z nawiasów, aby uściślić kolejność operacji w systemie. W ten sposób otrzymamy notację, której przykład zaprezentowano poniżej:

    Konwencje nazywania sygnałów w układach cyfrowych, równaniach i kodzie programów


    Zapis taki nie jest problemem dopóki korzystamy z kartki. Co jednak, jeśli chcemy zapisać równania na komputerze? Zależnie od tego w czym pracujemy, zapis w postaci kresek nad nazwami zmiennych może nie być możliwy. Co wtedy?

    Mamy dwie wygodne opcje - możemy jako znak negacji wykorzystać wykrzyknik ! lub tyldę ~ postawioną przed zmienną. Pierwszy z tych zapisów pochodzi wprost z języka programowania C, gdzie !0 = 1; w ten sposób uzyskujemy zapis:

    Code:
    y = (!a & !s) | !(q & !r) | !(r | s);


    Jeśli jednak preferujecie wykorzystanie tyldy przed zmienną, to możecie zapisać naszą przykładową funkcję w następujący sposób:

    Code:
    y = (~a & ~s) | ~(q & ~r) | ~(r | s);


    To jeden z tych przykładów, gdzie najważniejsze są preferencje użytkowników, gdyż żadna z notacji nie ma przewag nad drugą. Wykrzyknik może być jednakowoż wygodniejszy dla osób zaznajomionych z C, z uwagi na to, że jest on wykorzystywany tam jako negacja, a z kolei tylda pojawia się w tym języku programowania jako operator bitowy negujący bity w zmiennej.

    Konwencja nazywania sygnałów na schemacie

    Trzecim zagadnieniem, jakie omawiamy w poniższym artykule, jest kwestia nazywania sygnałów elektrycznych na schematach ideowych. Temat ten zostawiliśmy na koniec, ponieważ jest on niejako połączeniem obu powyższych - sygnały muszą mieć swoją nazwę, którą zapisać możemy np. camelCasem lub snake_casem, a dodatkowo mogą być negowane, jak i poddawane innym operacjom logicznym.

    Jeśli chodzi o autora powyższego artykułu, preferuje on wykorzystanie !, & oraz | do notacji operacji logicznych, odpowiednio, NOT, AND i OR. Niestety, bardzo często w programach EDA nie możemy wykorzystywać niektórych - lub wszystkich - z tych znaków z uwagi na to, że są one wykorzystywane do realizowania jakichś funkcji tego oprogramowania. Przyjrzyjmy się poniższemu, przykładowemu schematowi ideowemu z układami cyfrowymi.

    Konwencje nazywania sygnałów w układach cyfrowych, równaniach i kodzie programów


    Widzimy tutaj, że dwa zestawy znaków reprezentują tę samą funkcję logiczną. Jeżeli sygnały enX oznaczają zmienną w logice dodatniej, to enbX oznaczają sygnały zanegowane - w logice negatywnej. Dlaczego wykorzystano akurat liczbę b? taka sama sytuacja ma miejsce w przypadku przerzutników, gdzie wyjścia opisane są często jako q oraz qb.

    Za taką notacją stoi jednakże całkiem spora logika. litera b lub B często wykorzystywana jest do indykacji negacji w sygnale - po angielsku belka (ta nad nazwą zmiennej) to 'bar'. Dlatego też litera ta często jest inkorporowana w nazwę zmiennej, aby wskazać, że jest ona zanegowana: en_B1 lub en_B_1. Czasami inżynierowie zamiast tego stosują literę N ('NOT'): enN1, en_N1 lub en_N_1). Litera B lub N pojawić się może też jako prefix: Ben1, B_en1, B_en_1, Nen1, N_en1 lub N_en_1.

    Oprócz powyższych istnieje jeszcze wiele innych konwencji. Jakie znacie Wy? jakich używacie?

    Źródło: https://www.eeweb.com/profile/max-maxfield/articles/signal-naming-conventions-in-code-equations-schematics


    Fajne! Ranking DIY
  • #2 01 Lip 2018 12:29
    lemgo
    Poziom 12  

    Konwencja doboru nazw identyfikatorów w programowaniu jest częścią tzw. "coding style".
    Duże firmy często publikują własne, jak choćby https://google.github.io/styleguide/cppguide.html - to jest styl kodowania dla C/C++. Ogólnie - warto sobie przyswoić albo adaptować jakiś i go konsekwentnie stosować.

  • #3 01 Lip 2018 15:20
    ghost666
    Tłumacz Redaktor

    lemgo napisał:
    Konwencja doboru nazw identyfikatorów w programowaniu jest częścią tzw. "coding style".
    Duże firmy często publikują własne, jak choćby https://google.github.io/styleguide/cppguide.html - to jest styl kodowania dla C/C++. Ogólnie - warto sobie przyswoić albo adaptować jakiś i go konsekwentnie stosować.


    Konwencji jest wiele. Najważniejsze jest, że jak się już jakąś przyjmie, to aby się jej ściśle trzymać :).

  • #4 03 Lip 2018 10:29
    3149400
    Użytkownik usunął konto  
  Szukaj w 5mln produktów