diff --git a/INSTRUCTIONS.md b/INSTRUCTIONS.md index 278cbb0..df4014e 100644 --- a/INSTRUCTIONS.md +++ b/INSTRUCTIONS.md @@ -187,16 +187,26 @@ could be implemented with pop/jump ### POP -# Planned to haves +# Planned features - 1-cycle shift and add - 1-cycle intger division -- floating point arithmetic - interrupts +- timers + * watchdog timers - atomic compare-and-swap - atomic load-link/store-conditional - memory management - memory-mapped registers -- sine and cosine functions, see [cordic][1] +- co-processor design and abi + * sine and cosine functions as co-processor, see [cordic][1] + * floating point arithmetic + * cryptographic functions as a co-processor + - AES + - CRC32 + - Parity check + - md5 + - SHA-1 + - SHA-256 [1]: https://en.wikipedia.org/wiki/CORDIC diff --git a/alu.dig b/alu.dig index 4790a7c..0df437c 100644 --- a/alu.dig +++ b/alu.dig @@ -67,7 +67,7 @@ 32 - + In @@ -81,7 +81,7 @@ 32 - + multiply-add.dig @@ -100,7 +100,7 @@ 32 - + Neg @@ -112,16 +112,6 @@ - - Out - - - Label - LZ - - - - Out @@ -130,7 +120,7 @@ Z - + Splitter @@ -218,7 +208,7 @@ 0 - + Out @@ -263,7 +253,7 @@ NetName - s + sel @@ -273,7 +263,7 @@ NetName - s + sel @@ -286,21 +276,25 @@ C_i - + - In + Splitter - Label - Op + rotation + - Bits - 4 + Input Splitting + 32 + + + Output Splitting + 31,1 - + Splitter @@ -318,35 +312,152 @@ 31,1 - + Splitter + + + Input Splitting + 32 + + + Output Splitting + 5 + + + + + + And + + + wideShape + true + + + + + + XNOr rotation + + wideShape + true + + + + + + And + + + wideShape + true + + + + + + nor32.dig + + + + + nor32.dig + + + + + shift32.dig + + + + + Text + + + Description + ALU Opcode + +0000 -> ADD +0001 -> SUB +0010 -> MAD +0011 -> MADS +0100 -> AND +0101 -> OR +0110 -> XOR +0111 -> NEG +1000 -> LSL +1001 -> LSR +1010 -> SCL +1011 -> SCR +1100 -> ROL +1101 -> ROR +1110 -> ASR +1111 -> NOP + + + + + + In + + + Label + OP + + + Bits + 4 + + + + + + Splitter + Input Splitting - 32 + 4 Output Splitting - 31,1 + 1*4 - + + + + And + + + inverterConfig + + In_1 + In_2 + + + + Inputs + 4 + + + Tunnel NetName - s + mad_s - + Splitter @@ -360,195 +471,345 @@ 3 - + - Splitter + Tunnel - Input Splitting - 4 + NetName + shift_op + + + + + Tunnel + - Output Splitting - 1*4 + rotation + + + + NetName + shift_op + + + + + + Tunnel + + + rotation + + + + NetName + mad_s - + And - wideShape - true + inverterConfig + + In_1 + In_2 + + + + Inputs + 3 + + + + + + Tunnel + + + NetName + long_z - + + + + Multiplexer + + + + + Tunnel + + + NetName + long_z + + + + + + And + + + + + And + + + + + Or + + + Inputs + 3 + + + Splitter Input Splitting - 32 + 1*3 Output Splitting - 5 + 3 - + + + + And + + And - wideShape - true + inverterConfig + + In_2 + In_3 + + + Inputs + 3 + + + + + + And + inverterConfig + In_1 In_2 + + Inputs + 3 + - + - And + Or - wideShape - true + Inputs + 4 - + - XNOr + And - rotation - + inverterConfig + + In_1 + In_2 + - wideShape - true + Inputs + 3 - + And - wideShape - true + inverterConfig + + In_1 + In_3 + + + + Inputs + 3 - - - - nor32.dig - - + - nor32.dig - - + Or + + + Inputs + 3 + + + - shift32.dig - - + Tunnel + + + NetName + sel + + + - - + + - - + + - - + + - - + + - - + + - - + + + + + + + + + + + + + + + + + + + + + + - - + + - - + + - - + + - - + + - + - - + + - - + + - - + + - - + + - + - - + + + + + + + + + + + + + + + + + + - + - + @@ -556,55 +817,91 @@ - - + + + + + + - - + + - + + + + + - + - + + + + + - - + + + + + + - - + + - - + + - - + + - + + + + + - - + + + + + + - + + + + + + + + + + + + + @@ -612,23 +909,35 @@ - - + + + + + + + + + + - + - - + + + + + + - - + + - + @@ -636,35 +945,51 @@ - - + + - - + + - - + + - - + + + + + + - + + + + + - + - + + + + + + + + + @@ -672,27 +997,31 @@ - - + + - + + + + + - - + + - - + + - + - + @@ -700,31 +1029,55 @@ - + + + + + + + + + - + - - + + + + + + - - + + + + + + + + + + + + + + - + @@ -740,15 +1093,15 @@ - - + + - + @@ -756,79 +1109,115 @@ - - + + - + + + + + + + + + + + + + - + + + + + - - + + - + + + + + - - + + - - + + - - + + - - + + - - + + - + + + + + + + + + - + - - - - - + - + + + + + + + + + + + + + @@ -836,135 +1225,187 @@ - - + + - - + + - - + + - - + + + + + + - - + + - - + + - + - + + + + + + + + + - + - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + + + + + + + + + - + - + + + + + - + - + @@ -975,92 +1416,192 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - + + - - + + - - + + - + - + @@ -1072,60 +1613,72 @@ - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + + + + + + + + + + + + +