双打上的 chisel3 算术运算
chisel3 arithmetic operations on Doubles
拜托,我在 chisel 中使用双精度数进行算术运算时遇到问题。我已经看到仅使用以下类型的示例:Int、UInt、SInt。
我看到 here 仅针对 SInt 和 UInt 描述了算术运算。双呢?
我试图将我的输出声明为 Double,但不知道如何声明。因为我的代码的输出是 Double。
有没有办法在 Bundle 中声明 Double 类型的输入和输出?
这是我的代码:
class hashfunc(val k:Int, val n: Int ) extends Module {
val a = k + k
val io = IO(new Bundle {
val b=Input(UInt(k.W))
val w=Input(UInt(k.W))
var out = Output(UInt(a.W))
})
val tabHash1 = new Array[Array[Double]](n)
val x = new ArrayBuffer[(Double, Data)]
val tabHash = new Array[Double](tabHash1.size)
for (ind <- tabHash1.indices){
var sum=0.0
for (ind2 <- 0 until x.size){
sum += ( x(ind2) * tabHash1(ind)(ind2) )
}
tabHash(ind) = ((sum + io.b) / io.w)
}
io.out := tabHash.reduce(_ + _)
}
当我编译代码时,出现以下错误:
code error
感谢您的关注,期待您的回复。
任何 HDL 都不直接支持对浮点数(在本例中为 Double)的操作。这样做的原因是,虽然 addition/subtraction/multiplication 的定点数定义明确,但浮点硬件在设计上有很多 space 权衡,因为它是一个复杂得多的硬件。
也就是说,高性能浮点单元本身就是一个重要的硬件,在任何实际设计中都会分时共享。
Chisel 确实有一个可能有用的本机 FixedPoint 类型。在实验包里
import chisel3.experimental.FixedPoint
还有一个项目 DspTools 支持双打模拟。有一些不错的功能,例如它允许模块在数字类型(Complex、Double、FixedPoint、SInt)上进行参数化,以便您可以 运行 模拟 double 以验证所需的数学行为,然后切换到满足精度标准的可合成数字格式.
DspTools 是一个正在进行的研究项目,团队非常感谢外部用户的反馈。
拜托,我在 chisel 中使用双精度数进行算术运算时遇到问题。我已经看到仅使用以下类型的示例:Int、UInt、SInt。 我看到 here 仅针对 SInt 和 UInt 描述了算术运算。双呢? 我试图将我的输出声明为 Double,但不知道如何声明。因为我的代码的输出是 Double。 有没有办法在 Bundle 中声明 Double 类型的输入和输出?
这是我的代码:
class hashfunc(val k:Int, val n: Int ) extends Module {
val a = k + k
val io = IO(new Bundle {
val b=Input(UInt(k.W))
val w=Input(UInt(k.W))
var out = Output(UInt(a.W))
})
val tabHash1 = new Array[Array[Double]](n)
val x = new ArrayBuffer[(Double, Data)]
val tabHash = new Array[Double](tabHash1.size)
for (ind <- tabHash1.indices){
var sum=0.0
for (ind2 <- 0 until x.size){
sum += ( x(ind2) * tabHash1(ind)(ind2) )
}
tabHash(ind) = ((sum + io.b) / io.w)
}
io.out := tabHash.reduce(_ + _)
}
当我编译代码时,出现以下错误: code error
感谢您的关注,期待您的回复。
任何 HDL 都不直接支持对浮点数(在本例中为 Double)的操作。这样做的原因是,虽然 addition/subtraction/multiplication 的定点数定义明确,但浮点硬件在设计上有很多 space 权衡,因为它是一个复杂得多的硬件。
也就是说,高性能浮点单元本身就是一个重要的硬件,在任何实际设计中都会分时共享。
Chisel 确实有一个可能有用的本机 FixedPoint 类型。在实验包里
import chisel3.experimental.FixedPoint
还有一个项目 DspTools 支持双打模拟。有一些不错的功能,例如它允许模块在数字类型(Complex、Double、FixedPoint、SInt)上进行参数化,以便您可以 运行 模拟 double 以验证所需的数学行为,然后切换到满足精度标准的可合成数字格式.
DspTools 是一个正在进行的研究项目,团队非常感谢外部用户的反馈。