roby2014 / virtual-board-vhdl Goto Github PK
View Code? Open in Web Editor NEWVirtual Board for VHDL simulation
Virtual Board for VHDL simulation
Currently we have a python script that can transform an UsbPort via JTAG implementation into one that uses the GHDL+VPI approach.
The problem is, this script should also replace the VHDL files inside the Makefile, so when we compile our VPI and simulate via GHDL, it uses the new generated files.
My suggestion would be to have some sort of GUI tool for all of this, e.g:
So the user does not have to do all by hand...
The current implementation looks some thing like this:
Since UsbPort only reads/writes, we could make this a bit more efficient by making HTTP routes and communicate with the simulation via HTTP, while the websocket will broadcast to its clients if any PIN from PORT changed, this way we can implement a listener when creating the UI interface.
So in the end it will look something like this:
Well since the simulation is always running, our board interface needs to be 100% in sync with the simulation signals, and by doing HTTP requests every frame, it could cause an overhead or poor performance, so I think having the interface as a listener to the websocket server is a better approach.
Would be nice to have a somehow clean implementation of a board gui interface showing all board pins, signals, buttons, etc... It should be 100% customizable, so the user can configure as it wants.
Since the emulator/simulator has a websocket server implementation, this opens doors to many options, so the interface can be built really in any language/library.
Some interesting libraries:
Assuming we have this configuration:
PIN_A8 -> enable[0]
PIN_A9 -> enable[1]
At the moment, the websocket server can respond to commands like GET PIN_ID
, e.g GET PIN_A8
.
It would be very useful to do commands like GET enable
where it would return the whole signal value, or GET enable[0]
, returning bit 0 of enable
signal.
The same applies to PUT
..
Since this is mostly for academic purposes, there is a tool named USBPort which allows communication between Kotlin/Java modules with hardware board ports.
Since we want to "emulate" the board here, it should have some sort of implementation to allow communication between USBPort and the emulator/simulator.
I think websockets will be enough for this, but I should gather more info about USBPort first.
At the moment the make
command creates an object file for each .cpp
file, but in it's directory (src/
)
Imo a better approach would be to move/create them in build/
, since moving around in the IDE is a bit confusing with so many .o
files.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.