summaryrefslogtreecommitdiffstatshomepage
path: root/nl_examples/opamp.c
Commit message (Collapse)AuthorAgeFilesLines
* Added two more models to netlist: couriersud2015-07-111-9/+12
| | | | | | | | | | | | | OPAMP: Generic opamp model. This does all the annoying calculations. Just pass the the datasheet values. LVCCS: A limited current voltage control current source. This will allow slew rate limiting going forward. In addition: - add a (small) parallel conductance to all capacitors to improve convergence. - some initial work to use "long double".
* Added kidniki sound board netlist to nl_examples. Currently the netlist couriersud2015-06-071-3/+11
| | | | | | | | | boils down to a 87x87 matrix. This is due to a total of 6 opamps which all are submodels and thus add their own internal nets. Gauss Seidel iterative solving comes to it's limits. nltool runs this at about 50% speed on my machine. Given the complexity this is quite good. Yet, any m62 game currently will not be playable. Time for a new cpu :-) [Andrew Gardner, Couriersud]
* Netlist: Couriersud2014-04-181-1/+1
| | | | | | | | - fixed a bug in which the fallback solver was called instead of gauss - seidel. - matrix solvers are now subdevices of the solver devices - matrix solvers can now be scheduled independently - Rename RESCHED_LOOPS to GS_LOOPS (Gauss Seidel) - Added paragmenter NR_LOOPS (Newton Raphson)
* Fixed netlist opamp example. Couriersud2014-03-041-2/+2
|
* Fixed netlist examples. Couriersud2014-02-231-1/+1
|
* Netlist can now be included as sub-circuits. That's the same approach SPICE ↵ Couriersud2014-02-131-20/+45
| | | | | | | | | | | | | | | | | | | | | | | | | | | uses. The implementation also supports nesting. Opamp emulation now is as easy as /* Opamp wired as impedance changer */ SUBMODEL(op, opamp) NET_C(op.GND, GND) NET_C(op.PLUS, clk) NET_C(op.MINUS, op.OUT) The missing bit now is a central submodel repository. I'll start a discussion soon on the list. nl_examples/opamp.c is an example of a impedance changer stage followed by a 1:2 amplifier stage. System size (= number of voltage levels to be calculated) is between 20 - 30. Using a simple, yet better opamp model than usually implemented in the old discrete core, I get ./nltool -f nl_examples/opamp.c -t 30 startup time ==> 0.002 runnning ... 30.000000 seconds emulation took 0.438599 real time ==> 6839.96% Which leaves quite some buffer to emulate even complex mixing and filtering stages in real-time :-)
* Commit current state of netlist examples. Later, these are intended as a ↵ Couriersud2014-02-091-8/+10
| | | | basis for regression tests.
* Major renaming of netlist device macros, like Couriersud2014-01-191-12/+12
| | | | | | | NETDEV_ALIAS ==> ALIAS NETDEV_R ==> RES NETDEV_C ==> CAP
* Some more netlist examples. Couriersud2014-01-061-0/+1
|
* Enhanced the netlist parser and cleaned pong.c. Also added a folder ↵ Couriersud2013-12-311-0/+59
nl_examples which contains standalone netlist examples. [couriersud] The examples have a ".c" suffix. In eclipse, I get automatic syntax parsing and error notifications. The parser treats "#" preprocessor defines/includes just as comments. All of these examples can be run through nltool: ./nltool -f nl_examples/opamp.c -t 1 -l OUT runs the opamp example for 1 second of emulation time and logs the terminal named "OUT" to "netlist_log_OUT.log". I'll post a simple script to the list to visualize those logs using gnuplot.