Forum: Mikrocontroller und Digitale Elektronik uC Auswahl - Analyse


von Sven S. (badphantom)


Lesenswert?

Hallo

im Rahmen einer Arbeit müsste ich eine Analyse möglicher Controller 
durchführen.
Dazu gehören FPGAs und PIcs (ASIC fallen flach).

Meine Frage:
Wie führt man eine solche Analyse wissenschaftlich und fundiert durch?
Die Schaltung ist mir noch nicht bekannt, da sie vom uC abhaengt, und 
andersherum.

Bei einigen Werten ist die Wahl klar:
z.B. muessen mind. 36 kByte Programmspeicher vorhanden sein, ein Timer 
und ein ADC.

Woran mache ich die Auswahl der Taktfrequenz fest ?
Warum wähle ich 8, 16, 32 bit Controller?

Was entscheidet zwischen FPGA und PIC ?

Danke für jede Hilfe / Links

Greetz
Sven

von Falk B. (falk)


Lesenswert?

@  Sven Schaumann (badphantom)

>Dazu gehören FPGAs und PIcs (ASIC fallen flach).

Ach so . . .

>Meine Frage:
>Wie führt man eine solche Analyse wissenschaftlich und fundiert durch?

Indem man sich mal mit den Begriffen befasst und nicht nur Bullshit 
Bingo spielt.
FPGA und PIC vergleichen ist wie Elefanten mit Marienkäfen zu 
vergleichen.

>Die Schaltung ist mir noch nicht bekannt, da sie vom uC abhaengt, und
>andersherum.

Jaja.
Aber wenn du nicht weisst was du willst, wie willst du dann 
Auswahlkriterien für den uC festlegen?

>Bei einigen Werten ist die Wahl klar:
>z.B. muessen mind. 36 kByte Programmspeicher vorhanden sein, ein Timer
>und ein ADC.

Haben Dutzende von PICs. FPGAs haben keinerlei ADCs.

>Woran mache ich die Auswahl der Taktfrequenz fest ?

An der Aufgabenstellung?

>Warum wähle ich 8, 16, 32 bit Controller?

Dito.

>Was entscheidet zwischen FPGA und PIC ?

Dito. BEschreibe allgemein, welche Datenverarbeitung in welcher Zeit 
vorgenommen werden soll. Dann kann man abschätzen, ob das ein PIC 
schafft oder ob es ein FPGA sein muss/sollte.
Aber ja, dazu gehört schon ein gutes Stück Erfahrung.

MFG
Falk

von Иван S. (ivan)


Lesenswert?

Hallo Sv en,
> im Rahmen einer Arbeit müsste ich eine Analyse möglicher Controller
> durchführen.

Hier ist schon mein erstes Verständnisproblem: Was genau 
musst/sollst/möchtest Du analysieren?

> Dazu gehören FPGAs und PICs (ASIC fallen flach).

Warum genau diese Unterscheidung? FPGAs gibt es viele, PICs auch, aber 
"PIC" ist zumindest schon einmal eine definierte Controllerfamilie.
Warum überhaupt unbedingt ein PIC und kein MSP430, kein eZ8 und kein 
Asiate? Hast Du dich schon auf eine bestimmte FPGA-Familie festgelegt?

> Wie führt man eine solche Analyse wissenschaftlich und fundiert durch?

Dazu muß man erst einmal wissen, was das Ziel der Analyse ist. Denn 
analysieren kann man vieles, Beispiele: Die konrete Hardware 
(Technologieanalyse), diverse Timings (Laufzeitanalyse), Stromverbrauch 
(Energieeffizienzanalyse), Verhalten unter schwierigen Umweltbedingungen 
(Zuverlässigkeitsanalyse)...

> Die Schaltung ist mir noch nicht bekannt, da sie vom uC abhaengt, und
> andersherum.

Was soll denn ungefähr aufgebaut werden?

> Bei einigen Werten ist die Wahl klar:  z.B. muessen mind. 36 kByte
> Programmspeicher vorhanden sein, ein Timer und ein ADC.

Warum braucht/will man dann einen FPGA? Welche Auflösung muß der ADC 
haben und wie genau muß er sein? Wieviele Samples (Aufnahmen) des ADCs 
sind in einer gewissen Zeit (übliche Einheit im Controllerbereich: 
kSamples/sec) notwendig? Müssen mit den ADC-Werten Berechnungen 
durchgeführt werden? Und wenn ja: wie komplex sind diese und wie schnell 
müssen sie ausgeführt sein?

Je nachdem kann der kleinste PIC mit Timer und ADC vollkommen 
ausreichend sein, im anderen Fall kann es sein daß Du selbst mit einem 
schnellen Rechen-FPGA, breitem externem High-Performance ADC und 
eventuellen High-Speed-Bustopologien an die Grenzen des technisch 
Machbaren kommst.

> Woran mache ich die Auswahl der Taktfrequenz fest ?

Grundregel des Technikers: So viel wie nötig, so wenig wie möglich ;-)

> Warum wähle ich 8, 16, 32 bit Controller?

Kommt auf deine Daten drauf an und den (ohne Banking) adressierbaren 
Speicher. Im High-Volume-Low-Cost-Sektor werden auch Vierbitter noch 
gerne genommen. Ein 8bitter kann (nur) 256 Bytes adressieren, ein 
16bitter 64k. Oft ist bei den kleinen dafür auch der Code kleiner, aber 
das gilt nicht generell. Wenn Du viele Berechnungen mit der Breite eines 
DWords (4 Byte) hast, kann ein 32bitter Sinn machen.

> Was entscheidet zwischen FPGA und PIC ?

(Du plenkst). PIC ist eine Microcontroller-Familie der Firma Microchip. 
FPGAs sind Bausteine mit programmierbarer Logik, sprich: da ist noch 
keine fertige Hardware (wie bei einem uC) drauf, sondern die musst Du 
erst selbst programmieren. Die großen Drei unter den FPGA-Herstellern 
sind Altera, Lattice und Xilinx.

> Danke für jede Hilfe / Links

Keine Ursache und viel Erfolg,
Iwan (grinsend)

von Hmm... (Gast)


Lesenswert?

> Indem man sich mal mit den Begriffen befasst und nicht nur Bullshit
> Bingo spielt.
> FPGA und PIC vergleichen ist wie Elefanten mit Marienkäfen zu
> vergleichen.

Lol. Sind doch beides Käfer. ;)

> Die Schaltung ist mir noch nicht bekannt, da sie vom uC abhaengt, und
> andersherum.

Die machst du an deiner Aufgabe fest. Hier ein paar Begriffe damit Falk
sein Bingo-Kärtchen voll bekommt. ;)

-> WELCHE Größen sollen gemessen werden? (Zeit, Frequenz, Temperatur,
   ...)

-> WIEOFT und WIE GENAU müssen diese gemessen werden?

-> WELCHE BUSSYSTEME werden zur Kommunikation mit der Aussenwelt
   benötigt? (SPI, I²C, RS232, RS485, CAN, Ethernet, ..........)

-> Müssen PROZESSDATEN gesichert werden und wen ja wieviele Daten
   welchen Zeiträumen? (z.B. 2x pro Minute ein 16-Bit Temperaturwert
   über 4 Wochen)

Schreib dir diese ANFORDERUNGEN in eine Tabelle und schlaf dann nochmal 
drüber.

> Woran mache ich die Auswahl der Taktfrequenz fest ?

Im wesentlichen an 3 Größen:

1. Wie schnell müssen Daten verarbeitet werden?
   -> Dekodierung empfangener Daten braucht Zeit. Wenn man z.B.
      mit 115200 Baud Daten vom PC empfängt und der Controller mit
      1 MHz läuft hat man knapp 10 Takte Zeit um ein Byte zu ver-
      arbeiten. Dürfte also nix werden.

2. Wieviele Prozesse laufen parallel ab und wielang darf jeder Prozess
   maximal dauern?

3. Welche Frequenzen müssen gemessen werden?

