# New to Electronics

1. Jul 31, 2012

### dijkarte

I'm new to electronics and still exploring stuff and learning basics. Coming from a computer science background, I was wondering if electronic circuit design can be treated in an abstract manner like we do with algorithm design. For instance, do we have the same flexibility like in designing an algorithm to solve a problem? I noticed that there are a few types of amplifiers that are treated as black boxes and do certain jobs. This means that somehow circuit design involves integrating different pre-built/designed components to create a more complex system.
But I noticed also there's some kind of limitation in using and analyzing circuits and it could be me not understanding the subject very well.
For example, I have not come across a subject that discusses how to generate a waveform of a desired shape that's not one of the standard waves, sinusoidal, square, sawtooth, square, ...etc. There could be some circuits that generate a specific shape but there's no explanation on how to approach designing a circuit that does so. Another example is how to predict the behavior of a specific circuit. I'm trying to correspond things in both fields, CS and EE, but I find in CS it's more flexible the way we do things in algorithms.
Reading some microelectronics books, they describe only predefined sets of very basic building blocks, BJT, FET, OpAmp and some of their applications. There's no in depth rigorous explanation on how to interconnect various elements to create a more complex devices. Am I missing a good text book? Or it's just different than designing an algorithm and programming?

Help appreciated.

2. Jul 31, 2012

### DragonPetter

I don't know if its appropriate to try to hold circuit design to a rigid algorithm procedure, but algorithms are definitely a tool used during the process. It is difficult to describe circuits with nonlinear components with just math equations, and so algorithms and iterations can help approach solutions. If you have had a chance to use any pspice programs you can see how algorithms play a part in simulation (not design algorithm). And like you said, you can abstract systems with black box / mathematical functions and design top down that way (and sometimes back up and down a second try). I'm not that experienced, but I have noticed a lot of design is about making different relationships approach the ideal, without sacrificing other relationships, and so you iteratively balance the parameters til you approach the best practical values with the compromised solution.

If you are looking for a good book with more examples of creating complex devices without necessarily a rigid computer science algorithm approach, I have been reading a good one called Communication Circuits: Analysis and Design by clarke and hess. Its a little outdated, but it shows how all the basic blocks are used to make all kinds of circuits with all kinds of waveforms. Don't let the title word communication mislead you about the information inside. Another one I like is Analysis and Design of Analog Integrated Circuits by gray,hurst,lewis,and meyer. I had the same impression from intro microelectronics books that they don't really give practical design approaches or examples, but these books that I mentioned are a level slightly beyond those and have lots of practical examples.

I'm sure a lot of people here are seasoned designers, and they can give you advice, but I would suggest not trying to fit the design process to your CS background so rigidly.

Last edited: Jul 31, 2012
3. Jul 31, 2012

### dijkarte

Thanks a lot.

So as I understand there are no systematic design methods; however, simulation algorithms are very possible and established, like they do in PSPICE and EWBA/D.

I will give an idea what I was thinking. If I want to generate a periodic signal given by f(t), I would break it into elementary components using Fourier transform, and then for each component I would use a predefined circuitry, then using another circuit to smooth the curve of the generated signal. And for filter design, one that only passes a signal f(t), I could use the same circuit used to generate it but somehow inverting it "mathematically."

However it does not seem that straightforward. I even looked at some open university courses and lectures, and I could tell, nothing more than what the books teach, very basic and elementary principles.

4. Jul 31, 2012

### psparky

I would think you need to learn the basics first to be able to design circuits...in my opinion.

Basics such as:
V=IR
P=IV
KVL (kirchoffs voltage law)
KCL (kirchoffs current law)
Voltage division
Current division
Reactance of capacitor and inductor
Phase shifting, bode plots, transfer functions, etc.......

Without this stuff you will always be handcuffed I would think.

5. Jul 31, 2012

### DragonPetter

