OpenCores
URL https://opencores.org/ocsvn/ssbcc/ssbcc/trunk

Subversion Repositories ssbcc

[/] [ssbcc/] [trunk/] [README] - Diff between revs 12 and 13

Show entire file | Details | Blame | View Log

Rev 12 Rev 13
Line 56... Line 56...
- 7 shift and rotation instructions: <<0, <<1, 0>>, 1>>, <>, and lsb>>
- 7 shift and rotation instructions: <<0, <<1, 0>>, 1>>, <>, and lsb>>
- 4 logical instructions:  0=, 0<>, -1=, -1<>
- 4 logical instructions:  0=, 0<>, -1=, -1<>
- 6 Forth-like data stack instructions:  drop, dup, nip, over, push, swap
- 6 Forth-like data stack instructions:  drop, dup, nip, over, push, swap
- 3 Forth-like return stack instructions:  >r, r>, r@
- 3 Forth-like return stack instructions:  >r, r>, r@
- 2 I/O: inport, outport
- 2 I/O: inport, outport
- 6 memory read and write with optional address post increment and post decrement
- 6 memory read and write with optional address post increment or post decrement
- 2 jump and conditional jump
- 2 jump and conditional jump
- 2 call and conditional call
- 2 call and conditional call
- 1 function return
- 1 function return
- 1 nop
- 1 nop
 
 
Line 968... Line 968...
                        variable name is used to identify the memory instead of
                        variable name is used to identify the memory instead of
                        the name of the memory
                        the name of the memory
  .fetchram+(var_name)  is similar to the .fetch+(mem_name) macro except that
  .fetchram+(var_name)  is similar to the .fetch+(mem_name) macro except that
                        the variable name is used to identify the memory instead
                        the variable name is used to identify the memory instead
                        of the name of the memory
                        of the name of the memory
  .fetchram-(var_name)  is similar to the .fetch-(mem_name) macro except that the
  .fetchram-(var_name)  is similar to the .fetch-(mem_name) macro except that
                        the variable name is used to identify the memory instead
                        the variable name is used to identify the memory instead
                        of the name of the memory
                        of the name of the memory
  .fetchvalue(var_name) fetches the single-byte value of var_name
  .fetchvalue(var_name) fetches the single-byte value of var_name
                        Note:  This is equivalent to
                        Note:  This is equivalent to
                                 "var_name .fetch(mem_name)"
                                 "var_name .fetch(mem_name)"
Line 1023... Line 1023...
                               stack:
                               stack:
                                 .storevalue(var_name,1-)
                                 .storevalue(var_name,1-)
  .storevector(var_name,N)
  .storevector(var_name,N)
                        Does the reverse of the .fetchvector macro.
                        Does the reverse of the .fetchvector macro.
                        Note:  This is equivalent to the N+2 operation sequence
                        Note:  This is equivalent to the N+2 operation sequence
                                 "var_name .store+(mem_name) ... .store+(mem_name)
                                 "var_name
 
                                 .store+(mem_name) ...  .store+(mem_name)
                                 .store(mem_name) drop"
                                 .store(mem_name) drop"
                               where ".store+(mem_name)" is repeated N-1 times.
                               where ".store+(mem_name)" is repeated N-1 times.
 
 
The .fetchvector and .storevector macros are intended to work with values stored
The .fetchvector and .storevector macros are intended to work with values stored
MSB first in memory and with the MSB toward the top of the data stack,
MSB first in memory and with the MSB toward the top of the data stack,
Line 1110... Line 1111...
the width of the output signal is accessible using "${size['o_big']}".  You can
the width of the output signal is accessible using "${size['o_big']}".  You can
set the wide signal to all zeroes using:
set the wide signal to all zeroes using:
 
 
  ${(size['o_big']+7)/8-1} :loop 0 .outport(O_BIG) .jumpc(loop,1-) drop
  ${(size['o_big']+7)/8-1} :loop 0 .outport(O_BIG) .jumpc(loop,1-) drop
 
 
 
The sizes of variables, i.e., how many bytes of memory they occupy, are also
 
provided.
 
 
 
 
MACROS
MACROS
================================================================================
================================================================================
 
 
There are 3 types of macros used by the assembler.
There are 3 types of macros used by the assembler.
Line 1288... Line 1292...
core and peripheral test benches; Verilator for long simulations of large,
core and peripheral test benches; Verilator for long simulations of large,
complex systems; and ISIM when Xilinx-specific cores are used.  Verilator is
complex systems; and ISIM when Xilinx-specific cores are used.  Verilator is
the fastest simulators I've encountered.  Verilator is also used for lint
the fastest simulators I've encountered.  Verilator is also used for lint
checking in the core test benches.
checking in the core test benches.
 
 
 
The test benches for the core and the peripherals require Icarus Verilog and
 
Verilator.
 
 
 
 
MEM INITIALIZATION FILE
MEM INITIALIZATION FILE
================================================================================
================================================================================
 
 
A memory initialization file is produced during compilation.  This file can be
A memory initialization file is produced during compilation.  This file can be

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.