aboutsummaryrefslogtreecommitdiff
path: root/fpga/src/CPU.bs
blob: 566ae92d0f02e230d2657580e3f5abba9cc66ad1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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 :