我从堪萨斯熔岩纸上得到了一段代码,它有效。
counter :: Signal CLK Bool -> Signal CLK Bool -> Signal CLK Int
counter restart inc = loop
where
reg = register 0 loop
reg' = mux restart (0, reg)
loop = mux inc (reg' + 1, reg')
现在我尝试在另一个功能中做同样的事情,使用另一个功能,这不起作用。
shiftReg_d2f :: Signal CLK Bool -> Signal CLK Bool -> [Signal CLK Bool] -> [Signal CLK Bool] -> [Signal CLK Bool]
shiftReg_d2f load shift wordIn fieldIn = fieldOut
where
fieldOut = register 0 fieldOut''
shiftField = drop (length wordIn) fieldOut ++ wordIn
fieldOut' = muxl shift fieldOut shiftField
fieldOut'' = muxl load fieldOut' fieldIn
现在我收到以下错误:
- 无法将预期类型
[Signal i0 Bool]
与实际类型匹配Signal clk0 a0
(3x) - 无法将预期类型
Signal i0 Bool
与实际类型匹配[Signal i0 Bool]
- 无法将预期类型
Signal i Bool -> Signal i Bool -> Signal i Bool
与实际类型匹配Signal i Bool
我做错了什么?
谢谢您的帮助