【SpinalHDL快速入门】5.3、SpinalHDL组织结构之function

news/2024/11/15 4:00:05/

文章目录

    • 1.1、简介
    • 1.2、RGB to gray
    • 1.3、Valid Ready Payload 总线

1.1、简介

使用Scala function 生成硬件的方式与VHDL/Verilog有很大不同:

  • 您可以在其中实例化寄存器、组合逻辑和组件
  • 您不必使用限制信号赋值范围的 process/@always 块。
  • 一切都是通过引用传递,这使得操作变得容易。

例如,您可以将总线作为参数传递给函数,然后该函数可以在内部读取/写入总线。 您还可以从Scala返回Component、Bus或任何其他内容。

1.2、RGB to gray

例如,如果您想使用系数将红/绿/蓝色转换为灰度,则可以使用函数来应用它们:

// Input RGB color
val r, g, b = UInt(8 bits)// Define a function to multiply a UInt by a Scala Float value.
def coef(value: UInt, by: Float): UInt = (value * U((255 * by).toInt, 8 bits) >> 8)// Calculate the gray level
val gray = coef(r, 0.3f) + coef(g, 0.4f) + coef(b, 0.3f)

1.3、Valid Ready Payload 总线

例如,如果您定义了一个带有Valid Ready Payload的简单总线,那么您可以在其中定义一些有用的函数。

case class MyBus(payloadWidth: Int) extends Bundle with IMasterSlave {val valid   = Bool()val ready   = Bool()val payload = Bits(payloadWidth bits)// Define the direction of the data in a master modeoverride def asMaster(): Unit = {out(valid, payload)in(ready)}// Connect that to thisdef <<(that: MyBus): Unit = {this.valid   := that.validthat.ready   := this.readythis.payload := that.payload}// Connect this to the FIFO input, return the fifo outputdef queue(size: Int): MyBus = {val fifo = new MyBusFifo(payloadWidth, size)fifo.io.push << thisreturn fifo.io.pop}
}class MyBusFifo(payloadWidth: Int, depth: Int) extends Component {val io = new Bundle {val push = slave(MyBus(payloadWidth))val pop  = master(MyBus(payloadWidth))}val mem = Mem(Bits(payloadWidth bits), depth)// ...}

http://www.ppmy.cn/news/252863.html

相关文章

SpringCloud-stream一体化MQ解决方案-概念篇

参考资料: 参考demo 参考视频1 参考视频2 官方文档(推荐) 官方文档中文版 关于Kafka和rabbitMQ的安装教程,见本人之前的博客 rocketMq的安装教程

外置光驱DVD-RW错误解决

解决方式&#xff1a; 1&#xff1a;USB供电不足&#xff0c;切换3.0接口&#xff1b; 2&#xff1a;设置区域

html文件怎么用影音先锋打开,先锋影音怎么用

先锋影音怎么用 首先下载影音先锋&#xff0c;你可以在本页面下面下载影音先锋&#xff0c;也可以访问百度首页&#xff0c;在百度搜索“影音先锋”&#xff0c;点击“百度一下”&#xff0c;然后进入影音先锋的官方网站。 点击“影音先锋晕3D版下载”按钮开始下载影音先锋&…

DVD列表

欧美片&#xff1a;杀死比尔1 杀死比尔2 蜘蛛侠1 蜘蛛侠2 花木兰2 华氏911 生化危机2 特洛伊 蝎子王 美丽人生D5 美丽人生 D9 太阳泪 终结者2 MK 赤裸特工 黑客帝国1 花花公子50年纪念 2D9 魔戒1 魔戒2 魔戒3 拯救大兵瑞恩 战栗汪洋 阿甘正传 勇敢的心 ML 勇敢的心 CJ 怒海争锋…

DVD-R和DVD+R有什么区别

要说区别&#xff0c;我想先说说关于DVD碟片的一些历史,让大家了解为什么DVD碟片会有/-之分。 1997年&#xff0c;日本先锋(Pioneer)公司发布了全球第一款DVD刻录机&#xff0c;当时的售价高达35,000美元&#xff0c;想想现在的价格&#xff0c;大家还是很幸福的。该款刻录机使…

xfplay(先锋影音) v8.9.8 官方版

xfplay(先锋影音) v8.9.8 官方版 软件大小&#xff1a;14.9MB软件语言&#xff1a;简体中文软件类别&#xff1a;影音播放软件授权&#xff1a;绿色版更新时间&#xff1a;2015-04-04应用平台&#xff1a;/Win8/Win7/WinXP它是一款支持在线播放视、音频的播放器软件。它资源丰富…

DVD影碟特色功能大展

作 者&#xff1a;sherlock来 源&#xff1a;PCPOP发布时间&#xff1a;2005-1-24人气指数&#xff1a;12098类 别&#xff1a;DVD常识关键词&#xff1a;简 介&#xff1a; 从经典帖子《要X片么&#xff1f;》说开去 在文章开始之前&#xff0c;先请大家来看一篇在网上广为…

我收藏的电影DVD

我非常喜欢看电影&#xff0c;当然由于我们现在的国情&#xff0c;我很少去电影院看。以前是租碟&#xff0c;现在有了宽带&#xff0c;就从网上下载了看。有些我看了以后觉得非常好&#xff0c;有收藏价值&#xff0c;就去买DVD回来收藏。 也许是男人的天性吧&#xff0c;我…