On 10/6/2012 8:47 AM, Howerd wrote:
> On Saturday, October 6, 2012 8:17:09 AM UTC+2, Paul Rubin wrote:
>> Howerd<
how....@yahoo.co.uk> writes:
>>> always going to be an overhead when you interface a GA144 to a clocked
>>> system - since the GA144 runs asynchronously it has to run a polling
>>> loop. OK, it could idle between characters,
>>
>> Can't it use edge or level sensitive triggering on the port pin
>> listening to the rs232 signal? Then the GA node should block until the
>> bit actually arrives.
That is how many MCUs time an async data stream, but they have to have a
timer running so they can record the time of each transition. The GA144
is capable of implementing timers the same way by monitoring a clock
input, but GA doesn't seem too interested in using this sort of
operation. Chuck's work seems to focus on no clock at all which is not
practical. He tried that with his video circuits and found the VGA
signal from software loop timing was not stable enough to work with his
monitor, and that is a *relaxed* application.
>> It also occurs to me, I don't see any way for a GA node to enter a sleep
>> for a given amount of time (say 100 microseconds), other than with a
>> full-speed busy loop and that 8 ma of power consumption. Compare that
>> with microcontrollers that have very low powered counter-timers.
The async processor goes to sleep until an input triggers it. So why
not use a clock for that input? Then the GA144 core could utilize very
little power just waiting.
>> 8 ma is more than I expected for a single node anyway. It means over 1
>> amp for all 144 nodes going at once, or several watts of power. I
>> didn't realize the ga144 could use that much. Or, maybe the 8ma
>> includes other stuff too.
8 mA is too high for a single node. One node is about 5 mW which would
be around 3 mA I believe. Still it's in that ballpark. With all 144
nodes running the power consumption is around three quarters of a Watt.
But the power consumption is instruction dependent, so you need to
qualify that. Just like the instruction rate is not 700 MIPS, but
depends on your code the power consumption depends on your code too.
>>> but a better way would be to use the on-chip SERDES instead of RS232
The SERDES is useless for talking to anything other than another GA
device. At least it is not supported in any other mode. I'm not sure
what protocol they use, but the clocking rate varies widely and so is
hard to interface to other devices. At least this is what I got out of
the specs and lack of other info.
>> The on-chip serdes is designed to only talk to other ga144's--do you
>> mean to add a third ga144 to the board?
>
> Hi Paul,
>
>> ... I don't see any way for a GA node to enter a sleep
>> for a given amount of time (say 100 microseconds), other than with a
>> full-speed busy loop and that 8 ma of power consumption.
> Yes - being asynchronous means that it has no idea of time.
> But the only reason to wait for 100 ns is to synchronise with an
external synchronous device - I'm stating the obvious here, but the
GA144 is best suited to a fully asynchronous environment. If only the
whole world was asynchronous - maybe it should be ;-)
To sync with a sync device it would just wait for the clock signal.
Sync devices always use a clock. The reason for waiting for some amount
of time is to reduce power when you have nothing to do. That means you
need a timer to start the processor again. That can be done by a timer
node using an external clock.
The world will become async as soon as no one cares about speeds or times.
>> The on-chip serdes is designed to only talk to other ga144's--do you
>> mean to add a third ga144 to the board?
> Nope - there are already two on the eval board, one of them is
already acting as the interface to the synchronous world, via USB and
serial comms. The two chips communicate via serdes.
> But the serdes protocol is very simple, and self clocking (as it must
be!), so maybe it could be implemented in software on another chip. The
auto-baud software needs at least 19200 baud to not overflow the 18 bit
counter, so a reasonably fast ARM should be able to keep up.
Are you mixing the SERDES and the software UART? ARMs and many other
processors implement software UARTs. The SERDES runs at 100's of MHz.
That is too fast for any CPU I am aware of to implement in software...
assuming you knew the protocol.
> There is a common theme here that I have noticed : The GA144 does
things its own way, and it is difficult to interface it to the rest of
the world which is doing things another way.
Duh, not only other digital systems, but lots of real world applications
are hard to interface to the GA144. Clocks tell us time and nearly
everything is time based.
> For example :
> 1. It would be great, but non-trivial, to run a USB stack on a
handful of F18's. Does this mean that the GA144 should have hardware USB
support added, or that USB should changed for something simpler?
"Trivial"??? If that were true, GA would have done it already and put
the code in the cores so it could boot from USB without the support
chips from FTDI.
> 2. SDRAM has a synchronous interface, but runs dynamically
internally. I believe there are asynchronous RAMS, but thay are rare.
Should the GA144 add a fast SDRAM module, or should the SDRAM chip be
modified?
Async RAMs are not "rare", in fact that is what is on the GA144 eval
board. They aren't dense and they can be expensive, but the ones GA
picked aren't too bad at around $5.
The problem with DRAMs (the generic term for all dynamic memory) is that
they must be operated with both minimums and maximums on the timing
signals. The maximums are not too hard to meet, but typically designers
want to run the DRAMs as fast as possible. In the old days when DRAM
interfaces were async (meaning no clock, not lack of timing constraints)
it could be hard to optimize this interface. SDRAM added a clock and
gave the interface specific timing related to that clock. I tried to
design an SDRAM software interface for the GA144 and the big problem is
trying to make the processors run the interface anywhere close to full
speed. I think I could get it to run at 50 MHz, but I can't be sure
because they don't provide all the timing data for this sort of design.
But 50 MHz is not even half speed for the old single data rate SDRAM
and is nowhere near the rates of DDR, DDR2 or DDR3.
Don't try to turn this into a problem with the memory devices. They
work just fine. The problem is that GA won't put a proper memory
interface on the chip which will run at memory speeds. Instead they use
software which runs much slower than optimal.
> 3. Most software is written with the assumption of large amounts of
flat addressed memory ( doesn't the 1M byte DOS limit feel really tight?
). But you can write software in very small, colorForth size chunks. If
you spread these around a few F18's maybe you can create something
really cool.
Yes, there are apps which will suit the GA144 small memory model, but
they aren't the same apps that are typically running on >1MB devices.
Remember the memory chunks are only 64 words per processor for both
program and data. So even with 144 of them you only have some 9 kWords
of memory on chip. Otherwise you have to load the programs and data
from external memory. Memory can be a real bottle neck unless you are
running a pretty special app that fits the GA144. I think digital
receivers are one class of app that might work ok on this device, but I
don't know of any others.
> Going back to the original point - yes the GA144 can wait in an idle
state for a pin to change state, but it must poll to get timings. Maybe
a neighbouring F18 could wait for a change of state on a fixed clock
signal, say at 16 * baudrate, then pass this on. This should get the
power down to a minimum. Then again, maybe fixed baud rate is not the
right way to talk to a GA144...
Yes, an external clock and a timer node is the way to get timing data.
But to suggest that you shoudldn't talk to the GA144 with a fixed baud
rate is not very realistic. What part of the world is going to change
to suit the GA144?
One way to do this is to work with a two wire interface, one wire for
clock and one wire for data. Whoever is sending the data sends the
clock and the receiver has the option of slowing the clock like in I2C.
Or they could just add some hardware to handle this properly for
whatever interface you don't like.
> What would be interesting is to move the polyForth virtual machine to
the target GA144, using serdes to communicate with it, and then measure
the power.
> Maybe I'll find some time over Xmas :-)
>
> Best regards,
> Howerd
Rather than play with the board to measure things that don't likely
matter to the world, what do you think you could use this device for
that would be a better implementation than other devices?
Rick