FPGA/DSP "programmeren" in VHDL/Verilog

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Xudonax
  • Registratie: November 2010
  • Nu online
Al enige tijd ben ik aan het spelen met de rtl-sdr, en dan specifiek met het volgen van vliegtuigen (ADS-B). Helaas is de rtl-sdr niet echt geweldig voor de ontvangst hiervan, wat o.a. komt door de storing verwacht ik gezien de absurde hoeveelheid aan filters en dingen die je hiervoor kunt kopen. In het topic (RTL-)SDR, hoe werkt dat nou? heb ik een basis idee gekregen van hoe een SDR in elkaar steekt, en eigenlijk wil ik gaan proberen om zelf een ontvanger te bouwen die puur gericht is op ADS-B ontvangst. Ik weet dat er al een aantal zijn, waaronder de MODE-S BEAST, dus het moet haalbaar zijn :+

Qua hardware voor de FPGA twijfel ik tussen een Snickerdoodle (de "luxe" $140 versie) en een DE0-Nano-SoC, de kosten maken mij in deze weinig uit qua keuze van de hardware. Ik neig eigenlijk naar de Snickerdoodle icm het piSmasher SBC omdat leuk :9~ Vooral het feit dat dit lijkt te zijn wat ik van de Raspberry Pi 2 had gehoopt, een ding dat snel genoeg is voor een goede ervaring met veel IO en mogelijkheden.

Ik zit alleen met een probleempje. Ik snap verdraaid weinig van hoe zo'n FPGA nu complexere dingen doet. De verschillende logische poorten kan ik nog wel snappen, maar ik heb erg veel moeite met de stap van "collectie logische poorten" naar "gewenste functionaliteit", en of die functionaliteit dan nu een schuifregister of een vermenigvuldiging is maakt weinig uit. Hetzelfde heb ik ook met assembly code, ik ken/kan de verschillende instructies best leren maar de connectie naar complexere functionaliteit (meer dan wat data verschuiven) is lastig. Mijn vermoeden is dat ik dat eerst moet zien te snappen voordat ik enige kans maak om iets te kunnen met zo'n FPGA, maar is er ergens een betaalbaar boek of een website die dat uitlegt?

En daarnaast natuurlijk de vraag, waar ga ik VHDL of Verilog vandaan leren?
Mijn achtergrond is Technische Informatica, hoewel ik de afgelopen jaren vooral webdevelopment in PHP/Python/C# gedaan heb. Ik wil eigenlijk weer wat meer met hardware gaan rommelen :D

tl;dr
Ik wil graag met een FPGA gaan spelen, maar ik heb problemen met het zien hoe je van een zee van logische poorten naar functionaliteit gaat. Daarnaast, waar/hoe leer ik VHDL/Verilog? Zowel boeken als websites zijn welkom, zolang de boeken maar geen €200+ kosten :/

offtopic:
Mocht dit meer op z'n plek zijn als update op mijn vorige topic, kan een modje het dan mergen? Ik vond het zelf beter passen als een los topic, vandaar.

Acties:
  • 0 Henk 'm!

  • johnkeates
  • Registratie: Februari 2008
  • Laatst online: 04-07 16:30
Volgens mij had Elektuur/Elektor ooit een issie over FPGA's en/of CPLD's die je met Verilog ging programmeren, die kan je digitaal bij ze kopen (Tijdschrift in PDF formaat) en dan heb je een goede uitleg om een 'ding' te maken.

Verder staat er op GitHub ook vrij veel Verilog en VHDL code waar je wat uit kan leren, en zou je ook naar de open source software defined radio kunnen kijken (die ene waar je ook BTSsen mee kan maken, aka mobiele telefoon masten :p ) die ook redelijk goed gedocumenteerd heeft hoe je SDR moet doen.

Acties:
  • 0 Henk 'm!

  • lordprimoz
  • Registratie: November 2013
  • Laatst online: 10:34
Dit is een lastige...

Het beste kan je gewoon een board aanschaffen die goede documentatie en ondersteuning aanbied.
Deo-nano of iets dergelijks is altijd goed.

Verder heb je dus verilog of vdhl als standaard. Verilog is wat meer te vergelijken met c, en dus makkelijker te leren.
Vhdl daarentegen is een stuk moeilijker, maar heeft dan weer als voordeel dat je er veel complexere dingen mee kan.

Bij mij staat het verder uitbreiden van mn vhdl kennis ook nog op een todolijstje, maar hier alvast een leuke website die ik tegen ben gekomen: http://www.fpga4fun.com/I2C.html

