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

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

3天内不再提示

RTL电路的设计原则和方法

冬至子 来源:梧桐芯语 作者:孙荣荣 2023-07-13 16:17 次阅读

既然RTL是寄存器传输级电路,那么电路设计就一定是以寄存器的特性为基础进行设计。

一般来说,RTL电路设计我们建议3个主要的原则:

  1. 时序逻辑与组合逻辑分开
  2. 数据路径与控制路径分开
  3. 先画电路,后写代码

以上3个原则,我们一个一个来看。

时序逻辑与组合逻辑分开

这里涉及到数字电路基础知识,不懂的小朋友还是先把数字电路设计原理学一下。我们一般把寄存器(DFF)以及锁存器(LATCH)看做是时序逻辑,也就是数据输出与时钟变化保持有一定的关系。具体的原理,可以参考之前关于寄存器工作原理分析的部分。而组合逻辑,则输出与时钟没有关系,仅仅因为输入信号的变化,会立即产生变化,如选择器、与门、或门、非门等。

如下图所示,就是一组完整电路的功能框图模型:

图片

其工作原理为:

(a) current state bits=↑(next state bits);

(b) next state bits=f1(inputs,current state bits);

(c) outputs=f2(inputs,current state bits);

这里面f1和f2就是分别算出next state bits以及outputs的组合电路功能。可以明确的电路,在这里就是时序逻辑电路,或者说是寄存器。所以我们在描述电路的时候,先描述寄存器就好:

1.jpg

接下来我们看,组合逻辑电路怎么设计。

数据路径与控制路径分开

假设我们想描述以下电路:

图片

那么时序逻辑的输入,也就是D端怎么获得?在正常的思考情况下,我们一般这样考虑问题,是有逻辑的:

如果满足XX条件(这里假设S0为0)那么D端来自于InA,否则如果满足XX条件(这里假设S1为1)则赋值为1'b0,否则如果满足XX条件(这里假设S2为1)则来源于InC跟InB的与逻辑,否则就保持不变。

这种数据来源的逻辑思考,利用选择器实现成电路,就是数据路径的设计思路。而利用VerilogHDL来描述电路,就只需要用assign以及?,:的组合,实现选择器的功能即可。而Synthesis综合工具,会根据最终的电路进行优化,实现最优的组合逻辑结构。对设计者来说,首先能做用选择器来设计数据路径就可以了。

1.jpg

而S0、S1跟S2是怎么来的?设计S0、S1跟S2就相当于这个电路模型组合逻辑的控制逻辑设计。

当然S0、S1、S2又可以看做一种数据路径进一步扩展设计,他们可能是组合逻辑直接赋值,也可能是时序逻辑寄存器的输出。

先画电路图,后写代码

由于前些年软件与互联网产业的蓬勃发展,越来越多的人都把软件视为生产力第一工具,却忽略了工程师的主观能动性。越来越多的年轻人投入到集成电路设计领域往往只是学习了VerilgHDL语言,就开始编写电路。殊不知这样的电路,往往会面临大量不可预知的bug,以及调试人员茫然的眼神。

也许有同学说了,现在有很多代码风格(coding style),写电路的时候按照标准的代码风格写就好。也许作为一个接近20年电路设计经验的老工程师来说,心中的电路已经非常清晰,按照coding style编写的电路还是比较好的,但仍然会因为电路逐步复杂,有些部分无法把握,会遇到疏漏。

在这里我还是呼吁各位同学,先把电路设计功底做好,再考虑如何用描述语言描述出来。至少,这个才叫做电路吧。这样做的好处主要有以下3点:

逻辑清晰,便于表达及传递思路

电路直观,便于Debug以及修改

信号定义明确,Coding只需照抄

RTL电路设计的方法

其实根据RTL电路设计的原则,我们认为一个已知接口信号以及功能定义的模块,可以从输出开始往输入推着写。

比如说,我们要设计一个4bit计数器,其功能要求如下:

  • 从0到15循环计数
  • 加电平输入信号P_M,P_M为1则往上加,P_M为0则往下减
  • 加脉冲输入信号Clr,Clr脉冲(高有效)来到,则计数器输出为0
  • 加脉冲输入信号Load,电平输入信号DIN[3:0],Load脉冲(高有效)来到则计数器输出加载为DIN[3:0]的值
  • 增加一个电平输入信号Hold,当Hold为高电平时,计数器保持当前值,不做增减。

那么首先我们分析这个寄存器的输入输出。

输出就是0~15的数值,需要4bit输出信号cnt_num,而输入除了时钟复位(clk,rstn)外,有P_M,Clr,Load,DIN[3:0]以及Hold。因此我们先把输入输出整理出来。

1.jpg

接着我们从输出设计开始往回(输入)推导,先定义输出需要的寄存器来存储每个周期变化用的计数值,cnt_r,并描述出来:

1.jpg

接着,根据功能定义,描述时序逻辑输入端的数据路径:

1.jpg

由于所有控制信号来源于输入,这个电路可以不做控制路径的设计。但有心的小伙伴应该发现了,如果Hold为高,则想加载DIN是无法实现的。因此这样设计的电路,其实是存在优先级的。需要与模块定义的朋友做深入交流,确保实际功能使用时不会出错。

