Considering an array of 4 propellers or more.
Bits
Posts: 414
I am considering making a PCB that used an array of propellers, perhaps starting out with 4 the moving on to more.
Questions:
1.) Is it so simple that I could share the xtal and eeprom?. So the PCB would have 4 props, 1 xtal, 1 eeprom. My concern would be boot up and eeprom, and capacitance for the xtal, but this may have already been accomplished.
2.) Could I PWM a I/O pin using the 4 propeller array but timing them so that each propeller pulses right after the previously one so that its 4 times faster than a single propeller?
Thanks,
Questions:
1.) Is it so simple that I could share the xtal and eeprom?. So the PCB would have 4 props, 1 xtal, 1 eeprom. My concern would be boot up and eeprom, and capacitance for the xtal, but this may have already been accomplished.
2.) Could I PWM a I/O pin using the 4 propeller array but timing them so that each propeller pulses right after the previously one so that its 4 times faster than a single propeller?
Thanks,
Comments
There are also several ways to cluster Propellers using PropForth depending on what resource you need to multiple (pins, COGs, memory, etc.)
There have been other threads discussing the crystal issues.
Have you seen Jazzed TetraProp board? He uses separate EEPROM.
I personally would prefer each Prop to have its own EEPORM. I've had several projects with multiple Props each running the same code. I'd assign each Prop a unique ID which would be stored in upper EEPROM. Each Prop would then know which tasks it was to perform and when based on this ID.
Jazzed boards use separate crystals but there have been several threads about sharing cyrstals.
I doubt you'd be able to get any increase of resolution in your PWM signal from using extra Props.
Is this a guess? I am convinced that I can although ill admit its going to be tricky.
Yes, it's a guess. I wish you luck in proving me wrong.
I was part of the team that put together the GigPhyter (DP83865) for National Semiconductor and there was a similar strategy to get the 10/100/1000 Ethernet speed selections.
That process only allowed for about 300-400 MHz, so to get anything higher the function needed to be staggered.
A ring oscillator is a singular oscillator with various output taps that provide different phases of the output clock.
In theory, each of the four Propellers would receive one of these taps... keep in mind the base frequency would still be 5MHz, only phase delayed between the Propellers by 90 Deg.
The hardest part would be syncing them and combining the efforts to a singular output such as a PWM pin with external circuitry. Not impossible, but there are plenty of obstacles to overcome. mainly propagation delays.
That said, the effective throughput could be 4X what a single Propeller could do.
I think Clock Loop had 55 props loaded from the same EEPROM, I don't think they worked together (per se) after that.
As MindRobots said, in propfroth there is a an easy method to string together N props in series (or parallel or both). We can use one prop to drive the clock lines for the subsequent props, the sync between any two props is pretty exact but of course there is a delay as you go further down the line (I think). I don't know if this is the effect you want to use till we see more about what you have in mind.
Sounds like a cool idea.
My question would be could these 4 high speed signals, sign or square, be sent into a IC and this IC would buffer the 4 signals to keep the sum frequency stable with a type of LC or L or C circuit buffering. The buffering would allow slight deviations to be compensated for.
Honestly I am not after PWM speeds. I have bigger fish to fry (or I am day dreaming again). I want to try to design a propeller array that will be used for high speed I/Os and logic operations using a 4 dimension matrix. Eventually I would write the code in 4 dimensions.
Look up "ring oscillator" in combination with 'phase' or 'phase tap' ... What might be a problem is that a typical ring oscillator requires an odd number of stages, starting with 3. So 4 Propellers might not be a solution.... 5 would work.
Each stage would definitely need buffering.
5MHz is 200ns, so to get the Phase right for 4 Propellers, each clock would need to be phase delayed by 50ns ... If done right, a single propeller could simulate what you wanted to do within 4 COGs, since each instruction at 80MHz takes 50ns.
But I don't think that's what you really want to do, I think you need to introduce the phase delay at 80MHz meaning the clock would actually need to be phase delayed in 3.125ns increments and NOT 50ns. The frequency still however would only be 5MHz driving each Propeller, just on the 4 phase taps, slightly off by a small amount.
This isn't impossible, but not exactly easy either. There may be a way to generate the 4 necessary phases needed with a dedicated Propeller and making use of the video output, but I'm not positive on how to do that. Finding the right propagation delay in discrete components would be another possibility, but temperature could become a problem with drift. ... similar to a ring oscillator, If you just drive one end at 5MHz. Each buffer stage would provide a specific propagation delay, but the output of each buffer would still be at 5MHz... If you have the real-estate the buffer could literally be nothing more than a length of wire, but I think at that frequency and that amount of phase delay it's still close to 3 feet of wire needed for that kind of delay.
I might have to do a propagation delay test or two this weekend.... hmmm
I have no idea what you mean, but it sounds totally cool. You may need to shield against lectroids.
Share the xtal :
The devil is in the details here : See other threads. One issue is during reset/reboot, the Xtal Osc is disabled.
So a multi-chip variant really needs an externally derived Oscillator,unless you like Russian Roulette ?
Share the eeprom: That's tougher, as the first boot phase is internally timed, and they clearly cannot all read at once.
While you could phase reset release, the ROM codes all fetches to be from the same small-device base address.
- and then externally AND/OR them ? To do this, you need to somehow externally phase the clocks, so the PLLs have edges that are 3ns shifted. Possible in theory, (to the limit of the PLL jitter/sync), but the simpler question then becomes, if you have now added fancy external hardware that is 3ns capable, why not just use that, for the x4 precision gain ?
Not from any single Prop, but you could get finer edge control using phased Props.
There are already many Microcontrollers shipping, that have PWM resolutions well above the Clock speeds. to 1ns, or even into pico-seconds.
They do this with what are effectively tapped delay lines.
I have yet to see one that can CAPTURE to those precisions, which would be great.
I saw a newsrelease today, on a device that could be use for fine delay tuning : 32 step Digital Capacitors. Up to 300MHz, for RF tuning.
http://www.psemi.com/content/products/DTC/DTC.html
These could be used in RC, or LC delay lines, or as a higher frequency VCO driving a johnson counter multi-phase clocker.
Or, if you need many, another more single-chip solution could be a Si5351C, which seems to include 6 x 7 bit phase registers, with a 333ps LSB.
Some RF transceiver chips have digital capacitors for fine tuning the xtal oscillator - its just an analog multiplexer and a set of capacitors with 2^N area ratio AFAICT