Sida 1 av 1

Generell plattform för utvecklingskort

Postat: 14 januari 2011, 14:09:34
av sasha
TL;DR: Utvecklingskort med separata moduler för olika typer av kretsar samt IO. Fokus på återanvändning av hårdvara och standardiserade gränsnitt.

Hej :)

Jag har lite funderingar kring att göra en plattform för utvecklingskort som ska stödja olika val av uC/CPU/FPGA/.., oavsett typ, familj eller tillverkare.
Problemet idag är att utvecklingskort tenderar att vara ganska dyra (speciellt high-end FPGA) och det är svårt att återanvända diverse IO mellan olika projekt, om man inte håller sig till en standard.

Lösningen är att skapa ett kretskort som fungerar som bas och sedan lägga själva kretsen som en modul ovanpå. Basen tillhandahåller en uppsättning spänningar (tänk typ 1.2V, 2.5V, 3.3V, 5V o.s.v.) samt de vanligaste IO-enheterna/programmerare (JTAG, ISP, FTDI). Baskortet har en bred avkoppling med de större kondensatorer som ingår i vanliga designer. Modulerna ligger på små separata kretskort som ansluts med en kontakt som har en standard pinout. Utöver kretsen så läggs även den finare avkopplingen på modulkortet. Även ytterligare IO-kort (te.x. RFID) kan anslutas med separata IO-moduler på ett liknande sätt, med en viss standard.

De båda standarderna säger vilka spänningar som återfinns på vilka pinnar, var jord finns samt vilka som används till IO (te.x. att grupp B är mappad till modul B, eller här finns JTAG). Totalt sätt så behövs kanske 500 pinnar för att hantera moduler med många pinnar.

Exempel på moduler som kan vara intressanta för mig personligen är Spartan-6 75k och LPC3220 (ARM9).

Efter en tids funderingar har lite frågor kommit upp, som jag skulle uppskatta ett svar eller en debatt kring.

(1) Blir induktans ett problem när man lägger kretsarna på separata moduler? Varierar det mycket beroende på val av "kontakt"? Blir det problem med te.x. minneskretsar där det finns krav kring skew?
(2) Vad är en lämplig sammankoppling av basen och moduler? Det borde behövas en en kompakt kontakt med hög densitet, som även är lätt tillgänglig. Modulerna bör vara så små som möjligt för att minska kretskortsarean och därmed priset. Finns det något som liknar CPU-sockets?
(3) Fortsättning på fråga (2): Finns det några standarder kring kretsmoduler och/eller IO-moduler, som är öppna? Jag har sett FPGA Mezzanine Card - är det ett lämpligt val?

Målet är att genomföra projektet och lägga slutresultatet på en öppen licens, så att alla kan dra nytta av det och utveckla själva.

Vore roligt med en diskussion kring projektet i helhet och frågorna; är jag helt ute och cyklar? :humm:

Re: Generell plattform för utvecklingskort

Postat: 14 januari 2011, 14:57:50
av blueint
The Bus Pirate ?

Gör en med AVR mikrokontroller och Ethernetstyrning istället ;)

Re: Generell plattform för utvecklingskort

Postat: 14 januari 2011, 20:38:46
av monstrum
Skulle inte tro att det funkar något bra att sätta t.ex. ett 400 MHz DDR-minne på huvudkortet och försöka snacka med detta genom massa extra ledare och kontaktdon. Likaså gigabit-linor, PCI-express, SATA osv. Men det kanske inte är tanken att det ska vara så "high-end"?

Re: Generell plattform för utvecklingskort

Postat: 14 januari 2011, 20:59:31
av JimmyAndersson
Troligtvis inte eftersom det inte nämns något alls om ingredienserna i en "vanlig" dator (typ PC).
Notera ordet "liknar" i frågan "Finns det något som liknar CPU-sockets?" :wink:

Sasha:
Intressant idé! Jag tror att många skulle ha nytta av det.
Tyvärr har jag inte så mycket att tillföra just nu, men jag följer tråden. :)

Re: Generell plattform för utvecklingskort

Postat: 14 januari 2011, 21:57:16
av hpl
Kul ide tycker jag!
Något som jag har sett flertalet exempel av är s.k System-On-Module enheter med ARM9/11 (googla tex embedded artists OEM boards). Många av dessa sitter på ett SODIMM-200 kort, vilket ju inte är sådär superstort, plus att det finns tillgängliga socklar för det. Många av tillverkarna till dessa kort har också ett slags utvecklingskort ("moderkort") med periferienheter och anslutningar. Givetvis är ju inte dessa standardiserade mellan tillverkare.... synd!

Hursomhelst, 500 pinnar kanske är att ta i, troligen är det så som sas tidigare att saker som minne osv. med fördel läggs på processorkortet (i brist på bättre namn) medan moderkortet mer hanterar io osv. Dessutom finns det ju inget som hindrar att processorkortet har egna socklar/anslutningar om det behövs.

Re: Generell plattform för utvecklingskort

Postat: 14 januari 2011, 23:26:37
av blueint
Missuppfattade frågan ser jag nu. Men..

Det är klart att du kan konstruera någon form av generellt utvecklingskort. Det är bara att tjuvkika på moderkort där man kan byta processor. Vilket kräver en hord med buckomvandlare så man kan ställa in flera spänningar som man vill använda.
(inget moderkort med utbytbart northbridge..)

En mer kritisk del är själva sockeln. Eftersom dom i detta fall kommer att ha så olika chipkapslingar kan man lika gärna ha en liten kretskort som cpu/fpga-chippet monteras på och som i sin tur har en standardsockel pålödd. Utvecklingskortet får i sin tur använda denna standardsockel konsekvent.
Ledningsinduktans kommer att vara ett problem, men kan kringgås med lägre frekvenser tills man bygger ett dedikerat kort.

En svårare nöt är att olika chips kräver olika typer av minne. Mikrokontrollers och FPGA borde däremot gå bra då dom oftast har eget minner eller är flexibla i vad som accepteras. En generell processor som behöver kringkretsar med specifik timing på databuss kan bli problematiskt. I synnerhet för minne, grafik, höghastighets I/O kontroller.

Du skulle kunna slänga in en FPGA som realtidsöversätter minne och databussen så att det som ansluts ser rätt saker.

Re: Generell plattform för utvecklingskort

Postat: 15 januari 2011, 13:36:03
av sasha
Kommentarer och svar på posterna, samt lite funderingar kring design av energiförsörjningen.
monstrum skrev:Skulle inte tro att det funkar något bra att sätta t.ex. ett 400 MHz DDR-minne på huvudkortet och försöka snacka med detta genom massa extra ledare och kontaktdon. Likaså gigabit-linor, PCI-express, SATA osv. Men det kanske inte är tanken att det ska vara så "high-end"?
I det här fallet kommer nog inte PCI-Express och SATA vara aktuellt iaf. Om man vill använda gränssnitt med höga klockfrekvenser så kan de läggas på processormodulen, som hpl skrev. Dock är det något som man bör undvika för att upprätthålla modul-designen och återanvändning av hårdvara.

Jimmy: Korrekt.
hpl skrev:Hursomhelst, 500 pinnar kanske är att ta i, troligen är det så som sas tidigare att saker som minne osv. med fördel läggs på processorkortet (i brist på bättre namn) medan moderkortet mer hanterar io osv. Dessutom finns det ju inget som hindrar att processorkortet har egna socklar/anslutningar om det behövs.
Medhåll. SODIMM-200 verkar vara en bra lösning och det borde vara smidigt att routa flera pararella "slots" på baskortet. COPACOBANA använder en liknande lösning.
BlueInt skrev:En mer kritisk del är själva sockeln. Eftersom dom i detta fall kommer att ha så olika chipkapslingar kan man lika gärna ha en liten kretskort som cpu/fpga-chippet monteras på och som i sin tur har en standardsockel pålödd. Utvecklingskortet får i sin tur använda denna standardsockel konsekvent.
Ja, det blir en bra lösning.
BlueInt skrev:En svårare nöt är att olika chips kräver olika typer av minne. Mikrokontrollers och FPGA borde däremot gå bra då dom oftast har eget minner eller är flexibla i vad som accepteras. En generell processor som behöver kringkretsar med specifik timing på databuss kan bli problematiskt. I synnerhet för minne, grafik, höghastighets I/O kontroller.
Jag känner att projektet får begränsa sig lite för att undvika sådant. Samtidigt så kan vissa av ledarna (typ sektion B) routas så att de uppfyller de krav som finns kring en viss standard.


--- Slut på frågor ---

Jag har börjat inse att baskortet kommer behöva generera en mängd olika spänningar beroende på vilka moduler som används. Vore det inte smidigt om man har flera justerbara buck converters / LDOs som kan konfigureras över UART? Då har man inte längre väldefinierade spänningsnivåer på en uppsättning pinnar, vilket kan leda till problem om man är slarvig. Dock tycker jag att dynamiken med att ladda en konfiguration (som kommer med processormodulen) är bättre.

Frågan är hur man löser digital konfiguration av spänningsnivåer. Vanliga justerbara [0] har ju en spänningsdelare, där det borde räcka att ändra värdet på ett av motstånden, vilket då kräver en digital potentiometer. En snabb sökning på Farnell gav ett fåtal men dyra träffar, finns det inte ytmonterade till en vettig peng(se edit)?

Sen såg jag att värdena på kringkomponenterna för buck converters varierar beroende på utspänning, vilket gör det mindre lämpligt för det här projektet.

