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
    +关注

    关注

    1629

    文章

    21736

    浏览量

    603259
  • 时钟
    +关注

    关注

    10

    文章

    1733

    浏览量

    131474

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

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

收藏 人收藏

    评论

    相关推荐

    时序约束一主时钟与生成时钟

    Constraints窗口,clocks选择Create Clock,单击添加图标或双击Create Clock,进入创建窗口 Create Clock窗口中,Clock name为时钟约束命名,Source obj
    的头像 发表于 11-29 11:03 351次阅读
    时序约束一主<b class='flag-5'>时钟</b>与生成<b class='flag-5'>时钟</b>

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

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

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

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

    GaN晶体管的命名、类型和结构

    电子发烧友网站提供《GaN晶体管的命名、类型和结构.pdf》资料免费下载
    发表于 09-12 10:01 0次下载
    GaN晶体管的<b class='flag-5'>命名</b>、类型和结构

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

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

    简述时钟抖动的产生原因

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

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

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

    贴片电容是怎样命名的?

    贴片电容的命名方式通常包含一系列字符,用于标识其关键规格和属性。以下是贴片电容命名方式的一般结构和含义: 1、尺寸代码:这部分通常表示电容的物理尺寸,例如“0805”表示长度为0.08英寸,宽度为
    的头像 发表于 05-11 14:42 424次阅读
    贴片电容是怎样<b class='flag-5'>命名</b>的?

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

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

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

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

    浅析SpinalHDL中Pipeline中的复位定制

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

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

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

    数字威廉希尔官方网站 之时钟切换威廉希尔官方网站 解析

    以上是一个比较经典的时钟切换威廉希尔官方网站 。 根据实际使用场景的不同,时钟切换有很多不同的实现方法,都可以做得非常经典。 时钟,复位,是数字设计最最基本的威廉希尔官方网站 ,稍有不慎,就会毁了整个设计,一定
    的头像 发表于 02-18 18:22 3473次阅读
    数字威廉希尔官方网站
之<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