Bra FPGA/CPLD-böcker för nybörjare?

Elektronik- och mekanikrelaterad mjukvara/litteratur. (T.ex schema-CAD, simulering, böcker, manualer mm. OS-problem hör inte hit!)
Användarvisningsbild
Eson
Inlägg: 397
Blev medlem: 30 september 2004, 08:31:51
Ort: Huddinge - STHLM
Kontakt:

Bra FPGA/CPLD-böcker för nybörjare?

Inlägg av Eson »

Jag är otroligt nyfiken på FPGA och CPLD kretsar. Jag har läst Digitalteknik på KTH och kan det där med grindar osv så sånt behöver jag inte läsa igen känns det som. Men hur som helst så är jag ute efter nybörjarböcker som tar upp 'synthesis' och beskriver hur man går tillväga. Några tips?

Dessutom, vilket språk ska man använda? Jag har läst lite VHDL men det verkar som att Verilog, SystemVerilog, SystemC är bättre om man gillar/kan C.
Vilket rekommenderar ni och varför?
blueint
Inlägg: 23238
Blev medlem: 4 juli 2006, 19:26:11
Kontakt:

Inlägg av blueint »

En fundering vad slags utbildning går/gick du ..? (ingenjör/civil ingenjör/inriktning?)

VHDL ger nog bäst möjlighet att skriva uttryck för det man önskar.
Verilog är mycket praktiskt och snabbt, speciellt om man programmerat C innan.

Ett problem är att man måste tänka i parallelism, och inte sekventiellt utförande. Imperativa språk kan ses som "Micro management" av hur processor resurserna skall jobba. I ett HDL språk händer allt på en gång.
Funktionellla språk är också intressanta i ett parallism hänseende. Och skulle egentligen utgöra bättre kandidater i detta sammanhang än Imperativa språk som t.ex. C.

Känns lite dumt att C inspirerat så många HDL språk då dess struktur är implicit sekventiell. Vilket HDL miljön knappast är.

Funkar iaf såhär:
Verilog/VHDL källkod -> Synthes/Place/Route -> Bitström -> Överföring till fpga/cpld chip
eqlazer
Inlägg: 923
Blev medlem: 22 september 2007, 13:53:45
Ort: Göteborg

Inlägg av eqlazer »

Kan rekommendera boken "VHDL för konstruktion" (ISBN 91-44-02471-1) som börjar på en lagom nivå för att sedan gå igenom det mesta som man behöver veta om VHDL. Den går inte så djupt in på hur FPGA och CPLD fungerar men lagom för att få ett humm om vad det är för att sedan gå rakt på hur man använder VHDL. Jag hade den som kursbok i kursen digital konstruktion.
Vad jag hört så är det i USA som Verliog är populärt och nästan bara där det används, annars är det VHDL som gäller. Men vad vet jag...
Användarvisningsbild
ucadv
Inlägg: 203
Blev medlem: 29 januari 2007, 23:13:49

Inlägg av ucadv »

"VHDL for logic synthesis" av Andrew Rushton är en mycket bra men också rätt dyr bok.


Angående C vs Verilog... De enda "likheterna" är syntaxen för operatörer (! & | ^ && || ), kommentarer ( //, /* ... */) och if-satser if (xxx == sss) ...

Däremot är VHDL och Ada rätt lika :)
rehnmaak
Inlägg: 2204
Blev medlem: 13 december 2005, 01:43:41

Inlägg av rehnmaak »

>>>Kan rekommendera boken "VHDL för konstruktion"

Jag hade också den boken som kurslitteratur. Dock tycker jag inte att den är något vidare som nybörjarbok. Jag tyckte den var komplicerad att förstå.

Däremot så är den mycket bra att ha nu när man kan VHDL som referens.

