''' The foundation of computer circuits ''' Page by [Theo Verelst] Of course feel free to comment (with initials or some other way to distinguish comments from my writing), this page is supposed to at least raise dust or make people think. I don't think the tcl/tk community is much prone to the thinking, but in not so forward circles who often seem to think they can understand computers by realy miserable and even evil ideas and projections of human functioning, a lot of wrong and dangerous ideas exist and wither which make people pray to a neon God I don't want to take part in. Computers are great fun, the best computers, and probably almost the most advanced in the world make me play wonderfull music and sounds, or do graphics as I did professionally, and even just playing about with some interesting tcl commands can be fun enough, and certainly challenge ones' functional (decomposition) thinking for hours easily, without thinking about abusing children, ruling and exploiting the world and destroying all human existence. I've already made this point on the [bwise applications and examples] page by mentioning the so called '' Flip Flop '' circuit, which is basically a circuit which is feeding back data to itself in a consistent way, and can therefore remember a bit of information. Because of the nature of the constituents of the circuit, it can be made to remember, be set to one or to zero, all within even the logic of an infinetely fast and 'unspecial' mathematical construct. [http://195.241.128.75/Diary/Ldi6/flipflop1.jpg] Every electrical engineer should be aware of it's existence, though it seems to me that some forget when they enter the world of software engineering. All messages datastructures and algorithms are essentially changing the state of such circuits in a computer chip, and in fact almost exclusively that. Sending a message to and object, or instantiating something from a class, is essentially doing the same: fiddling bits stored by flip flop or similar circuits in a pentium, supersparc, precision architecture, armrisc, cache or dynamical memory chip. Or changing and regularly updating the magnetisation orientation in a ring memory of and anchient machine. And no matter what mind images we'd like to see, or like others to see subdued to, those are the boundaries or the prerequisites of software of any kind, wether it in the end makes a mobile phone beep, a screen turn some colour, or certain dot patterns on paper. There is nothing else which is the carrier or basic material or construct of software, except maybe for using materials which exhibit quantum behaviour or which are used to generate noise. The flip flops contain binary data, which can be used to generate new data, which is a process which can be theorized or designed around by seeing it such that all remembered data in a computer, or in its core to begin with, is taken as the input to the big function which is all of the logic circuits of the computer or CPU chip acting on the current state of all memory elements. This is possible because we use not singular memory elements, but two flip flops on a row, which is called a 'master-slave' flip flop arrangement (I didn't invent the terminology, it's common amoung digital electronicists), which are driven by the rising and fallen edges of the 'clock' signal which paces all activities in the processor, so that only one change at the time happens. The jtag connection on a modern pentium (I did an article on the subject at uni long ago) is a clear indicator of such thinking: it puts all memory elements on the chip on a row, allowing an outside machine to shift data into and out of the chip, so all circuits can be tested by applying suitable test patterns to the input which is then shifted into place in the memory elements, to see what all logical functions generate as output, which is clocked into the state maintaining memory after all logic has generated new stable output, and shifted out for analysing. When chips or parts with different clock pulses are connected together, this approach is harder or impossible, though the thinking remains similar, one then probably works along the long existing lines of telephone or other telecom exchange devices, using protocols and message definitions, which are then carried by machines which are composed of the above kind of machine, called '[Finite State Machines]'. The idea is that all of these designs as soon as possible get away from the logic which is overriding in electronics, where signals are always inlfuencing eachother all the time, so that it is not possible to think along lines of simple signal progression without feedback, as is attractive about functional designs. Using state and functions which act on a state, we decouple the function which computes the new state from the memory circuits, which makes complicated circuits manageable. In electronics, when we simulate a circuit, that is use a computer program to compute what a certain circuit does, that takes the complicated solving of a system of equations, not a small one, and usually not a linear one to arrive at for instance a representation of the input-output relations or maybe a graph of a frequency response or a signal wave form. In digital circuits, functions can be represented by truth tables or maybe connected functions, and memory cells store information on command. In software, not many take into account that in fact the state of a proces, to use that common unix term together with the functions in it, with the exception of signals or interupts, evolves according to the logic in its function acting on the state at every moment. In the end it's the logic in the processor chip, most easily represented by the machine language (assemly) which is in the memory which completely without any bit unaccounted for determines what goes on in the computer. Unless it is in error, which happens quite rarely. Not that this is earth shattering news, but it seems that in this time software has no intentions along these lines anymore, often. Because machines are man made and there is no reason not to make them do what we want, with complete definitions of that. Which means on the other hand that they don't tell us what life is like, primarily. Mathematically one could say that the eigenvalue of the nands being fed back to themselves in memory state is one. Electronically, the circuits are non linear amplifiers with a delay and a time constant. Digitally, the memory cell is a latch, possibly a edge triggered one, when it is master slave. Everything which goes above this is crap or unknown to me.