Skip to content

Small and simple, primitive SoC with GPU, CPU, RAM, GPIO

License

Notifications You must be signed in to change notification settings

Corey-Maler/simple_SoC

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

76 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

simple SoC

Build status

SoC architecture overview

SoC architecture

Read HellyRISC architecture overview

Booting process

  1. Bootloader load to RAM basic input/output system, which provide some interrupts and containts programs to display strings, run programs and other.
  2. Bootloader copy to memory code from SD-card
  3. CPU-enabled flag it turn-on and calling RESET interrupt.

Multi CPU and threads

Available 4 CPU with 4 threads per CPU.

Any CPU starts from @00_00 + 4 * CPU_ID. For example:

x0000: h0F00; // reset (initial) address
...
x0F00: jmp CPU_1_main; // start instruction for CPU_1
x0F04: jmp CPU_2_main; // start instruction for CPU_2
x0F08: jmp h0F08; // instruction for CPU_3 (awaiting for command)
x0F0A: jmp h0F0A; // instruction for CPU_4 (awaiting for command)

CPU 2, 3, 4 is disabled by default;

Commands

; CPU's:
 OR  $cpu, b0010 ;  set $cpu[2] to 1 to enable CPU_2;
 AND $cpu, b1101 ;  set $cpu[2] to 0 to disable CPU_2;
; THREADS:
 THR_CH   TH_ID ;  change current thread to TH_ID. Will changes registes and stack pointer bank.
 THR_RST  TH_ID, START_ADDR ; reset TH_ID thread and set PC to START_ADDR and start thread
 THR_SYCN uniq_id ; 

Examples

Hello world

#include stdio.asm

.DATA
_STR "Wake up, Neo\b_";

.PROGRAM
push addr(_STR);
call print;

About

Small and simple, primitive SoC with GPU, CPU, RAM, GPIO

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published