voor vhdl moet je de standaard denkmethode van programmeren even helemaal de deur uit doen, en eigenlijk op electro niveau gaan denken

[ Voor 11% gewijzigd door lordprimoz op 23-12-2015 23:54 ]


  • danielkraak
  • Registratie: Juli 2006
  • Laatst online: 06-10 20:27
Fpga4fun is een goede site. Voor de rest heb je ook nog de FPGA course van Hamsterworks. Daar wordt dan wel weer VHDL gebruikt.

Ik vind Verilog zelf fijner, omdat je code compacter is. Voor de rest maakt taal weinig uit.

Overigens zou ik voor net een wat luxer bordje gaan. De DE-1 SoC bijvoorbeeld. Voordeel is dat je dan meer aansluitingen hebt, zodat je niet overal een extensie bordje voor nodig hebt.

Let wel even op. Volgens mij kun je niet alle aansluitingen met de FPGA gebruiken. De FPGA heeft ook een ARM core embedded en die zit geloof ik aangesloten op de ethernet en het DDR3 geheugen bijvoorbeeld.

[ Voor 45% gewijzigd door danielkraak op 24-12-2015 08:13 ]


  • DaWaN
  • Registratie: Oktober 2002
  • Laatst online: 13:27

DaWaN

'r you wicked ??

Xudonax schreef op woensdag 23 december 2015 @ 23:39:
In het topic (RTL-)SDR, hoe werkt dat nou? heb ik een basis idee gekregen van hoe een SDR in elkaar steekt, en eigenlijk wil ik gaan proberen om zelf een ontvanger te bouwen die puur gericht is op ADS-B ontvangst. Ik weet dat er al een aantal zijn, waaronder de MODE-S BEAST, dus het moet haalbaar zijn :+

Ik zit alleen met een probleempje. Ik snap verdraaid weinig van hoe zo'n FPGA nu complexere dingen doet. De verschillende logische poorten kan ik nog wel snappen, maar ik heb erg veel moeite met de stap van "collectie logische poorten" naar "gewenste functionaliteit", en of die functionaliteit dan nu een schuifregister of een vermenigvuldiging is maakt weinig uit. Hetzelfde heb ik ook met assembly code, ik ken/kan de verschillende instructies best leren maar de connectie naar complexere functionaliteit (meer dan wat data verschuiven) is lastig. Mijn vermoeden is dat ik dat eerst moet zien te snappen voordat ik enige kans maak om iets te kunnen met zo'n FPGA, maar is er ergens een betaalbaar boek of een website die dat uitlegt?

En daarnaast natuurlijk de vraag, waar ga ik VHDL of Verilog vandaan leren?
Mijn achtergrond is Technische Informatica, hoewel ik de afgelopen jaren vooral webdevelopment in PHP/Python/C# gedaan heb. Ik wil eigenlijk weer wat meer met hardware gaan rommelen :D
Even wat extra aanknopingspunten voor jou:

1. Een SDR bouwen is meer dan alleen een FPGA programmeren. Als minimum heb je naast de FPGA ook een RF front-end, een mixer en een ADC nodig. Vervolgens moet je de ADS-B data ook nog een PC in krijgen gok ik? Je moet dus ook voldoende kennis hebben van het analoge stuk om het werkend te krijgen.

2. Ik denk dat er niet echt boeken zijn die beschrijven hoe je architecturen op zet. Uiteindelijk is dat iets wat je zelf moet leren. Er is niet één manier om bepaalde functionaliteit op te bouwen; de basis begint met bouwblokken die je kunt gebruiken. Vervolgens kun je door ervaring en intelligentie bepalen hoe je bepaalde functionaliteit gaat realiseren. Uiteindelijk is dat gewoon een kwestie van het realiseren van de vereisten op een manier dat het zo weinig mogelijk resources kost (en die resources zijn heel breed: dat kunnen man-uren zijn, silicon-oppervlakte, kosten, FPGA gates, etc.). Architecturen die flexibel moeten zijn en weinig development/man-uren moeten kosten zullen bijvoorbeeld veel zwaarder leunen op software dan hardware etc.
Ik zou zeggen: leer de basisblokken en de talen eerst en ga dan eens kijken hoe bepaalde open-source projecten gerealiseerd zijn. Download eens alle sources en pluis uit hoe iets werkt. Dat is hoe ik dikwijls nog nieuwe dingen leer :)

