0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

SpinalHDL里时钟域中的定制与命名

FPGA之家 来源:似猿非猿的FPGA 作者:似猿非猿的FPGA 2021-03-22 10:14 次阅读

聊一聊在SpinalHDL里时钟域中时钟的定制与命名。

相较于Verilog,在SpinalHDL里,其对时钟域有着更细致的描述,从而也能够更精细的控制和描述。而对于时钟域,我们往往关系的是:

时钟频率

复位电平:是高电平还是低电平

复位方式,是同步复位还是异步复位。

对于带有时序电路的逻辑而言,最常用的生成Verilog代码方式如下:

时钟域默认为异步高电平复位:

倘若要“定制”时钟域,那么往往采用下面的方式生成RTL代码:

这里在SpinalConfig里常用的用于“定制”时钟的有两个参数

defaultConfigForClockDomains

defaultClockDomainFrequency

defaultConfigForClockDomains参数可指定时钟域的配置,ClockDomainConfig中可指定的参数包含:

clockEdge:指定有效时钟沿(RISING、FALLING)

resetKind: 指定复位类型(ASYNC、SYNC)

resetActiveLevel: 指定复位类型(HIGH,LOW)

softResetActiveLevel:指定softReset类型(HIGH,LOW)

clockEnableActiveLevel: 指定时钟使能信号电平(HIGH,LOW)

上述代码最终生成的RTL为:

可以看到,复位信号变成了同步高电平复位形式。通过这种时钟域配置的方式,可以做到一键修改适配,从而避免一遍又一遍的posedge、negedge啰嗦~,同时又避免自己在繁杂的Verilog代码里手误(真实遇到过别人代码里复位一会儿posedge、一会儿negedge、估计是写懵了)。

而defaultClockDomainFrequency则用于指定时钟频率,当你的代码里若调用类似这样的lib函数那么指定时钟频率就尤为重要了:

val timeout = Timeout(10 ms) //Timeout who tick after 10 mswhen(timeout){ //Check if the timeout has tick timeout.clear() //Ask the timeout to clear its flag}》》时钟重命名

在当前的开发模式下,很难做到每个人都使用SpinalHDL,而当牵涉到多人合作时,时钟与复位信号的命名往往需达成一致,通过下面的方式可以修改默认时钟域的信号命名:

对应的RTL:

更通用一些,也可以根据复位信号的特征来指定名称:

原文标题:时钟域“定制”

文章出处:【微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。

责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1625

    文章

    21664

    浏览量

    601723
  • 时钟
    +关注

    关注

    10

    文章

    1720

    浏览量

    131346

原文标题:时钟域“定制”

