====== DPI Project and Task List ======


===== CARDS =====
New FPGA card
  * 2 rows of 40 pins to give 10 peripheral slots
  * optional 1 row of 16 pins for host interface card
  * USB Serial interface with CP2102
  * easy to cut serial traces and header for raw serial
  * optional host RTS line for board reset
  * smaller 98x48mm form factor
  * SPI configuration flash.
  * SPI flash is seen as a peripheral for new code download
  * 5 Volt input, onboard 3.3 and 1.2 volt regulators
  * 40/50 MHz crystal
  * new Verilog serial host interface (first using existing FPGA card)

Dual voltage/current controlled motor controller
  * See https://www.ebay.com/itm/XL4015-5A-Step-Down-Buck-Converter-Module-DC-DC-Power-Supply-LED-Lithium-Charger/263587316867?hash=item3d5f074483:g:4SQAAOSw2hhcgHTnItem
  * XL4015.  PWM for voltage control.  Cycle stealing for current control.
  * Use digital pots to set voltage/current. https://demandperipherals.com/cards/qpot.html
  * Use AVR to set H-bridge direction and monitor voltage/current
  * Low cost NFETs for H-bridge can have high gate capacitance
  * Design to work with 7474 DPI circuit or direct SPI
  * No new Verilog
  * This might be a big seller

9-axis IMU card
  * BNO055 based so we do not do Kalman filters
  * We could buy/mount https://www.adafruit.com/product/4646 if needed

Qwiic interface card
  * FPGA to Qwiic interface with multiple Qwiic connectors
  * No new Verilog.
  * Maybe Linux drivers for several popular Qwiic cards

Grove interface card
  * FPGA to Grove interface with multiple Grove connectors
  * No new Verilog.
  * Maybe Linux drivers for several popular Grove cards

Programmable power supply
  * XL4015 based design as above
  * AVR and quad digital pot to control.
  * ZXCT1107 for high side current monitor
  * No new Verilog

RFID reader card
  * PN532 based
  * Similar to https://www.adafruit.com/product/364
  * "half size" card.  98x48mm

Waveform generator card
  * Based on AD9833 or similar
  * Similar to Mikroe-3309
  * Probably no new Verilog
  * Simple Linux API

Frequency counter card
  * (prescaler, into GHz range) output so low we can count it.
  * Uses the count4 Verilog peripheral or a derivative of it

A GPS receiver card (for absolute time sync and accurate frequency generation)
  * May be based on, or just carrier card of, existing GPS/GNSS receivers, yes
  * See the current GPS interface in dpdeaemon for the existing API
  * Ref frequency generator from GPS signal, 10MHz output for test equipment (multiple driver outputs to sync many measurement devices)

Galvanic insulated Volt meter 
  * (low freq) (measure volt/current in LAB situations) safe for ground loops etc
  * Optical / transformer / RF gap ?

Galvanic insulated Thermocouple interface
  * test bench equipment

A generic signal conditioning board
  * some op-amps, low pass filter
  * dip switch / jumper to configure ?

Other Thoughts about cards
  * 4-20 mA interface to somehow integrate commercial sensors into fpga/linux backend
  * I2C ground loop break (level conversion and always safe) to I2C , grove, Qwiic devices 
  * One New board with some switches, a few LEDS and a LCD display, nicely done, visual and size compatible to rest of platform (a little control interface)
  * CAN BUS system integration New Chips available, (tribe of car enthousiasts will welcome this)
  * ACS71240 Integrated Current Sensor (hall sensor type, insulated measurement, high bandwidth)
  * Talking to chargers and electric cars : https://en.wikipedia.org/wiki/ISO_15118 some interface for this
  * Current controller/generator (starting at low current) upto 0.5 amp, used to power LED lighting applications (panels)
  * Sub GHz tranceiver Si4464/63/61/60 used in smart metering, 
    * allows many protocols (also known to me from balloon telemetry application 
    * ranging 150 km without special antenna (line of sight)
    * used in remote control and logging of factory equipment (preventive maintenance) and sensors in the field
    * thinking about making it into a AX25 mesh network

Analog CPLD card
  * SLG46826 GreenPak chip with SPI
  * May need new Verilog
  * Linux API needs definition

Weather sensor card
  * Temperature, Humidity, Pressure, Light, UV Light
  * No new Verilog if I2C sensors

Brushless DC motor controller (?)
  * Based on the ATA6843 or similar 

Silent stepper motor controller with all the trimmings TMC2226
  * http://www.farnell.com/datasheets/3119148.pdf
  * https://nl.farnell.com/trinamic/tmc2226-bob/breakout-board-stepper-motor-driver/dp/3439212?st=tmc2226
  * API to be defined
  * Most likely based on low speed serial peripheral

DCC Model Railroad controller
  * Based on one channel of the current H-bridge
  * New Verilog required but a fairly simple design
  * recently found out this is a tribe, "model railroad builders" 
  * Have a board on my desk right now to fix LED lighting of a model

Battery management card (?)
  * Coulomb counter, voltage per cell
  * Balancing charger
  * Remote on/off
  * Multiple output connectors

SD Card Reader (?)
  * One bit SPI interface

Configurable voltage regulator card (?)
  * 3.3/3.7/5/6 volt selectable via jumper
  * could be some lm317 with resistors, jumpers or switches
  * does it need to be high power?
  * typical use case for this board?



===== PERIPHERALS =====
Serial ports
  * Quad low speed serial output
  * Quad low speed serial input
  * Dual low speed serial output with flow control
  * Dual low speed serial input with flow control
  * Dual serial input/output without flow control
  * Single low speed serial port with flow control


Microstepping stepper motor controller
  * Uses existing dual H-bridge or quad open-drain driver
  * Sine/cosine lookup table
  * Phase accumulator implementation (?)

Broadcast ultrasonic ping
  * Current ping peripheral does one of eight sensors at a time
  * New peripherals pings all sensors simultaneously.
  * 8X improvement in response time

Logic analyzer (?)
  * Use all input pins as part of a logic analyzer
  * Limited to 20 MHz sampling rate
  * Configurable trigger value, hold-off, and pre-trigger.
  * Output to GTKWave or Sigrok