当前位置: 首页 > article >正文

SpinalHDL之结构(八)

本文作为SpinalHDL学习笔记第六十八篇,介绍SpinalHDL的参数化(Parametrization)。

目录:

1.简介(Introduction)

2.细化阶段的参数(Elaboration time parameters)

3.可选择的硬件⽣成(Optional hardware)

⼀、简介(Introduction)

SpinalHDL的参数化概念涉及多个⽅⾯:
◆给设计提供细化阶段(elaboration time)的参数
◆可选择的硬件⽣成

⼆、细化阶段的参数(Elaboration time parameters)

你可以⽤整个Scala语⾔来提供细化时间时的参数。

下⾯是类参数的例⼦:

case class MyBus(width: Int) extends Bundle {
val mySignal = UInt(width bits)
}
case class MyComponent(width: Int) extends Component {
val bus = MyBus(width)
}

你也可以在scala对象中定义全局变量, 但是需要注意最近增加的ScopeProperty特点能提供更好的解决办法。

三、可选择的硬件⽣成(Optional hardware)

对于可选择的信号:

case class MyComponent(flag: Boolean) extends Component {
val mySignal = flag generate (Bool()) //等价于"if(flag) in Bool() else null"
}

你也可以在Bundle中做相同的事情。

如果你想⽆效⼀块硬件的⽣成:

case class MyComponent(flag: Boolean) extends Component {
val myHardware = flag generate new Area {
//可选择的电路
}
}

你也可以⽤scala循环:

case class MyComponent(amount: Int) extends Component {
val myHardware = for(i <- 0 until amount) yield new Area {
//可选择的电路
}
}

所以, 在细化期间你想怎么运⽤Scala就怎么运⽤, 包括始终整个Scala集合(List, Set, Map, ...)来搭建数据模型并把他们以程序的⽅式转化成硬件(例如对列表元素迭代)。
 


http://www.kler.cn/a/326308.html

相关文章:

  • 代码随想录算法训练营第六十天|KM94.城市间货物运输Ⅰ|KM95.城市间货物运输Ⅱ|KM96.城市间货物运输Ⅲ
  • 《解锁图像的语言密码:Image Caption 开源神经网络项目全解析》
  • 芯片详细讲解,从而区分CPU、MPU、DSP、GPU、FPGA、MCU、SOC、ECU
  • 【Java项目】基于SpringBoot的【校园交友系统】
  • api开发如何在代码中使用京东商品详情接口的参数?
  • OpenAI 故障复盘 - 阿里云容器服务与可观测产品如何保障大规模 K8s 集群稳定性
  • 记一次pycharm在使用git提交时需要输入ssh key的密码的问题
  • 第十一届蓝桥杯嵌入式省赛程序设计题解析(基于HAL库)(大学组)
  • HTTPS协议详解:从原理到流程,全面解析安全传输的奥秘
  • 资产管理之源代码防泄密的挑战
  • Redis 简单的消息队列
  • 并发、并行和异步设计
  • Linux 信号保存
  • 【菜菜的sklearn机器学习】(4)随机森林
  • 六,MyBatis-Plus 扩展功能(逻辑删除,通用枚举,字段类型处理,自动填充功能,防全表更新与删除插件,MybatisX快速开发插件)
  • 探索基于知识图谱和 ChatGPT 结合制造服务推荐前沿
  • 【Android 14源码分析】WMS-窗口显示-流程概览与应用端流程分析
  • C语言中的日志机制:打造全面强大的日志系统
  • 翻译:Recent Event Camera Innovations: A Survey
  • 30秒内交易股票,程序化交易的定义与特点
  • 【Windows】自定义显示器的分辨率
  • @Transactional的实现原理
  • openKylin--安装 .net6.0
  • 【linux】gdb
  • 鸿蒙HarmonyOS之封装Http请求工具类
  • Spring Boot 进阶-第一个程序HelloWorld