Here is my list of ideas for new components and improvements to
existing ones (in no particular order):
- bounce - Simulate digital glitches caused by a physical switch
bounce; for testing de-bounce code or RC filters
- spicelog - Log analog signal as SPICE PWL voltage source to text file
- vcdlog8/16/32 - 8/16/32-bit VCD logger
- Use named shared memory segment with 1-bit vcdlog component
- a2d8 - Ideal (zero conversion time) analog to digital converter
- 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
- sdcard/mmcard - Emulate a SD/MMC card in SPI mode
- freqdisp - Frequency/PWM/RMS display
- Include button to remove DC bias from RMS
- Show RMS and RMS^2 (for power estimation into resistive load)
- 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.
- servomtr - PWM controlled servo motor with position/velocity display
- Similar to the stepmtr component above
- 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?
- galXXXX - Simulate Generic Array Logic ICs at fuse level
- spitty - Display SPI traffic in a similar fashion to the built-in
tty and tty2 components
- 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
- 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
- mcp23s08/s17 - SPI 8/16-bit I/O port expander
- There are several other port expanders that can be simulated
- ntscdisp/paldisp - Baseband video signal (black and white) display emulator
- rotenc - Rotary gray code encoder
- 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
- 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
- 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
- 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.
- 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