eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaNauka programowania FPGARe: Nauka programowania FPGA
  • Path: news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit
    0.net!border1.nntp.ams1.giganews.com!border2.nntp.ams1.giganews.com!nntp.gigane
    ws.com!newsfeed.neostrada.pl!unt-exc-02.news.neostrada.pl!unt-spo-a-02.news.neo
    strada.pl!news.neostrada.pl.POSTED!not-for-mail
    Subject: Re: Nauka programowania FPGA
    Newsgroups: pl.misc.elektronika
    References: <5a795eef$0$667$65785112@news.neostrada.pl>
    <5a7b81dc$0$575$65785112@news.neostrada.pl>
    <b...@g...com>
    <5a7bf01b$0$574$65785112@news.neostrada.pl>
    <c...@g...com>
    From: Grzegorz Kurczyk <g...@c...usun.slupsk.pl>
    Date: Thu, 8 Feb 2018 23:20:01 +0100
    User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101
    Thunderbird/52.6.0
    MIME-Version: 1.0
    In-Reply-To: <c...@g...com>
    Content-Type: text/plain; charset=utf-8; format=flowed
    Content-Language: pl-PL
    Content-Transfer-Encoding: 8bit
    Lines: 112
    Message-ID: <5a7ccd12$0$567$65785112@news.neostrada.pl>
    Organization: Telekomunikacja Polska
    NNTP-Posting-Host: 91.222.161.212
    X-Trace: 1518128402 unt-rea-b-01.news.neostrada.pl 567 91.222.161.212:43649
    X-Complaints-To: a...@n...neostrada.pl
    Xref: news-archive.icm.edu.pl pl.misc.elektronika:729061
    [ ukryj nagłówki ]

    W dniu 08.02.2018 o 22:10, s...@g...com pisze:
    > W dniu czwartek, 8 lutego 2018 07:37:17 UTC+1 użytkownik Grzegorz Kurczyk napisał:
    >> W dniu 08.02.2018 o 00:50, s...@g...com pisze:
    >>
    >>> Dobrze napisane! Jako przykład można podać taką sekwencję w C:
    >>> a=1;
    >>> b=2;
    >>> c=a+b;
    >>> Wiadomo, że powyższe może dać zupełnie inny wynik, jeżeli pomieszamy
    kolejnościami instrukcji np. tak:
    >>> c=a+b;
    >>> b=2;
    >>> a=1;
    >>> Tymczasem w języku opisu sprzętu owa kolejność zapisu nie ma żadnego znaczenia.
    >>>
    >>
    >>
    >> A jeszcze lepszy numer, to różnica między zapisem w Verilogu:
    >> b = a;
    >> c = b;
    >> d = c;
    >>
    >> a taką wersją:
    >> b <= a;
    >> c <= b;
    >> d <= c;
    >>
    >> tego raczej nie sposób zrozumieć bez uświadomienia sobie, że "a", "b",
    >> "c" i "d" to dwie sztuki UCY7474 ;-) czyli cztery przerzutniki wyzwalane
    >> zboczem. W pierwszym przypadku syntezer i optymalizator może zwinąć te
    >> cztery linijki kodu do jednego przerzutnika, a w drugim przypadku
    >> dostaniemy czterobitowy rejestr przesuwny :-)
    >>
    >> Tej jawności zapisu zawsze mi brakowało w VHDL-u
    >>
    >> --
    >> Pozdrawiam
    >> Grzegorz
    >
    > ===============
    >
    > Sie zagalopowałeś.. Ten drugi przypadek a<=b itd.. istotnie sugeruje shift
    register, no ale dla ścisłości należałoby to opisać jako proces z pewną listą
    parametrów czułości. Skomplikowane?! Nie !! Precyzyjne!!

    Aj tam zaraz zagalopowałem ;-) co najwyżej użyłem zbyt dużego skrótu
    myślowego :-) Chodziło mi konkretnie o takie dwa przykłady:

    module test1(
    input clk,
    input a,
    output reg d
    );
    reg b, c;
    always @(posedge clk) begin
    b <= a;
    c <= b;
    d <= c;
    end

    wynik syntezy ftp://control.slupsk.pl/pub/fpga/test1.png

    ----------------------------------------------------


    module test2(
    input clk,
    input a,
    output reg d
    );
    reg b, c;
    always @(posedge clk) begin
    b = a;
    c = b;
    d = c;
    end

    wynik syntezy ftp://control.slupsk.pl/pub/fpga/test2.png
    ----------------------------------------------------


    No i niestety chcąc nie chcąc daję się zaś prowokować do odwiecznej
    dyskusji nt. języków programowania.. Abstrahując od faktu, że
    VHDL/Verilog nie są językami programowania, twierdzę iż C powstał nie z
    potrzeby, ale że się dało. Podobnież jak Verilog. Zdecydowanie lepszym
    moim zdaniem odpowiednikiem C jest Pascal. VHDL powstał na bazie ADA.
    Prosty, chyba pierwszy język programowania obiektowego. Idealnie
    pasujący strukturalnie i behawioralnie do opisu i łatwej konstrukcji
    syntezy elektroniki cyfrowej na dowolną platformę. Verilog jest
    promowany, bo w zapisie podobny do C. I tak jak w latach 80'tych
    pieprzono, że C jest językiem wyższego rzędu, optymalnym w sensie czasu
    wykonania kodu wynikowego (bo krótki zapis jak w assemblerze) tak samo
    się pierdoli głupoty odn. VHDL/Verilog. Synteza równań logicznych, to
    "małe piwko". Synteza stanów maszynowych, to trochę więcej roboty, ale
    są gotowe narzędzia zarówno pod Veriloga jak i pod VHDL. Więc w tym
    temacie też nie ma o czym gadać.
    >
    > Jedni lubią blondynki, inni brunetki...
    >

    Wcale nie zamierzam nic prowokować. Jedni wolą ogórki, a drudzy
    ogrodnika córki ;-) Każdy język ma swoje "walety" i "zady". Dużo pisałem
    w Pascalu i pascalopodobnych. Borlandowskie kompilatory TurboPascala na
    x86 dawały tak zwięzły kod wynikowy, że jak przeglądałem go pod
    debbugerem, to w assemblerze nie dałoby się już zbyt wiele
    zoptymalizować. Pascal bardziej wymuszał czytelny zapis, ale przy
    programowaniu nie raz mi "brakowało" zwięzłej konstrukcji typu
    suma+=*wskaznik++; która ponoć jest nieczytelna. Przy programowaniu
    małych 8-bitowych uC często mieszałem C z assemblerem. Pewne rzeczy
    nawet wygodniej się robiło mi się w assemblerze :-)


    --
    Pozdrawiam
    Grzegorz

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: