summaryrefslogtreecommitdiffstats
path: root/scripts/icestorm/firmware.c
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/icestorm/firmware.c')
-rw-r--r--scripts/icestorm/firmware.c58
1 files changed, 0 insertions, 58 deletions
diff --git a/scripts/icestorm/firmware.c b/scripts/icestorm/firmware.c
deleted file mode 100644
index 80a4661..0000000
--- a/scripts/icestorm/firmware.c
+++ /dev/null
@@ -1,58 +0,0 @@
-#include <stdint.h>
-
-#ifndef SHIFT_COUNTER_BITS
-#error SHIFT_COUNTER_BITS must be defined as 4 (for simulation) or 18 (for hardware bitstreams)!
-#endif
-
-void output(uint8_t c)
-{
- *(volatile char*)0x10000000 = c;
-}
-
-uint8_t gray_encode_simple(uint8_t c)
-{
- return c ^ (c >> 1);
-}
-
-uint8_t gray_encode_bitwise(uint8_t c)
-{
- unsigned int in_buf = c, out_buf = 0, bit = 1;
- for (int i = 0; i < 8; i++) {
- if ((in_buf & 1) ^ ((in_buf >> 1) & 1))
- out_buf |= bit;
- in_buf = in_buf >> 1;
- bit = bit << 1;
- }
- return out_buf;
-}
-
-uint8_t gray_decode(uint8_t c)
-{
- uint8_t t = c >> 1;
- while (t) {
- c = c ^ t;
- t = t >> 1;
- }
- return c;
-}
-
-void gray(uint8_t c)
-{
- uint8_t gray_simple = gray_encode_simple(c);
- uint8_t gray_bitwise = gray_encode_bitwise(c);
- uint8_t gray_decoded = gray_decode(gray_simple);
-
- if (gray_simple != gray_bitwise || gray_decoded != c)
- while (1) asm volatile ("ebreak");
-
- output(gray_simple);
-}
-
-void main()
-{
- for (uint32_t counter = (2+4+32+64) << SHIFT_COUNTER_BITS;; counter++) {
- asm volatile ("" : : "r"(counter));
- if ((counter & ~(~0 << SHIFT_COUNTER_BITS)) == 0)
- gray(counter >> SHIFT_COUNTER_BITS);
- }
-}