Für alle 3 Punkte gilt: Je schneller desto besser. Wenn dann allerdings 
auch noch Low-Power und EMV beachtet werden muss, ist weniger wieder 
mehr. Klär also ab was gefordert ist (wieder Tabelle!). Bei der 
Entwicklung wirst du dann schon sehen, ob du etwas mehr Speed brauchst 
oder auch etwas langsamer fahren kannst. Such dir einen Chip aus, der in 
beide Richtungen noch Luft hat.

> Warum wähle ich 8, 16, 32 bit Controller?

Weil es sonst keiner macht. Und weil außer dir keiner weiß, welcher für 
deine Aufgaben (siehe beide Tabellen) am geeignetesten ist.

> Was entscheidet zwischen FPGA und PIC ?

Die Anforderungen in deinen Tabellen. Ausserdem der Aufwand den du 
bereit bist zeitlich und finanziell zu investieren.

von Sven S. (badphantom)


Lesenswert?

Erstmal danke für deine Antwort.

FPGA vs. PIC:
Es geht grundsätzlich um die Verarbeitung und Erfassung von abgetasteten 
Werten, was zumindest von meinem jetzigen Standpunkt mit beiden möglich 
sein dürfte.

> Aber wenn du nicht weisst was du willst, wie willst du dann
> Auswahlkriterien für den uC festlegen?

Um in etwa das geht es mir eigentlich.
Den Controller versuche ich gerade auszuwählen, und eine Schaltung ist 
noch nicht einmal grob vorhanden.

>  FPGAs haben keinerlei ADCs.
Sollte es ein FPGA werden, kann man das sicherlich auf dem board 
realisieren.

> Beschreibe allgemein, welche Datenverarbeitung in welcher Zeit
> vorgenommen werden soll.
Es sollen Pulswerte abgetastet werden. Maximal 9 Werte pro Sekunde, was 
9 Hz entspricht. Insofern ist die Frequenz des Controllers eigtl. offen.
Einzig der Algorithmus könnte bestimmte Vorgaben machen, den habe ich 
aber logischerweise noch nicht.

Bzgl. der bitzahl würden mir nur die abgetasteten Werte als Vorgaben 
einfallen. Die müssten aber mit 16 Bits sehr gut bedient sein.

Vllt. kann man das ganze auch umformulieren:
Welche Bauteile fallen ganz heraus?

Ich vermute, es müsste eine Schätzung "über den Daumen" werden, um 
festzulegen, was reichen dürfte.
Dann vllt. noch etwas Puffer dazu ( Taktfrequ., Speicher ), und dann 
etwas in dem Bereich auswählen.

EDIT:
Habe wohl etwas lange fürs tippen gebraucht.
Vielen Dank für eure Antworten, vor allem der Tipp mit den Tabellen.
Das hilft mir jetzt erstmal in eine Richtung weiter.

> Warum genau diese Unterscheidung? FPGAs gibt es viele, PICs auch, aber
> "PIC" ist zumindest schon einmal eine definierte Controllerfamilie.
> Warum überhaupt unbedingt ein PIC und kein MSP430, kein eZ8 und kein
> Asiate? Hast Du dich schon auf eine bestimmte FPGA-Familie festgelegt?
ehm... ja. Da habe ich wohl etwas grundsätzliches nicht verstanden.

Wenn ich das mal alles verarbeitet und detaillierter habe, werde ich 
zurückkommen ;)

Danke

von Hmm... (Gast)


Lesenswert?

> FPGA vs. PIC:
> Es geht grundsätzlich um die Verarbeitung und Erfassung von abgetasteten
> Werten, was zumindest von meinem jetzigen Standpunkt mit beiden möglich
> sein dürfte.

Jap, spätestens wenn man den PIC als Softcore im FPGA nachbildet kann 
der FPGA (fast) alles, was der PIC auch kann.

> Den Controller versuche ich gerade auszuwählen, und eine Schaltung ist
> noch nicht einmal grob vorhanden.

Bisher kenne ich es so, dass die Schaltung basierend auf einer 
Hardware-Vorauswahl entwickelt wird. Werd dir klar darüber, was du 
brauchst. Hier kann es keiner wissen.

> Sollte es ein FPGA werden, kann man das sicherlich auf dem board
> realisieren.

