Recently, I've been thinking very heavily about PWM based processing systems, and it seems to me that it would be almost synonymous with a unary computer, that is, every place value in a number is exactly ambiguous with every other, basically a tally mark system. Zero is simply undefined. If you think about it, a PWM signal could be conceived as a seamless stream of 1s. I've been having a little difficulty implementing it proficiently, though. Addition, subtraction, and multiplication all work fine, but I had to develop a complicated algorithm to find quotients, and it's still not quite finished because I haven't found a way to deal with remainders yet. The problem is that the processor doesn't know the value of the signal it's receiving until it reaches the outer boundary, and splitting the signal into smaller segments, which works fine on the other 3 operations, presents some resolution issues with division, because each partial quotient will have a small error with it, and over time these errors accumulate quickly to produce an off result unless complex measures are taken. At least in my experience.
Much more recently I've decided to start looking at FM based computing systems, and this seems much easier to me, because the FM system still isn't required to read the entire value before it starts operating on it, but the division error issue is out of the question because all signals are exactly the same length, and are measured by how many pulses occur within that set time frame. This way the computer knows exactly where the outer boundary is, and so multiplication and division are just as simple as addition and subtraction. Registers in a unary computer can basically just be capacitors storing a unary value in analog format. I also figure the hardware to be simpler to construct, because the FM system processes the data in a more dynamic fashion than the PWM system. I theorize that mass memory could be accomplished through a single capacitor by introducing separate data at different voltages, represented by amperage, so that each variable can be easily reconstructed by draining current from the capacitor until the voltage falls to the threshold of the original voltage minus the voltage of the variable extracted, and then the actual value is determined by the current remaining in the capacitor. This way the voltage profile acts as the address for a variable, and the variable is encoded within the same signal as the amperage profile. So a single super-capacitor or parallel set of such can store every piece of data the computer will ever need to remember, or even that plus program space. This may be the equivalent of gigabytes or even terabytes of binary data. Also if you have it running in the Khtz range, an FM computer could directly modulate analog servos and process analog FM radio signals. The whole problem everyone's had with the concept of unary code(outside of trying to comprehend how it only consists of one value. I really don't see how it's that difficult) is that the memory would be exponentially larger than binary. But it can easily be converted to an analog format because unary signals are almost ambiguous with PWM or FM signals, and can be formatted to AM just as easily. You know what, using the same system as the mass memory, I could send a virtually unlimited amount of different input signals through a single pin on the chip, likewise with the output pin! I think this type of technology could go from breadboard to IC pretty quickly if it can prove itself well. So who's ready for a 4-pin low voltage IC that's more powerful that your PC or laptop?
P.S. I also noticed we lost about 280 members since this topic began. Not sure how to intrepret that.
--- In email@example.com, Martin McKee wrote:
> I've though along some of the same lines as well. I've got a whole pile of
> four quadrant analog multipliers in my junk box. Along with op-amps, there
> are no reasonable arithmetic operations that cannot be implemented.
> Combine that with some simple wave form generators, and I think you have
> the beginnings of an extremely powerful and flexible control system. I
> just have never gotten around to doing more than think about it in
> passing. But, I do think it is possible to do so efficiently ( though not
> with the components I have at the moment ( they expect +/- 10v rails! ).
> It seems like a logical progression to move in both directions. I have
> been thinking along the lines of making BEAM even more analog by using
> op-amps and continuous values, while adding a digital control unit. I am
> still up in the air about if it is better to use pulse width modulation or
> a programmable resistor for control voltages though. PWM has two distinct
> advantages: 1) it needs no external components and, 2) it can be easily
> disconnected ( simply make the pin an input ).
> All my thinking has been along the lines of a five to eight motor walker (
> not twelve for cost reasons ). I agree that a two motor walker is unlikely
> to place much of a "walking" load on a processor. Although I don't think
> it would make the program much more complicated, I do think that the
> combination of BEAM and a microcontroller would allow the processor to be
> decoupled from the time constraints of walking and that could simplify the
> structure of the program ( if not greatly reduce the size ). In the end, I
> have always looked at the combination in a leveled manner, somewhat akin to
> the Subsumption Architecture developed at MIT in the '80s. There would be
> a low-level analog ( BEAM ) control system that is closely coupled with a
> microcontroller that deals only with "emergency" situations and basic
> control. There would then be a mid-layer "general learning" system that
> dealt with optimizing the robot's basic behaviors. At the very top would
> be a "planning logic" module that deals with big picture, long term,
> planning. At each of the lower levels, it seems fully reasonable to
> combine BEAM and digital, at the very top level... I'm not sure.
> Honestly, I love to see many different approaches to the issue. Although
> digital control has taken over the bulk of the robotics market, analog like
> control has definite advantages in certain areas. For one, it can be lower
> power if properly designed. That has been discussed sufficiently at this
> point though I think. Analog is also "instant." It works at the speed of
> electricity. On the other hand, digital control has latency limits that
> can only be overcome by adding a faster processor ( or, sometimes,
> programming smarter ). Analog also makes it easy to "sum" many different
> signals from different sources. The availability of bias points in analog
> control circuits allows for reflexes from sensors or control from above and
> the systems can remain completely decoupled. In a digital setting, that
> modularity can be harder to come by.
> I've been working on the design of an op-amp based servo pulse generator
> circuit that I will, then, couple to a leg pattern generator. The ultimate
> platform is targeted as being an 9-motor, 4-leg, walker with an independent
> head. Over all, the system should be able to walk and survive as a typical
> BEAM walker but it will contain a tightly coupled microcontroller wired to
> the different bias points in the control system. The processor I'm looking
> at is probably an AtMega328. That way I could make the board fully Arduino
> compatible. Just plug it into the computer and it will act like any other
> Arduino. Not precisely what I would do if it were just for myself, but it
> seems to make sense if I am going to try to integrate this into the robot
> club that already works with Arduinos.
> Martin Jay McKee