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
|