-
Data: 2018-02-08 23:20:01
Temat: Re: Nauka programowania FPGA
Od: Grzegorz Kurczyk <g...@c...usun.slupsk.pl> szukaj wiadomości tego autora
[ pokaż wszystkie 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
Następne wpisy z tego wątku
- 08.02.18 23:40 Piotr Wyderski
- 08.02.18 23:44 Piotr Wyderski
- 08.02.18 23:48 Piotr Wyderski
- 09.02.18 09:06 s...@g...com
- 09.02.18 10:04 J.F.
- 09.02.18 10:26 s...@g...com
- 09.02.18 11:27 s...@g...com
- 09.02.18 11:42 Piotr Wyderski
- 09.02.18 14:30 J.F.
- 09.02.18 14:46 J.F.
- 09.02.18 20:57 Sebastian Biały
- 09.02.18 21:16 Sebastian Biały
- 10.02.18 12:55 s...@g...com
- 10.02.18 13:45 s...@g...com
- 10.02.18 14:24 Sebastian Biały
Najnowsze wątki z tej grupy
- e-paper
- 60 mA dużo czy spoko?
- Dziwne zachowanie magistrali adresowej w 8085
- Współczesne mierniki zniekształceń nieliniowych THD audio, produkują jakieś?
- Jaki silikon lub może klej?
- Smar do video
- Litowe baterie AA Li/FeS2 a alkaliczne
- "ogrodowa linia napowietrzna"
- jaki zasilacz laboratoryjny
- jaki zasilacz laboratoryjny
- Puszka w ziemię
- T-1000 was here
- Ściąganie hasła frezem
- Koszyk okrągły, walec 3x AA, na duże paluszki R6
- Brak bolca ochronnego ładowarki oznacza pożar
Najnowsze wątki
- 2025-02-17 Kraków => MS Dynamics 365BC/NAV Developer <=
- 2025-02-17 Chrzanów => Programista NodeJS <=
- 2025-02-17 Warszawa => Node.js / Fullstack Developer <=
- 2025-02-17 Białystok => System Architect (Java background) <=
- 2025-02-17 Białystok => Solution Architect (Java background) <=
- 2025-02-17 Gliwice => Team Lead / Tribe Lead FrontEnd <=
- 2025-02-17 Gdańsk => PHP Developer <=
- 2025-02-17 Warszawa => Senior ASP.NET Developer <=
- 2025-02-17 Gliwice => Business Development Manager - Network and Network Security
- 2025-02-17 Mińsk Mazowiecki => Area Sales Manager OZE <=
- 2025-02-17 Odśnieżanie samochodu
- 2025-02-17 Katowice => Regionalny Kierownik Sprzedaży (OZE) <=
- 2025-02-17 Dęblin => JavaScript / Node / Fullstack Developer <=
- 2025-02-17 Pompiarze...
- 2025-02-16 PV teraz