3. De hardware die je moet kopen is niet zo relevant i.m.h.o.
In eerste instantie moet je toch eerst de taal leren en met wat simpele experimenten leren hoe alles werkt. Daar heb je geen exotische hardware voor nodig. Een beginnersbordje zoals dit: http://store.digilentinc....d-for-introductory-users/ is daarvoor bijvoorbeeld al meer dan prima. In hoeverre de andere hardware te gebruiken is voor een SDR is mij niet helemaal duidelijk. Als er een analoge front-end aanzit is dat natuurlijk wel ideaal.

4. VHDL of Verilog maakt niet zoveel uit. Ik heb zelf alleen VHDL geleerd en volgens mij wordt dat ook veel gebruik in Europa in het bedrijfsleven. Bij mijn werkgever wordt ook alleen maar VHDL geschreven voor zover ik weet :) Met beide talen zul je hetzelfde kunnen bereiken. Verilog is denk ik wel iets meer toegespitst op programmeerbare logica en is daardoor wat compacter te schrijven dan VHDL. Voor de rest heb ik weinig ervaring met Verilog, dus veel meer weet ik er nu niet over te vertellen.

If you do not change direction, you may end up where you are heading


  • Xudonax
  • Registratie: November 2010
  • Nu online
Ik begrijp dat een SDR flink meer nodig heeft dan alleen de FPGA, maar als ik kan zorgen dat er flink wat samples uit komen rollen dan moet dit op een PC (of geïntegreerde ARM chip) goed af te handelen zijn. Dit is eigenlijk het stuk waar ik me het minste zorgen over maak. De RF front-end, mixer en ADC is inderdaad een struikelblok nog, maar daar heb ik al info over gevonden in mijn andere gelinkte topic :)

Boeken, tja... Hoeft niet eens specifiek FPGA/VHDL te zijn, ik zie veel digital design boeken aangeraden worden op Stack Overflow. Een mooi voorbeeld wat vaak aangeraden word is Digital Design with RTL Design, Verilog and VHDL, maar dat boek is grofweg €250... Misschien dat ik een goedkoop bordje moet pakken en gewoon moet gaan spelen ja :)

Op fpga4fun kan ik niet echt mijn weg vinden, maar zal er zeker nog eens naar kijken. Die Hamsterworks link ziet er wel goed uit. Ik heb nog genoeg te lezen en te zien als ik het zo zie, dan ga ik na de kerst eens een bordje bestellen denk ik.

  • Flake
  • Registratie: Februari 2001
  • Laatst online: 01-11-2024
Digital designs zijn, bij de 'simpelere' FPGA's iig, nauwelijks te debuggen. De geavanceerdere hebben features als breakpoints etc, maar digital designs test je met name adhv simulaties en het mooie daarvan is dat je geen hardware nodig hebt om de simulatie op te draaien naast je pc.

Ik zelf heb in een grijs geleden VHDL designs gemaakt en, om mijn docent destijds te citeren, het is geen programmeren, maar omschrijven. Vervolgens schrijf je een rits testvectoren en die voer je aan je digitale systeem. In simulatie kun je de onderliggende signalen namelijk nog debuggen, in hardware gaat dat niet.

Punt wat ik hiermee wil maken is dat programmeerervaring je geen zak gaat helpen met VHDL, en ga het vooral ook niet als programmeren beschouwen. Wees extra kritisch op je simulatievectoren en met name op de timing. Zonder parameters schakelen signalen in een simulatie altijd instant, en dat is in de praktijk onmogelijk. Die 10ns (ik noem maar iets) vertraging die een digitaal bouwsteentje nodig heeft veroorzaakt de meeste verwarring zoals hazards, dus die moet je meenemen in je simulaties. Test niet alleen op intended behavior, maar ook op unintended behavior. En zorg eerst dat je een VHDL editor en simulatiepakket op de PC beheerst voordat je gaat proberen om het op hardware te doen. Zo ging het op het HBO ook, op live hardware draaien deden we pas in het laatste jaar.

  • LED-Maniak
  • Registratie: Oktober 2003
  • Laatst online: 13:15
Ik had het probleem ook en ben toen met lattice begonnen. Zij bieden gratis software aan met simulatie wat best heel goed werkt(ook veel documentatie). De development boards zijn cheap en de schema's ook wel te overzien.

Mitsubishi externe temperatuur sensor (Home Assistant compatible): V&A - ClimaControl - Ook voor Panasonic & LG.


  • danielkraak
  • Registratie: Juli 2006
  • Laatst online: 06-10 20:27