För övrigt tycker jag VHDL inte är något vidare praktiskt för just syntes eftersom det är så vansinnigt hårt typat språk. Verlilog är väl något bättre på den punkten, men jag har inte använt det så mycket eftersom Xilinx verktyg inte stödjer mixad VHDL och verilog.
Användarvisningsbild
babbage
Inlägg: 654
Blev medlem: 10 november 2004, 11:33:17
Ort: N-tälje

Inlägg av babbage »

Fast just att VHDL är hårt typat brukar också anges som en styrka hos VHDL. Förut gällde VHDL i Europa och Verilog i USA, men numera är det nog mera utsmetat. "VHDL" för konstruktion tycker jag är lättläst och ger bra tips om vad som t.ex är syntetiserbart. Ibland kändes den lite kortfattad och den version jag läste var om VHDL87.

En bok jag inte rekommenderar dig att skaffa om du vill ha något lättläst är VHDL: Analysis and Modeling of Digital Systems. Den är pratig och omständig till förbannelse och det går inte att slå upp information från ett register. Även om den innehåller mycket skulle nog Sverker kasta den i papperskorgen.
blueint
Inlägg: 23238
Blev medlem: 4 juli 2006, 19:26:11
Kontakt:

Inlägg av blueint »

En sån där amerikansk bok fylld med ord i massor men väldigt lite kunskap/sida ..? :D

@rehnmaak:
Går att kombinera genom att lägga in *.prj filen.
Har gjort det n'r jag inte iddats konvertera vhdl till verilog.
Användarvisningsbild
ucadv
Inlägg: 203
Blev medlem: 29 januari 2007, 23:13:49

Inlägg av ucadv »

rehnmaak skrev: För övrigt tycker jag VHDL inte är något vidare praktiskt för just syntes eftersom det är så vansinnigt hårt typat språk. Verlilog är väl något bättre på den punkten, men jag har inte använt det så mycket eftersom Xilinx verktyg inte stödjer mixad VHDL och verilog.

VHDL inte praktiskt för syntes?? nu hänger jag inte med :(

kan du ge oss ett exempel?
rehnmaak
Inlägg: 2204
Blev medlem: 13 december 2005, 01:43:41

Inlägg av rehnmaak »

Mja kanske praktiskt inte var rätt ord. Det jag menade var helt enkelt att det är lite för hårt typat vilket gör det extra jobbigt att skriva "koden".

Man kan tex inte likställa integers med std_logic_vector utan att konvertera fram och tillbaka. Det har väl iofs luckrats upp lite på senare tid.

Ett annat är att tilldela en vektor en annan vektor av olika längd. Då måste man tala om explicit vilka bitar man vill ha istället för att bara ta de x minst signifikanta bitarna som standard.

Samma sak om vektorn som ska tilldelas är längre än den andra, då måste man fylla på med nollor själv.
Användarvisningsbild
ucadv
Inlägg: 203
Blev medlem: 29 januari 2007, 23:13:49

Inlägg av ucadv »

> Mja kanske praktiskt inte var rätt ord. Det jag menade var helt enkelt att det är lite för hårt typat vilket gör det extra jobbigt att skriva "koden".


En ASIC vända kostar $1-2M, det ska inte vara "lätt" eller "bekväm" att koda!

Varför tror du folk köper dyra lint verktyg till Verilog så att dom kan få samma "jobbiga" felmeddelanden som VHDL verktygen ger??



>Man kan tex inte likställa integers med std_logic_vector utan att konvertera fram och tillbaka. Det har väl iofs luckrats upp lite på senare tid.

Ta en titt på unsigned i IEEE.std_numeric.


>Ett annat är att tilldela en vektor en annan vektor av olika längd. Då måste man tala om explicit vilka bitar man vill ha istället för att bara ta de x minst signifikanta bitarna som standard.
>
>Samma sak om vektorn som ska tilldelas är längre än den andra, då måste man fylla på med nollor själv.



Jag tycker VHDL gör 100% rätt i det här fallet. Det du vill ha finns tyvärr i Verilog/SV och har lett till många dyra ASIC buggar genom åren. Här är ett SV exempel jag fick av Don Mills (ASIC designer på Microchip):

Kod: Markera allt

logic signed [3:0] a; 
logic signed [4:0] c; 
a = -1;
c = a + 1b'1;
Du får själv kulra ut varför c blir -2 och inte 0....


edit: ändrarde "b" till "c" :)
Senast redigerad av ucadv 12 februari 2008, 12:24:05, redigerad totalt 1 gång.
blueint
Inlägg: 23238
Blev medlem: 4 juli 2006, 19:26:11
Kontakt:

Inlägg av blueint »

Beror väl på vad 'c' är deklarerad som?
Användarvisningsbild
Eson
Inlägg: 397
Blev medlem: 30 september 2004, 08:31:51
Ort: Huddinge - STHLM
Kontakt:

Inlägg av Eson »

Hur FPGA och CPLD är uppbyggda är jag inte intresserade av. Jag är främst intresserad av mjukvaran. Jag har fått den uppfattningen att man kan i stort sätt göra allt i mjukvaran innan man kör över den till hårdvaran. Men det jag inte blir klok på är vad för program man behöver. Dessutom är det bra om böckerna innehåller många kod-exempel från 'riktiga kretsar' som har en funktion. Inte bara 'här är en d-vippa: kod. här är en AND-grind' osv. Utan mer helheten så man kan se hur allt hänger ihop.

Men tycker ni jag ska fortsätta med VHDL eller ska jag försöka lära mig Verilog nu när jag kan C? Tänker på vad som är vanligast i industrin och program som stöder språken.
Användarvisningsbild
babbage
Inlägg: 654
Blev medlem: 10 november 2004, 11:33:17
Ort: N-tälje

Inlägg av babbage »

Men både Verilog och VHDL är hårdvarubeskrivande språk. Självklart måste du bry dig om hur FPGA:n är uppbygd och samt ha koll på digitalteknik i form av grindar, register, minnen, sekvenskretsar som d-vippor ....!!! Om man bara är intresserad av mjukvaran är nog inte FPGA-spåret den rätta vägen, då kanske det är bättre att satsa på DSP-programmering (i vilket det i och för sig också är bra att förstå hårdvaruelement i DSP:n) . Visst, man kan simulera funktionen i mjukvara, men om man inte tänker i hårdvara när man skriver sin kod är det en uppenbar risk att den fungerar bra i simuleringen men sedan får man problem när man ska trycka in den i FPGA:n med begränsade hårdvaryelement och krav på timing (klockfrekvens om man ska dra en parallell till vanlig mjukvara till en processor).
Användarvisningsbild
babbage
Inlägg: 654
Blev medlem: 10 november 2004, 11:33:17
Ort: N-tälje

Inlägg av babbage »

Fast en liten reservation till förra inlägget. Det kan ju vara så att du inte alls är intresserad av att faktiskt syntetisera din kod och implementera dina funktioner i FPGA:ns hårdvara. Det finns ju faktiskt ett användningsområde av t.ex. VHDL av att systematisera lite större system och simulera att det fungerar, utan att alls bry sig om hur en FPGA fungerar. Dock måste man då kanske räkna med att den dagen man faktiskt vill göra en ASIC eller FPGA implementation så måste koden skrivas om i stor utsträckning.
Användarvisningsbild
chille
Inlägg: 2469
Blev medlem: 25 juni 2003, 20:54:41
Ort: Stockholm
Kontakt:

Inlägg av chille »

rehnmaak skrev:eftersom Xilinx verktyg inte stödjer mixad VHDL och verilog.


Va!?! :shock: Jag var på utbildning hos Avnet/Silica (de som tillverkar utvecklingskorten till Xilinx) nu i veckan, och vad jag fick höra så skulle det inte vara några problem att mixa VHDL med Verilog. :(
Skriv svar