ForthSeen - Alternative Embedded Systems - Blog

index - WwwFinds - Videos - Thoughts - NewLISP - GAS - GA - ColorForth - Breadboard - About


GA144 - NFC application

Another interesting video from Daniel Kalny about a near-filed-communication application with the GA144.
The presentation was originally made on the ForthDay2015, the video was published in November 2015.

GA144-Near-Field-Communication
The explanation is very detailed, like the one of 2014, very well done !

2015-Dec-30 20:00 – GA, WwwFinds, Videos


GA144 - PID controller application

I found an interesting video from Daniel Kalny about a motor control application with the GA144.
The presentation was originally made on the ForthDay2014, the video was published in September 2015.

GA144-PID-Motor-Control
The explanation is very detailed , at the end there is a practical example.

PS: Our house renovating took the free time over the last half year, therefore no activities in the ForthSeen project. But we are nearly finished ...

2015-Nov-07 20:00 – GA, WwwFinds, Videos


GA144 - Wild Iris Discovery

I found no news, but a blog with some interesting thoughts about the GA144:
wildirisdiscovery.blogspot.de

For me the GA144 has still its fascination. Currently I'm thinking a lot about Virtual Maschines, Byte Code and minimalistic CPUs like the J1-Forth-CPU. If you think about minimal systems you automatically come back to the GA144 ..
Anyway if you have interesting news or projects around the GA144 please send me an email : admin(at)dmemos.de

2015-Aug-16 17:30 – GA, WwwFinds, Thoughts


MOSAIK-BASIC Project

Quote :
Beginning programmers should not have to wade through wordy manuals.
Simply coding assignments and easy access to easy-to-use implementations are required and many examples
Today a complete new programming language would be very similar. (to BASIC)

Tom Kurz developer of BASIC in "Masterminds of programming"

The goal of this MOSAIK-BASIC project is to create a true simple programming system, where you don't have to read through thick manuals, where you can start programming in an hour, producing immediately productive and working code. From mini-programs up to huge projects. A tool to make it easier to be really creative.

The core has a minimal command set:
Modules:
GOALS:
.....
For this new project I started an own logbook were I want to write more details.
MOSAIK-BASIC

Here on ForthSeen I will only report some milestones.

2015-May-17 11:30 – Mosaik-Basic


No more GA144 - for me

There is not too much news about the GA144 - one active guy is James Bowman with his alternative Python tool set:
https://github.com/jamesbowman

Out of a gut feeling I will not continue my GA144 activities. I have spent another long weekend to understand the core and to decide whether to continue my own tool set or to stop.
On one side the core is quite simple, but it's elegance is sacrificed through the hardware minimalism with leads to packing and unpacking of up to 4 commands in one word and some other partly undocumented system functions - which makes everything complicated.
On the other side I've never got the slightest feedback and I do not see new activities from other sides.

This blog will continue with new activities - I am still on the search for alternative embedded systems.
My goal is to find or to create a true simple system, where you don't have to read through thick manuals, where you can start programming in an hour, producing immediately productive and working code.
From the hardware side I next want to look to ARM-M based systems, currently you can get such 32bit chips for a fraction of a Dollar

2015-May-15 10:00 – GA, WwwFinds, Thoughts


Getting started with the GA144


I found another interesting link for the GA144, an exact instruction how to write and run your own program as a simulation in the Arrayforth IDE. The best description I found until now !

Getting Started With The GA144 And ArrayForth

If you look over it and if you have in mind that you have also to use a special keyboard, you'll get a good impression how uncomfortable the IDE is.

The begin of the year was busy, not too much time for my GA project. But I think I should start the next steps for my simulator.

2015-Jan-21 19:00 – GA, WwwFinds, Thoughts


GAS144 - GA144 Simulator - Alpha Release

As promised I added some detailed explanations to the GAS144a documentation:

GAS144a-Documentation-Alpha-Release.pdf

Comments are welcome - send me an email to: Admin(at)dmemos.de

2014-Dec-30 19:30 – GAS, GA, NewLISP


GAS144 - GA144 Simulator - Alpha Release

As a small Christmas present - at least for myself - this is the first release of my Green-Arrays GA144 chip simulator in newLISP.
A proof of concept, it is possible to simulate one node with it.
The development is in progress and the first step towards a complete IDE for the GA144 :

GAS144a-Documentation-Alpha-Release.pdf

The source-files as text in zip-format: GAS144a.zip

2014-Dec-24 15:30 – GAS, GA, NewLISP


Evanescentcoder Blog - GA144


I'am currently diving deep into my newLISP GA144 simulator, in between, as kind of life-sign, I want to introduce you to this interesting blog with pratical examples of a GA144 user:


2013-6-18: direct-digital-synthesis-dds-on-ga144


2013-7-13: quicksort-and-greenarrays-arrayforth


2014-6-15: a-ga144-10mhz-ceramic-resonator-and-led


2013-6-15: an-internet-music-player


2014-6-15: direct-digital-synthesis-dds-on-ga144


2014-6-15: porting-musicbox-app-to-ga144


2014-6-29: interfacing-wiz550io-to-ga144

The BLOG: evanescentcoder


2014-Nov-24 19:00 – GA, WwwFinds


GA144 Disassembler Part4

While writing my own simulator I realized some special internals, which lead to a fault of my disassembler Part3.
Here my new disassembler version


; ga-disassembler-1-0.lsp dmemos 1.November.2014

( set 'F18cmd '(
";" "ex" "name;" "name" "unext" "next" "if" "-if" "@p" "@+"
"@b" "@" "!p" "!+" "!b" "!"
"+*" "2*" "2/" "not" "+" "and" "or" "drop" "dup" "pop"
"over" "a" "." "push" "b!" "a!" ))
; GA144 command-set

( define ( get-slot-commands x )
( set 'cmds '() )
( set 'x (^ 0x15555 x ))
( push (F18cmd (<< ( & 7 x) 2 ))cmds)
( push (F18cmd (>> ( & 0xF8 x)3))cmds)
( push (F18cmd (>> ( & 0x1F00 x)8)) cmds)
( push (F18cmd (>> ( & 0x3E000 x)13)) cmds))
; decode instruction-word into slot-commands
; call:( get-slot-commands 0x01dfa ), result:("@b" "@p" "and" ".")

( define ( get-jump-address x )
( case x
(0 ( set 'adr (& IREG 0x3FF)))
(1 ( set 'adr (& IREG 0xFF )))
(2 ( set 'adr (& IREG 7 )))
(true "jump in slot3 not possible" )))
; get address for jump-commands for different slots

( set 'hexdump '(
0x01dfa 0x02000 0x19408 0x04b02 0x00115 0x2f455 0x04bb2 0x0015d
0x3bdfa 0x1ffff 0x209f2 0x1b40f 0x05bb2 0x07530 0x11400 0x05bb2
0x00000 0x11400 0x3a8ef 0x00100 0x26cb2 0x11406 0x134a9 0x256aa 0x24D4A ))
; Example hexdump as test-input

; start of disassembly

( while ( < 0 ( length hexdump))
( set 'IREG ( pop hexdump )) ; read word from hexdump

( get-slot-commands IREG ) ; get raw commands-list

; delete commands after "ex" or ";"
( if ( set 'i ( find "ex" cmds)) ( set 'cmds ( 0 (++ i) cmds)))
( if ( set 'i ( find ";" cmds)) ( set 'cmds ( 0 (++ i) cmds)))

; count how many @p's are in the list
( set 'count@p 0 )
( dolist ( x cmds ) ( if ( = x "@p") (++ count@p )) )

; in case of jump command "name" or "name;" - get address
( set 'adr nil )
( if ( or (set 'i ( find "name" cmds)) ( set 'i ( find "name;" cmds)))
( begin ( get-jump-address i) ( set 'cmds ( 0 (++ i) cmds))))
( if adr ( push (format "0x%X" adr) cmds -1 ))

; print out command-list
( println (format "0x%X" IREG) ": " cmds )

; in case of "@p" commands - print literal
( while ( < 0 count@p )
( -- count@p )
( set 'x ( pop hexdump))
( println "literal: " x " = " (format "0x%X" x) ))
)



This is the result:


0x1DFA: ("@b" "@p" "and" ".")
literal: 8192 = 0x2000
0x19408: ("if" "ex")
0x4B02: ("@p" "b!" "@b" ".")
literal: 277 = 0x115
0x2F455: ("push" "ex")
0x4BB2: ("@p" "b!" "." ".")
literal: 349 = 0x15D
0x3BDFA: ("drop" "@p" "and" ".")
literal: 131071 = 0x1FFFF
0x209F2: ("over" "." "+" ".")
0x1B40F: ("-if" "ex")
0x5BB2: ("@p" "!b" "." ".")
literal: 30000 = 0x7530
0x11400: ("name;" "0x0")
0x5BB2: ("@p" "!b" "." ".")
literal: 0 = 0x0
0x11400: ("name;" "0x0")
0x3A8EF: ("drop" "push" "drop" "@p")
literal: 256 = 0x100
0x26CB2: ("pop" "pop" "." ".")
0x11406: ("name;" "0x6")
0x134A9: ("name" "0xA9")
0x256AA: ("dup" "name" "0xAA")
0x24D4A: ("dup" "dup" "name" "0x2")


Here is the original code in ArrayForth:


down is equal to 0x115 that could be a next improvement, inserting symbolic addresses like up and down .. maybe after my simulator.. Now the hexdump is even clearer to me.

For better understanding, the jump "address" is not used directly, but combined with the actual program counter:

This version of my disassembler as textfile: disassembler-1-0.lsp
If you download and open it with notpad++ you see the coloured syntax.

2014-Nov-01 19:00 – GA, NewLISP


ArrayForth on Windows7 64bit ?

Despite I read that Greenarrays does not recommend to use ArrayForth with Windows 64bit because of too much trouble, I tested it and it works good. The simulation "so" and the contact to my breadboard with "host load panel talk 0 500 hook upd 3 lit 4 lit r+" works fine.

I am using Windows7 Professional 64bit.
I load the Virtual-Com-Port Software from FTDI FTDI VCP Driver
I used this version: 2014-09-29 downloaded file: "CDM v2.12.00 WHQL Certified"
I started the installation as Admin, click with right mouse button on file, start as admin
I saw that the COM3 was installed
The only change in the driver setting, I switched from 9600 to 115200 baud
The rest according to my blog-post "GA144 Serial Interface Setting in ColorForth" from "2014-Jun-28 21:50" - I changed the a-com back to "3".

2014-Oct-27 17:00 – GA, Breadboard, ColorForth


Chlorophyll - Compiler for the GA144

While I'm writing on my own GA144-simulator in newLISP, I'm looking for existing stuff for the GA144, too. I found this interesting compiler concept, which was developed for the Greenarrays GA144 in the first step:

Chlorophyll: Synthesis-Aided Compiler for Low-Power Spatial Architectures

Chlorophyll handout

Quote:
We wrote the first high-level compiler for the minimalistic GA144 architecture. Its generated code performs within a factor of 1.65 of hand-written code. The only alternative for running high-level programs is an interpreter that runs orders of magnitudes slower, negating the architectures energy benefits.

2014-Oct-19 11:00 – GA, WwwFinds


GA144 Usage and Applications

Occasionally I'm talking about my new hobby, the GreenArrays and Chuck Moore's GA144 super chip, just yesterday with some colleagues and an university Professor at dinner. It's always the same - A count of 144 32-bit processors each having only 64 words of RAM and 64 words of ROM.. For what the heck do you need this? - what can you do with it ? is the normal reaction - That's exactly what I want to find out my answer.

Here are my thoughts about this GA144-project, as a beginner with this IC, but also as an electronics engineer with 28+ years of working experience in development:
A few weeks back in my holidays I read again two of my favourite books, one after the other, Paul Graham's Hackers & Painters and Carmine Gallo's The innovation secrets of Steve Jobs . At the same time I mused about the GA144. The whole chip is simple ingenious. What lacks is the continuation of the idea outside of the chip. A super simple and beautiful programming environment. What Paul Graham named as one or two more abstraction layers, above the FORTH-machine language, maybe something like LISP or the 100-year-Language. The IDE should be simple like LEGO, intuitive in operation, so that a 10 year old child could use it ..
I have a day job, a family and an old house, the reason why it will take some time, but this are roughly my plans:

2014-Sep-10 18:00 – GA, Thoughts, NewLISP


GA144 Simulator in ArrayForth

If you want to play with the GA144 without having a real chip you can run a simulation.
The simulation helped me to understand some functions of the GreenArrays processor .
For details see the manual, chapter 7 : ArrayForth User's Manual

The first step is simple - start ArrayForth and type in so and you can start immediately with a predefined sample:

A screendump of the reset state:


To remember the meaning of the different lines for one processor:


After a few steps a magic moment happens - node 000 talks to node 100:


Some more details to remember:


The predefined example is a self-replicating program, which copies itself along a certain path, one node after the other.

What I want to remember:

2014-Sep-07 18:00 – GA, ColorForth


WwwFinds ..

Secrects of Frugality - GreenArrays Presentation on forth.org

Efficient Implementation of Cryptographic Primitives on the GA144 Multi-core Architecture

ga144tools - Python toolchain for GA144 - James Bowman on github

GA144 Running C - James Bowman on forth.org

The Python-Toolchain for the GA144 seems to be quite interesting, maybe it's a bit of sacrilege for a Forth purist ( not me ).
In contrast to the elegant simplicity of the GA144 chip, the current ArrayForth development environment is in my view the complete opposite, difficult for beginners to use and to understand - if at all.

If I would be unfaithful to my beloved newLISP, I would choose more mainstream, a Java based solution, maybe Clojure, an Android APP would be cool and a great advertisement - of course also for training as a simulator and perhaps even as a programming tool via USB-interface .. I should think about this...

2014-Sep-01 19:00 – GA, WwwFinds, Thoughts, NewLISP


GA144 Practical Example .. working !!

I found a practical example in the ArrayForth User's Manual
You'll find it in Chapter 9. Practical Example - a pwm control of the output.
The root cause why the first try, see below, didn't work was that I didn't switch to hex before I entered the numbers.

Here the video:
GreenArrays GA144 Practical Example 9 DB004

The changes I made to the 842 section :


With commands like "1000 seed" or " 4000 seed" I can change the brightness of the green LED. My notes:

Schematic:
3 kOhm resistor from GA144 to GND
to gate of BS138 mosfet transistor, source on GND
green led, 330 Ohm resistor in drain
led on 3.3V from usb adapter

Function test commands:
hostload panel talk 0 600 hook upd
on: 30000 io r!
off: 0 io r!

Edit block 842:
replace 20000 with 30000, use hex F1 !
replace 10000 with 0
exit editor, compile, save
check with '842 list'

Test:
connect usb, 1.8V power on , reset, start colorforth/okad
844 load, run
change frequency with eg. 'F1' (hex) and '2000 seed'

Thoughts:
Slow falling edge on gate, reduce 3k pulldown resistor?
Example shows constant pulse width and variation in frequency.

Next pulse-width-variation as first own program?

2014-Aug-25 16:00 – GA, Breadboard, ColorForth, Videos


GA144 Disassembler Part3

Now with the extension that after a line with a "@p" command a constant value is following:


; ga3.lsp dmemos 3.August.2014

( set 'F18cmd '(
";" "ex" "name;" "name" "unext" "next" "if" "-if" "@p" "@+"
"@b" "@" "!p" "!+" "!b" "!"
"+*" "2*" "2/" "not" "+" "and" "or" "drop" "dup" "pop"
"over" "a" "." "push" "b!" "a!" ))

; get bits from start to end of value x GA144: bit 17..0
( define ( get_bits x s e )
( set 'mask 0 )
( for ( i s e ) ( set 'mask ( | mask (<< 1 i ))))
( set 'out (>> ( & mask x ) s ))
)

; In the lowest slot3, no special considerations ( besides shifting bits left by 2)
; for slot0, slot1 and slot2 you have to consider this:
; "ex" and ";" in slot0..3 lock all lower slots, stops evaluating
; "name" and "name;" use lower slots as an address
( define ( x_commands xi xlst sb eb )
( set 'acmd ( F18cmd (get_bits i sb eb )))
( if ( or ( = acmd "ex" ) ( = acmd ";" )) ( set 'xlst '()))
( if ( or ( = acmd "name" ) (= acmd "name;"))
( begin ( set 'xadr ( format "0x%X" ( get_bits i 0 (-- sb) )))
( set 'xlst (list xadr))))
( push acmd xlst )
)

( define ( get_F18cmds i )
( set 'cmds '() )
( set 'i ( ^ i 0x15555))
( push ( F18cmd (<< (get_bits i 0 2) 2)) cmds )
( set 'cmds ( x_commands xi cmds 3 7 ))
( set 'cmds ( x_commands xi cmds 8 12 ))
( set 'cmds ( x_commands xi cmds 13 17 ))

( push (format "0x%X" (^ i 0x15555)) cmds )
; cmds
)

( set 'hexdump '(
0x01dfa 0x02000 0x19408 0x04b02 0x00115 0x2f455 0x04bb2 0x0015d
0x3bdfa 0x1ffff 0x209f2 0x1b40f 0x05bb2 0x07530 0x11400 0x05bb2
0x00000 0x11400 0x3a8ef 0x00100 0x26cb2 0x11406 0x134a9 ))

( set 'xout '() )
( dolist ( c hexdump )
( if (find "@p" xout)
( begin
( println (format " 0x%X = " c) c ) ; "@p" in last line
( set 'xout '() ))
( begin ; else normal command line
(set 'xout ( get_F18cmds c ))
( println xout ))))


This is the result:


("0x1DFA" "@b" "@p" "and" ".")
0x2000 = 8192
("0x19408" "if" "ex")
("0x4B02" "@p" "b!" "@b" ".")
0x115 = 277
("0x2F455" "push" "ex")
("0x4BB2" "@p" "b!" "." ".")
0x15D = 349
("0x3BDFA" "drop" "@p" "and" ".")
0x1FFFF = 131071
("0x209F2" "over" "." "+" ".")
("0x1B40F" "-if" "ex")
("0x5BB2" "@p" "!b" "." ".")
0x7530 = 30000
("0x11400" "name;" "0x155")
("0x5BB2" "@p" "!b" "." ".")
0x0 = 0
("0x11400" "name;" "0x155")
("0x3A8EF" "drop" "push" "drop" "@p")
0x100 = 256
("0x26CB2" "pop" "pop" "." ".")
("0x11406" "name;" "0x153")
("0x134A9" "name" "0x1FC")


Here is the original code in ArrayForth:

Now the hexdump is clearer PS: down is equal to 0x115

.. to be continued ..

2014-Aug-03 17:00 – GA, NewLISP


GA144 Disassembler Part2

Now with the extension that "ex" and ";" stops evaluating and the slots after "name" and "name;" are considered as an address.


; ga2d.lsp dmemos 2.August.2014

( set 'F18cmd '(
";" "ex" "name;" "name" "unext" "next" "if" "-if" "@p" "@+"
"@b" "@" "!p" "!+" "!b" "!"
"+*" "2*" "2/" "not" "+" "and" "or" "drop" "dup" "pop"
"over" "a" "." "push" "b!" "a!" ))

; get bits from start to end of value x GA144: bit 17..0
( define ( get_bits x s e )
( set 'mask 0 )
( for ( i s e ) ( set 'mask ( | mask (<< 1 i ))))
( set 'out (>> ( & mask x ) s ))
)

; In the lowest slot3, no special considerations ( besides shifting bits left by 2)
; for slot0, slot1 and slot2 you have to consider this:
; "ex" and ";" in slot0..3 lock all lower slots, stops evaluating
; "name" and "name;" use lower slots as an address
( define ( x_commands xi xlst sb eb )
( set 'acmd ( F18cmd (get_bits i sb eb )))
( if ( or ( = acmd "ex" ) ( = acmd ";" )) ( set 'xlst '()))
( if ( or ( = acmd "name" ) (= acmd "name;"))
( begin ( set 'xadr ( format "0x%X" ( get_bits i 0 (-- sb) )))
( set 'xlst (list xadr))))
( push acmd xlst )
)

( define ( get_F18cmds i )
( set 'cmds '() )
( set 'i ( ^ i 0x15555))
( push ( F18cmd (<< (get_bits i 0 2) 2)) cmds )
( set 'cmds ( x_commands xi cmds 3 7 ))
( set 'cmds ( x_commands xi cmds 8 12 ))
( set 'cmds ( x_commands xi cmds 13 17 ))

( push (format "0x%X" (^ i 0x15555)) cmds )
; cmds
)

( set 'hexdump '(
0x01dfa 0x02000 0x19408 0x04b02 0x00115 0x2f455 0x04bb2 0x0015d
0x3bdfa 0x1ffff 0x209f2 0x1b40f 0x05bb2 0x07530 0x11400 0x05bb2
0x00000 0x11400 0x3a8ef 0x00100 0x26cb2 0x11406 0x134a9 0x256aa 0x24D4A ))

( dolist ( c hexdump )
( println ( get_F18cmds c ) ))


This is the result:


("0x1DFA" "@b" "@p" "and" ".")
("0x2000" "@" "and" "@b" "+")
("0x19408" "if" "ex")
("0x4B02" "@p" "b!" "@b" ".")
("0x115" "@b" "+" "@p" ";")
("0x2F455" "push" "ex")
("0x4BB2" "@p" "b!" "." ".")
("0x15D" "@b" "+" "ex")
("0x3BDFA" "drop" "@p" "and" ".")
("0x1FFFF" "next" "@b" "and" "@p")
("0x209F2" "over" "." "+" ".")
("0x1B40F" "-if" "ex")
("0x5BB2" "@p" "!b" "." ".")
("0x7530" "@+" ";")
("0x11400" "name;" "0x155")
("0x5BB2" "@p" "!b" "." ".")
("0x0" "@b" "and" "@b" "+")
("0x11400" "name;" "0x155")
("0x3A8EF" "drop" "push" "drop" "@p")
("0x100" "@b" "+" "@b" "+")
("0x26CB2" "pop" "pop" "." ".")
("0x11406" "name;" "0x153")
("0x134A9" "name" "0x1FC")
("0x256AA" "dup" "name" "0xFF")
("0x24D4A" "dup" "dup" "name" "0x7")


The hex-dump is from the practical example from July 20th below.
Maybe you have mentioned that I added the last 2 own hex-codes to test slot1 and slot2 jumps.
I constructed this with a rudimentary GA144-assembler in newLisp :)
To be continued .. Next question is how I can recognize variables instead of commands ??

2014-Aug-02 18:00 – GA, NewLISP


GA144 Disassembler

There are different ways to learn a new system. I'm starting a disassembler for the GA144 - based on newLisp - a daring blend of FORTH and LISP :


; ga1d.lsp dmemos 2.August.2014

( set 'F18cmd '(
";" "ex" "name;" "name" "unext" "next" "if" "-if" "@p" "@+"
"@b" "@" "!p" "!+" "!b" "!"
"+*" "2*" "2/" "not" "+" "and" "or" "drop" "dup" "pop"
"over" "a" "." "push" "b!" "a!" ))


; get bits from start to end of value x GA144: bit 17..0
( define ( get_bits x s e )
( set 'mask 0 )
( for ( i s e ) ( set 'mask ( | mask (<< 1 i ))))
( set 'out (>> ( & mask x ) s ))
)

( define ( get_F18cmds i )
( set 'cmds '() )
( set 'i ( ^ i 0x15555))
( print (format "0x%x" i ) "|" )
( push ( F18cmd (<< (get_bits i 0 2) 2)) cmds)
( print cmds "|" )
( push ( F18cmd (get_bits i 3 7)) cmds)
( print cmds "|" )
( push ( F18cmd (get_bits i 8 12)) cmds)
( push ( F18cmd (get_bits i 13 17)) cmds)
( push (format "0x%X" (^ i 0x15555 ) ) cmds )
cmds
)

( set 'hexdump '(
0x01dfa 0x02000 0x19408 0x04b02 0x00115 0x2f455 0x04bb2 0x0015d
0x3bdfa 0x1ffff 0x209f2 0x1b40f 0x05bb2 0x07530 0x11400 0x05bb2
0x00000 0x11400 0x3a8ef 0x00100 0x26cb2 0x11406 0x134a9 ))

( dolist ( c hexdump )
( println ( get_F18cmds c ) ))


This is the result:


("0x1DFA" "@b" "@p" "and" ".")
("0x2000" "@" "and" "@b" "+")
("0x19408" "if" "ex" "@" "+")
("0x4B02" "@p" "b!" "@b" ".")
("0x115" "@b" "+" "@p" ";")
("0x2F455" "push" "ex" ";" ";")
("0x4BB2" "@p" "b!" "." ".")
("0x15D" "@b" "+" "ex" ";")
("0x3BDFA" "drop" "@p" "and" ".")
("0x1FFFF" "next" "@b" "and" "@p")
("0x209F2" "over" "." "+" ".")
("0x1B40F" "-if" "ex" "@" "@p")
("0x5BB2" "@p" "!b" "." ".")
("0x7530" "@+" ";" "!p" "+")
("0x11400" "name;" "ex" "@b" "+")
("0x5BB2" "@p" "!b" "." ".")
("0x0" "@b" "and" "@b" "+")
("0x11400" "name;" "ex" "@b" "+")
("0x3A8EF" "drop" "push" "drop" "@p")
("0x100" "@b" "+" "@b" "+")
("0x26CB2" "pop" "pop" "." ".")
("0x11406" "name;" "ex" "@b" "!p")
("0x134A9" "name" "ex" "a!" "+*")
("0x134A9" "name" "ex" "a!" "+*")


This is the second version, after I saw, that the bits in the last slot must be shifted-left by 2 .
Now there's the next step necessary, after a jump command like ex the rest of the slots are meaningless .. I'm learning :)

2014-Aug-02 09:00 – GA, NewLISP


GA144 Practical Example .. not working, yet.

I found another practical example in the ArrayForth User's Manual
You'll find it in Chapter 9. Practical Example - a pwm control of the output.
I mounted another LED on Node 600, I can switch it on and off like the 500, but the rest does not work.

Currently struggling with the whole system.This strange mixture of OKAD, ColorForth, ArrayForth and F18 compiler is difficult to understand .. a step by step instructions would help .. I'll find it out !!

2014-Jul-20 20:00 – GA, Breadboard, ColorForth


GA144 More Interactive Testing

Currently I'm going through the ArrayForth User's Manual
There I found the chapter "interactiv testing with Softsim", where I realized that this commands can be used for interactive testing with my breadboard, too:

With this vocabulary I can work in the panel-view directly on my node "500" - cool !

The complete ArrayForth System is available as an html-file: ArrayForth System Dump

2014-Jul-07 07:00 – GA, Breadboard, ColorForth


GA144 First Contact Video

GreenArrays Hello World on ForthSeen.com
Here as a link, embedded makes the Blog too slow .. See you :)

2014-Jun-29 20:50 – GA, Breadboard, ColorForth, Videos


GA144 First Contact with the Chip

The following examples are made according this very helpful blogpost:
Hands-on-with-a-144-core-processor
Here my first tests with my own GA144 breadboard, bold input, screen dump as result:
4 selftest ( Question: How can I recognize a successful selftest?)

host load panel talk 0 500 hook upd ( Question: Exact function of this commands ?)
3 lit 4 lit r+ Addition test, as you see in the third line the result is "7" ( Question: How does this work exactly ? )

host load panel talk 0 500 hook upd ( if I make a reset the register values are changed)


And finally the switch on of the output on Pin 7
Press function key F1 to switch to hex then 30000 io r!

And here the proof - the output goes high !

As you probably see I have a lot of questions and things to learn - but I want to learn everything and want to share it here !
We'll see us :)

2014-Jun-29 19:50 – GA, Breadboard, ColorForth


GA144 Serial Interface Setting in ColorForth

Oh boy, the first steps in ColorForth were not easy ! First I struggled with the special keyboard in ColorForth, until I realized that there is additional confusion, because of my German keyboard - I have to change this, soon (to-do-list).The next challenge was the special Editor in ColorForth. The third task was to find out how to save the changes. I assume there is a better and faster way, but this is the way I managed it:
In the same way I changed the baudrate "a-bps" to 115200. I assume that the system-changes are saved in the file "OkadWork.cf", because this is what's updated. If you know it better and if you have already a setting for an German keyboard, I would be glad if you could send an email to me dmemos(at)t-online.de
Next is the connection and test of the GA144 on my Schmartboard .. to be continued ..

2014-Jun-28 21:50 – GA, Breadboard, ColorForth


GA144 Serial Interface

I've got this USB to serial converter with a FTDI 232R chip for little money from Ebay. First I had the jumper near the output connector set to 3.3V and I used Mosfets as level-shifter to the 1.8V GA144 system.
Then I realized that you don't need this. If you remove the jumper complete you can connect 1.8V directly to Vcc of the adapter that't the fourth pin from the bottom, at the sixth pin you have gnd, then you need an additional capacitor, as you see I used an 1uF from my scrap box.
The GA144 needs inverted signals and with the Mprog3.5 utility you can configure this in the FTDI-Eeprom:
MProg 3.5 - EEPROM Programming Utility
From the FTDI-Website you can also get the drivers, if you don't have them already. On my Windows-XP system the FTDI connects always to COM4 and I set the baudrate to 115'200 via the device-manager.
I glued first a piece of cardboard to the baseboard and on it the USB-adpater with hot glue.
Then the first adjustments in ColorForth or ArrayForth has to be made .. to be continued ..

2014-Jun-28 20:50 – GA, Breadboard, ColorForth


GA144 breadboard1 Introduction

This is the "hello-world" message of my first GA144f18a-breadboard on Sunday 22.June.2014.
I switched on the pin7, on processor No.500 over a bridge of 10 processors starting from processor No.707 near the serial input. Not much, but as important as the first breath of a new baby.

I am a bit overwhelmed of this unexpected fast success, with so little effort. In the next blog posts I will explain what I did so far - and a good occasion to start this blog.
Now the real adventure can start .. real adventures start in your head and on your breadboards !

2014-Jun-25 23:30 – Blog, GA, Breadboard


GA144 Breadboard

I used an old board, which I got once as a giveaway, as a base plate.
As powersupply I bought the black battery box with a switch, I put two rechargeable AA batteries with 1.25V nickel metal hydride type in it. From plus I go to a fuse with about 2.5Amps and a 3Amp-Diode. Under full load of 3Amps I got the nominal 1.8V for the GA144f18a. At no load the voltage is about 2V witch is in the allowed tolerance. One switch is for reset. A red LED shows that the power is on.
For the USB I used a low-cost usb-to-serial converter based on a FTDI 232R chip - in the next blog post more about this.
I used hot glue to fix everything on the base plate.

2014-Jun-25 21:50 – GA, Breadboard


GA144f18a Project Links

Links - most useful first:

GreenArrayChips

Hands-on-with-a-144-core-processor

Schmartboard GA144


Video Chuck Moore 2013 - Programming a 144-computer Chip to Minimize Power


2014-Jun-24 23:00 – GA, WwwFinds, Videos


GA144 Schmartboard Power connection

After all 88 pins were soldered I soldered the big middle pad through the hole on the bottom side of the Schmartboard.
This is the common ground. Then I connected a thicker copper wire from the middle to every edge, where I attached some bigger pin for the connection to the base board .

For the 1,8V power I made a rectangle-shaped ring of wire on the top, to which I connected every power pin (red marked).
I took 4 capacitors, two 1uF , one 47nF and one 22nF to stabelize the power. On the base plate I have more capacitors.

2014-Jun-24 22:35 – GA, Breadboard


GA144 Schmartboard Soldering



It took about one hour to solder the GA144-QFN88 Chip with 0,4mm pitch into the Schmartboard. First I resoldered the 88 pads on the chip bottom - but not the big middle pad ! I used flux and non-lead-free tin.
Then I needed a lot of time to adjust the pins to the board, I soldered first one pin on the edge, so that I could readjust everything a bit.
I didn't use the recommended method, but a not to small solder tip with about 1.27mm (1/20"), with a lot of fresh solder on the tip I soldered all 22 pins on each side in one turn, in a few seconds from one edge to the other.
As a control I made a macro-photo with my digital camera and magnified it.

2014-Jun-24 22:30 – GA, Breadboard


GA144 Schmartboard

I never dreamed to get a GA144f18a processor in my own hands - but then I read that Schmartboard offers a prototyping pcb including a GA144 for about 34$ - The superchip for everyone - WOW! Thank you to the kind people of SCHMARTBOARD:
Schmartboard GA144

2014-Jun-24 22:00 – GA, Breadboard


GA144f18a

The GA144f18a is a chip with 144 small 32-Bit processors - Quote from GreenArrayChips

GA144 multi-computer chip. It is designed to give you options that have never before existed and to place them under your control by writing software.

With 144 independent computers, it enables parallel or pipelined programming on an unprecedented scale. Map a data flow diagram or an analog block diagram onto its array of computers for continuous processes without interrupts or context switching.
With instruction times as low as 1400 picoseconds and consuming as little as 7 picojoules of energy, each of the 144 computers can do its work with unprecedented speed for a microcontroller and yet at unprecedentedly low energy cost, transitioning between running and suspended states in gate delay times. When suspended, each of the computers uses less than 100 nanowatts.
With completely programmable I/O pins, transitions between driving high, driving low, weak pull-down and high impedance can be made under software control in nanoseconds. This permits bit-banging on an unprecedented scale, yet the input impedance of each pin is higher, and circuit loading less, than many expensive FET probes. Add to that the ability to devote one or more very high-speed computers to each pin, and you have true software-defined I/O with unprecedented attentiveness to each pin when it is desired.
With multilevel programming you may choose between very fast, very simple programs in microcode, or working in a high level language using external memory, or various methods in between, trading off speed against complexity; and you may mix these techniques in an application, building your own clusters of computers or nodes to produce architectures with "hosts" and "coprocessors" as your application demands.

When your product requirements include responsiveness and computational power but with energy limitations, this superb chip is ideal. Use it right out of the box for prototyping and development; as your end product matures, GreenArrays will rapidly configure custom chips to further minimize both the cost and energy consumption of your product.

All Details can be read on : GreenArrayChips

2014-Jun-24 21:30 – GA


About

This website is the documentation of a project started with the GreenArrrays GA144f18a Chip in June 2014. The history, thoughts and motivation can be read on my German blog t-relaxed

Dandelion - Simple is Beautiful

2014-Jun-24 21:00 – About


Disclaimer

1. Content
The author reserves the right not to be responsible for the topicality, correctness, completeness or quality of the information provided. Liability claims regarding damage caused by the use of any information provided, including any kind of information which is incomplete or incorrect,will therefore be rejected.
All offers are not-binding and without obligation. Parts of the pages or the complete publication including all offers and information might be extended, changed or partly or completely deleted by the author without separate announcement.

2. Referrals and links
The author is not responsible for any contents linked or referred to from his pages - unless he has full knowledge of illegal contents and would be able to prevent the visitors of his site fromviewing those pages. If any damage occurs by the use of information presented there, only the author of the respective pages might be liable, not the one who has linked to these pages. Furthermore the author is not liable for any postings or messages published by users of discussion boards, guestbooks or mailinglists provided on his page.

3. Copyright
The author intended not to use any copyrighted material for the publication or, if not possible, to indicate the copyright of the respective object.
The copyright for any material created by the author is reserved. Any duplication or use of objects such as images, diagrams, sounds or texts in other electronic or printed publications is not permitted without the author's agreement.

4. Privacy policy
If the opportunity for the input of personal or business data (email addresses, name, addresses) is given, the input of these data takes place voluntarily. The use and payment of all offered services are permitted - if and so far technically possible and reasonable - without specification of any personal data or under specification of anonymized data or an alias. The use of published postal addresses, telephone or fax numbers and email addresses for marketing purposes is prohibited, offenders sending unwanted spam messages will be punished.

5. Legal validity of this disclaimer
This disclaimer is to be regarded as part of the internet publication which you were referred from. If sections or individual terms of this statement are not legal or correct, the content or validity of the other parts remain uninfluenced by this fact.

2014-Jun-24 20:30 – About


Imprint

ForthSeen.de and ForthSeen.com
Author
Dieter Moser
Brunnenstrasse 6
D79848-Bonndorf
contact : Admin(at)dmemos.de
phone : +49-7703-7502
mainpage: index

2014-Jun-24 20:00 – About


To-TOP