Nauka programowania FPGA

W dniu 07.02.2018 o 21:10, J.F. pisze:

Też sobie nie wyobrażam rzeźbienia kontrolera SDRAM rysując schemat z bramek przerzutników czy nawet trochę większych bloczków funkcyjnych. W swoich zabawach z Xilinxem stosuję taką zasadę: bloki funkcyjne typu kontroler SDRAM, CPU, VGA, GPU itd. itp. robię w Verilogu (rzadziej w VHDL) i dopiero to wszystko sklejam do kupy na schemacie w jeden system

ftp://control.slupsk.pl/gksystem32.pdf

Od pewnego czasu zapis w Verilogu przemawia do mnie bardziej niż schemat, mimo żem na schematach wychowany ;-)

Reply to
Grzegorz Kurczyk
Loading thread data ...

W dniu 06.02.2018 o 08:53, Atlantis pisze:

W styczniu 2016 był wątek Jak działa FPGA. Trochę tam pisałem. news://news.tpi.pl:119/n68f5k$qp2$ snipped-for-privacy@node2.news.atman.pl

Przy nauce KONFIGUROWANIA układów CPLD/FPGA musisz się przestawić w sposobie myślenia. Nim zabrałem się za FPGA miałem duże doświadczenie w programowaniu CPU i uC (głównie assembler, C) i... wcale mi to nie pomagało, a wręcz przeciwnie. Podstaw uczyłem się z przykładów znalezionych w internecie, ale patrząc na kawałek kodu w Verilogu mózg interpretował mi kolejne linijki Veriloga jako kolejne rozkazy sekwencyjnie wykonywanego programu !!! :-/ Musiała mi się przestawić klepka aby w kodzie zacząć "widzieć" połaczone ze sobą przerzutniki, sumatory, liczniki synchroniczne, dekodery, multipleksery itp. Bo VHDL/Verilog to jest język opisu sprzętu, a nie język oprogramowania. W ogarnięciu tego wszystkiego bardzo mi pomogła dobra znajomość poczciwej serii układów TTL. W pewnym sensie traktuję FPGA jako wiaderko pełne TTL-i, duuuużą płytkę stykową i karton kabelków do krosowania ;-)

Jeśli wybierzesz coś ze stajni Xilinxa, to z chęcią pomogę. Chyba najlepiej uczyć się na jakimś konkretnym małym projekcie. Pierwsze CPLD jakie "ugryzłem" to bodajże było XC7572XL. Kombinowałem "kartę graficzną" do AVR-a generującą obraz telewizyjny. Na AVR-rze da się nawet programowo (z lekkim wspomaganiem sprzętowym) ale nie w rozdzielczości graficznej 512x280 przy 16 kolorach. Pierwsze przymiarki... płytka stykowa, kostka DRAM 44256 i garść układów TTL, które to TTL-ki w końcu zostały zastąpione przez CPLD.

Powodzenia.

Reply to
Grzegorz Kurczyk

W dniu środa, 7 lutego 2018 21:10:42 UTC+1 użytkownik J.F. napisał:

Jasne, że tak! Miałem na myśli samo DDR RAM. A sam kontroler masz w zestawie IP. Jak to narysować? Black-Box jak każde inne IP.

Reply to
stchebel

W dniu środa, 7 lutego 2018 23:46:54 UTC+1 użytkownik Grzegorz Kurczyk napisał:

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.

Reply to
stchebel

W dniu 08.02.2018 o 00:50, snipped-for-privacy@gmail.com pisze:

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

Reply to
Grzegorz Kurczyk

W dniu 08.02.2018 o 00:34, snipped-for-privacy@gmail.com pisze:

No fakt, że może nie najlepszy przykład ;-) Ale taka np. nietypowa karta VGA ze sprzętowym wyświetlaniem skalowalnej siatki oscyloskopowej na ekranie... w IP nie nalazłem ;-) Z drugiej strony "standardowy" kontroler SDRAM z IP jest bardzo zasobożerny do syntezy na układach, które nie mają dedykowanego bloku obsługi pamięci dynamicznych i w efekcie dość wolny. Na Spartan3 (-4) miałem problemy z pracą pamięci SDRAM 7ns przy częstotliwości trochę większej niż 50MHz. Naskrobałem własny mocno uproszczony kontroler i ta sama kostka SDRAM śmiga na

120MHz. O różnicy w ilości zajmowanych zasobów już nie wspomnę.
Reply to
Grzegorz Kurczyk

Użytkownik "Grzegorz Kurczyk" napisał w wiadomości grup dyskusyjnych:5a7b81dc$0$575$ snipped-for-privacy@news.neostrada.pl...

Nie w pewnym sensie, tylko jest wiaderko TTL (GA) i karton kabelkow do krosowania (FP) :-)

J.

Reply to
J.F.

Świat odchodzi od rysowania schematów [1]. To wynika z bardzo wielu przyczyn ale najwazniejsze to jest niemożność stosowania technik zapewniania jakości na takim designie. W zasadzie profesjonalny hardware produkuje się obecnie *wyłacznie* za pomocą opisu który pozwala na stosowanie annotacji, śledzenia wymagań, unit testowania (i kilku innych poziomów testowania), pracy w grupie, systemów kontroli wersji, wykrywania regresji, automatycznego lintowania itd. Rysowanie schematów jest marginesem do projektów migania diodami. To ślepa uliczka.

[1] Nie wyssałem tego z palca.
Reply to
Sebastian Biały

Nie żartuje. Jesli mam zaczynać od projektów migania diodą to naprawdę nie potrzebuje w tym celu oprogramowania ważacego 25GB, bardzo drogich ukladów, skomplikowanych zasilań, magicznych programatorów itp. Wystartować można niżej, jak nie wciągnie to bez żalu porzucić.

