在Chisel中构建DspComplex ROM

灵魂

我正在尝试使用DSPComplex和FixedPoint类型构建基于ROM的Window函数,但是似乎一直遇到以下错误:

chisel3.core.Binding$ExpectedHardwareException: vec element 'dsptools.numbers.DspComplex@32' must be hardware, not a bare Chisel type

我尝试这样做的源代码如下所示:

class TaylorWindow(len: Int, window: Seq[FixedPoint]) extends Module {
    val io = IO(new Bundle {
        val d_valid_in = Input(Bool()) 
        val sample = Input(DspComplex(FixedPoint(16.W, 8.BP), FixedPoint(16.W, 8.BP)))
        val windowed_sample = Output(DspComplex(FixedPoint(24.W, 8.BP), FixedPoint(24.W, 8.BP)))
        val d_valid_out = Output(Bool()) 
    })
     val win_coeff = Vec(window.map(x=>DspComplex(x, FixedPoint(0, 16.W, 8.BP))).toSeq) // ROM storing our coefficients. 

    io.d_valid_out := io.d_valid_in
    val counter = Reg(UInt(10.W))

    // Implicit reset
    io.windowed_sample:= io.sample * win_coeff(counter)
    when(io.d_valid_in) {
        counter := counter + 1.U
    }
}
println(getVerilog(new TaylorWindow(1024, fp_seq)))

我实际上是从文件中读取系数(此特定窗口具有我在其他地方使用Python进行的复杂生成函数),并按以下步骤顺序进行

val filename = "../generated/taylor_coeffs"
val coeff_file = Source.fromFile(filename).getLines
val double_coeffs = coeff_file.map(x => x.toDouble)
val fp_coeffs = double_coeffs.map(x => FixedPoint.fromDouble(x, 16.W, 8.BP))
val fp_seq = fp_coeffs.toSeq

这是否意味着DSPComplex类型无法转换为Verilog?注释掉win_coeff行似乎使整个事情产生了(但显然并没有按照我想要的去做)

小鸡马克利

我认为您应该尝试使用

  val win_coeff = VecInit(window.map(x=>DspComplex.wire(x, FixedPoint.fromDouble(0.0, 16.W, 8.BP))).toSeq) // ROM storing our coefficients.

这将创建您想要的硬件值。Vec只是创建指定类型的Vec

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

测试DSPComplex ROM

如何在Chisel中使用VecInit(Array())创建ROM?

在BIOS中禁用CD-ROM

构建 AOSP 扩展 ROM 时出现插孔错误

能够看到CD-ROM中的曲目和位

如何在多列中创建rom数据图(ggplot)

MutableLiveData 不会触发 loadAfter 使用 PagedList 从 Android ROM 中获取

ARM 汇编中的 ROM 与 RAM 和 AREA 指令

巢状ROM中是否有错误?

用CM设备树和供应商树构建AOSP ROM?

构建Android ROM时编译自定义应用的错误跟踪

如何为基于ROM的程序预先初始化内存中的数据结构?

在Catmull-Rom样条曲线中两次使用相同坐标时出现的问题

GCC如何停止ROM中函数的误报隐式函数声明?

Powershell-检查CD-ROM驱动器中是否有CD

如何从C#中的ROM文件一次读取一个字节

如何通过PostgreSQL中的json列使用rom-sql查询记录?

如何将其他文件编译到Android ROM的根目录中

在C编程中,编译器是否会在与ROM相关的操作后忽略所有指令?

无服务器构建服务(例如AWS CodeBuild)可以用于构建Android AOSP ROM吗?

为什么叫ROM?

Quartus Prime编译ROM

如何加载Nested ROM?

如何查看ROM大小?

初学者需要什么工具和指南来为任何设备构建自定义ROM?

当磁盘映像安装在虚拟CD-ROM中时,磁盘映像中的数据存储在哪里?

为什么Lenovo 3000笔记本电脑的DVD-ROM插槽中的HDD速度较慢?

4.13.0-kali-amd64中的apt更新错误:“请使用apt-cdrom使该CD-ROM被APT识别”

DVD ROM无法正常工作