文章出处:【微信号:zhuyandz,微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    台湾华科贴片电容的命名及封装

    台湾华科(YAGEO)贴片电容的命名规则及封装方式相对复杂但富有逻辑性,以下是对其命名规则及封装方式的详细归纳: 命名规则 台湾华科贴片电容的命名通常包含多个部分,每个部分代表不同的信
    的头像 发表于 11-13 14:59 173次阅读
    台湾华科贴片电容的<b class='flag-5'>命名</b>及封装

    基于STM32的WiFi联网自动校准时钟设计

    之前在uFUN试用群看到管理员说试用活动快结束了,要抓紧完成评测总结,看大家的评测总结也都写了,我也不能落后啊!正好最近做的扩展板到手了,于是赶紧进行调试,做了一个不用校准的时钟时钟这种小设计应该说是烂大街了吧!
    的头像 发表于 10-15 13:39 487次阅读
    基于STM32的WiFi联网自动校准<b class='flag-5'>时钟</b>设计

    大揭秘!电源模块命名有这么多讲究?

    电源模块命名方式
    的头像 发表于 08-28 09:35 301次阅读
    大揭秘!电源模块<b class='flag-5'>命名</b>有这么多讲究?

    简述时钟抖动的产生原因

    时钟抖动(Clock Jitter)是时钟信号领域中的一个重要概念,它指的是时钟信号时间与理想事件时间的偏差。这种偏差不仅影响数字电路的时序性能,还可能对系统的稳定性和可靠性造成不利影
    的头像 发表于 08-19 17:58 1502次阅读

    京准科技、大数据监控网络的NTP时钟同步服务器应用

    京准科技、大数据网络监控系统的NTP时钟同步服务器应用
    的头像 发表于 06-06 14:15 273次阅读

    时钟树的图好像是APB的时钟都是AHB给的,请问这些时钟为多少是哪儿配的呢?是sysinit吗?

    大家好,我看时钟树的图好像是APB的时钟都是AHB给的,请问这些时钟为多少是哪儿配的呢?是sysinit吗?
    发表于 05-11 07:34

    如何解决同步时钟系统中的常见问题和故障?

    同步时钟系统 在电力、通信、交通等领域中应用广泛,为保证其正常运行,需要进行系统的维护和保养。下面是述泰时钟总结的时钟同步系统维护常见问题及解决方法的介绍。 常见问题 GPS接收天线故
    的头像 发表于 03-19 10:42 1355次阅读
    如何解决同步<b class='flag-5'>时钟</b>系统中的常见问题和故障?

    浅析SpinalHDL中Pipeline中的复位定制

    之前有系列文章介绍了SpinalHDL中Pipeline的使用,最近在一个功能模块中真实的使用了这个lib。
    的头像 发表于 03-17 17:31 990次阅读
    浅析<b class='flag-5'>SpinalHDL</b>中Pipeline中的复位<b class='flag-5'>定制</b>

    时钟振荡器的电气参数都有哪些呢?

    时钟振荡器,一个在电子领域中不可或缺的专业术语。它利用晶体的谐振特性来产生稳定的电信号。
    的头像 发表于 03-13 11:37 546次阅读

    数字电路之时钟切换电路解析

    以上是一个比较经典的时钟切换电路。 根据实际使用场景的不同,时钟切换有很多不同的实现方法,都可以做得非常经典。 时钟,复位,是数字设计最最基本的电路,稍有不慎,就会毁了整个设计,一定
    的头像 发表于 02-18 18:22 3171次阅读
    数字电路之<b class='flag-5'>时钟</b>切换电路解析

    #2024,立Flag了嘛? #SBT文件内容

    := \"2.11.12\" fork := true libraryDependencies ++= Seq( \"com.github.spinalhdl\"
    发表于 01-21 11:00

    #2024,立Flag了嘛? #在win平台搭建SpinalHDL开发环境

    难度,安装完需要配置环境变量 新建系统变量 变量名:JAVA_HOME 变量值: D:\\\\SpinalHDL\\\\JAVA\\\\jdk-17变量值需要更新为你的安装路径 新建系统变量 变量名
    发表于 01-21 10:52

    SpinalHDL在顶层一键优化Stream/Flow代码生成

        在SpinalHDL在顶层一键优化代码中Stream/Flow代码生成的payload,fragment。 难看的代码       来看一段代码:   import
    的头像 发表于 12-14 09:05 639次阅读

    WT588F02B-C015语音芯片:内置丰富资源,助力个性化功能产品定制

    随着科技的飞速发展,语音芯片在众多领域中扮演着越来越重要的角色。作为一款备受瞩目的语音芯片,WT588F02B-C015(IO扩展)语音芯片凭借其内置丰富的资源和功能,成为了客户个性化产品定制的优选
    的头像 发表于 12-01 09:18 419次阅读
    WT588F02B-C015语音芯片:内置丰富资源,助力个性化功能产品<b class='flag-5'>定制</b>

    了解SiC器件的命名规则

    了解SiC器件的命名规则
    的头像 发表于 11-27 17:14 801次阅读
    了解SiC器件的<b class='flag-5'>命名</b>规则