I am a little confused why you have these steps without knowing, myself, what you're actually trying to do. You can invert filters mathematically, in a way, to be a LP instead of a HP, or to be a bandstop instead of a bandpass, but its not clear to me what you mean with your last sentence about filtering with your source generating circuit to recover the signal.

6. Jul 31, 2012

### DragonPetter

There are systematic design methods, but it is not so straight forward as a computer algorithm. There are actually programs you can use to design filters, control systems, etc. but you are leaving it up to an algorithm that might not be optimized for what your application is. And this is all after the fact that the clever engineers already figured out the topologies and components you need through other design methods. There are also topologies that you can use, often in "Filter" textbooks that are cookbook solutions, but you won't really learn much from that and won't know why they do what they do.

I would think of designing complex circuit more as using building blocks like legos, or using software libraries and components to create a system rather than an actual algorithm that gets you from start to end without thinking.

Is this what you had in mind maybe?
http://lyle.smu.edu/ee/1382/CH1Slides.ppt

I think step 4 is what you actually want to do, and I don't know if that process itself can be defined so easily as an algorithm.

Last edited: Jul 31, 2012
7. Jul 31, 2012

### dijkarte

I'm just thinking of the electronics science in general, no projects in mind yet. Maybe it's my lack of understanding the basics of circuits and its physics that confuses me about the subject.

8. Jul 31, 2012

### DragonPetter

I think doing a simple design project is a good way to feel your way through the process. A lot of it is looking at how other circuits work and manipulating those prototypes to do something slightly different or completely new.

9. Aug 3, 2012

### dijkarte

For now I will be focusing on theory. What I'm trying to do is abstracting away all the physical details of circuits. I think the book: "Foundations of Analog and Digital Electronics" takes this approach, which is very interesting.

Lets say two op-amp's are connected together so that the output of one is the input of the other, or maybe in parallel, to figure out the outcome of the circuit do I need to analyze it as a whole? or can I analyze the outcome of each op-amp and then combine the results based on how they are connected?

An algorithm/programming analogy is calling functions in an algorithm. I could either do it both ways, have no subroutines just one function, or break it down into several functions that are made of same code chunks of the main algorithm...

10. Aug 3, 2012

### AlephZero

THe analogy isn't perfect, because passing data between functions doesn't have anything that corresponds to "input and output impedance". If you calculate a value, if doesn't matter if you use it as input to one function call or 1,000,000. On the other hand if an electronic circuit works fine with sub-circuit A passing "data" (in the form of electrical signals) to sub-circuit B, It probably won't work the same way if you connect 10 copies of B to A, let alone 1,000,000 copies.

Of course it is often a good idea to design sub-circuits to minimize the (unwanted) interactions between them, but you can never completely eliminate them.

11. Aug 3, 2012

### dijkarte

But lets assume the signal is magnified before passing it to another sub-circuit so that it stays the same for all stages. Besides passing a value to 1,000,000 functions definitely affect performance, which is somehow analogous to impedance in this scenario.

So my question is, let alone physical properties which affect both the running of algorithms and signals, can we do the same compose-decompose in terms of functionality?

12. Aug 3, 2012

### jim hardy

seems to me there's a disconnect from basics at play here.

At simplest level programming is arranging instructions -- fetch, test&branch, arithmetic calculate(add subtract),, logical calculate(and or invert rotate), store--- to perform a task. You bundle some of those into neat task specific packages and call them subroutines or procs or microcode or objects or whatever. You have to observe the rules for interconnecting them, keep an eye on re-entrancy, etc. I haven't done any since the days of bit slice processors.
In other words we've progressed from thinking in terms of an alphabet of single instructions to thinking in terms of paragraphs.
Who programs in machine language anymore?

At simplest level, circuit design is arranging circuit elements - resistors capacitors inductors and semiconductor - to perform a task. Nowadays we have integrated circiuts with thousands of parts inside to make task specific packages. You have to observe the rules for interconnecting them , keep an eye on feedback etc.
In other words we've gone from thinking in terms of an alphabet - R,L,C, Hfe, to thinking in terms of functional blocks.
Who builds discrete amplifiers anymore?

