在spinalhdl中使用之前已有的verilog等代码的时候需要将这些代码包在一个blackbox里面,但是如果这些代码里面有时钟和复位,我们需要怎么将时钟和复位端口和spinalhdl中已有的时钟域连接起来呢?
当blackbox中只有一个时钟的时候可以直接使用mapclockdomain完成时钟信号和复位信号的赋值。在mapclockdomain中如果没有指定时钟域的话就采用的是默认时钟域。
import spinal.core._import spinal.lib._class bk extends blackbox{ val clka = in bool() val rsta = in bool() val din = in bool() val dout = out bool() mapclockdomain(clock = clka, reset = rsta)}class testblackbox extends component { val din = in bool() val dout = out bool() val bk = new bk bk.din din bk.dout dout}object testblackbox extends app{ spinalverilog(new testblackbox)}
当有两个时钟域的时候,就需要把时钟域给指定一下了,在下面代码中将时钟域通过参数的方式传了进来。
import spinal.core._import spinal.lib._class bk(clockdomaina: clockdomain, clockdomainb: clockdomain) extends blackbox{ val clka = in bool() val rsta = in bool() val clkb = in bool() val rstb = in bool() val din = in bool() val dout = out bool() mapclockdomain(clockdomaina,clock = clka, reset = rsta) mapclockdomain(clockdomainb,clock = clkb, reset = rstb)}class testblackbox extends component { val din = in bool() val dout = out bool() val clkb = in bool() val resetb = in bool() val clockdomainb = clockdomain(clock = clkb,reset = resetb) val bk = new bk(this.clockdomain,clockdomainb)//默认时钟域和新建的时钟域b bk.din din bk.dout dout}object testblackbox extends app{ spinalverilog(new testblackbox)}
因为在spinalhdl中默认时钟域是高复位的,但是我们已有的ip可能是低复位的,这个时候就需要在mapclockdomain中指定一下复位信号是high还是low。在下面代码中就将时钟域b下面的复位指定为低复位。
import spinal.core._import spinal.lib._class bk(clockdomaina: clockdomain, clockdomainb: clockdomain) extends blackbox{ val clka = in bool() val rsta = in bool() val clkb = in bool() val rstb = in bool() val din = in bool() val dout = out bool() mapclockdomain(clockdomaina,clock = clka, reset = rsta) mapclockdomain(clockdomainb,clock = clkb, reset = rstb, resetactivelevel = low)}class testblackbox extends component { val din = in bool() val dout = out bool() val clkb = in bool() val resetb = in bool() val clockdomainb = clockdomain(clock = clkb,reset = resetb) val bk = new bk(this.clockdomain,clockdomainb) bk.din din bk.dout dout}object testblackbox extends app{ spinalverilog(new testblackbox)}
以上三种情况应该足够应对一般情况下blackbox的时钟域的赋值了。
米尔电子MYC-Y6UL-V2核心板在机械智能控制器的应用
区块链技术将会如何对支付行业进行改造
华为计划将在2019年成为顶级智能手机品牌
NVIDIA DOCA架构的特点及应用
美国制裁福建晋华 欲逼其放弃研发和生产DRAM计划
SpinalHDL BlackBox时钟与复位
9月第十,10月第九:成立仅2年的蜂巢能源,为什么能有这样的爆发力
大学生适合什么笔记本电脑?华硕vivoBook15s,开学季必选品
干货!WiFi当前发展趋势及未来对IoT影响
电子警报器电路图解说明
如何判断洗后污渍测试条已经达到干燥状态
新能源汽车战略扶持结束之后应该怎么走
CO2气体保护焊的引弧操作_CO2气体保护焊的收弧操作
一文知道未来传感器的发展趋势
俄军机图154飞机黑海坠毁 机上93人无人生还
“芯”制造填补我国工厂化生产线空白
杭州国芯数字电视机顶盒芯片全球第一,2021年净利涨超20倍,募资4.59亿进行迭代升级
荣耀20Lite正式发布 对应国内版荣耀20i售价约合人民币2301元
彩晶第四季中尺寸面板出货比重或攀升到56%
ETC大力推广的背后是怎样的