Startside

Fra koncept til prototype — selvstændig produktudvikling

Helhedsudvikling af elektroniske enheder: diagram, kortlayout, firmware, FPGA-design, simulering og verificering. Specifikation, kode, test, levering — alt fra én hånd.

Embedded-enheder opstår sjældent ud af én enkelt disciplin. En ny idé kræver et diagram, diagrammet kræver et kortlayout, kortlayoutet kræver firmware eller FPGA-design, og det hele kræver til sidst verificering og dokumentation. At fordele dette samspil på flere leverandører svarer til at købe grænseflader — og grænseflader er den hyppigste fejlkilde.

Selvstændig helhedsudvikling betyder: én kontaktperson, ende-til-ende-ansvar, en sammenhængende dokumentationstilstand. Du sparer koordinering, jeg kan beslutte uden at skulle høre en leverandørkæde.

Sådan forløber et typisk helhedsprojekt

Selv om hvert projekt er forskelligt, følger forløbet et genkendeligt mønster:

  1. Forstå opgaven. Den indledende samtale klargør, hvad enheden skal kunne, hvilke randbetingelser der gælder (volumen, omkostninger, størrelse, forbrug, normkrav), og hvilke grænseflader der findes til eksisterende systemer.
  2. Koncept og specifikation. Ud fra opgaven skitseres et teknisk koncept: hvilken mikrocontroller- eller FPGA-platform passer, hvilke bus-systemer, hvilke analoge og digitale signaler, hvilken softwarearkitektur. Resultatet er et specifikationsdokument, der ligger til grund for alt det øvrige.
  3. Diagram-design. Opstilling af diagrammet med de valgte komponenter, dimensionering af de kritiske komponenter, simulering ved de afgørende punkter.
  4. Kortlayout. Flerlags-PCB-design under hensyn til højhastighedssignaler, EMC, varmeafledning og fremstillingsegnethed. Valg af PCB-producent og opfølgning på fremstillingen.
  5. Firmware eller FPGA-design. Implementering af styre- eller signalbehandlingslogikken i C/C++ for mikrocontrollere, i VHDL/SystemVerilog for FPGA — eller i kombination. Bare-metal på små mikrocontrollere, FreeRTOS eller tilsvarende RTOS på større systemer.
  6. Verificering og test. Kredsløbssimulering ved kritiske punkter, testbænke til FPGA-designs, hardwaretests på prototypen, om nødvendigt HIL-bænk til softwaren.
  7. Levering og dokumentation. Komplet kildekode, diagram, layoutdata, materialeliste, dokumentation af tilgang og designbeslutninger. Efter ønske vidensoverførsel til kundens team.

Om nødvendigt påtager jeg mig også koordineringen med en serieproducent, der leverer den ønskede kvalitet — som i Audi-projektet (se referencer), hvor en håndloddet prototype blev til et maskinfremstillet industrikort.

Tre discipliner — én hånd

De følgende tre discipliner mødes i et helhedsprojekt:

Hardware

Hardwareudvikling

Konstruktion og realisering af den elektroniske hardware — fra diagrammet via kortlayoutet til koordineringen af serieproduktionen. Specialiteter: mikrocontrollersystemer, FPGA-kort og blandede analoge/digitale kredsløb.

  • Mikrocontrollersystemer (ARM Cortex-M, ESP32, Atmel/Microchip)
  • FPGA-design og -integration (Xilinx Artix-7, Zynq)
  • Analoge og digitale kredsløb
  • PCB-design (Pulsonix, flerlags, højhastighed, EMC)
  • Kredsløbsdimensionering og komponentvalg
  • Opfølgning af PCB-fremstilling og koordinering med industripartnere
  • Idriftsættelse og bring-up af hardware
Software

Softwareudvikling

Implementering af embedded-softwaren på den udviklede hardware — fra hardwarenær bare-metal-programmering til flerkernede realtidsoperativsystemer. Sprog, platforme og protokoller vælges efter projektkrav, ikke efter præference.

  • Embedded-software (C, C++, assembler)
  • FPGA-programmering (VHDL, Verilog, SystemVerilog)
  • Realtidssystemer (FreeRTOS, bare-metal, flerkernet)
  • Kommunikationsprotokoller (CAN, CAN FD, Ethernet, EtherCAT, I²C, SPI, MOST)
  • Driverudvikling til hardwarenære grænseflader
  • Bootloader, watchdog, mekanismer til firmware-opdatering
  • Algoritmer til signalbehandling og regulering
Verificering

Simulering og verificering

Systematisk validering af den udviklede løsning — på kredsløbsniveau, FPGA-niveau, systemniveau. Verificering er ikke et efterstillet skridt, men en integreret del af udviklingen.

  • Kredsløbssimulering i tids- og frekvensdomænet
  • Monte Carlo-analyse og worst-case-undersøgelser
  • FPGA-verificering med SystemVerilog-testbænke
  • HDL-simulering (Vivado, Icarus Verilog, Verilator)
  • Bode-diagram, Nyquist-analyse, stabilitetsundersøgelser
  • Hardware-in-the-loop-tests for integrerede systemer

Hvad helhedsudvikling adskiller sig fra «ren kodning»

Når en kunde i dag søger «en embedded-udvikler», tænker vedkommende oftest på en, der udfører en delopgave: et C-modul, en FPGA-komponent, en driver. Til det er der mange leverandører.

Helhedsudvikling er noget andet. Det kræver en, der kan beslutte — om arkitektur, om komponentvalg, om grænseflader, om afvejningerne mellem omkostning og funktion. Den beslutningskompetence står ikke i hvert cv og kan ikke erstattes ved at føje specialister til.

Jeg påtager mig helhedsudvikling, hvor kunden ikke ønsker at vedligeholde en egen embedded-afdeling — og hvor den deraf følgende arbejdsindsats og det deraf følgende ansvar økonomisk kan hvile på én enkelt person.

Samarbejdsformer

Helhedsprojekter afvikles som regel som fastprisaftale med fast leveringsløfte. Arbejdsindsatsen vurderes før projektstart, prisen er garanteret. Til udforskende arbejde uden tydeligt slutpunkt er et timekontingent et alternativ. Detaljer på siden Opgavetildeling.

Farveskema

Sprog