I dont see programmers as different from hardware guys, just they use different tools.

In the computer courses i took i did notice a different psychological makeup though.
Programmers are more language oriented. Their conversation sparkles, they work anagrams and crossword puzzles at breaktime, and are reading the current bestseller books.
Hardware guys (myself included) are generally less eloquent, discuss machinery and home workshop projects at breaktime, and are reading technical journals.

Yes.
Let's say you want to extract the square root of a voltage.
There's transconductance amplifier, time division multiplier, VCO rate multiplier, digitize and use a microcomputer, add just right amount of feedback, and lots more i dont know about.

If you have interest in hardware, learning more about it might make you an even better programmer. Pick something that interests you and have at it....
Here's a thread where a student learned a lot by undertaking a hardware project:

just my obsolete thoughts.

old jim

13. Aug 3, 2012

### nsaspook

14. Aug 4, 2012

### dijkarte

Last edited by a moderator: May 6, 2017
15. Aug 5, 2012

### Arafat Sagar

This post is too heavy for me read everything because of my time constraint. so i apologize if my words have already been told.

If you can express anything mathematically, you will be able to design the circuit. for simpler cases, you can describe something using differential equations, series or ant other function. I can guarantee you that all these are very much possible to implement.

in fact, for YOUR PRACTICAL PURPOSE, whatever you can think is damn possible to build either by programming or circuit design.

16. Aug 5, 2012

### dijkarte

That's what I wanted to know. But let me reward my questions...

From my very basic understanding so far, it's possible to model an LRC circuit using DEs, but is the opposite true?

I mean they created filters, active components by observation and experiments, in other words, by chance, then they could interpret their behavior using math.

Based on what you said, I want to generate a periodic wave of a certain form, not one of the standard, I draw the shape on paper, then I find a function that represents it, is there a transformation I apply to the function that give me the circuit I want? or are there well defined steps to accomplish this?

Another question, can we do circuit on the fly, so I start with a resistor, then I connect another component to it and I know the behavior, then add another component and the behavior changes, keep doing this incrementally but at each step I know the change of the output through a well defined algorithm????

17. Aug 5, 2012

### nsaspook

That's great but there is a huge space between logic and physical design.

Remember:

18. Aug 5, 2012

### Arafat Sagar

Yes the opposite is true. you can even solve differential equations, express any function using circuits. let me give some examples, the following differential equation can be solved using circuits,
(a*d2y/dx+b*dy/dx)2+d3y/dx=$\sqrt[3]{x}$

Periodic waves can be expressed as series Ʃaxn

You have solved mathematical problems many ways. things work similarly here. there is not a single well defined FLOW CHART or STEPS. you can solve using in many possible ways.

I am not quite clear what you wish to do making circuits on the fly. but i can say that its possible to change the behavior of a running circuit. you can create classes, events and proceed to your complete solution incrementally. same things may be applied here. but there is a problem. in programming language, you not only care the output but also memory and time issues. you must consider some issues for circuits - power consumption, input output impedance, gain, efficiency and so on.

Yes, that's correct.

Last edited: Aug 5, 2012
19. Aug 6, 2012

### dijkarte

I completely disagree on this. Unless the computer science and programming are treated as a a hobbyist self-learned trade, then this statement is simply FALSE.

I have worked with self-taught "programmers" who don't understand the basic stuff, they could produce very nice output (or buildings), but the code simply sucks. They resort to copy-paste, cannot figure it out themselves, no math, no algorithm analysis, and no data structures. This is what makes it for may people looks like two different disciplines, one as logic and the other as physics. I'm a self-learning advocate but do it right.
Both fields can produce bugs that can destroy civilization. Both can have very dangerous bugs, a software failure can cause a disaster, as well as a physical failure, assuming there're no backups...

However I think with software programming, we can type/delete/debug with almost no cost other than time, while in physics it costs besides time, the physical materials. Anyway...