-
Notifications
You must be signed in to change notification settings - Fork 8
Home
Matthias edited this page Jul 7, 2013
·
27 revisions
- design your elements in Inkscape
- open application in web browser (Chromium)
- drag'n'drop desired elements onto schematic (SVG, PNG or JPG)
- they show up
- electrical terminals are marked automatically
- and may be edited manually
- arrange elements on the canvas
- inter-connect element terminals
- suggest optimizations for element placement/layout to disentangle wires where possible
- mark wire crossings
- export schematic (SVG with meta information, e.g. terminal coordinates)
- versch. Bauformen: http://de.wikipedia.org/wiki/Kategorie:Gehäuse
- bereits existierende, freie Arbeiten: QElectroTech, gEDA
- JavaScript functions, coming e.g. inside the element SVGs:
// logical "not" IC: hex inverter // constants var TERMINAL_DISCONNECTED = null; var TERMINAL_VCC = 'VCC'; var TERMINAL_GND = 'GND'; var TERMINAL_INPUT = 'INPUT'; var TERMINAL_OUTPUT = 'OUTPUT'; // init terminal functions var element1.role = []; element1.role[terminal1] = TERMINAL_VCC; element1.role[terminal8] = TERMINAL_GND; element1.role[terminal2] = TERMINAL_OUTPUT; element1.role[terminal3] = TERMINAL_INPUT; // init levels var element1.level = []; element1.level[terminal1] = 5 * Volt; // switched on element1.level[terminal8] = 0 * Volt; element1.level[terminal3] = CMOS_LOW; element1.level[terminal2] = CMOS_HIGH; invert = function(currentOutputLevel, inputLevel) { var VCC = this.level[terminal1]-this.level[terminal8]; if (VCC < 3*Volt || VCC > 15*Volt) // inactive or destroyed; null = disconnected return TERMINAL_DISCONNECTED; if (currentOutputLevel == CMOS_LOW && inputLevel >= CMOS_LOW_TO_HIGH) // input = HIGH return CMOS_LOW else if (currentOutputLevel == CMOS_HIGH && inputLevel <= CMOS_HIGH_TO_LOW) // input = LOW return CMOS_HIGH else return currentOutputLevel; // hysterese (e.g. Schmitt-Trigger) } update = function(event) { this.level[terminal2] = this.invert(this.level[terminal2], this.level[terminal3]); this.level[terminal4] = this.invert(this.level[terminal4], this.level[terminal5]); this.level[terminal6] = this.invert(this.level[terminal6], this.level[terminal7]); this.level[terminal15] = this.invert(this.level[terminal15], this.level[terminal14]); this.level[terminal12] = this.invert(this.level[terminal12], this.level[terminal11]); this.level[terminal10] = this.invert(this.level[terminal10], this.level[terminal9]); } element1.onclick = update;
- http://en.wikipedia.org/wiki/Schematic_editor
- gEDA file format specification: http://wiki.geda-project.org/geda:file_format_spec
- Broadcom SoC 6348 pinout: http://wiki.openwrt.org/doc/hardware/soc/soc.broadcom.bcm63xx#bcm6348.pinout