Förresten.. finns det färdiga lösningar för att generera en bred uppsättning spänningar, eller är justerbara regulatorer + digital potentiometer det bästa?

[0]http://se.farnell.com/national-semicond ... dp/1271410

edit: Hittade lite kretsar från analog devices, Farnell.

Re: Generell plattform för utvecklingskort

Postat: 15 januari 2011, 15:47:54
av Fransson
Hmm... :humm:

Jag har i och för sig sett moderkort för "överklockare" där man kan ändra spänningar under mjukvarukontroll, genom biosinställningar. Så någon sorts ställbara spänningsregulatorer finns nog.


Fast jag vill komma med ett annat förslag.
Låt baskortet generera ett fåtal standard spänningar (t.ex. 5V och 3,3V och kanske någon till) och ha spänningsregulatorer för ytterligare spänningar på processormodulen. Många versioner på processormodulen kommer kunna klara sig på standardspänningarna utan ytterligare spänningsregulatorer. De processormoduler som behöver speciella spänningar "kan inte" få fel spänning, efter som regleringen sker lokalt på modulen.

Re: Generell plattform för utvecklingskort

Postat: 15 januari 2011, 16:56:41
av blueint

Re: Generell plattform för utvecklingskort

Postat: 18 januari 2011, 09:49:20
av hpl
Angånde matningspänningar o kringkomponenter så är det ju en svår avvägning mellan billigt o generellt, man vill ju inte att totalkostnaden ska springa iväg alldeles för mycket heller. Jag tror att man skulle komma långt med tex fasta 5V,3.3V,1.8V samt en eller 2 justerbara.

Hur funderar du kring vilka funktioner du vill ha på "moderkortet"? USB, Ethernet, Serieport, SD-kort, kanske nån tempsensor + eeprom känns givna men sen blir det klurigare... ska man bygga på tex LCD/TFT, Grafik, ljud, relän, knappar mm eller ska man bara ha en vettig möjlighet att ansluta sådant? Analoga in-/utgångar bör ju också finnas på något vis.

I slutändan kanske det kommer krävas en uC med ett "BIOS" på för att konfigurera helheten?
Skulle vara fint om man kunde "routa om" signalerna mellan processorkortet o huvudkortet på något smart sätt också, speciellt för processorer med få pinnar. Antingen via hårdvara eller uC.

Men, viktigast av allt kanske är att begränsa scopet en aning... Många bra ideer tenderar att rinna ut i sanden annars. Har du nåt konkret du jobbar på?

Re: Generell plattform för utvecklingskort

Postat: 31 januari 2011, 21:33:32
av sasha
hpl: Sorry, jag har lyckats missa ditt inlägg.

Just nu lutar det åt en SMB111 (tack BlueInt!) som har 3 step-down och en boost och är programmerbar över I2C. Den kräver dock max typ 6V, vilket blir ett problem om inte USB används.
BIOS-biten sköts nog av en AVR som snackar över UART<->FTDI<->USB, och som kan konfigurera strömförsörjningen.
Tanken är att låta användaren välja mellan strömförsörjning över USB (det läge som används av mobilladdare) eller extern AC-DC, som kommer kräva en extra buck converter till 5V. USB-porten kan delas med FTDI-gränssnittet mot AVR:en som kanske behöver inaktiveras efter uppstart och inladdning av konfiguration (har inte koll på om man kan dra högre strömmar med datalinorna aktiverade).

IO-enheter kommer vara ganska begränsat på huvudkortet, typ USB/ethernet/... Jag känner att knappar och skärmar blir lite för mycket och kan lika gärna läggas på moduler. Detta sänker priset dessutom, speciellt om inte alla använder de mera inriktade enheterna.

Sen senast så har det blivit lite problem med val av kontakt mellan modulerna. DIMM-slots verkar använda en smalare variant som inte funkar med standard FR4 (~1.6 mm). En lösning är att använda PCI, eventuellt PCI-ex, för att stödja normala tjocklekar. För att undvika krav på diverse konturer på kretskortet så kan man använda delar av kontakten.

Just nu har jag bara skisser över komponenter som behövs och lite kring placering. Tyvärr så tar studier och andra projekt all ledig tid för tillfället, så det dröjer nog innan projektet tar fart ordentligt.

Tack för all feedback hittills!

Re: Generell plattform för utvecklingskort

Postat: 1 februari 2011, 16:19:52
av stekern
Angående "standard" för kretsmoduler/I/O-moduler så har ju Digilent sina "Pmods" som passar till alla deras dev-kort.
Ett rätt stort utbud finns: http://www.digilentinc.com/Products/Cat ... ,401&Cat=9
På deras nyare kort har de börjat med en ny "standard", Vmods, som består av en VHDC kontakt.
Finns inte så mycket än, men det lär väl komma: http://www.digilentinc.com/Products/Cat ... ,648&Cat=4