我尝试编码浮动加法器; https://github.com/ElectronNest/FPU/blob/master/FloatAdd.scala 这是一半。
规范化是巨大的代码部分,因此我想使用for循环或某些等效的表示方法。 可以使用循环还是我们需要严格的编码?
最好, 高野圣
答案 0 :(得分:1)
这是一个非常笼统的大问题。可以使用多种技术来实现等效于硬件中的for循环,其中几乎所有技术都涉及用于保存状态信息的寄存器。查看您的代码,我建议您从头开始,开始处理语法,目前我看到许多语法错误。我将IntelliJ社区版用作编辑器,因为它在帮助正确构造代码方面做得很好。我也强烈建议从chisel-template存储库开始。它具有正确的布局以及工作电路和单元测试线束的示例。然后从一个较小的实现开始,该实现的操作很简单,例如将输入传递到输出并在测试工具中运行,然后慢慢构建电路以实现您的目标。
祝你好运!
答案 1 :(得分:0)
欢迎并感谢您对凿子的关注!
我想回应小鸡的建议,即从小的地方开始进行编译,模拟并从那里开始构建。特别是,上面的链接代码放大了一些Scala与Chisel的构造(例如Scala的if
else
,与Chisel的when
,.elsewhen
,.otherwise
) ,以及一些Verilog与Chisel的概念(例如,[high:low]
与Chisel的(high, low)
的位索引)
如果您还没有看到它,我建议您看一下Chisel Bootcamp,它有助于解释如何使用for
循环之类的结构来生成硬件。
我还将自己对this question on the chisel-users mailing list的回答插入其中,试图解释编写Chisel生成器背后的一些直觉,包括区分if
和when
并使用{{1} }循环。