DipTrace remains free provided you don’t hit the 300 pin barrier. From a diyAudio perspective, what are the possibilities within such limit? Here are three different diyAudio boards as practical examples.
The first board hosts a PIC32MX2 coupled to a WM8731 stereo codec.
The second board is a SigmaStudio target, hosting the ADAU1701 the same way as Analog Devices EVAL-ADAU1701MINIZ.
The third board hosts a WM8580 multichannel codec delivering eight analog outputs.
The common denominator of all three boards is a 2×10 pin expansion connector allowing to stack them. A possibility is to stack PIC32MX2 acting as USB-audio device, grabbing digital audio from the PC, sending it over I2S to the ADAU1701 board. Another possibility is to stack two ADAU1701 boards, first one dealing with the left I2S audio, second one dealing with right I2S audio. Another possibility is to stack the WM8580 board on the PIC32MX2 board, providing the S/PDIF input capability and possibly up to four analog outputs. There are more combinations.
Here are the three corresponding DipTrace schematics. They are all within the 300 pins limit. The idea was to design inexpensive building blocks for experimenting digital audio on a workbench, with the added possibility to use the same boards, embedding them into diyAudio gear like a digital preamplifier, a digital crossover, or digital loudspeakers.
WM8731+PIC32MX2 board

The WM8731+PIC32MX2 board enables bare metal programming.
The PIC32MX2 gets debugged and programmed using Microchip MPLAB ICD 3 ($189.99) .
A simple experimental application would read the stereo audio entering the WM8731, apply some processing like filtering, equalizing, splitting, dynamic compression or expansion, then deliver the processed audio on the WM8731 stereo outputs.
A more complicated application would base on Microchip USB-audio library (see also Mike Zoran in 1998), for persuading the PIC32MX2 to behave like any USB soundcard. Connect it on any PC, and get the sound on the WM8731 stereo outputs. There can be a USB endpoint dealing with the listening volume, driving the WM8731 volume control block (only available on the WM8731 HP outputs – not available on the WM8731 line outputs).
The 2×10 pin expansion connector allows the PIC32MX2 to send the recovered audio in digital, using the I2S format (data, bit clock, frame sync).
The board can be powered by USB or by an external DC voltage source.
The WM8731 codec can be isolated from the PIC32MX2 using straps (I2C bus, CSB pin, SPI bus) like needed when hooking another audio codec on the expansion bus.
The sel_lrc strap enables selecting WM8731 DACLRC or WM8731 ADCLRC signal as becoming the SPI1_SS on PIC32MX2.
2×10 pin expansion connector specification
1-2 : non regulated VCC (nominal 4.7 Volt)
3-5-7-9 : SPI/I2S as coming from PIC32MX2 (DI, DO, CK, SS)
11-13-15-17 : SPI/I2S as coming from PIC32MX2 (DI, DO, CK, SS)
4-6 : I2C as coming from PIC32MX2 (SCL, SDA)
8 : GPIO coming from PIC32MX1
19-20 : Digital Ground
The remaining pins will get defined along the way when designing a PIC32MX7 board outputting two more SPI/I2S data lines, receiving an interrupt, outputting two more chip select, etc. We’ll deal with this later on.
ADAU1701 board

The ADAU1701 board enables graphical audio processing programming.
The ADAU1701 gets programmed using Analog Devices SigmaStudio software and USBi, both being part of the Analog Devices EVAL-ADAU1701MINIZ ($195.00).
A simple experimental application would read the stereo audio entering the ADAU1701, apply some processing like filtering, equalizing, splitting, dynamic compression or expansion, then deliver the processed audio on the ADAU1701 four analog audio outputs.
A more complicated application would consist on hooking the WM8731+PIC32MX2 board on the 2×10 pin expansion connector. This way the ADAU1701 could read I2S audio prepared by the PIC32MX2 like coming from USB.
Two ADAU1701 boards can be stacked in parallel, exploiting the I2S stream coming from the PIC32MX2. One ADAU1701 would process the left channel, while the other ADAU1701 would process the right channel. This way you get a digital preamplifier and crossover driving two 4-way active speakers.
The board can be powered by the Analog Device USBi or by an external DC voltage source.
The rxtx strap ensures the required rx/tx cross for connecting the ADAU1701 board on the 2×20 pin expansion connector. Being forced to manage an explicit rxtx cross using straps, the user gets fully aware that a TX pin located on one side, gets connected on a RX pin on the other side. This avoids myriads of misunderstandings, especially newbees confusing pin labels with signals labels.
WM8580 board