Jap. Ist halt wieder ein Chip+Hühnerfutter mehr.

> Es sollen Pulswerte abgetastet werden. Maximal 9 Werte pro Sekunde, was
> 9 Hz entspricht.

Hast schon richtig erkannt dass 9 Werte pro Sekunde nicht viel sind. Nur 
wie KURZ kann dein Puls werden? Wie groß sind die MINDEST-PAUSEN 
zwischen 2 Pulsen? Konzentrier dich erstmal auf die kritischen 
Parameter.

> Insofern ist die Frequenz des Controllers eigtl. offen.

Nö. Der Controller muss ja die Samplingrate vom ADC schaffen. Und die 
hängt von der Dauer deiner Pulse aus.

> Einzig der Algorithmus könnte bestimmte Vorgaben machen, den habe ich
> aber logischerweise noch nicht.

Tja, DU gibst den Algorithmus indirekt durch deine Controllerauswahl mit 
vor. Also überleg dir was mit den gemessenen Daten gemacht werden soll 
und wie man das (Pseudocode oder PAP) erreichen kann.

> Bzgl. der bitzahl würden mir nur die abgetasteten Werte als Vorgaben
> einfallen. Die müssten aber mit 16 Bits sehr gut bedient sein.

Was für ein Signal willst du denn nun messen? Wenn es 0V/5V Pegel sind, 
reicht schon ein Timer mit InputCapture. Wenn es eher in Richtung Audio 
/ Signalanalyse geht ist vielleicht ein DSP günstiger als ein FPGA..

> Vllt. kann man das ganze auch umformulieren:
> Welche Bauteile fallen ganz heraus?

Mindestens 99.99% der aktuell am Markt befindlichen Bauelemente kannst 
du weglassen.

> Ich vermute, es müsste eine Schätzung "über den Daumen" werden, um
> festzulegen, was reichen dürfte.

Man schaut sich die kritischen Parameter an und schätzt anhand derer die 
notwendigen Ressourcen. Man muss sich auch nicht schämen, mal bei einem 
anderen ähnlichen System zu schauen welche Ressourcen da vorhanden sind 
und wie weit diese ausgereizt werden.

von Sven S. (badphantom)


Lesenswert?

Also Danke euch allen.

Habe jetzt einige Hinweise und Tipps zusammen.
Jedenfalls muss ich die Analyse anders aufziehen, als ich angefangen 
habe.

von Johnny (Gast)


Lesenswert?

Naja, um eine Entscheidung zu treffen, musst Du natürlich mal die 
"Rahmenbedingungen" kennen. Also z.B. den maximalen Stromverbrauch, 
Speisespannung, benötigte I/O's, Grösse des Flash/RAM, Gehäusetyp 
(Grösse), benötigte Rechenleistung, benötigte Peripherie wie 
ADC/DAC/Timer, Preis, Präferenzen von vorhergehenden Projekten, ...
Hast Du dies alles zusammengetragen, dann wälze Datenblätter und lade 
Verkäufer von Distributoren ein, welche Dich ebenfalls noch "beraten".

Hier einige bekannte Marken / Stickworte von in der Branche häufig 
eingesetzten Produkten:
FPGA: Xilinx, Altera
Mikrocontroller (sehr stromsparend): TI MSP430, NEC
Mikrocontroller (viel Peripherie): Renesas H8, Renesas M16C, NEC, ATMEL 
AVR
Mikrocontroller (Sonstige): Microchip PIC
Mikrocontroller (sehr schnell): Auf ARM CPU basierende von NXP, ATMEL

Die Liste ist sicher nicht vollständig, einfacvh das, was mir gerade in 
den Sinn gekommen ist.

von Sven P. (Gast)


Lesenswert?

Hm, wenn schon ein Softcore, dann vielleicht nicht gerade PIC, da 
gibts bessere und modernere.

von Hmm... (Gast)


Lesenswert?

@Sven Pauli:

Wenn schon ein 8-Bit Mikrocontroller, dann vielleicht nicht gerade ein 
PIC, da gibts bessere und modernere. ;)

SCNR

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.