fpga?
En FPGA är programmerbar logik. Det är som en gigantisk hög logik-kretsar och världens största kopplingsdäck. Du kan bestämma hur allt ska kopplas ihop genom att beskriva funktionen du vill ha i ett språk som VHDL, eller genom att rita kopplingscheman. Du kan få nästan vilken funktion som helst, från en OCH-grind till en mikroprocessor, och man kan byta funktion utan att löda nånting eller dra en enda sladd
I min DSO har den nästan all funktion. Den tar emot mätdata, samplar ner den, sparar den i minnet, bestämmer när man ska börja/sluta sampla (trig) osv.

I min DSO har den nästan all funktion. Den tar emot mätdata, samplar ner den, sparar den i minnet, bestämmer när man ska börja/sluta sampla (trig) osv.
- MicaelKarlsson
- Inlägg: 4669
- Blev medlem: 18 juni 2004, 09:16:07
- Ort: Aneby
- Kontakt:
-
- Inlägg: 401
- Blev medlem: 6 maj 2004, 12:22:36
- Ort: Stockholm
Jag är också helt såld på FPGA/CPLD. De är så mycket snabbare än mikroprocessorer. Dessutom kan den göra saker samtidigt, vilket inte går med mikroprocessorer. Lite klurigt dock att skriva VHDL-kod om man har programmerat vanlig sekventiell kod innan. Det är ett annat tänk. Det finns en firma som har veckolånga kurser både i Sverige och på Kanarieöarna. Den senare är en krona billigare (inkl. flyg och allt), så det ska vara lättare att övertyga arbetsgivaren att man vill åka dit, kanske....
Kolla på www.fpga4fun.com och www.opencores.com där finns lite exempel på bra "startpaket" så som Ethernet controllers, RS232, SDRAM controllers, VGA etc.
/Micke
/Micke
Programmerbar logik används mycket ofta till att bygga state-maskiner.
Kan nån hjälp mej att förklara vad det är...?
Ok, jag fuskar lite å kollar i VHDL-boken......
"En tillståndsmaskin ( = statemaskin) arbetar med betydligt högre prestanda än en CPU, eftersom beteendet är lagrat i maskinen. Beteendet är lagrat i ett grindnät, som kan jämföras med boolska ekvationer och tillståndet är lagrat i ett antal vippor"
Ett litet förklaringsexempel:
Om du har en mängd villkor (typ if ) efter varandra, alltså flera alternativ än ett tar dat tid för en mikrokontroller att gå igenom alla villkor tills den hittar den if-sats som uppfyller det krav som gör att mikrokontrollern kan gå vidare i programmet.
I en tillståndsmaskin kan du ha en ifsats med många alternativ...och det tar ändå bara en klockcykel för exekveringen..........
Kan nån hjälp mej att förklara vad det är...?

