Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
snaiks [2017/03/17 09:38] dokuwikiadmin [Implemented] |
snaiks [2017/04/30 09:32] (aktuell) karl [Installer] |
||
---|---|---|---|
Zeile 41: | Zeile 41: | ||
==== Open Tasks ==== | ==== Open Tasks ==== | ||
* communication with the system in runtime | * communication with the system in runtime | ||
+ | * unit tests of all Snaiks Objects | ||
===== Mini-Demo ===== | ===== Mini-Demo ===== | ||
- | {{ :: | + | [[https://gitlab.com/ |
- | {{::2016-04-07_002.png? | + | |
- | {{:: | + | |
- | {{::2016-04-07_005.png? | + | ===== Installer ===== |
- | {{::2016-04-07_006.png? | + | TODO: make an installer repo, which clones all the sub-repos, compiles and installs the snaiks compiler, installs kicad and a demo project. |
+ | # using git clone --recursive to check out all submodules | ||
+ | git clone --recursive https:// | ||
===== Source Code ===== | ===== Source Code ===== | ||
- | * https:// | + | * https:// |
- | * https:// | + | * https:// |
- | * https:// | + | * https:// |
+ | ===== Library Presentation ===== | ||
+ | * https:// | ||
+ | * {{ :: | ||
===== Blue Prints ===== | ===== Blue Prints ===== | ||
- | ==== Sampled vs. Transparent Systems ==== | ||
- | === The Problem === | ||
- | For some systems it would be handy, if they are transparent from input to output. \\ | ||
- | This means, that they do not consume a whole clock cycle. An example could be a simple And-gate. Perhaps one do not want this gate to introduce an extra clock-cycle, | ||
- | The drawback of this method is, that the update-order of all the systems is very important. If the user is aware of this problem, he can shorten latencies of complex systems. | ||
- | In Snaiks example test1 we had a undesired behaveour, because the And-gate befor the middle output indroduced a delay of one clock. In transitions from " | ||
- | This made the antiGlitchDelays necessary. | ||
- | |||
- | === The Proposal === | ||
- | Every System has a flag **transparent** which is by default false. \\ | ||
- | If it is true and sample() is called, update() is called from the sample() function: | ||
- | <code C> | ||
- | class MySystem | ||
- | { | ||
- | ... | ||
- | bool transparent; | ||
- | bool sampled=false; | ||
- | ... | ||
- | void sample() | ||
- | { | ||
- | sInput = *input; | ||
- | sampled = true; | ||
- | if(transparent) | ||
- | { | ||
- | update(); | ||
- | } | ||
- | } | ||
- | |||
- | void update() | ||
- | { | ||
- | if(sampled) | ||
- | { | ||
- | sampled = false; | ||
- | output = ... | ||
- | } | ||
- | } | ||
- | ... | ||
- | } | ||
- | </ | ||
- | |||
- | This also makes the flag sampled necessary. Becaus the normal clock master calls every sample() and then every update(). A second update-run shouldn' | ||
==== Properties ==== | ==== Properties ==== | ||
Zeile 132: | Zeile 96: | ||
* list properties of an object | * list properties of an object | ||
* change property values permanently | * change property values permanently | ||
- | |||
- | ==== Hierarchical Systems ==== | ||
- | It should be possible to combine a set of systems to a sub-system, where new inputs and outputs are defined. | ||
- | |||
- | KiCads hierarchical schematic structure could be used out of the box, but in C++ we do not see anything from this. Similar to the KiCad PCB layout, which also doesn' | ||
- | |||
- | For the systems we should make something similar to the properties, which live in a SnsPropertyContainer. We should make a SnsSystemContainer, | ||
Zeile 149: | Zeile 106: | ||
Cons: | Cons: | ||
* every pin must have a type specified in KiCad (could be done with net-annotators, | * every pin must have a type specified in KiCad (could be done with net-annotators, | ||
- | * we cannot use a simple template-interface class any more, such as the SnsHybrid or SnsNumeric. | + | * we cannot use a simple template-interface class any more |
=== Proposal === | === Proposal === | ||
Zeile 155: | Zeile 112: | ||
* mixture of numbers and bool shouldn' | * mixture of numbers and bool shouldn' | ||
- | {{tag> | + | {{tag> |