Skip to content

Commit 38fc2ee

Browse files
committed
Make i2c core's domain polymorph
1 parent f94cc7a commit 38fc2ee

File tree

3 files changed

+32
-28
lines changed

3 files changed

+32
-28
lines changed

clash-cores/src/Clash/Cores/I2C.hs

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -40,30 +40,32 @@ import Clash.Cores.I2C.ByteMaster
4040
}) #-}
4141
-- | Core for I2C communication
4242
i2c ::
43+
forall dom .
44+
KnownDomain dom =>
4345
-- | Input Clock
44-
"clk" ::: Clock System ->
46+
"clk" ::: Clock dom ->
4547
-- | Low level reset
46-
"arst" ::: Reset System ->
48+
"arst" ::: Reset dom ->
4749
-- | Statemachine reset
48-
"rst" ::: Signal System Bool ->
50+
"rst" ::: Signal dom Bool ->
4951
-- | BitMaster enable
50-
"ena" ::: Signal System Bool ->
52+
"ena" ::: Signal dom Bool ->
5153
-- | Clock divider
52-
"clkCnt" ::: Signal System (Unsigned 16) ->
54+
"clkCnt" ::: Signal dom (Unsigned 16) ->
5355
-- | Start signal
54-
"start" ::: Signal System Bool ->
56+
"start" ::: Signal dom Bool ->
5557
-- | Stop signal
56-
"stop" ::: Signal System Bool ->
58+
"stop" ::: Signal dom Bool ->
5759
-- | Read signal
58-
"read" ::: Signal System Bool ->
60+
"read" ::: Signal dom Bool ->
5961
-- | Write signal
60-
"write" ::: Signal System Bool ->
62+
"write" ::: Signal dom Bool ->
6163
-- | Ack signal
62-
"ackIn" ::: Signal System Bool ->
64+
"ackIn" ::: Signal dom Bool ->
6365
-- | Input data
64-
"din" ::: Signal System (BitVector 8) ->
66+
"din" ::: Signal dom (BitVector 8) ->
6567
-- | I2C input signals (SCL, SDA)
66-
"i2c" ::: Signal System ("scl" ::: Bit, "sda" ::: Bit) ->
68+
"i2c" ::: Signal dom ("scl" ::: Bit, "sda" ::: Bit) ->
6769
-- |
6870
-- 1. Received data
6971
-- 2. Command acknowledgement
@@ -76,12 +78,12 @@ i2c ::
7678
-- 6.3 SDA
7779
-- 6.4 SDA Output enable
7880
"" :::
79-
( "i2cO" ::: Signal System (BitVector 8)
80-
, "scl" ::: Signal System Bool
81-
, "sclOEn" ::: Signal System Bool
82-
, "sda" ::: Signal System Bool
83-
, "sdaOEn" ::: Signal System Bool
84-
, "i2cO" ::: Signal System ("scl" ::: Bit, "sclOEn" ::: Bool, "sda" ::: Bit, "sdaOEn" ::: Bool))
81+
( "i2cO" ::: Signal dom (BitVector 8)
82+
, "scl" ::: Signal dom Bool
83+
, "sclOEn" ::: Signal dom Bool
84+
, "sda" ::: Signal dom Bool
85+
, "sdaOEn" ::: Signal dom Bool
86+
, "i2cO" ::: Signal dom ("scl" ::: Bit, "sclOEn" ::: Bool, "sda" ::: Bit, "sdaOEn" ::: Bool))
8587
i2c clk arst rst ena clkCnt start stop read write ackIn din i2cI = (dout,hostAck,busy,al,ackOut,i2cO)
8688
where
8789
(hostAck,ackOut,dout,bitCtrl) = byteMaster clk arst enableGen (rst,start,stop,read,write,ackIn,din,bitResp)

clash-cores/src/Clash/Cores/I2C/BitMaster.hs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -81,11 +81,12 @@ type BitMasterO = (BitRespSig,Bool,I2COut)
8181
]
8282
}) #-}
8383
bitMaster
84-
:: Clock System
85-
-> Reset System
86-
-> Enable System
87-
-> Unbundled System BitMasterI
88-
-> Unbundled System BitMasterO
84+
:: KnownDomain dom
85+
=> Clock dom
86+
-> Reset dom
87+
-> Enable dom
88+
-> Unbundled dom BitMasterI
89+
-> Unbundled dom BitMasterO
8990
bitMaster = exposeClockResetEnable (mealyB bitMasterT bitMasterInit)
9091
-- See: https://github.com/clash-lang/clash-compiler/pull/2511
9192
{-# CLASH_OPAQUE bitMaster #-}

clash-cores/src/Clash/Cores/I2C/ByteMaster.hs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -76,11 +76,12 @@ type ByteMasterO = (Bool,Bool,BitVector 8,BitCtrlSig)
7676
-- The outgoing bitCtrl' controls the 'bitMaster' whose 'bitResp' should be supplied
7777
-- as last input.
7878
byteMaster
79-
:: Clock System
80-
-> Reset System
81-
-> Enable System
82-
-> Unbundled System ByteMasterI
83-
-> Unbundled System ByteMasterO
79+
:: KnownDomain dom
80+
=> Clock dom
81+
-> Reset dom
82+
-> Enable dom
83+
-> Unbundled dom ByteMasterI
84+
-> Unbundled dom ByteMasterO
8485
byteMaster = exposeClockResetEnable (mealyB byteMasterT byteMasterInit)
8586
-- See: https://github.com/clash-lang/clash-compiler/pull/2511
8687
{-# CLASH_OPAQUE byteMaster #-}

0 commit comments

Comments
 (0)