The WM8580 board enables stereo analog in, S/PDIF-in, S/PDIF out, and up to eight analog audio outputs when the WM8580 chip gets replaced by a WM8581 chip.
In a simple application, the WM8580 gets the S/PDIF audio, converts it to I2S and sends it to the PIC32MX2 over the 2×10 pin expansion connector. The PIC32MX2 does some processing like filtering, equalizing, splitting, dynamic compression or expansion, then delivers back the processed audio over I2S (DIN1 and DIN2 as I2S data lines) to the WM8580, delivering four analog audio outputs.
The WM8580 board gets powered through the 2×10 pin expansion connector. The nominal 4.7 Volt supply gets locally regulated, generating a +3.3V digital supply and a +3.3V analog supply. The analog ground gets locally generated, partially decoupled from the digital ground.
The rxtx strap ensures the required rx/tx cross for connecting the ADAU1701 board on the 2×20 pin expansion connector. Being forced to manage an explicit rxtx cross using straps, the user gets fully aware that a TX pin located on one side, gets connected on a RX pin on the other side. This avoids myriads of misunderstandings, especially newbees confusing pin labels with signals labels.
The sel_lrc strap enables selecting WM8580 PAIFRX_LRCK or WM8580 PAIFTX_LRCK signal as becoming the SPI1_SS on PIC32MX2, behind the 2×10 pin expansion connector.
The 8-pin mpf connector conveys the MPF2, MPF3, MPF4, MPF4, MPF6, MPF7 signals coming from the WM8580.
An elegant schematic entry as medium between diyAudio enthusiasts
From a diyAudio perspective, schematic entry is the primary communication medium, as soon as hardware gets involved. While googling and wikiing about schematic entry, you’ll learn that the meaning of schematic entry has changed over time, especially with the arrival of CAD (Computer Assisted Design) packages like Autocad, Multisim, Protel, Eagle etc.
The original meaning of a schematic entry is to allow understanding a circuit, at a glance. It’s graphic and nothing else. Therefore, in a schematic entry, you absolutely need to know the meaning of wires intersects. When wires intersects, there is a fundamental ambiguity: do they form a junction, or to they remain isolated? Before the CAD era, this was explicitly codified. When a wire intersects another wire, only two case are supported. If this is a junction, there is a dot added, materializing the junction. If this is not a junction, there is a semicircle over the other line representing the wire as “jumping over” the other wire. If your schematic had intersects not obeying the rule, it was rejected.
Actually, there were three different kind of schematics.
You had the conceptual schematic, only showing the components arrangement, without any markings. No components labels, no components values. This is the schematic you would produce when sketching electronic ideas on a sheet op paper. Such conceptual schematic is mainly for internal, private use.
You had the annotated schematic. As soon as you need building the hardware, as soon as you need communicating your idea, you need to provide all components values along with some comments like heatsinking, connectivity, etc. The obvious way is to write the component value next to each component. This is the simplest way to communicate a schematic, for enabling it to be hardwired. The issue with such format, is the impossibility to formulate remarks about components. If there is a trimmer in the schematic, like for setting up the bias current in a class AB power amplifier output stage, how would you explain the adjustment procedure? You need to name the trimmer. You need to add references.
This is why you mostly had referenced schematics. Same purpose as above, but instead of writing the components values next to each component, all components were carrying references like R1, R2, C1, C2, Q1, Q2 etc. instead of their actual values. Such schematic needs a references table, listing all references and the associated components values and possibly general remarks about them like ordering numbers.
Imagine yourself troubleshooting a board. You will lose time, continuously navigating between the referenced schematic and the references table. In the mid seventies, companies like Philips, Panasonic, Kenwood started producing very high quality service manuals, basing on full schematics, each component carrying the reference and the value. Reading the schematic, you immediately could see the component value. Reading the schematic, you immediately could locate the component on the PCB. A table was still provided, containing the ordering numbers.
Fundamental requirements
All this seems very straightforward, logical. In 2012 you expect all CAD softwares to support four fundamental features :
- disambiguation of wires intersects (is it a junction, or not)
- fast conceptual schematic entry without worrying about components values, components references and components packaging (components pick and place on the worksheet, fast-efficient-elegant way to draw wires between them)
- annotated schematic entry to be bolted on the conceptual schematic (adding components values without needing redrawing anything)
- full schematic entry allowing each component to carry the value and the reference, without needing more space, without needing redrawing anything (values font and references font need to be small, preferably of different color)
- if there is a possibility to create a parts library, that’s a great bonus
- if 2-sided PCBs can be designed with a copper fill for the ground, that’s a great bonus
- if 3-sided and 4-sided PCBs can be designed, that’s even better
.
LTspice from Linear Technology (LTspice IV currently)
LTspice correctly disambiguate the wire intersects by automatically adding a dot where you want two wires to merge. That’s perfect, bulletproof. Each component carries two markings : the reference and the value. This is considered as “component text” by LTspice. There is color control, but it applies to both markings together. You cannot get the value text having a different color from the reference text. You cannot chose the font sizes.
Eagle from Cadsoft (Eagle 6.2.0 currently)
Eagle doesn’t disambiguate the wire intersects. There is a “dot” component to be placed on the schematic, but it is a purely manually, decorative approach. There have been many criticisms about Eagle, on that particular aspect. Most people using Eagle use a crude workaround. They don’t allow wires to cross. They use labels. Dozens of labels. Once they get used to labels, they regard them as the universal panacea. They pretend that anyway, even with moderate complex schematics, you are better with labels. Looking deeper in their statements, you discover that the art of drawing a schematic doesn’t exist anymore for those people. They drop a big IC on page one of their schematic, possibly a microprocessor, and starting from there they create one label per pin. The rest of the circuit diagram gets placed on subsequent pages. From a logical point of view, this is a completely valid approach, and doing so you are not going to confuse a pin with a signal (a net).
Now look the practical result. The schematic is not anymore relying on a visual impression. For understanding the schematic, you need to memorize various net names, and flip through pages. It’s hard to distinguish between a net and another net. Relying on two small character strings for telling “from A we get this, and we route it to B” is less visually appealing, than showing neatly ordered wires going from A to B, possibly on a diagram only taking one page. If there are more nets, you can’t visually identify them anymore. You need to read the small prints. That’s my personal point of view.
Examining the way the signals get routed, using dedicated wires, is part of my pleasure when reading a schematic. This is especially true when audio gets involved, possibly high-end. When dealing with high-end audio, if you face a schematic representing audio going from A to B using nets references instead of wires, you need to chose between two possibilities. Possibility 1: the person having drawn the schematic is not conscious about the potential dangers of routing audio within a board. Possibility 2 : the person having drawn the schematic doesn’t want to divulge the precaution he took for safely conveying the audio from A to B. Neither cases are satisfactory, to my eyes.
To be honest, if you are willing to persuade Eagle disambiguate the wire intersects, manually adding “dots” when required, you get a powerful universal tool. Start creating your own Eagle library. This is Eagle massive advantage over LTspice. Only use components from your own library. Define all components in a compact way, allowing a component value marking using a small font having a certain color, and a component reference using another font and another color. This is all possible with Eagle, and not possible using LTspice.
The importance of relying on a custom Parts Library
The parts library is an important asset from a diyAudio perspective. The part library guarantees the consistency between projects. The part library enables basing all projects on explicit components to be easily purchased, possibly with second sources like for passives, while keeping an eye on the cost. The part library forces you to answer fundamental questions about the optimal use of SMDs (surface mounted devices) and THDs (through-hole devices). Why using SMD audio coupling caps, expensive and hard to replace, when there are plenty of tried and trusted audio coupling caps in the through-hole format? The same applies for power supply decoupling caps. Only a few different parts are needed like a 100µF/25V through-hole, a 10µF/25V through-hole, and a 100nF in SMD 1206 format. Why the SMD 1206 format while there are plenty of other formats like 0805, 1007 and 1210? Look on Farnell website. Over there you will see that the 1206 and the 0805 formats are the most available, and less costly. From a diyAudio perspective, you’ll feel reassured dealing with SMD 1206 capacitors and SMD 1206 resistors. Their markings can be read with the naked eye and they are easier to handle than the smaller SMD 0805. The comfortable SMD 1206 size (from a SMD perspective) allows ceramic capacitors reaching decent values for decoupling, and still low cost.
The Eagle Parts Library
In the nineties, before the silicon market explosion, when most digital designs were still relying on TTL 74xx, CMOS 40xx, MCS51, Z80, 68k and i86, all CAD programs had parts libraries but only in a fixed, proprietary format that you needed to buy from the software editor, or as third-party, costly modules. In the late nineties, you could buy an expensive library editor. In the early 2000 years, some CAD packages featured a built-in, however limited, library editor.
Eagle followed such path. Eagle 6.2 (latest version) includes some changes in the library format (you can feel it when loading the legacy libraries, this is now a slow process). The aim is to make it less proprietary, basing on XML. In the future, we can expect Eagle to come with refined library editing utilities, still to be developed. In the meantime, Eagle 6.10 only provides crude ways for creating components and adding them in your personal library. You can build a component from scratch, but it takes a lot of time managing all the “layers”, and what gets defined into such a “layer”.
Eagle is all about layers
Here you can see Eagle organig growth, basing on “layers” even if most layers have nothing to do with the physical PCB layers. Over time, in an organic growth process basing on the multilayer PCB paradigm, Eagle extended the layer concept for creating information categories like component name, component value, solder paste, etc. The resulting PCB structure results from merging layers together like the component name layer, component value layer, text layer. This is a religion you must adhere, otherwise you’ll get lost.
Sadly, you face such concept quite abruptly, since day one, when designing your own components to be added to your own library. As said above, the library editor is somewhat crude. You need to navigate three different concepts : the Symbol (what gets drawn of the paper sheet), the Package (the way the electronic component footprint gets drawn on the PCB), and the Device (defined as a Symbol being physically implemented using a Package having pins connected to the symbols ports). There are thus .sym, .pac and .dev chunks combining, resulting in your personal library (.lbr) file on your harddisk. That’s the second religion within Eagle.
Eagle bare symbols exceptions like grounds and supplies – the hidden net merge trap
From there comes a second fundamental difficulty and ambiguity. On your schematic, you only can put Devices which means that you’ll get a problem if you don’t know how the associated package and pinout are. Yes, but wait a minute, what about ground symbols, power supply symbols, and nets? They are all treated as exceptions, using “magic” keywords. And the third fundamental flaw in Eagle, is the so called “net merge prompt”. When you are entering a schematic on Eagle, connecting a wire on an other wire, you may get a prompt asking to to confirm that you really want to merge net xxx with net yyy. Well, if you don’t pay attention to this, if you just click “yes” like it was a matter of normal confirmation, you may find yourseld in deep trouble … for weeks. Indeed, Eagle allows you to connect two nets even if it doesn’t explicitely show on the schematic. This way if you have some ground, analog ground or analog power supply symbol incorrectly defined, you may carry a fatal design flaw along your whole PCB design process.
Will we fly Eagle?
From a diyAudio perspective, better ask yourself if Eagle is a recommendable approach nowadays, as you may not adhere to the Layer religion, not adhere to the Symbol-Package-Device conceptual stack, not tolerate hidden net merges, not forgetting that fundamentally, Eagle doesn’t provide a respectable method for disambiguate the wire intersects.
DipTrace
So, what about DipTrace? What to expect from a 300-pin limited schematic entry supporting library creation and PCB design? DipTrace being quite recent, created from a blank sheet, we need to determine if DipTrace is better suited to the actual market demand.
- DipTrace is champion regarding the disambiguation of wires intersects. It automatically adds the required dot.
- DipTrace allows fast conceptual schematic entry without worrying about components values, components references and components packaging. Right-click for Properties, Marking tab, select show “none” for the Main Marking and the Additional Marking.
- DipTrace delivers the referenced schematic, by Right-click for Properties, Marking tab, select show “RefDes” for the Main Marking. Such Main Marking can be justified left, right, center, top, bottom or corner. Using F10 it is possible to precisely move the Main Marking in the most appropriate location like inside the resistor rectangle (when an European resistor symbol is used). Such layout takes no extra space on the schematic.
- DipTrace delivers the annotated schematic, by entering each component value in the Additional Marking field (right-click, Properties, Main tab, Value). You then need to select show “Value” for the Additional Marking. The Additional Marking can be justified left, right, center, top, bottom or corner. Again, F10 can be used for precisely moving the Additional Marking.
- DipTrace delivers the full schematic allowing each component to carry the value and the reference. All what is needed is to select show “RefDes” for the Main Marking and select show ”Value” for the Additional Marking.
- I found no way for changing the Main Marking and Additional Marking font size and colour. Eagle delivers this. Hope DipTrace developers will add such feature on their todo list.
- There is the possibility to create a parts library, in a very effective way, a lot more effective than Eagle.
- 2-sided PCBs can be designed with a copper fill for the ground
- need to check right now if 3-sided and 4-sided PCBs can be designed
.
Initially, as DipTrace newbee, I faced a few minor schematic entry annoyances.
- While in the schematic entry, selecting a part can be frustrating. Clicking on a part gives random results. Sometimes the part gets selected and ready to be dragged. Sometimes not. Sometimes the part appears as selected but cannot be dragged. Sometimes the “esc” keystroke deselects it, sometimes not.
- While in the schematic entry, selecting a part for removing it from the schematic can be frustrating. Clicking on a part gives random results. Sometimes the part gets selected and ready to be removed using the “del” key. Sometimes not. Sometimes the part appears as selected but cannot be removed using the “del” key. Sometimes the “esc” keystroke deselects it, sometimes not.
- While in the schematic entry, selecting a group of parts can be frustrating. A group of parts may appear as selected, but when dragging, three different things may randomly happen: 1) all parts get dragged 2) only one part gets dragged, ruining your schematic or 3) nothing happens.
- While in the schematic entry, adding a wire can be frustrating. Most of the time, when there are components in the area, DipTrace will generate unnecessary corners that you need to manually remove. This slows down the schematic entry, and transforms it into a frustrating experience.
.
I am getting progressively acclimated to DipTrace. I don’t feel most annoyances anymore. Like with most CAD programs, the object selection is driven by a state-machine. Eagle is no better. If you don’t make the effort analyzing the state-machine that’s acting behind the scene, forever you’ll keep the nasty perception that something random is occurring. Later on I’ll take some time, sketching DipTrace object selection state-machine.







June 10th, 2012 on 2:35 PM
Dear Stephane, you are facing problems because you need to know a few useful shortcuts.
One of them is: choose the component (by clicking on it), press F10, now use mouse to place the reference designator wherever you want. Same is true for the component value.
You will also love to use the right click->properties. You can disable the labels.
Diptrace is very eligent, simple and powerful tool.
Best of luck.
September 30th, 2012 on 2:32 AM
You can contact them by email and ask for a key to activate the 500 pin limit for non-commercial projects. It is absolutely free, with no obligations other than respecting the license.