同时,我们看到这个电路里用到了1个加法器和一个减法器,如果想进一步优化电路面积,我们可以考虑加法器的复用:

图片

这样做电路应该怎么改呢?留给大家去思考了。

复杂电路系统设计方法

现在又要有小伙伴说了,我们的电路很复杂的,如果每个都画出电路,那什么时候能投片。我的理解是,复杂电路都是简单电路的衍生,按照功能将系统进行框架划分,并定义出每个框架之间的接口信号及其时序要求,接着再通过画电路的方法,设计框架里的电路。有些小的电路实际上是会被复用的。每个公司产品线,大部分时间都会处于一个逐步演进的过程,小电路设计多数是刚开始,后续的工作量会逐步降低。

但如果公司从一开始就不重视画电路,只是电路描述做实现,也许前几款产品可以正常跑,过了一段时间,客户可能突然发现有些地方要优化,有些地方有bug,但之前设计人员可能已经离职。电路描述不好,电路图也没有,这个时候负责优化和解bug的小伙伴一定会郁闷的。

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

    关注

    31

    文章

    5305

    浏览量

    119923
  • 加法器
    +关注

    关注

    6

    文章

    183

    浏览量

    30078
  • 锁存器
    +关注

    关注

    8

    文章

    904

    浏览量

    41435
  • RTL
    RTL
    +关注

    关注

    1

    文章

    385

    浏览量

    59678
  • 时序逻辑电路

    关注

    2

    文章

    94

    浏览量

    16525
收藏 人收藏

    评论

    相关推荐

    集成电路的替换方法原则

    了解集成电路常见故障类型。掌握集成电路替换的原则方法和注意事项。可以使维修或替换集成电路事半功倍
    发表于 04-01 10:07 4247次阅读

    RTL8201N系列接口电路

    本帖最后由 azsxdcfv1871514 于 2013-1-6 14:56 编辑 RTL8201N系列接口电路RTL8201C,RTL8201CL,
    发表于 04-12 15:36

    FPGA设计基本原则及设计思想

    、在有效时钟沿到达后,数据输入至少还将稳定保持采样寄存器的Hold时钟之久,这条原则简称满足Hold时间原则。九、同步时序设计注意事项 异步时钟域的数据转换,组合逻辑电路的设计方法,同
    发表于 10-11 12:26

    RTL8308+RTL4204交换机原理图

    RTL8308+RTL4204交换机原理图 RTL8308电路原理图 RTL4204 原理图
    发表于 10-18 16:35 507次下载

    RTL TTL探头电路

    RTL TTL探头电路
    发表于 12-24 14:39 1161次阅读
    <b class='flag-5'>RTL</b> TTL探头<b class='flag-5'>电路</b>图

    RTL,RTL是什么意思

    RTL,RTL是什么意思 电阻晶体管逻辑电路 RTL电路-电
    发表于 03-08 11:19 1.4w次阅读

    设计复用的RTL指导原则

    设计可复用的基本要求是RTL 代码可移植。通常的软件工程指导原则RTL 编码时也适用。类似软件开发,基本的编码指导原则要求RTL 代码简单
    发表于 12-24 00:46 32次下载

    RTL8710模块常用使用方法

    Realtek 物联网(iot)领域SOC芯片rtl8710的使用方法
    发表于 05-25 10:01 0次下载

    RTL8111E和RTL8105E应用参考电路pdf下载

    RTL8111E和RTL8105E应用参考电路
    发表于 03-07 11:24 50次下载

    RTL8306SD和RTL8306SM应用参考电路pdf

    RTL8306SD和RTL8306SM应用参考电路
    发表于 03-09 09:40 78次下载

    RTL8111E和RTL8105E网卡驱动芯片的电路原理图

    本文档的主要内容详细介绍的是1RTL8111E和RTL8105E的电路原理图。
    发表于 01-10 08:00 79次下载
    <b class='flag-5'>RTL</b>8111E和<b class='flag-5'>RTL</b>8105E网卡驱动芯片的<b class='flag-5'>电路</b>原理图

    RTL8111E和RTL8105E网卡电路原理图免费下载

    本文档的主要内容详细介绍的是RTL8111E和RTL8105E网卡电路原理图免费下载。
    发表于 01-13 08:00 96次下载
    <b class='flag-5'>RTL</b>8111E和<b class='flag-5'>RTL</b>8105E网卡<b class='flag-5'>电路</b>原理图免费下载

    RTL8187和RTL8225USB无线网卡电路图与RTL822电路

    RTL8187和RTL8225USB无线网卡电路图+RTL8225电路图注释分析
    发表于 09-07 17:48 8次下载

    RTL8211 DEMO电路参考设计

    RTL8211 DEMO 电路参考设计
    发表于 01-29 09:36 43次下载

    专用集成电路的设计原则 专用集成电路的设计方法

    原则方法,以确保设计的成功和高质量。本文将详细介绍专用集成电路的设计原则方法。 一、设计原则
    的头像 发表于 05-04 17:16 1875次阅读