Xudonax schreef op donderdag 24 december 2015 @ 10:41:
Op fpga4fun kan ik niet echt mijn weg vinden, maar zal er zeker nog eens naar kijken. Die Hamsterworks link ziet er wel goed uit.
Fpga4fun is inderdaad niet zo overzichtelijk en volgens mij ook wat meer voor mensen die al wel redelijk VHDL/Verilog kunnen.

Voor VHDL/Verilog is het gewoon het handigst als je ook goed weet hoe een design met digital logic eruit ziet.
Ik heb nog genoeg te lezen en te zien als ik het zo zie, dan ga ik na de kerst eens een bordje bestellen denk ik.
Ik kan je nog steeds de DE1-SoC ten zeerste aanbevelen. Kleine bordjes vind ik vaak nogal onhandig. Je mist toch features op den duur.
Flake schreef op donderdag 24 december 2015 @ 14:28:
Digital designs zijn, bij de 'simpelere' FPGA's iig, nauwelijks te debuggen. De geavanceerdere hebben features als breakpoints etc, maar digital designs test je met name adhv simulaties en het mooie daarvan is dat je geen hardware nodig hebt om de simulatie op te draaien naast je pc.
Tegenwoordig kun je een logic analyzer in je design embedden waarmee je op de FPGA zelf ook geselecteerde signalen kunt inspecteren. Onwijs handig. Soms simuleer ik mijn designs niet eens meer en check ik gewoon met de logic analyzer wat er fout gaat. :+ Niet altijd een goede manier natuurlijk.

[ Voor 37% gewijzigd door danielkraak op 24-12-2015 20:44 ]


  • Sissors
  • Registratie: Mei 2005
  • Niet online
Flake schreef op donderdag 24 december 2015 @ 14:28:
Zonder parameters schakelen signalen in een simulatie altijd instant, en dat is in de praktijk onmogelijk. Die 10ns (ik noem maar iets) vertraging die een digitaal bouwsteentje nodig heeft veroorzaakt de meeste verwarring zoals hazards, dus die moet je meenemen in je simulaties.
Dat moet in principe je FPGA toolchain simpelweg afvangen als je het laat synthetiseren. Random delays inbouwen lijkt me in ieder geval weinig helpen, gezien dat dat helemaal niet overéén hoeft te komen met de realiteit. (10ns is gigantisch bijvoorbeeld).
En zorg eerst dat je een VHDL editor en simulatiepakket op de PC beheerst voordat je gaat proberen om het op hardware te doen. Zo ging het op het HBO ook, op live hardware draaien deden we pas in het laatste jaar.
Niks mis imo met gewoon beginnen met zaken naar live hardware te sturen zodat je toch wat meer resultaten ziet (en dus het langer volhoudt) dan wanneer je enkel en alleen simuleert. Overigens op uni deden wij gewoon bij het eerste vak het op een FPGA, waarom ook niet?

Acties:
  • +1 Henk 'm!

  • Cassettebandje
  • Registratie: Juli 2002
  • Laatst online: 10:07

Cassettebandje

SA-C90 TDK

Zorg dat je een fpga kiest met voldoende memory blocks en support voor het meebouwen van een logic analyser. Zo heeft Lattice de Reveal analyser, dan kun je een blok meebouwen dat op bepaalde voorwaarden start met samplen en dat kun je dan in de IDE bekijken. Je hebt wel genoeg ongebruikte geheugenblokken nodig voor zoiets, anders ben je heel beperkt in de lengte van de trace.

Koop gewoon een goedkoop bordje, dan heb je wat om mee te beginnen en kom je er vanzelf wel achter of het wat voor je is. Begin met wat makkelijks: knipperledje, eenvoudige statemachine, enz en ga dan ingewikkeldere dingen maken.

Je kunt ook nog een PSoC5LP bekijken, dat is een microcontroller met (een beperkte hoeveelheid) logica er aan vast; developmentboards vanaf $10.

[ Voor 33% gewijzigd door Cassettebandje op 24-12-2015 21:40 ]


Acties:
  • 0 Henk 'm!

  • zerokill
  • Registratie: Juni 2006
  • Laatst online: 09-07 21:46
Interessant topic! Misschien dat het leuk is om een aantal blog posts te schrijven voor VHDL beginners. Ik ga kijken of ik deze vakantie daar een begin aan kan maken!

Voorlopig heb ik alle opdrachten online gezet van mijn introductie lessen voor VHDL. Alleen geen uitleg hoe je het kan simuleren in modelsim of een andere simulator.

