数字集成电路设计(四、Verilog HDL数字逻辑设计方法)(二)

news2024/10/7 6:44:47

文章目录

  • 3. 时序电路的设计
    • 3.1 触发器
      • 3.1.1 最简单的D触发器
      • 3.1.2 带复位端的D触发器
      • 3.1.3 复杂功能的D触发器(没有太大必要)
      • 3.1.4 T触发器
    • 3.2 计数器
      • 3.2.1 二进制计数器
      • 3.2.2 (重要)任意进制计数器
    • 3.3 移位寄存器
    • 3.4 序列信号发生器
      • 3.4.1 例:产生10011序列的信号发生器
      • (总结)序列信号发生器
      • 3.4.2 伪随机码发生器


3. 时序电路的设计

  • 所有的是时序逻辑电路都可以拆成组合逻辑电路+存储
    (关于组合逻辑电路的理解可以参考我数电的博客https://blog.csdn.net/y_u_yu_yu_/article/details/127592466)
    在这里插入图片描述

  • 可以分成两个部分,组合逻辑电路和存储电路。组合逻辑电路的输入一个是x信号一个是当前的状态,这两个信号决定了组合电路的输出结果

  • 组合电路的输出有两个,一个是对外输出信号,还有一个是对下一个状态的激励

  • 三大方程:输出方程,驱动方程和状态转移方程

  • 时序电路的设计过程:在对时序逻辑电路描述的时候,我们说把这三个方程描述清楚,电路就出来了

  • 时序电路设计的方式:
    在这里插入图片描述

  • 时序逻辑电路的设计多样性和方法多样性举例

  • 例:用VerilogHDL 设计一个“111”序列检测器,当输入三个或三个以上的“1”时,电路输出为1,否则为 0。

  • 第一种:状态转移图描述方式
    (1)首先确定电路的输入变量和输出变量。该电路仅有一个输入端和一个输出端,设输入变量为 X,代表输入序列;输出变量为 Z,表示检测结果
    在这里插入图片描述
    (2)因此需要定义四种电路状态
    s0一初始状态,表示电路还未收到一个有效的 1
    s1一表示电路收到了一个 1
    s2一表示电路收到了连续的两个 1
    s3一表示电路收到了连续的二个 1
    (3)根据状态转移图,编写代码
    在这里插入图片描述在这里插入图片描述

  • 综合的电路:
    在这里插入图片描述

  • 第二种:基于状态化简的结构性描述方式
    (1)对图 4.3-3 所的状态转移图进行化简,仅剩三个状态,需要用两位二进制数表示,即需要两个D触发器储存状态。设Q1表示高位寄存器的输出,Qo表示低位寄存器的输出。将状态的跳转以及输出Z 用卡诺图的形式示出,
    在这里插入图片描述
    (2)由卡诺图得出带你路有的输出方程和状态方程
    在这里插入图片描述
    (3)根据简化方程编写代码
    在这里插入图片描述

  • 综合的电路:
    在这里插入图片描述

  • 第三种:Verilog HDL抽象描述方式

  • 在 Verilog HDL中还可以对电路进行抽象描述。实现序列“111”的检测,可以使用1个三位的移位寄存器,将输入X作为移位寄存器的输入,当寄存器中为111时,输出Z为1。

  • 代码

  • 综合的电路
    在这里插入图片描述

3.1 触发器

  • 触发器是时序逻辑电路的最基本电路单元,主要有 D触发器、JK 触发器、T触发器和RS 触发器等。根据功能要求的不同,触发器还具有置位、复位、使能、选择等功能
  • !!RS触发器分为普通RS触发器和中控RS触发器,是最早期的触发器类型,性能不是很稳定,只是由一个SET和RESET两个端,这种电路在时序电路设计中很少使用
  • !!JK触发器有两个端子,早期的电路希望有两个而不是一个信号进行控制触发器
  • !!!!D触发器是目前时序电路中用的最广泛的触发器,基本上都是D触发器(重点是D触发器)

3.1.1 最简单的D触发器

在这里插入图片描述

  • 还有两个SET和CLR,SET是置位可能是置一置零,CLR是清零的信号
  • 用HDL描述:
    在这里插入图片描述

3.1.2 带复位端的D触发器

  • 在D触发器的实际使用中,有时需要一个复位端(也称清零端)。
    在这里插入图片描述
  • 电路上电时,电路的逻辑处于不定状态,复位脉冲的到来将电路初始化为 Q=0 的状态随后,在时钟的控制下,输入端D的数据在每个时钟上升沿被置到输出端Q
  • HDL描述:
    (1)同步清零:
    在这里插入图片描述在这里插入图片描述
    (2)异步清零:
    在这里插入图片描述

3.1.3 复杂功能的D触发器(没有太大必要)

  • 前面介绍了最简单的 D触发器和带有同步清 0、异步清0的D触发器。这里给出同步清0置1和异步清0置1共同在一个触发器上的复杂 D触发器例子
  • Verilog代码:
    在这里插入图片描述

3.1.4 T触发器

  • 其逻辑功能为:当时钟的有效边沿到来时,如果 T=1,则触发器翻转;如果T=0,则触发器的状态保持不变。reset 为复位端,异步复位,低电平有效。
    在这里插入图片描述
  • 带有异步清零的T触发器代码:
    在这里插入图片描述

3.2 计数器

  • 计数器是应用最广泛的逻辑部件之一。计数器可以统计输入脉冲的个数,具有计时计数、分频、定时、产生节拍脉冲等功能
  • 计数器的种类繁多,根据计数器中触发器时钟端的链接方式分为同步计数器和异步计数器:根据计数方式分为二进制计数器、十进制计数器和任意进制(也称为 M 进制)计数器根据计数器中的状态变化规律分为加法计数器、减法计数器和加/减计数器
  • !!在面试中,经常会考,会让你设计一个二分频电路,三分频电路或者n分频电路,但是目的其实就是让你设计一个计数器

3.2.1 二进制计数器

在这里插入图片描述

  • HDL描述
    在这里插入图片描述

3.2.2 (重要)任意进制计数器

  • 需要注意两个事情:位宽和奇数方式
  • 计数方式有两种实现方法:反馈清零法(从0开始,来一个加一个,加到一定清零)和反馈置数法(从置数开始,来一个减一个,减到0回到置数)。
  • 位宽:对于M 进制的计数器,第一步需要确定计数器所需要触发器的个数。N个触发器对应了2的N次方个状态,应有2的N次方>M。任意进制计数器选取满足条件的最小N为计数器中触发器的个数。
  • 以十一进制计数器为例,最少需要 4 个触发器。采用反馈清零法设计的十一进制计数器的 VerilogHDL程序代码如下:
    在这里插入图片描述

3.3 移位寄存器

  • 移位寄存器可以用来实现数据的串并转换,也可以构成移位行计数器,进行计数、分频,还可以构成序列码发生器、序列码检测器等,它也是数字系统中应用非常广泛的时序逻辑部件之一
  • 环形移位寄存器
    -
  • 该例中,将每个寄存器的输出作为下一位寄存器的输入,并将高位寄存器的输出作为循环的输入。Verilog代码如下:
    在这里插入图片描述在这里插入图片描述
  • !!!!移位寄存器有一个特殊的用法:移位操作符由于在触发器和触发器直接没有组合电路,所以移位寄存器这种电路的速度特别快,在数字电路里面,可以说是最快的电路,所以用移位寄存器可以做很多高速电路的设计

3.4 序列信号发生器

  • 序列信号是数字电路系统中常用的功能单元,其种类很多,如按照序列循环长度 M 与触发器数目 n的关系,一般可分为三种:
    (1)最大循环长度序列码,M = 2n
    (2)最长线性序列码(m序列码),M = 2n-1。(少了全0的状态)
    (3)任意循环长度序列码,M < 2n

3.4.1 例:产生10011序列的信号发生器

(1)方法1:用移位寄存器构成

  • 采用循环移位寄存器,在电路工作前,将所需的序列码置入移位寄存器中,然后循环移位,就可以不断地产生需要的序列。
  • 由于移位寄存器输入和输出信号之间没有组合电路,不需要进行组合逻辑的反馈运算,因此这种序loadclk列产生电路的工作频率很高。
  • 缺点是移位寄存Dm-i器长度取决于序列长度,因此所占用电路的面积很大
    在这里插入图片描述
  • Verilog代码:
    在这里插入图片描述
    (2)方法2:用移位寄存器和组合逻辑电路构成(数电教材中的方法)
  • 反馈移位寄存器型序列信号发生器的结构框图如图 4.3-14 所示,它由移位寄存器和组合反馈网络组成,从移位寄存器的某一输出端可以得到周期性的序列码。
    在这里插入图片描述
  • 设计步骤:
    1.根据给定的序列信号的循环周期M,确定移位寄存器位数n,2n-1 < M ≤ 2n
    2.确定移位寄存器的M个独立状态。将给定的序列码按照移位规律每n位一组划分为 M 个状态。若M个状态中出现重复现象,则应增加移位寄存器位数。用n+1位再重复上述过程,直至划分为 M 个独立状态
    3.根据 M个不同的状态列出移位存器的态序表和反馈数表,求出馈函数 F的表达式
    4.检查自启动性能
    在这里插入图片描述
  • Verilog代码:
    在这里插入图片描述在这里插入图片描述
  • 状态转移图,三大方程,结构体描述,这三种描述都可以设计这个东西
  • 得到反馈函数之后实际上用的还是移位寄存器,只不过以为寄存器的最低端是反馈函数,函数化简逻辑代数表达式的形式可以得到这个值,然后连接在一起
    (3)方法3:由计数器构成
  • 计数型序列信号发生器和反馈型序列信号发生器大体相同,都由时序电路和组合电路两部分构成。不同之处在于,反馈型序列信号发生器的时序状态由移位寄存器产生,输出取寄存器的最高位;而在计数型序列信号发生器中,采用计数器代替移位寄存器产生时序状态,输出由组合电路产生。
  • 计数型序列信号发生器的优点在于,计数器的状态设置与输出序列没有直接关系,不需要根据输出确定状态,只需要将反馈网络设计好就可以了。因此计数结构对于输出序列的更改比较方便,而且只要连接到不同的反馈网络,就可以同时产生多组序列码。
    在这里插入图片描述
  • 实际上就是一个译码电路
  • 分为两步
    1.根据序列码的长度 M 设计 M 进制计数器,状态可以自定
    2.按计数器的状态转移关系和序列码的要求设计组合输出网络
  • 对于“100111”序列的信号发生器,序列信号的 M 值为6,因为需选用模6计数器计数器的状态选择从000到101
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述
  • 其中,译码电路也可以用case语句进行设计

(总结)序列信号发生器

  • 实际上序列信号发生器产生的过程是一个特别典型的数字电路设计的过程
  • 讲了三种设计方式(实际上也有有限状态机,状态转移图等方式,但是现在只看这三种电路设计方式),即3.4开头说的
  • !!!!第一种方式采用移位寄存器的设计方式,这种电路方式特别快,所以对于信号来讲是非常好的设计方式,但是耗费了六个寄存器(如果描述1024长度的信号,这时候就需要1024个寄存器),这个的问题就是用面积换速度
  • !!!!第二种方式从存储位宽的角度讲,因为只存储当前的状态,所以存储3-4个bit就可以(6位的信号)这样的话,如果是一个1024位的信号,那么存10个或者11个bit就可以了,位宽就减少了。但是有一个问题,它的反馈网络有一个反馈信号输入端,当信号发生扰动的时候(组合电路出现状况),如果反馈信号一旦发生错误,电路功能就不对了,所以这个电路需要一段时间以后才能自愈合甚至不能自愈合
  • !!!!第三种电路分为组合电路和计数器电路 ,组合电路没有对计数器进行反馈。组合电路的输出结果是由当前输入决定,也就是当组合电路发生错误的时候,只要保证输入正确,这个错误就不会带到下一个信号,所以误差不会传播。当计数器产生错误时,可以通过设计保护电路,让它在异常状态下可以回到其实状态,如果进入计数器的六个状态,一段时间后,他就能自愈合回到起始状态,所以电路的可靠性就比较高
  • !!所以,电路设计和方法与电路的可靠性和性能是密切相关的

3.4.2 伪随机码发生器

  • 伪随机码是一种变化规律与随机码类似的二进制代码,可以作为数字通信中的一个信号源,通过信道发送到接收机,用于检测数字通信系统错码的概率,即误码率。
  • 在传统的数字电路设计中,伪随机序列信号发生器是用移位寄存器型计数器来实现的,见图 4.3-14(上面讲的方式2,想到小m序列产生的时候,我们一定要知道他就是这种反馈的组合逻辑网络来实现的)。反馈网络输入信号从移位寄存器的部分输出端(Qn1~Qo)中取出,它的输出端F反馈到移位寄存器的串行输入端
  • 数学家提供了一种N-F表,N代表抽头的数量,F代表产生异或的输出端信号的位置。简单来说,电路就是方式2的图,对于组合反馈网络来讲就是一个异或的电路,F就是对图中Q的对应位置的几位异或反馈到输入端就可以了
  • 主要问题:怎么确定反馈系数?数学家就提供了N-F表。N代表小m序列的存储位宽(要设计1023的小m序列,需要10bit),F就是反馈的抽头系数
    在这里插入图片描述
  • 小m和大M相比少了一个状态(全0状态),下面以N=4 为例。在 15 位最长线性序列移位寄存器型计数器中,有一个由“0000构成的死循环,为了打破死循环,可以修改式为
    在这里插入图片描述
  • Verilog代码如下:
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/13976.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

docker命令整理

第一次安装 查看docker是否安装成功 docker version 测试hello-world docker run hello-world –help 帮助 查看详细信息 docker info 搜索docker镜像网址&#xff1a;https://hub.docker.com/search 查看 查看cpu实时内存 docker stats 镜像关键字&#xff1a;images -…

MySQL-Redis进阶生成全局唯一ID

单体全局ID 场景一、随着我们商城规模越来越大&#xff0c;mysql的单表的容量不宜超过500W&#xff0c;数据量过大之后&#xff0c;我们要进行拆库拆表&#xff0c;但拆分表了之后&#xff0c;他们从逻辑上讲他们是同一张表&#xff0c;所以他们的id是不能一样的&#xff0c; …

阿里最新财报:中国商业分部收入下滑1%,年内股价累计下跌34%

11月17日&#xff0c;阿里巴巴集团&#xff08;下称“阿里巴巴”&#xff0c;HK:09988、NYSE:BABA&#xff09;公布2023财年第二季度&#xff08;对应自然年2022年第三季度&#xff09;业绩。财报显示&#xff0c;阿里巴巴2022年第三季度的收入为人民币2071.76亿元&#xff08;…

[附源码]java毕业设计流浪动物领养系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

计算机中的加法器和比较器

本节展示了计算机中的加法器和比较器的底层实现电路设计。 加法器 计算机中加法器的实现依赖门的结构&#xff0c;如果是两个十进制进行加减&#xff0c;则首先把右边的两个0-9之间的数相加&#xff0c;它们的总和在0-18之间&#xff0c;如果答案是0-9之间&#xff0c;则直接写…

Vue--》详解vue组件及其组件化的使用

目录 Vue组件 非单文件组件 单文件组件 组件的组成部分 组件中定义methods方法 vue-cli中组件的使用步骤 vue-cli中注册全局组件 组件的props属性 props中的常用属性 组件间的样式冲突 Vue组件 vue是一个支持组件化开发的前端框架。什么是组件化开发&#xff1f;组件…

那些年我们遇到过的奇葩面试官

做了几年软件开发&#xff0c;我们都或多或少面试过别人&#xff0c;或者被别人面试过。大家最常吐槽的就是面试造火箭&#xff0c;进厂拧螺丝。今天就来吐槽一下那些奇葩&#xff08;gou&#xff09;一样的面试官 A 那是在我刚工作1年的时候&#xff0c;出去面试前端开发。 那…

虚拟筛选、高通量实验筛选化合物库

Kynurenine Pathway Library (含12,300种化合物) 靶向犬尿氨酸代谢途径关键酶的新型化合物库 KynureninePathway (犬尿氨酸途径, KP)是色氨酸代谢的主要途径&#xff0c;参与多个病理、生理过程。研究发现阿尔茨海默病、帕金森氏症等多种神经退行性疾病中的 KP 代谢产物水平…

hevc 继续色度半像素差值

1 前面已经讲了亮度的半像素差值&#xff0c;接下来讲一下色度的半像素差值。 亮度分量的运动估计已经精确到了1/4的精度&#xff0c;并且速度分量的分辨率是亮度分量的一般&#xff0c;所以色度插值需要精确到1/8的精度&#xff0c;色度分数像素插值按照基于离散余玄变换的4抽…

写代码有这20个好习惯,可以减少90%非业务的bug

每一个好习惯都是一笔财富&#xff0c;本文整理了写代码的20个好习惯&#xff0c;每个都很经典&#xff0c;养成这些习惯&#xff0c;可以规避多数非业务的bug&#xff01;希望对大家有帮助哈&#xff0c;谢谢阅读&#xff0c;加油哦~ 修改完代码&#xff0c;记得自测一下 「改…

C++初探 5-2(while循环 do while循环 输入 二维数组)

目录 注 while循环 for 与 while 编写延时循环 do while循环 基于范围的for循环&#xff08;C11&#xff09; 循环和文本输入 使用原始的cin进行输入 使用cin.get(char)进行补救 使用不同的cin.get( ) 文件尾条件 另一个cin.get( )版本 嵌套循环和二维数组 初始化…

长视频又添新变数

配图来自Canva可画 互联网广告市场依旧没有等来春天。据QuestMobile数据显示&#xff0c;2021下半年&#xff0c;中国互联网广告市场规模为3578.2亿元&#xff0c;而在2022年上半年这一数值下降至2903.6亿元&#xff0c;且同比增长率为-2.3%。 反应到具体的互联网平台上&…

[附源码]java毕业设计流浪动物救助网站

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Zookeeper系列——概述

Zookeeper系列——概述Zookeeper官方文档模型结构模型的特点节点的类型持久节点(PERSISTENT)持久顺序节点(PERSISTENT_SEQUENTIAL)临时节点(EPHEMERAL)临时顺序节点(EPHEMERAL_SEQUENTIAL)安装Zookeeper启动进入容器连接zookeeper的cli配置文件&#xff08;zoo_sample.cfg&…

基于微信小程序的足浴城消费系统设计与实现-计算机毕业设计源码+LW文档

小程序开发说明 开发语言&#xff1a;Java 框架&#xff1a;ssm JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09; 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclipse/idea Mav…

m基于simulink的WCDMA通信链路仿真

目录 1.算法概述 2.仿真效果预览 3.核心MATLAB代码预览 4.完整MATLAB程序 1.算法概述 W-CDMA由ETSI NTT DoCoMo作为无线介面为他们的3G网路FOMA开发。后来NTTDocomo提交给ITU一个详细规范作为一个象IMT-2000一样作为一个候选的国际3G标准。国际电信联盟(ITU) 最终接受W-CDM…

ESP32-WROOM-32 ESP32 wifi模块基本参数与引脚定义

基本参数&#xff1a; WiFi描述标准FCC/CE/TELEC/KCC/SRRC/NCC协议 802.11 b/g/n/e/i (802.11n&#xff0c;速度高达150Mbps) A-MPDU和A-MSDU聚合&#xff0c;支持0.4μS防护间隔 频率范围2.4GHz~2.5GHz(2400M~2483.5M)蓝牙描述协议符合蓝牙v4.2BR/EDR和BLE标准射频 具有-98dB…

nosql课后答案

文章目录第一章 绪论1. NoSQL和关系型数据库在设计目标上有何主要区别&#xff1f;2. 简要总结一下NoSQL数据库的技术特点。第二章 NoSQL数据库的基本原理1. 描述分布式数据管理的特点。2 什么是CAP原理&#xff1f;CAP原理是否适用于单机环境&#xff1f;3. 简述BASE理论的具体…

杨紫开直播被吐槽脸胖、脖子粗、嘴唇厚,这就是明星开美颜的原因

自从发明了美颜&#xff0c;人人都变成了美女&#xff0c;不过这样的话也有弊端&#xff0c;那就是真真假假虚虚实实难以辨别。爱美之心人皆有之。尤其是娱乐圈的明星&#xff0c;在直播的时候更是开启十级美颜&#xff0c;以至于整个人都变形了。 当然也有不开美颜的明星&…

【技术分享】计算机视觉常见的十种图像标注方法

文章目录1.语义分割2.矩形框标注3.多边形标注4.关键点标注5.立方体标注6.3D点云标注7.2D/3D融合标注8.目标追踪9.OCR转写10.属性识别1.语义分割 语义分割是指根据物体的属性&#xff0c;对复杂不规则图片进行进行区域划分&#xff0c;并标注对应上属性&#xff0c;以帮助训练图…