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

    文章

    140

    浏览量

    111220
  • 代码
    +关注

    关注

    30

    文章

    4940

    浏览量

    73116
  • 同步器
    +关注

    关注

    1

    文章

    117

    浏览量

    15521
  • 综合器
    +关注

    关注

    0

    文章

    12

    浏览量

    6665

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

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    使用NucleiStudio生成tb仿真需要的.verilog文件

    打开仿真顶层文件tb_top.v,存放在ITCM模块里面的指令是通过readmemh函数读入.verilog文件实现的: 下面通过对NucleiStudio IDE进行设置,实现将c
    发表于 11-05 07:07

    如何解决将e203的rtl导入vivado后报语法错误的问题

    主要内容是介绍一下如何解决将e203的rtl导入vivado后,报语法错误的问题。 二、分享内容 如图所示,导入源码后跑仿真,会报语法错误。 这是因为这些文件里面有用system verilog
    发表于 10-24 09:49

    RTL级机器人电机控制器的FPGA设计

    借助Verilog,在FPGA中实现了带编码器的两台电机的电机控制系统的RTL级设计。
    的头像 发表于 07-07 14:01 2518次阅读
    <b class='flag-5'>RTL</b>级机器人电机控制器的FPGA设计

    Verilog编写规范

    用最右边的字符下划线代表低电平有效,高电平有效的信号不得以下划线表示,短暂的有效信号建议采用高电平有效。
    的头像 发表于 04-11 09:36 848次阅读

    FPGA Verilog HDL语法之编译预处理

    Verilog HDL语言和C语言一样也提供了编译预处理的功能。“编译预处理”是Verilog HDL编译系统的一个组成部分。Verilog HDL语言允许在程序中使用几种特殊的命令(它们不是一般
    的头像 发表于 03-27 13:30 1085次阅读
    FPGA <b class='flag-5'>Verilog</b> HDL语法之编译预处理

    英诺达推出RTL功耗优化工具

    英诺达(成都)电子科技有限公司隆重推出芯片设计早期RTL级功耗优化工具—EnFortius RTL Power Explorer(ERPE),该工具可以高效、全面地在RTL设计阶段进行功耗优化机会
    的头像 发表于 03-20 17:06 936次阅读

    浅谈直流有刷电机驱动及调速技术

    ,图1 为 H 桥电机驱动 电路示意图 : 图1 H桥电机驱动电路示意图 点击下方附件查看全文*附件:20250307_浅谈直流有刷电机驱动及调速技术.docx
    发表于 03-07 15:24

    Verilog中signed和$signed()的用法

    1、在verilog中有时会用signed修饰符来修饰定义的数据,运算的时候也会用$signed()任务来强制转换数据,那么signed的修饰是为什么呢,是为了区分有符号数和无符号数的加法和乘法
    的头像 发表于 02-17 17:47 1184次阅读
    <b class='flag-5'>Verilog</b>中signed和$signed()的用法

    浅谈Verilog和VHDL的区别

    Verilog和VHDL是两种广泛使用的硬件描述语言(HDL),它们用于描述和模拟数字电路系统的行为和结构。这两种语言的主要作用是帮助工程师设计、仿真和验证集成电路(IC)和系统级芯片(SoC)中的硬件模块。
    的头像 发表于 02-17 14:20 2621次阅读
    <b class='flag-5'>浅谈</b><b class='flag-5'>Verilog</b>和VHDL的区别

    信道编码和信源编码的区别

    信道编码和信源编码是数字通信系统中两个至关重要的环节,它们各自承担着不同的功能和角色。
    的头像 发表于 01-29 16:29 2863次阅读

    Verilog 电路仿真常见问题 Verilog 在芯片设计中的应用

    在现代电子设计自动化(EDA)领域,Verilog作为一种硬件描述语言,已经成为数字电路设计和验证的标准工具。它允许设计师以高级抽象的方式定义电路的行为和结构,从而简化了从概念到硅片的整个设计流程
    的头像 发表于 12-17 09:53 1600次阅读

    Verilog 与 ASIC 设计的关系 Verilog 代码优化技巧

    Verilog与ASIC设计的关系 Verilog作为一种硬件描述语言(HDL),在ASIC设计中扮演着至关重要的角色。ASIC(Application Specific Integrated
    的头像 发表于 12-17 09:52 1429次阅读

    Verilog 测试平台设计方法 Verilog FPGA开发指南

    Verilog测试平台设计方法是Verilog FPGA开发中的重要环节,它用于验证Verilog设计的正确性和性能。以下是一个详细的Verilog测试平台设计方法及
    的头像 发表于 12-17 09:50 1558次阅读

    Verilog与VHDL的比较 Verilog HDL编程技巧

    Verilog 与 VHDL 比较 1. 语法和风格 VerilogVerilog 的语法更接近于 C 语言,对于有 C 语言背景的工程师来说,学习曲线较平缓。它支持结构化编程,代
    的头像 发表于 12-17 09:44 2678次阅读

    ADS1281 PCM编码规范应该在哪里找?

    的是,根据文档M0是符合PCM编码的,请问这个PCM编码规范应该在哪里找?或者它是符合怎么样的规范。如何解码 解码公式1生成的yn也是符合PCM编码
    发表于 12-05 08:33