首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Haskell/堪萨斯Lava移位寄存器错误

Haskell/堪萨斯Lava移位寄存器错误
EN

Stack Overflow用户
提问于 2014-05-07 08:11:13
回答 1查看 111关注 0票数 1

我从堪萨斯州的一份熔岩纸上得到了一段代码,这很管用。

代码语言:javascript
复制
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')

现在我尝试在另一个函数中做同样的工作,使用另一个功能,这是行不通的。

代码语言:javascript
复制
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相匹配

我做错什么了?

谢谢你的帮助

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-24 04:57:53

问题是你把Signal clk [a][Signal clk a]混为一谈。前者在HDL环境下基本上是不可行的,因为它的宽度是无界的,并且可能随周期变化。

相反,您可以做的是逐线定义fieldOut。关键的洞见是给定的输入

代码语言:javascript
复制
fieldIn =  [x0, x1, x2, x3]
wordIn =   [w0, w1, w2]
fieldOut = [y0, y1, y2, y3]

您的输出必须是

代码语言:javascript
复制
if load:   [x0, x1, x2, x3] = fieldIn
if shift:  [y3, w0, w1, w2] = drop (lenght wordIn) fieldOut ++ wordIn
otherwise: [y0, y1, y2, y3] = fieldOut

因此,通过压缩fieldIndrop (length wordIn) fieldOut ++ wordIn,我们可以一点一点地生成它:

代码语言:javascript
复制
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 = zipWith toOutput fieldIn (drop (length wordIn) fieldOut ++ wordIn)
    toOutput input shifted = r
      where
        r = register False $ mux load (mux shift (r, shifted), input)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23512273

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档