VHDL to jest Ada + dodatki. Ada jest bardzo verbose. Trudno dyskutować z faktami. To jeden z najbardziej, obok COBOLa, gadatliwych języków. Prowadzi do dośc częstego rwania sobie wlosów z głowy choćby na głupich konwersjach wektorow bitów itd.

Skoro nie masz pojęcia o Verilogu, to jak możesz oceniać czy VHDL nie jest opóźniony o dziesięciolecia? Może podrzuce Ci hasło do przemyslenia: testowanie. Obecnie robi się to w Verilogu ponieważ ma do tego ficzery (hint: UVM). VHDL nie ma, lub ma żałosne. Też się robi, ale przypomina to lata 80, erę BASICa łupanego. Problemem jest komited standaryzujący VHDL który długo zastsanawia się czy warto coś do jezyka dodać kiedy konkurencja ma to od wielu lat.

Czyli FPGA jest poganiany.

Nie każdy i nie jest to 5V. Czyli od razu odpada milion tanich jak barszcz peryferiów od arduino. Ciężko połączyć FPGA z czymkolwiek *tanio*.

Płytkę z CPLD za $8.

formatting link

Reply to
Sebastian Biały

Róznice sa dwie: a) CPLD są znaczaco mniejsze i wolniejsze b) FPGA zawierają dziwne peryferia jako bonus (np. gotowe uklady mnożące albo konfigurowalną pamięć RAM)

To się da zrobić nawet na serii XC95xxxx, np. XC95144XL. Taniej będzie cieżko coś znaleźć. Był kiedyś kit AVT-2875. Jak znalazł na początek.

Reply to
Sebastian Biały

To cecha języka. *TEGO* języka. W innym może być/jest inaczej. W dodatku to żadna zaleta, to tylko jakieś założenie związane ze sposobem syntezy takich układów lub poziomem alkocholu we krwi członka komitetu standaryzującego lub wręcz brakiem takowego (verilog).

Reply to
Sebastian Biały

W dniu czwartek, 8 lutego 2018 07:37:17 UTC+1 użytkownik Grzegorz Kurczyk napisał:

===============

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!! 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...

Reply to
stchebel

W dniu 08.02.2018 o 22:10, snipped-for-privacy@gmail.com pisze:

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ć.

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 :-)

Reply to
Grzegorz Kurczyk

Gubisz kontekst, który masz w tytule wątku. Człowiek chce sobie popróbować zabawy z FPGA bez posiadania głębszej wiedzy o temacie. Zachęcanie go do profesjonalnego podejścia do tematu to kpina. Odpadnie na skonfigurowaniu środowiska testowego, o jakichkolwiek elementach pracy zespołowej nie wspominając. Na tym etapie schematy są idealne.

Nie wiem, z czego to wyssałeś, ale polecasz techniki właściwe do budowania atomowych okrętów podwodnych człowiekowi, który chce zbudować swoją pierwszą tratwę. Po kolei, Sebastian.

Pozdrawiam, Piotr

Reply to
Piotr Wyderski

Tylko po co ma być "taniej"? To nie jest Chińczyk, którego zadaniem jest zoptymalizowanie kilku centów. Na początek ma być wygodnie, a nie tanio. W tym przypadku różnica to całe dwa dolary (cy8ckit-059 kosztuje $10, a potrafi znacznie więcej niż mniejsze CPLD).

Pozdrawiam, Piotr

Reply to
Piotr Wyderski

No nie rozpędzajmy się, dokładnie po to masz = i <=. Oba to przypisania, a działają kapkę inaczej. :-)

Pozdrawiam, Piotr

Reply to
Piotr Wyderski

Użyłem skrótu myślowego. Wiadomo, że '=' dotyczy zmiennych, a '<=' dotyczy sygnałów. Dla wątkotwórcy może się to wydawać trochę dziwne (zmienne w sprzęcie?), ale ma to sens. I tak w końcu kompilator, a raczej implementator zrobi z tego syntezę sygnałową.

Reply to
stchebel

Najdelikatniej jak umiem.. Nie pisz skąd te bzdury wyssałeś :)

Efektem owych bzdur są gnomy "inżynierskie", które nie rozumieją podstaw elektroniki.. Baa.. Mało tego, mają tytuły mgr i nie mają bladego pojęcia jak działa dioda. O doborze parametrów owej nawet nie warto wspominać. Dalej.. Nie żartuję!! Kontrola wersji, regresja.. O czym Ty gościu p........ ?

Jednym z wymogów ISO coś tam, coś tam.., jest powywieszanie w firmie banerów " Jakość jest naszym motto..". Treść chyba inna, ale sens jest dokładnie taki..

"PZPR PRZEWODNIĄ SIŁĄ NARODU"

Da się "elektronikom" wyprać mózg? Chyba tak...

Reply to
stchebel

W dniu czwartek, 8 lutego 2018 21:35:40 UTC+1 użytkownik Sebastian Biały napisał:

Jak się nie znasz, to dej se spokój.. Piszesz, że FPGA ciężko połączyć z czymkolwiek.. I do tego jeszcze tanio.. Problem z logiką 5V? ŻADEN!! Bez żadnych buforów podciągających!! Ty chyba nie znasz marginesów działania TTL'ek. VCCIO zasilasz napięciem 3.3V, i nie ma bata coby to nie gadało z TTL. To nie tylko teoria!! PRAKTYKA!! Poczytaj sobie o IO specification dot. X lub A, i nie fandzol głupot!!

Reply to
stchebel

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.