ThVortex

Future Component Ideas

Here is my list of ideas for new components and improvements to existing ones (in no particular order):
  1. bounce - Simulate digital glitches caused by a physical switch bounce; for testing de-bounce code or RC filters
  2. spicelog - Log analog signal as SPICE PWL voltage source to text file
  3. vcdlog8/16/32 - 8/16/32-bit VCD logger
    • Use named shared memory segment with 1-bit vcdlog component
  4. a2d8 - Ideal (zero conversion time) analog to digital converter
  5. lptxch - Interface to real LPT port with the winring0 and/or inpout32 drivers
    • Could also use the winparport library for more limited unidirectional access but without requiring a kernel mode driver
    • 8 bidirectional data pins
    • 5 status inputs pins
    • 4 open collector control output/input pins
    • 1 data direction pin
    • 1 control direction pin
  6. sdcard/mmcard - Emulate a SD/MMC card in SPI mode
  7. freqdisp - Frequency/PWM/RMS display
    • Include button to remove DC bias from RMS
    • Show RMS and RMS^2 (for power estimation into resistive load)
  8. stepmtr - Stepper motor position/velocity/distance travelled display
    • Two input pins: direction and step
    • Maybe additional components for direct drive of unipolar/bipolar motor?
    • Maybe analog output encoding the position? It could control output of a rotary encoder for example.
  9. servomtr - PWM controlled servo motor with position/velocity display
    • Similar to the stepmtr component above
  10. vlptxch - Interface to backend of virtual LPT port
    • Modify the usb2lpt driver for this to work
    • Maybe communicate over a named pipe or named shared memory segment?
    • Could buffer/timestamp transactions for accurate delays
    • To get accurate timing, would we have to block client app?
  11. galXXXX - Simulate Generic Array Logic ICs at fuse level
  12. spitty - Display SPI traffic in a similar fashion to the built-in tty and tty2 components
  13. USBN9604 - Simulate this USB to FIFO chip
    • Could communicate with the USB/IP Windows client using a loopback network socket
    • Could use a custom modified LibUsb-Win32 library that client applications re-compile with for simulation
    • Could use a kernel mode virtual USB host controller driver; one possible starting point is the ReactOS USB Stack
    • Could use the Win32 Device Simulation Framework; not sure if users would need to install the DDK
    • Could modify the OHCI/UHCI code in the Bochs x86 emulator to support virtual USB devices from user space
    • Could modify the UHCI code in the QEMU x86 emulator/virtualizer to support virtual USB devices from user space
    • Would allow complete simulation of USBprog in VMLAB
  14. usbxch - Generic encoder/decoder for a raw USB serial stream
    • Use same techniques as USBN9604 component to communicate with host Windows system
    • Would allow simulation of software USB stacks like V-USB and USBtiny
    • Would allow simulation of AVRs with USB hardware using the new peripheral component interface
  15. mcp23s08/s17 - SPI 8/16-bit I/O port expander
    • There are several other port expanders that can be simulated
  16. ntscdisp/paldisp - Baseband video signal (black and white) display emulator
  17. rotenc - Rotary gray code encoder
  18. stepcnc - Simulate stepper motor controlled 1 to 6 axis CNC machine
    • Changes in stepper motor position are logged to file in G-Code format
    • One stepcnc component per axis; instance name specifies axis; input pins for step/dir, output pins for limit switches on axis
    • The tool path can be visualized by opening the G-Code file with CNC Simulation software
  19. systemc - Provide the tools and libraries to convert SystemC modules into VMLAB user components
    • The Pinapa SystemC front end may be usefull in generating the VMLAB specific wrapper code
    • The Verilator Verilog to SystemC/C++ compiler can help convert Verilog modules to VMLAB components
  20. CP2201 - Simulation of this (or any other) Ethernet Controller chip
    • Can bridge emulated virtual controller to physical network using the TAP driver from the OpenVPN project
  21. robotics - Interface VMLAB with the Visual Simulation Environment (VSE) of Microsoft's Robotics Developer Studio
    • Virtual robots controlled by virtual AVRs that move through virtual environments
    • The main limitation is VMLAB's simulation speed; ideally VMLAB should simulate a 20Mhz AVR in real-time.
  22. gpio - Interface to a variety of General Purpose I/O cards (digital or analog) using the Universal Library from Measurement Computing
    • Would allow interacting with physical devices much like a hardware ICE
    • The Univeral Library supports a "virtual GPIO card" that would simplify the programming of this component
    • The main limitation is VMLAB's simulation speed