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

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

3天内不再提示

浅谈RTL设计风格及Verilog编码规范

FPGA之家 来源:FPGA之家 作者:FPGA之家 2021-06-12 17:20 次阅读

一、同步设计

1.1 时钟的同步设计

关注问题:

(1)设计中尽可能使用单时钟和单时钟边沿触发

(2)不要使用例如“与”“或”门这些基本单元来生成RS锁存或者FF

(3)不要在组合逻辑中引入反馈电路

在HDL设计中使用同步设计思想以及逻辑综合工具。使用异步时钟会让更加精确的时序约束变得困难,因此,尽可能利用单个时钟和单边沿。(使用单个时钟在多数设计中很难实现,在设计中尽量减少时钟数量以减轻分析的复杂度)

尽管可以使用基本门来实现RS或FF,但时序分析工具会把它视作对组合电路的反馈,如果无法避免,则需要使用set_disable_timing设置来避免时序分析期间反馈环路的影响。

避免在内部电路生成异步时钟,如果需要生成这样的时钟,那么推荐在生成时钟的FF输出端使用create_clock来指定时钟。

避免反馈跨越异步复位,同样的,避免使用门控时钟和门控复位。

二、 复位问题

2.1 使用异步复位作为初始的复位

关注问题:

(1)使用同步复位电路可能会导致综合器生成无法正确复位的电路,同时,同步复位会在数据路径引入复位信号(延迟让时序变得困难),在多时钟系统中可能需要计数器来保证复位信号宽度。但同步复位并不是完全没有优点,比如,保证系统是完全同步的,可以滤除掉复位信号的一些小毛刺,同步复位需要更少的触发器等等,这些问题整理详细文章讨论。

(2)使用异步复位对寄存器进行初始的复位会更加安全

(3)除了复位功能外,复位/置位的引脚不要用作它途

(4)在同一个复位线路上禁止同时使用同步复位和异步复位

(5)一个FF尽量不使用异步复位和异步置位

异步复位示例:

always结构仅会由时钟上升沿以及低有效的复位信号触发

always @(posedge CLK or negedge RST_X) if (!RST_X) Q 《= 1‘b0; else Q 《= DATA;

请注意上面表述的是初始复位(Initial reset)推荐使用异步复位。异步复位的时序分析比较困难,因为时序路径会被切断,从而没有考虑到B的复位输入到寄存器B的输出Q的时序。同时,A的输出到B异步复位的的时序也不会被分析。

2.2 复位问题

注意问题:

(1)不要在复位路径引入逻辑电路

例:

reg[4:0] count; wire REN_X,EN_X,count32_x,ctl_x; assign count32_x = ~(& count) | ctl_x; assign REN_X = EN_X | count32_x; always @( posedge CLK or negedge REN_X ) if(REN_X == 1’b0) Q 《= 1‘b0; else Q 《= D;

当组合逻辑产生复位信号时,由于优化的原因,使能信号可能会和FF分离,并且不排除危险信号驱动复位信号的可能性(FF可能会以意外的时序复位)。如上图所示,即使在RTL描述中的FF复位信号前插入了使能逻辑,也可能会发生这种情况。并且一旦发生这种问题,很难排查。总而言之,设计电路不要总依赖综合工具的优化。

2.2.1 噪声,毛刺

复位信号不排除会被噪声干扰,产生一些毛刺,因此,推荐使用滤波,但引入滤波也不是必须的,视情况而定。下图是高有效复位的滤波电路

如果是低有效复位?

滤波波形原理:

2.2.2 亚稳态问题

以低有效异步复位为例,如果复位信号在时钟沿释放(或附近),不满足Recovery Time以及Removal Time,会出现亚稳态,所谓复位恢复时间就是,复位释放的时间距离时钟沿(上升沿)的时间,复位移除时间就是,复位释放的时间距离时钟沿(上升沿)的时间。和数据建立时间保持时间一样,都要满足一定的时序要求。这是需要关注的问题。

2.2.3 同步器/异步复位同步释放

module async_resetFFstyle2 ( output reg rst_n, input clk, asyncrst_n); reg rff1; always @(posedge clk or negedge asyncrst_n) if (!asyncrst_n) {rst_n,rff1} 《= 2’b0; else {rst_n,rff1} 《= {rff1,1‘b1}; endmodule

外部的复位信号进入推荐使用异步复位同步释放,下面是代码综合出的电路图,这种设计有它的优势。

编辑:jq

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

    关注

    3

    文章

    136

    浏览量

    109427
  • 代码
    +关注

    关注

    30

    文章

    4536

    浏览量

    66498
  • 同步器
    +关注

    关注

    1

    文章

    78

    浏览量

    14476
  • 综合器
    +关注

    关注

    0

    文章

    8

    浏览量

    6381

原文标题:RTL设计风格及Verilog编码规范(一)

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

