GA144 - NFC application
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
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
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
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:
- CLEAR
- EDIT
- ELSE
- END
- ENDIF
- ( GOSUB indirect )
- ( GOTO within modules)
- IF
- INPUT
- LET
- LOAD
- ( RETURN implicit )
- SAVE
- + - * / < > = <> not and or xor
- A program consist of several small modules, like a mosaic or "MOSAIK"
- Every module is maximal 32 lines long, each line is about 32 chars wide
- No line numbers, but labels start:
- If necessary, longer comments are stored outside the module
- There are a few predefined variables A,B,C ; A$,B$ ; A@,B@
- A module gets the input via this few variables
- A module can deliver output via the same variables
- The modules name is the first line, the last line is RETURN by default
- A module is similar to subroutines or functions in other dialects
- To call it, instead of writing "GOSUB TEST", simply write "TEST"
- Bigger data amounts are outside of the modules in a data-sea
- A data-sea can have arrays, lists, text, dictionaries, red-black-trees
- Easy to use like BASIC, a small core like TINY-BASIC
- Hardware near and fast like FORTH
- Compact, but easy readable and reusable
- Powerful through module extension
- Interpreter where speed doesn't matter
- Compiler where necessary
- Immediate Display of used memory resources and computing time
- Small core with a few kBytes suitable for small systems
- Design to test - no side effects
- No necessity to write similar code twice
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
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
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
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
- only the commands are x-or'd with 0x15555
- the jump addresses are not x-ored and taken directly
- more than one @p can lead to more than one following literal words
; 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:
For better understanding, the jump "address" is not used directly, but combined with the actual program counter:
- slot0 jumps: bit0 to bit9, the 10 least-significant-bits, set the complete 10bits of the program counter, all targets are in reach, also the I/O space and other nodes
- slot1 jumps: bit0 to bit7, the 8 lsb are replacing the lsb of the program counter, P8 forced to 0, no I/O space in reach
- slot2 jumps: bit0 to bit2, the 3 lsb are replacing the lsb of programm counter, P8 forced to zero, no I/O space
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 ?
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
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
- A controller system stripped to the minimum
- .. by the way maybe you could leave out one or the other command :)
- I like the asynchronous design
- I like the minimal power consumption
- I like that there is no interrupt
- I like the simplicity - you can have the whole system in your head
- I like the higher reliability and robustness within a smaller system
- I like the whole FORTH idea
- .. it would be great to reduce current software to 1% of the size .. and more
- It's like LEGO you have some simple parts .. discover the possibilities
- .. you can build your own peripherals by demand
- .. you can build parallel peripherals
- .. you can build self-modifying and optimizing systems
- The future prospects and the potential are great, too ..
- .. you can make it smaller down to a few processors, super small like dust
- .. you could put thousands of processor in parallel if necessary
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:
- Understanding and testing the GA144
- Writing a first abstraction layer - maybe in newLISP
- .. a simulator - dto.
- .. a profiler - dto.
- .. a function library
- Writing a second abstraction layer ..
- .. maybe a graphical interface
- .. in Java or Clojure
- .. as an APP for Anroid
- At best a bit of everything in parallel .. ;)
2014-Sep-10 18:00 – GA, Thoughts, NewLISP
GA144 Simulator in ArrayForth
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:
- All nodes are listening to their neighbours by default ..
- .. Exception 1 - your program says something else
- .. Exception 2 - a few outer nodes have some special functions
- After reset only the B-register is set to "io" ..
- .. and the "io"-Register is set to 0x15555 - nothing more.
- Program counter after reset is set according to a factory setting..
- .. either a multiport-execute
- .. or rom-address-0x0aa
- The path-direction down, up, left and right vary from node to node and is not related to the chip layout, you can see it on the last picture, node 000 has its down path on the top and 100 on the bottom ! You can find it out in this poster: GA144 poster
2014-Sep-07 18:00 – GA, ColorForth
WwwFinds ..
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 !!
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
; 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:
2014-Aug-03 17:00 – GA, NewLISP
GA144 Disassembler Part2
; 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
; 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.
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.
2014-Jul-20 20:00 – GA, Breadboard, ColorForth
GA144 More Interactive Testing
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:
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
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
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?)
3 lit 4 lit r+ Addition test, as you see in the third line the result is "7" ( Question: How does this work exactly ? )
And finally the switch on of the output on Pin 7
Press function key F1 to switch to hex then 30000 io r!
We'll see us :)
2014-Jun-29 19:50 – GA, Breadboard, ColorForth
GA144 Serial Interface Setting in ColorForth
- type "def a-com" return
- hit 'Right'-key to move the cursor, go directly behind the yellow number after a-com
- hit 'Cut Word'-key to remove the yellow default number 3
- hit 'Yellow text'-key to switch to edit yellow mode
- type "4" to insert the new number
- hit 'ESC' to stop yellow mode
- hit 'Space' to quit edit mode
- type 'save' to save the changes in the system
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
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
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.
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
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
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
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 .
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
Schmartboard GA144
2014-Jun-24 22:00 – GA, Breadboard
GA144f18a
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
2014-Jun-24 21:00 – About
Disclaimer
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
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