blob: ca92fe1a9933a0022bfff998d82e970fefd411f8 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
-- | The top-level module for simulation.
package TopSim where
import Connectable
import CPU
import GetPut
import TriState
import Uart
mkTopSim :: Module Empty
mkTopSim =
module
cpu <- mkCPU
uart <- mkUart 1
mkConnection cpu.uart_tx uart.send
mkConnection cpu.uart_rx uart.recv
fakeUart <- mkUart 1
rules
when True ==> uart.rxPin fakeUart.txPin
timer :: Reg (Bit 8) <- mkReg 0
rules
when True ==> timer := timer + 1
when (timer == 0x00) ==> fakeUart.send.put 0x30
when (timer == 0x01) ==> fakeUart.send.put 0x30
when (timer == 0x02) ==> fakeUart.send.put 0x77
when (timer == 0x03) ==> fakeUart.send.put 0x31
when (timer == 0x04) ==> fakeUart.send.put 0x32
when (timer == 0x05) ==> fakeUart.send.put 0x33
when (timer == 0x06) ==> fakeUart.send.put 0x34
when (timer == 0x10) ==> fakeUart.send.put 0x30
when (timer == 0x11) ==> fakeUart.send.put 0x30
when (timer == 0x12) ==> fakeUart.send.put 0x72
when (timer == 0xff) ==> $finish
-- vim: set ft=haskell :
|