https://github.com/zerokill/vhdl-course

Als ik nu terugkijk naar deze eerste lessen dan zie ik dat ik heel veel op een andere manier zou aanpakken. De code is dus een beetje op eigen risico!

Overigens zijn dit de echte opdrachten zoals ik ze heb ingeleverd. Ik weet niet direct of ik dat überhaupt mag posten... (Het is uiteraard wel mijn eigen werk :))

[ Voor 14% gewijzigd door zerokill op 25-12-2015 20:47 ]


Acties:
  • 0 Henk 'm!

  • Xudonax
  • Registratie: November 2010
  • Nu online
offtopic:
@zerokill: Wacht, zie ik nu dat dit een vak aan de Hogeschool Utrecht is? Welke opleiding? Bij mijn opleiding "technische" informatica ~5 jaar geleden is zoiets in ieder geval niet langs geweest...


@Flake: Ik had al door dat programmeren niet het juiste woord was, vandaar de aanhalingstekens. Ik kon zo gauw alleen geen goede Nederlandse vertaling vinden.

@danielkraak: Als ik het me goed herinner bied de Designer editie van Xilinx Vivaldo een logic analyzer aan, maar daar ben ik niet 100% zeker van. Er zit in ieder geval een licentie voor Vivaldo Designer Edition bij het bordje dat ik nu besteld heb.

Ik kon mezelf niet meer inhouden en heb een Arty Board besteld. Dat was het goedkoopste bord met een flinke FPGA die ik zo 1-2-3 kon vinden. Uiteindelijk in Duitsland gehaald, zo gauw de enige plek in Europa waar nog voorraad was, alle grote shops zoals DigiKey en Mouser geven een lead time van ruim 2 maanden (DigiKey zegt zelfs dat ze voor half mei niets verwachten...). In combinatie met Free Range VHDL denk ik dat ik een eind moet kunnen komen.

Mijn eerste probeersels gaan waarschijnlijk simpelweg LEDs worden, maar ik wil ook proberen om zelf een LFSR gebasseerde RNG te maken. Niet direct nuttig aangezien 90% van de moderne systemen al zo'n ding heeft, maar het geeft wat te doen :) Daarna kan ik kijken wat er nog meer te doen is. Als het allemaal leuk/interessant genoeg is kan ik in de loop van 2016 (of later) altijd nog een luxer bord aanschaffen zoals de DE1-SoC of de Snickerdoodle.

Acties:
  • +1 Henk 'm!

  • zerokill
  • Registratie: Juni 2006
  • Laatst online: 09-07 21:46
Xudonax schreef op zaterdag 26 december 2015 @ 02:47:
offtopic:
@zerokill: Wacht, zie ik nu dat dit een vak aan de Hogeschool Utrecht is? Welke opleiding? Bij mijn opleiding "technische" informatica ~5 jaar geleden is zoiets in ieder geval niet langs geweest...
Ik heb elektrotechniek gestudeerd aan de HU. Deze opdrachten zijn onderdeel van een tweedejaars introductievak voor VHDL. Sindsdien heb ik Computer Engineering gestudeerd aan de TU.

Ik ga vanmiddag beginnen aan wat blog posts. Ik zal hier een link neerzetten.

Een LFSR RNG klinkt als een leuk project. Zelf zou ik me ook focussen op het implementeren van een simpel algoritme in VHDL. Denk bijvoorbeeld aan het implementeren van een fixed point division algoritme in hardware. Je kan het algoritme eerst implementeren in Python of C en vervolgens opnieuw implementeren in VHDL. Hiervoor heb je alleen maar een text editor en modelsim nodig!

edit: Schaamteloze zelf promotie: Ik heb een blog opgezet! Het is allemaal nog een beetje basic maar hij is hier te vinden: www.zerokill.nl

[ Voor 6% gewijzigd door zerokill op 26-12-2015 16:52 ]


Acties:
  • 0 Henk 'm!

  • Xudonax
  • Registratie: November 2010
  • Nu online
Ik heb mijn Arty op de valreep van 2015 opgehaald, en ben nu 2 dagen bezig om het ding up & running te krijgen in Vivado. Als ik dan hoor dat Vivado beter is dan het oude ISE dan wil ik niet weten hoe "goed" dat werkte :') Ondertussen ben ik aan het kijken hoe ik om de Visual C++ Redistributable error heen kan komen tijdens de setup...

Anywho, je blog ziet er interessant uit @zerokill :D
Pagina: 1