Basilisc-2816 v0.1 is a small 2-bit serial 2/8/16 bit processor that fits into one Tiny Tapeout tile. It has been designed around the constraints of
Features:
op reg, src
and op src, reg
instruction formsmov
, swap
binop
: add/adc/sub/sbc/and/or/xor/cmp/test
neg/negc/revsub/revsbc/and_not/
or_not/xor_not/not
,shl/shr/sar/rol/ror
with variable or immediate shift count,mul
: 8x8 and 8x16 bit multiply instructions, producing 2 result bits per cycle like everything else,branch cc, offset
: relative branch
jump/call
: absolut direct/indirect jump/call,ret = jump [pop]
[imm7]
/ [imm7*2]
: zero page[r16 + imm2]
[r16 + r8]
[r16]
with postincrement/predecrement[push]
/ [pop]
/ [top-of-stack]
depending on whether the operand is written/read/modified[imm16]
imm16
/ [imm16]
operands supported using extra instruction wordBasilisc-2816 v0.1 has been taped out in three variants for Tiny Tapeout 7:
mul Prefetch Hardened Uses Mux
instruction queue size with latches address
v0.1a yes 2 OpenLane 1 no 967
v0.1b no 3 OpenLane 2 no 202
v0.1c yes 4 OpenLane 2 yes 72
successively more experimental. Longer prefetch queue should help contribute to better performance, especially with long memory access latencies.
This is the 0.1b version. For more details, see https://github.com/toivoh/tt07-basilisc-2816-cpu/blob/main/docs/info.md or the documentation for Basilisc-2816 v0.1a CPU [967].
# | Input | Output | Bidirectional |
---|---|---|---|
0 | rx_in[0] | tx_out[0] | |
1 | rx_in[1] | tx_out[1] | |
2 | tx_fetch | ||
3 | tx_jump | ||
4 | |||
5 | |||
6 | |||
7 |