aboutsummaryrefslogtreecommitdiff
path: root/fpga/src/CPU.bs
diff options
context:
space:
mode:
Diffstat (limited to 'fpga/src/CPU.bs')
-rw-r--r--fpga/src/CPU.bs20
1 files changed, 20 insertions, 0 deletions
diff --git a/fpga/src/CPU.bs b/fpga/src/CPU.bs
new file mode 100644
index 0000000..566ae92
--- /dev/null
+++ b/fpga/src/CPU.bs
@@ -0,0 +1,20 @@
+package CPU where
+
+import GetPut
+
+-- | The interface the CPU exposes.
+interface CPU =
+ -- UART
+ uart_tx :: Get (Bit 8)
+ uart_rx :: Put (Bit 8)
+
+mkCPU :: Module CPU
+mkCPU = module
+ byte :: Reg (Bit 8) <- mkReg 0
+
+ interface CPU
+ uart_tx = toGet byte
+ uart_rx = toPut $ \b -> do
+ byte := b
+
+-- vim: set ft=haskell :