用于Chisel中的循环表示(Float Adder中的@Normalization)

时间:2019-01-19 10:21:42

标签: chisel

我尝试编码浮动加法器; https://github.com/ElectronNest/FPU/blob/master/FloatAdd.scala 这是一半。

规范化是巨大的代码部分,因此我想使用for循环或某些等效的表示方法。 可以使用循环还是我们需要严格的编码?

最好, 高野圣

2 个答案:

答案 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生成器背后的一些直觉,包括区分ifwhen并使用{{1} }循环。