package Top where import App import Uart interface Top = -- RS232 rx :: Bit 1 -> Action {-# always_enabled, always_ready, prefix = "", arg_names = [RX] #-} tx :: Bit 1 {-# always_ready, result = TX #-} -- Onboard LEDs ledR_N :: Bit 1 {-# always_ready, result = LEDR_N #-} ledG_N :: Bit 1 {-# always_ready, result = LEDG_N #-} -- RGB LED driver ledRed_N :: Bit 1 {-# always_ready, result = LED_RED_N #-} ledGrn_N :: Bit 1 {-# always_ready, result = LED_GRN_N #-} ledBlu_N :: Bit 1 {-# always_ready, result = LED_BLU_N #-} -- LEDs and buttons (PMOD 2) led1 :: Bit 1 {-# always_ready, result = LED1 #-} led2 :: Bit 1 {-# always_ready, result = LED2 #-} led3 :: Bit 1 {-# always_ready, result = LED3 #-} led4 :: Bit 1 {-# always_ready, result = LED4 #-} led5 :: Bit 1 {-# always_ready, result = LED5 #-} btn1 :: Bit 1 -> Action {-# always_enabled, always_ready, prefix = "", arg_names = [BTN1] #-} btn2 :: Bit 1 -> Action {-# always_enabled, always_ready, prefix = "", arg_names = [BTN2] #-} btn3 :: Bit 1 -> Action {-# always_enabled, always_ready, prefix = "", arg_names = [BTN3] #-} clockFreqHz :: Integer clockFreqHz = 12_000_000 mkTop :: Module Top mkTop = module uart <- mkUart (clockFreqHz / 9600) app <- mkApp uart.recv uart.send interface Top -- RS232 rx = uart.rxPin tx = uart.txPin -- Onboard LEDs ledR_N = uart.txPin ledG_N = 1 - app.led -- RGB LED driver ledRed_N = 1 ledGrn_N = 1 ledBlu_N = 1 -- LEDs and buttons (PMOD 2) led1 = 0 led2 = 0 led3 = 0 led4 = 0 led5 = 0 btn1 _ = return () btn2 _ = return () btn3 _ = return () {-# verilog mkTop #-} {-# properties mkTop = { RSTN = BTN_N } #-} -- vim: set ft=haskell :