首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为信号提供用户定义的属性。

为信号提供用户定义的属性。
EN

Stack Overflow用户
提问于 2020-01-05 20:30:48
回答 1查看 67关注 0票数 0

免责声明:我对Scala不是很熟悉。我已经使用脊柱/Chisel一些测试我想做什么,以及创建一些简单的HW,所以请原谅我,如果这些问题是“入门级”从Scala的角度。

我计划使用SpinalHDL来实现连接自动化。我们有一堆不能/不会转换为SpinalHDL的IP,其中大部分是混合信号。正因为如此,我有些情况下,额外的信号信息将允许我进一步自动化的设计过程。例如,在某些情况下,某些信号位于不同的权力域上,它们之间的连接要么需要局限于上述特定的权力域,要么我们必须插入一些逻辑,比如电平移位器。

假设我有一些IP的信号(这个包在我的一个BlackBoxes上)

代码语言:javascript
复制
class MyBundle extends Bundle{
  val data     = in UInt(8 bits)
  val valid    = in Bool
  val pwr800mV = in Bool
  val pwr1800mv= in Bool
  val gnd      = in Bool
}

MyBundle位于BlackBox上,我在Component中实例化其中的几个。我的想法是能够遍历Bundle中的IOs/信号,并将它们连接到适当的更高级别的功率/地面信号。示例:

代码语言:javascript
复制
class PwrSignal(v : Double = 1.8) extends Bool{
  val voltage = v
}
class MyBundle extends Bundle{
  val data     = in UInt(8 bits)
  val valid    = in Bool
  val pwr800mV = in PwrSignal(0.8)
  val pwr1800mv= in PwrSignal(1.8)
  val gnd      = in Bool
}

class MyComponent extends Component{
  //IO creation
  //pseudo...
  walkBundleSignals{
    if (signal.voltage == 1.8){ signal := top_level_power_1p8v}
  }
}

起初,我尝试创建一个扩展Bool的PwrSignal类,但是这失败了,因为PwrSignal不是spinal.core.in的一部分。

有什么事要做吗?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-06 15:26:11

default :由于默认数据类型覆盖构造函数,您只需要“新建”用户定义的数据类型。

代码语言:javascript
复制
class PwrSignal(v : Double = 1.8) extends Bool{
  val voltage = v
}
class MyBundle extends Bundle{
  val data     = in UInt(8 bits)
  val valid    = in Bool
  val pwr800mV = in (new PwrSignal(0.8))
  val pwr1800mv= in (new PwrSignal(1.8))
  val gnd      = in Bool
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59603934

复制
相关文章

相似问题

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