Ok, jag fuskar lite å kollar i VHDL-boken......
"En tillståndsmaskin ( = statemaskin) arbetar med betydligt högre prestanda än en CPU, eftersom beteendet är lagrat i maskinen. Beteendet är lagrat i ett grindnät, som kan jämföras med boolska ekvationer och tillståndet är lagrat i ett antal vippor"
Ett litet förklaringsexempel:
Om du har en mängd villkor (typ if ) efter varandra, alltså flera alternativ än ett tar dat tid för en mikrokontroller att gå igenom alla villkor tills den hittar den if-sats som uppfyller det krav som gör att mikrokontrollern kan gå vidare i programmet.
I en tillståndsmaskin kan du ha en ifsats med många alternativ...och det tar ändå bara en klockcykel för exekveringen..........
En tillståndsmaskin bygger på att man har olika tillstånd som man kan hoppa emellan. Ett exempel är en räknare.
Om jag ska göra en räknare med olika grindar så börjar jag med att göra en grafisk "flödesdiagram/graf" över vad räknaren ska göra.
Tex. räkna från 0-9, Jag ritar 10 tillstånd 1,2,3,...,9. (överkurs: Detta blir en typisk Mooremaskin eftersom jag kan koda alla tillstånd med dess utsignal.)
Sen ritar jag in pilar där jag vill att maskinen ska hoppa dvs. jag vill bara att den ska räkna så det blir en pil från 0 till 1, 1=>2 osv. fram till 9=>0.
Som steg 2 så kodar jag alla tillstånd (binärt)
0=> 0000
1=> 0001
...
9=> 1001
När man väl har grafen i binära tal så kan man behandla den matematiskt (boolesk algebra) och minimera den. Karnaugh-maps är väldigt bra till detta (åtminstone för små nät som man löser på papperet)
Nu har man fått fram ett minimalt boolesktuttryck som man kan realisera med grindar och programmera in i tex. FPGA-kretsar.
Om jag ska göra en räknare med olika grindar så börjar jag med att göra en grafisk "flödesdiagram/graf" över vad räknaren ska göra.
Tex. räkna från 0-9, Jag ritar 10 tillstånd 1,2,3,...,9. (överkurs: Detta blir en typisk Mooremaskin eftersom jag kan koda alla tillstånd med dess utsignal.)
Sen ritar jag in pilar där jag vill att maskinen ska hoppa dvs. jag vill bara att den ska räkna så det blir en pil från 0 till 1, 1=>2 osv. fram till 9=>0.
Som steg 2 så kodar jag alla tillstånd (binärt)
0=> 0000
1=> 0001
...
9=> 1001
När man väl har grafen i binära tal så kan man behandla den matematiskt (boolesk algebra) och minimera den. Karnaugh-maps är väldigt bra till detta (åtminstone för små nät som man löser på papperet)
Nu har man fått fram ett minimalt boolesktuttryck som man kan realisera med grindar och programmera in i tex. FPGA-kretsar.
Dessutom .....om man tänker på att allternativet till FPGA/CPLD inte är en microcontroller utan att man blir tvungen att använda sig av standard logik (typ 74HC eller liknande) så inser man att en FPGA/CPLD också förhindrar att kretskorten blir stora som.....dasslock. En ak bara att komma ihåg.....jag vet inte hur det är med just FPGA men jag har använt mig av en CPLD (XC9572 tror jag) och den drog en j**la massa ström (0,2 A om jag inte minns fel) Naturligtvis är klockhastigheten avgörande.....
Det är stor problem att gå från sekventiell kod till "parallell" kod. När läste VHDL var det inte lätt i början. Därför blir det lättare att jobba med tillstånd.
I skolan gjorde vi en komplett processor med 10 instruktioner. Ganska kul grej faktiskt och man lär sig exakt hur en processor fungerar med alla register och sånt...
Problemet med VHDL är att det är väldigt dyrt att arbeta med. Synthes verktygen kostar mycket. Man måste nästan arbeta med en riktig FPGA för att förstå nyttan och fördelen med HDL.
I skolan gjorde vi en komplett processor med 10 instruktioner. Ganska kul grej faktiskt och man lär sig exakt hur en processor fungerar med alla register och sånt...
Problemet med VHDL är att det är väldigt dyrt att arbeta med. Synthes verktygen kostar mycket. Man måste nästan arbeta med en riktig FPGA för att förstå nyttan och fördelen med HDL.
-
- Inlägg: 401
- Blev medlem: 6 maj 2004, 12:22:36
- Ort: Stockholm
Jag är helt novis innom FPGA / CPLD, HDL etc...
Men jag har ett antal logik kretsar som jag skulle vilja lägga i en och samma krets.
Det är inget speciellt avancerat utan mest ett antal räknare klockade med 10mhz och lite annat 74HC diverse.
Anledningen till att jag vill lägga det i en och samma krets är för att spara plats och även tid vid montering av kretskorten.
Kretsen bör vara rätt bilig i inköp <100kr.
Kan man hitta något liknande Atmels AVR Studio och deras ATSTK500 utvecklings kort skulle jag vara mycket nöjd.
Vilka tillverkare har bra utvecklings kit och bra utvecklingsmiljöer till gratis eller låga priser?
Samt gärna utvecklings miljöer med låg inlärningströskel.
Detta är en komersiell lösning så student kit etc är tyvärr inte intressant.
Någon med lite erfarenhet som har lust att dela med sig?
/Erik
Men jag har ett antal logik kretsar som jag skulle vilja lägga i en och samma krets.
Det är inget speciellt avancerat utan mest ett antal räknare klockade med 10mhz och lite annat 74HC diverse.
Anledningen till att jag vill lägga det i en och samma krets är för att spara plats och även tid vid montering av kretskorten.
Kretsen bör vara rätt bilig i inköp <100kr.
Kan man hitta något liknande Atmels AVR Studio och deras ATSTK500 utvecklings kort skulle jag vara mycket nöjd.
Vilka tillverkare har bra utvecklings kit och bra utvecklingsmiljöer till gratis eller låga priser?
Samt gärna utvecklings miljöer med låg inlärningströskel.
Detta är en komersiell lösning så student kit etc är tyvärr inte intressant.
Någon med lite erfarenhet som har lust att dela med sig?
/Erik
-
- Inlägg: 401
- Blev medlem: 6 maj 2004, 12:22:36
- Ort: Stockholm
Du kan inte använda AVR Studio, den fungerar bara mot mikrokontrollers. Farnell säljer Altera CPLD/VHDL, kanske gör elfa det också. Utvecklingsmiljö (en bra sådan) finns gratis på Alteras hemsida.
En del CPLD/FPGA har inbyggt Flash (programminne), andra måste du ha det externt. Försök hitta en som har det inbyggt om du inte vill ha så mycket kringkomponenter. Kolla på Altera MAX3000-serie. Den ska vara både billig och ha intergrerat flash.
Om du arbetar med en komersiell produkt och du har budget för projektet kanske jag kan hjälpa dig. Du kan maila till info@lightmare.se
En del CPLD/FPGA har inbyggt Flash (programminne), andra måste du ha det externt. Försök hitta en som har det inbyggt om du inte vill ha så mycket kringkomponenter. Kolla på Altera MAX3000-serie. Den ska vara både billig och ha intergrerat flash.
Om du arbetar med en komersiell produkt och du har budget för projektet kanske jag kan hjälpa dig. Du kan maila till info@lightmare.se
FPGA kräver externt minne av något slag (kan vara speciellt konfigurationsminne, eller det kan vara t.ex. en mikrokontroller som "bootar" den från ett vanligt flash-minne eller likn.). CPLD kräver inget sånt, inte direkt för att de har någon inbyggt flash-minne utan för att själva makrocellerna är konstruerade så att de behåller sin konfiguration när strömmen försvinner. FPGA däremot är baserade på små lookup-tabeller i RAM som måste laddas med konfig-data varje gång.
CPLD är generellt små, billiga och har en enkel struktur som gör prestandan lätt att förutsäga. FPGA är större, dyrare och snabbare, inget man behöver för att ersätta några TTL-chip.
Elfa har Xilinx XC9500 CPLDer. Tycks vara löjliga priser som vanligt på elfa, men du får iaf 36 macroceller för under 100kr... (varje macrocell har ett register och en hög kombinatorik).
Devkit vet jag inte mycket om, men allt som behövs för att programmera dessa är själva chipen, en download-kabel (ritning finns att ladda ner från både Altera och Xilinx) och gratis programvara (Quartus resp. ISE Webpack).
Quartus (Altera) och Webpack (Xilinx) tycker jag är ungefär likvärdiga.
CPLD är generellt små, billiga och har en enkel struktur som gör prestandan lätt att förutsäga. FPGA är större, dyrare och snabbare, inget man behöver för att ersätta några TTL-chip.
Elfa har Xilinx XC9500 CPLDer. Tycks vara löjliga priser som vanligt på elfa, men du får iaf 36 macroceller för under 100kr... (varje macrocell har ett register och en hög kombinatorik).
Devkit vet jag inte mycket om, men allt som behövs för att programmera dessa är själva chipen, en download-kabel (ritning finns att ladda ner från både Altera och Xilinx) och gratis programvara (Quartus resp. ISE Webpack).
Quartus (Altera) och Webpack (Xilinx) tycker jag är ungefär likvärdiga.