收藏 人收藏

    评论

    相关推荐

    8b10b编码verilog实现

    8b/10b编码是一种用于减少数据线上的低效能时钟信号传输的技术,通过在数据流中插入特殊的控制字符,来同步数据和时钟。在Verilog中实现8b/10b编码器可以通过以下步骤完成: 定义8b/10b
    发表于 03-26 07:55

    浅谈Verilog HDL代码编写风格

    深层次的问题,对于这个行业来说可能我才是一直脚踩在门外面。所以这篇文章是写给一些刚开始学习FPGA、Verilog HDL的同学,我看过一些大神写的代码,然后尽量模仿大神写法,经过好几个大神的影响和自己
    的头像 发表于 11-20 10:04 273次阅读
    <b class='flag-5'>浅谈</b><b class='flag-5'>Verilog</b> HDL代码编写<b class='flag-5'>风格</b>

    Verilog代码风格规范

    发表于 11-07 10:14

    JK触发器与T触发器的Verilog代码实现和RTL电路实现

    JK 触发器的 Verilog 代码实现和 RTL 电路实现
    的头像 发表于 10-09 17:29 2107次阅读
    JK触发器与T触发器的<b class='flag-5'>Verilog</b>代码实现和<b class='flag-5'>RTL</b>电路实现

    单片机程序设计编程规范分享

    规范适用于松翰科技 8-bit MCU 部门汇编程序编写准则,同样适用于代理商及重要客户工程师编程规范参考。本规范的目的为统一编程风格,保证程序编写质量,提高程序的可移植性和维护性。
    发表于 09-25 08:06

    二十进制编码器及Verilog HDL描述 Verilog HDL程序的基本结构及特点

    节通过硬件描述语言Verilog HDL对二十进制编码器的描述,介绍Verilog HDL程序的基本结构及特点。
    的头像 发表于 08-28 09:54 1154次阅读
    二十进制<b class='flag-5'>编码</b>器及<b class='flag-5'>Verilog</b> HDL描述 <b class='flag-5'>Verilog</b> HDL程序的基本结构及特点

    IC设计之Verilog代码规范

    Verilog规范对于一个好的IC设计至关重要。
    的头像 发表于 08-17 10:14 595次阅读
    IC设计之<b class='flag-5'>Verilog</b>代码<b class='flag-5'>规范</b>

    FPGA的Verilog代码编写规范

      注:以R起头的是对编写Verilog代码的IP设计者所做的强制性规定,以G起头的条款是建议采用的规范。每个设计者遵守本规范可锻炼命名规范性。
    的头像 发表于 08-15 16:23 1135次阅读

    什么是良好的Verilog代码风格

    推荐的代码风格。3、代码风格1、规则总览在设计这个模块的时候,我主要遵从了以下几条规则:Verilog2001标准的端口定义DUMMY模块逻辑型信号用参数赋值内嵌断言memory shell2、规则解释接下来
    发表于 06-02 14:48

    阿里AliOS的编码风格

    其实,我们身边就有很多“好的资源”值得学习,比如本文分享的 阿里 AliOS 的编码风格
    发表于 06-02 09:26 111次阅读

    Verilog编码风格的建议

    良好的编码风格,有助于代码的阅读、调试和修改。虽然 Verilog 代码可以在保证语法正确的前提下任意编写,但是潦草的编码风格往往是一锤子买
    的头像 发表于 06-01 16:27 474次阅读
    <b class='flag-5'>Verilog</b><b class='flag-5'>编码</b><b class='flag-5'>风格</b>的建议

    一本Verilog HDL代码对应电路的书,助你快速编写可综合模型

    建立用于RTL综合的Verilog标准化子集。他是贝尔实验室所开发的ArchSyn综合系统的主要设计者之一。他曾为AT&T和Lucent的许多设计师讲授Verilog HDL语言和Verilo
    的头像 发表于 05-26 16:59 944次阅读
    一本<b class='flag-5'>Verilog</b> HDL代码对应电路的书,助你快速编写可综合模型

    浅谈System Verilog的DPI机制

    System Verilog(SV)把其他编程语言统一成为外语,Foreign Programming Language(FPL)。
    的头像 发表于 05-23 15:39 975次阅读
    <b class='flag-5'>浅谈</b>System <b class='flag-5'>Verilog</b>的DPI机制

    X态如何通过RTL级和门级仿真模型中的逻辑进行传播呢?

    Verilog中,IC设计工程师使用RTL构造和描述硬件行为。但是RTL代码中的一些语义,并不能够准确地为硬件行为建模。
    的头像 发表于 04-20 09:12 1267次阅读

    RTL顶层自动连线的秘密武器:Emacs verilog-mode介绍

    Verilog-mode.el 是用于 Emacs 的非常流行的免费 Verilog 模式,它提供上下文相关的突出显示、自动缩进,并提供宏扩展功能以大大减少 Verilog 编码时间。
    的头像 发表于 04-03 10:48 1586次阅读