第5章时序逻辑电路 通过前面的学习知道,数字电路主要分为组合逻辑电路和时序逻辑电路。目前已经学完组合逻辑电路相关知识,但是在实际中很多问题仅仅用组合逻辑电路是解决不了的,比如自动售饮料机,不仅要知道当前输入的硬币面值,还需要记住之前输入硬币的面值,累加后决定是否输出饮料。在这个系统中不仅有组合逻辑电路,还需要含有记忆元件,这样的电路就是时序逻辑电路。 时序逻辑电路基本结构,描述时序逻辑电路的方法,以及时序逻辑电路的分析和设计等,都是本章要学习的内容,在学习的过程中用心体会与组合逻辑电路的不同。为了能够将理论与实践联系起来,以工程实例为依托,边理论边实践。 5.1工程任务: 8路彩灯控制电路设计 5.1.1系统介绍 在节日的时候,各种各样的彩灯遍布街头,五光十色,流光溢彩,非常漂亮。有没有想过自己来设计一个彩灯控制电路呢?以8路彩灯为例,系统要求如下: (1) 期望彩灯能够实现三种花型的演示。三种花型变换样式: ①8路灯分两半,从左至右渐亮,全亮后,再分两半从左至右渐灭; ②从中间到两边对称地逐渐亮,全亮后仍由中间到两边逐渐灭; ③从左至右顺次渐亮,全亮后逆序渐灭。 (2) 显示时将三种花型每种显示两遍,再总体重复一遍。 (3) 显示时能够实现快慢节拍的变换。 5.1.2任务需求 分析8路彩灯控制电路的系统要求,不难得出如图5.1.1所示的系统框图,由时钟信号电路、节拍控制电路、花型控制电路以及花型演示电路四部分构成。 图5.1.18路彩灯控制电路系统框图 根据图5.1.1,即可得出8路彩灯控制电路的任务需求: ①花型演示电路设计; ②花型控制电路设计; ③节拍控制电路设计; ④时钟信号电路设计。 中国芯片发展⑤——技术引进(1978—1999) 芯片产业引进探索 ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 改革开放、中美建交和国际大环境的变化,给东亚地区半导体工业发展带来了机遇。我国在1983年召开“全国计算机与大规模集成电路规划会议”,制定了集成电路要“建立南北基地一个点”的发展战略,南指苏沪浙,北指京津辽,一个点指西安的航天配套。中国半导体开始了技术引进制造之路,例如,1983年无锡 742 厂引进3英寸电视机集成电路生产线,1988年上海贝岭微电子制造有限公司引进建成第一条4英寸芯片生产线,1992年上海飞利浦半导体公司引进5英寸集成电路生产线等,先后启动“908”和“909”工程,建成华晶6英寸和华虹8英寸生产线及其配套。除制造产业外,1986年我国第一家集成电路设计公司——北京集成电路设计中心(现归属华大半导体)成立,1999年北京大学研制成功支持微处理器正向设计的开发平台,并研制成功16位微处理器原型系统,鼓舞国人的“中国芯”名称从这时开始出现。 ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 5.2时序逻辑电路的分析 (一) 课前篇 本节导学单 1. 学习目标 根据《布鲁姆教育目标分类学》,从知识维度和认知过程两方面进一步细化本节课的教学目标,明确学习本节课所必备的学习经验。 知 识 维 度 认 知 过 程 1. 回忆2. 理解3. 应用4. 分析5. 评价6. 创造 A. 事实性知识回忆触发器的基本概念说出时序逻辑电路的基本概念 B. 概念性知识回忆常用触发器的逻辑符号、真值表、特性方程以及状态转换图阐释时序逻辑电路的特点、分类列举时序逻辑电路分析的一般步骤,解答每一个步骤所起的作用 C. 程序性知识回忆触发器多种表示方法之间的转换阐释时序逻辑电路的功能描述方法根据时序逻辑电路分析的一般步骤,分析组合逻辑电路的逻辑功能对比评价异步时序逻辑电路和同步时序逻辑电路在分析过程中的异同 D. 元认知知识明晰学习经验是理解新知识的前提根据概念及学习经验迁移得到新理论的能力将知识分为若干任务,主动思考,举一反三,完成每个任务 2. 导学要求 根据本节的学习目标,将回忆、理解、应用层面学习目标所涉及的知识点课前自学完成,形成自学导学单。 图5.2.1自助售货机 5.2.1课前自学——时序逻辑电路概述 1. 时序逻辑电路的定义 日常生活中时序逻辑电路的例子很多,如图5.2.1所示,自助售货机的控制电路需要根据当前投入的硬币面额和已经投入的硬币面额来决定是否输出商品。这里的投币信号是时序逻辑的“输入信号”,物品输出信号是“输出信号”,显然控制电路中必须具有存储单元,以记忆之前投币的面额。当投币面额小于商品价格时,不输出; 当投币面额等于商品价格时,取物口会输出商品; 当投币面额大于商品价格时,取物口不仅输出商品还会找零。 通过该例子不难看出,电路任何一个时刻的输出状态不仅取决于当前的输入信号,还与电路的原来状态有关,具备这种逻辑功能特点的电路称为时序逻辑电路。时序逻辑电路在电路结构上有以下两个显著特点: (1) 时序逻辑电路通常包含组合逻辑电路和存储电路两部分,而存储电路是必不可少的。 图5.2.2时序逻辑 电路的结构框图 (2) 存储电路的输出状态必须反馈至组合逻辑电路的输入端,与输入信号共同决定组合逻辑电路的输出。 时序逻辑电路的结构框图如图5.2.2所示,X(x1,x2,…,xi)代表输入信号,Y(y1,y2,…,yj)代表输出信号,Z(z1,z2,…,zm)代表存储电路的输入信号,Q(q1,q2,…,qk)代表存储电路的输出信号。 它们之间的关系可以用以下三个公式表示: 输出方程 Y=F1(X,Qn)(5.2.1) 驱动方程 Z=F2(X,Qn)(5.2.2) 状态方程 Qn+1=F3(Z,Qn)(5.2.3) 2. 时序逻辑电路的分类 时序逻辑电路按照存储电路中触发器的动作特点不同分为同步时序逻辑电路和异步时序逻辑电路。在同步时序逻辑电路中,所有触发器有统一的时钟源,它们的状态在同一时刻更新。在异步时序逻辑电路中,触发器的状态变化不是同时发生的。 时序逻辑电路按照输出信号的特点不同分为米利(Mealy)型和穆尔(Moore)型两种,如图5.2.3所示。在米利型电路中,输出信号不仅取决于存储电路的状态,而且取决于输入变量; 在穆尔型电路中,输出信号仅取决于存储电路的状态。 图5.2.3时序逻辑电路 在有些具体的时序电路中,并不都具备图5.2.2所示的完整形式,有的时序逻辑电路没有组合逻辑电路部分,有的时序逻辑电路没有输入变量,但它们在逻辑功能上都具有时序逻辑电路的基本特征。 5.2.2课前自学——时序逻辑电路的描述方法 时序逻辑电路的逻辑功能可以用逻辑方程组、状态转换表、状态转换图、时序图四种方法来描述。 1. 逻辑方程组 时序逻辑电路逻辑方程组包括驱动方程、状态方程、输出方程以及时钟方程。 如图5.2.4所示的时序逻辑电路,根据电路的结构图可以写出时序逻辑电路的输出方程、驱动方程、状态方程和时钟方程。 图5.2.4时序逻辑电路 触发器输入信号的逻辑表达式,图5.2.4所示时序逻辑电路的驱动方程为 J1=n3,K1=1 J2=Qn1,K2=Qn1 J3=Qn1Qn2,K3=1 (5.2.4) 将驱动方程代入触发器的特性方程即可得到状态方程。图5.2.4所示时序逻辑电路的状态方程为 Qn+11=n3n1 Qn+12=n2Qn1+Qn2n1 Qn+13=n3Qn2Qn1 (5.2.5) 图5.2.4所示时序逻辑电路的输出方程为 Z=Qn3(5.2.6) 同步时序逻辑电路时钟方程可省略,异步时序逻辑电路的时钟方程需要列出。 2. 状态转换表 时序逻辑电路的状态与时间因素有关,将输入和电路的初态代入逻辑方程,即可得到电路的次态方程和输出; 将得到的次态作为电路新的初态,和这时的输入代入逻辑方程,即可得到一组新的次态和输出。如此继续,将所有的结果列成表的形式,就得到了状态转换表。状态转换表反映的是输出Z、次态Qn+1和输入X、现态Qn之间的关系。图5.2.4所示时序逻辑电路的状态转换表如表5.2.1所示。 表5.2.1图5.2.4所示时序逻辑电路的状态转换表 Qn3Qn2Qn1Qn+13Qn+12Qn+11Z 0000010 0010100 0100110 0111000 1000001 1010101 1100101 1110001 3. 状态转换图 为了更加形象、直观地展示时序逻辑电路的功能,可将状态转换表表示成状态转换图的形式。状态转换图反映出时序电路状态转换规律及相应输入、输出取值关系。图5.2.4所示时序逻辑电路的状态转换图如图5.2.5所示。 图5.2.5中圆圈表示电路的各个状态,箭头表明状态转换的方向,箭尾表示电路的现态,箭头指向的是电路的次态,箭头上方标注相应的输入和输出。通常输入写在斜线左边,输出写在斜线右边。如果电路没有输入逻辑变量,可以不写。 4. 时序图 时序图又称为工作波形图,它用波形形式表达输入信号、输出信号、电路状态等取值在时间上的对应关系。图5.2.4所示时序逻辑电路的时序图如图5.2.6所示。 图5.2.5时序逻辑电路的状态转换图 图5.2.6时序逻辑电路的时序图 时序逻辑电路的四种描述方法从不同侧面突出了时序电路逻辑功能的特点,它们在本质上是相同的,可以互相转换。 5.2.3课前自学——预习自测 5.2.3.1以下对时序逻辑电路描述正确的是()。 A. 时序逻辑电路某一时刻的电路状态仅取决于电路该时刻的输入信号 B. 时序逻辑电路某一时刻的电路状态仅取决于电路进入该时刻前所处的状态 C. 时序逻辑电路某一时刻的电路状态不仅取决于当时输入信号,还取决于电路原来的状态 D. 时序逻辑电路通常包含组合逻辑电路和存储电路两个组成部分,其中组合逻辑电路是必不可少的 5.2.3.2以下电路中属于时序逻辑电路的是()。 A. TTL与非门B. JK触发器C. OC门D. 异或门 5.2.3.3时序逻辑电路一般是由门电路和()组成。 A. 数据选择器B. 全加器C. 译码器D. 存储电路 (二) 课上篇 5.2.4课中学习——同步时序逻辑电路的分析方法 分析时序逻辑电路的步骤大致如下。 (1) 根据给定的同步时序逻辑电路写出下列方程组: ① 根据时序逻辑电路写出每个触发器的驱动方程,构成驱动方程组; ② 根据时序逻辑电路写出输出方程。 (2) 将各个触发器的驱动方程代入相应触发器的特性方程,得到各个触发器的状态方程,构成状态方程组。 (3) 根据状态方程和输出方程,列出电路的状态转换表,画出电路的状态转换图和时序图。 (4) 确定电路的逻辑功能。 例5.2.1试分析图5.2.7所示电路的逻辑功能。 图5.2.7例5.2.1电路 解: 该电路中含有两个上升沿触发的JK触发器,两个触发器受同一个CP脉冲的控制,因此是同步时序逻辑电路,有输入信号X,输出信号Z。 (1) 由图5.2.7所示电路写出逻辑方程组: 驱动方程为 J0=Xn1,K0=1 J1=XQn0,K1=1 输出方程为 Z=(XQn1)n0 (2) 将驱动方程代入JK触发器特性方程Qn+1=Jn+Qn,进而得到时序逻辑电路状态方程: Qn+10=(Xn1)n0 Qn+11=(XQn0)n1 (3) 根据状态方程组和输出方程列写时序逻辑电路的状态转换表,如表5.2.2所示。 表5.2.2例5.2.1状态转换表 XQn1Qn0Qn+11Qn+10Z 000010 001100 010001 011000 100101 101000 110010 111000 图5.2.8例5.2.1状态转换图 (4) 根据状态转换表画出状态转换图,如图5.2.8所示。 (5) 总结时序逻辑电路的逻辑功能。从状态转换图不难发现,图5.2.7所示电路状态转换规律及相应输入与输出关系: 当X=0时,按照加1规律从00→01→10循环变化,并每当转换为10状态(最大数)时,输出Z=1; 当X=1时,按照减1规律从10→01→00循环变化,并每当转换为00状态(最小数)时,输出Z=1。所以该电路是能自启动的同步可控三进制计数器,当X=0时实现加法计数,Z是进位信号,当X=1时实现减法计数,Z是借位信号。关于计数器的详细内容将在5.4节讲述。 5.2.5课中学习——异步时序逻辑电路的分析方法 异步时序逻辑电路分析与同步时序逻辑电路分析的区别: 在异步时序电路中,每次电路状态发生转换时并不是所有触发器的时钟信号都有效,时钟信号有效的触发器才能用特性方程计算次态,时钟信号无效的触发器保持原态不变。 例5.2.2分析图5.2.9所示电路的逻辑功能。 图5.2.9例5.2.2电路 解: 该电路中含有三个下降沿触发的JK触发器,三个触发器不受同一个CP的控制,因此是异步时序逻辑电路。该电路没有外部输入信号,也没有输出信号。 (1) 由图5.2.12所示电路写出逻辑方程组: 驱动方程为 J1=n3,K1=1 J2=1,K2=1 J3=Qn2Qn1,K3=1 时钟方程为 CP1=CP↓ CP2=Q1↓ CP3=CP↓ (2) 将驱动方程代入JK触发器的特性方程Qn+1=Jn+Qn,进而得到时序逻辑电路的状态方程: Qn+11=n3n1·CP1 Qn+12=n2·CP2 Qn+13=n3Qn2Qn1·CP3 式中,CP不是一个逻辑变量。CP=1,表示时钟输入端有有效时钟,此时触发器按照状态方程计算次态; CP=0,表示时钟输入端无有效时钟,此时触发器保持原来的状态不变。 (3) 根据状态方程组列写时序逻辑电路的状态转换表,如表5.2.3所示。 表5.2.3例5.2.3状态转换表 Qn3Qn2Qn1CP3CP2CP1Qn+13Qn+12Qn+11 000101001 001111010 010101011 011111100 100101000 101111010 110101010 111111000 (4) 根据状态转换表画出状态转换图,如图5.2.10所示。 图5.2.10例5.2.2状态转换图 (5) 总结时序逻辑电路的逻辑功能。从状态图不难发现,图5.2.10所示电路是能自启动的异步五进制(模五)加法计数器。 (三) 课后篇 5.2.6课后巩固——练习实践 5.2.6.1在题图5.2.6.1所示电路中,触发器原状态Q1Q0=01,则在下一个CP作用后,Q1Q0为()。 A. 00B. 01C. 10 题图5.2.6.1 题图5.2.6.2 5.2.6.2在题图5.2.6.2所示的电路中,触发器的原状态Q1Q0=00,则在下一个CP作用后,Q1Q0为()。 A. 00B. 01C. 10 5.2.6.3试分析题图5.2.6.3所示电路的逻辑功能,写出电路的驱动方程、状态方程,并画出电路的状态转换图。 题图5.2.6.3 5.2.6.4题图5.2.6.4所示电路由三个下降沿触发的JK触发器、与门、3线8线译码器74138和64个发光二极管构成。要求: (1)分析三个下降沿触发的JK触发器和与门构成电路的逻辑功能,写出驱动方程、状态方程,画出完整的状态转换表及状态转换图,用一句话总结逻辑功能。(2)64个发光二极管排列成8行8列,每一行8个发光二极管阳极连在一起,每一列8个发光二极管阴极连在一起接地,如果期望8行发光二极管从行0到行7依次点亮,74138芯片的输出(Y0~Y7)和发光二极管的阳极(A0~A7)之间如何连接? 题图5.2.6.4 5.2.6.5试分析题图5.2.6.5所示时序逻辑电路的逻辑功能,写出电路的驱动方程、状态方程和输出方程,并画出电路的状态转换图。 题图5.2.6.5 5.2.7本节思维导图 知识拓展——拯救摩尔定律的FinFET工艺 集成电路先进技术 ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 半导体工艺一直按照摩尔定律规律发展,也就是每18个月提升1倍晶体管密度。传统硅基半导体工艺在28nm之后,制造难度越来越大,已无法继续提高。1999年,中国科学院外籍院士胡正明教授研究小组研制出世界上体积最小、通过电流最大的半导体晶体管——FinFET。因为晶体管的形状与鱼鳍相似,所以也叫鳍式晶体管或者3D晶体管。FinFET可使芯片容量比从前提高400倍。英特尔公司首先在2012年正式采用FinFET技术,首发的是22nm工艺。当时台积电公司、三星公司还停留在28nm工艺,之后在16/14nm节点上他们才进入FinFET时代。 ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 5.3寄存器和移位寄存器 (一) 课前篇 本节导学单 1. 学习目标 根据《布鲁姆教育目标分类学》,从知识维度和认知过程两方面进一步细化本节课的教学目标,明确学习本节课所必备的学习经验。 知 识 维 度 认 知 过 程 1. 回忆2. 理解3. 应用4. 分析5. 评价6. 创造 A. 事实性知识回忆触发器的基本概念说出寄存器、移位寄存器的基本概念及分类 B. 概念性知识回忆常用触发器的逻辑符号、真值表、特性方程以及状态转换图阐释移位寄存器的四种工作方式评价总结单向移位寄存器的电路构成规律 C. 程序性知识回忆触发器多种表示方法之间的转换阐释集成寄存器内部电路,画出集成寄存器芯片引脚及真值表应用触发器设计移位寄存器电路。应用数据选择器设计多功能双向移位寄存器电路分析单向、双向移位寄存器电路的工作过程。分析74194的内部电路,得出功能表利用集成芯片74194设计应用电路,会借助仿真软件进行验证,会利用口袋实验包进行电路搭建与调试 D. 元认知知识明晰学习经验是理解新知识的前提根据概念及学习经验迁移得到新理论的能力将知识分为若干任务,主动思考,举一反三,完成每个任务类比评价也是知识整合吸收的过程通过电路的设计、仿真、搭建、调试,培养工程思维 2. 导学要求 根据本节的学习目标,将回忆、理解、应用层面学习目标所涉及的知识点课前自学完成,形成自学导学单。 5.3.1课前自学——寄存器 1. 定义 寄存器是数字系统中用来存储代码或数据的逻辑部件,它的主要组成部分是触发器。 图5.3.1触发器的存储原理 如图5.3.1说明了D触发器存储1或0的原理。当D=1时,触发器的输出Q会在时钟CP的上升沿到来时变为1并存储下来。同理,当D=0时,触发器的输出Q会在时钟CP的上升沿到来时变为0并存储下来。 一个触发器能存储1位二进制代码,存储n位二进制代码的寄存器需要用n个触发器。寄存器实际上是若干触发器的集合。图5.3.2所示电路是由4个触发器构成的4位寄存器逻辑图。D0~D3为4位数据输入端,Q0~Q3为4位数据输出端,RD为直接置零信号。 将4位数据送入数据输入端,在CP的下降沿到达后,数据便存入寄存器中,一直保持到下一个CP下降沿到达时。这种将数据同时存入又同时取出的方式称为并入并出方式。 2. 集成芯片 带输出缓冲器8位寄存器74374内部电路如图5.3.3所示,由8个D触发器和8个三态门构成。D0~D7是8位数据输入端,在CP上升沿的作用下,8位数据同时存入D触发器的输出端。OE是输出使能控制信号,低电平有效。当OE=0时,触发器存储的数据通过三态门输出到输出端Q0~Q7; 当OE=1时,输出端Q0~Q7输出高阻态。74374功能表如表5.3.1所示。 图5.3.24位寄存器逻辑图 图5.3.38位寄存器74374内部电路 表5.3.174374功能表 输入输出 OECPDNQ0~Q7 0↑00 0↑11 1↑0高阻 1↑1高阻 5.3.2课前自学——预习自测 5.3.2.1若一个寄存器的数码是“同时输入,同时输出”,则该寄存器采用()。 A. 串行输入串行输出B. 并行输入并行输出 C. 串行输入并行输出D. 并行输入串行输出 5.3.2.2在数字系统和计算机中,不同部件的数据输入和输出一般是通过公共数据总线传送,试用三片74374设计与数据总线进行数据传送的电路。 (二) 课上篇 5.3.3课中学习——移位寄存器 1. 定义及分类 移位寄存器既能寄存数码,又能在时钟脉冲的作用下使数码依次左移或右移。因此,移位寄存器应用广泛,不仅具有寄存器的功能,还可以实现数据的串行并行转换、数值的运算以及数据处理等,是数字系统和计算机中的一个重要部件。 移位寄存器按照移位方式可分为单向移位寄存器和双向移位寄存器,单向移位寄存器又可分为左移移位寄存器和右移移位寄存器,双向移位寄存器则兼有左移和右移的功能。 2. 单向移位寄存器 1) 右移移位寄存器 如图5.3.4所示,4个上升沿触发的D触发器,左边触发器的输出端接右邻触发器的输入端就构成了右移移位寄存器。 图5.3.44位右移移位寄存器电路 假设移位寄存器的初始状态是0000,串行输入数码DI=1101,从高位到低位依次输入。第一个时钟脉冲到来后,由于从CP上升沿到达开始到输出端新状态的建立需要经过一段传输延迟时间,所以当CP的上升沿同时作用于所有触发器时,它们输入端(D端)的状态还没有改变。于是FF1触发器按Q0原来的状态翻转(Q1=0),FF2按Q1原来的状态翻转(Q2=0),FF3按Q2原来的状态翻转(Q3=0),加到FF0输入端的DI代码存入FF0(Q0=1),总的效果相当于将1移入到FF0触发器,其余触发器的输出依次右移一位。以此类推,经过4个CP,即可将1101代码移入到移位寄存器中,同时在4个触发器的输出端得到了并行输出的代码,如表5.3.2所示。图5.3.5给出了各触发器输出端在移位过程中的电压波形图。该电路可以实现代码的串行输入串行输出(DI串行输入,Q3串行输出),也可以实现代码的串行输入并行输出(DI串行输入,Q0Q1Q2Q3并行输出)。 表5.3.24位右移移位寄存器代码移动 移 位 脉 冲输 入 数 码输出 CPDIQ0Q1Q2Q3 0 1 2 3 4 1 1 0 1 图5.3.5图5.3.4电路的电压波形 2) 左移移位寄存器 如图5.3.6所示,4个上升沿触发的D触发器,右边触发器的输出端接左邻触发器的输入端就构成了左移移位寄存器。它依然可以实现代码的串行输入串行输出(DI串行输入,Q0串行输出),也可以实现代码的串行输入并行输出(DI串行输入,Q0 Q1 Q2 Q3并行输出)。读者自行分析电路的工作过程并画出代码移动状况。 图5.3.64位左移移位寄存器电路 3. 双向移位寄存器 将左移移位寄存器和右移移位寄存器组合起来并引入一个控制端S便构成既可右移又可左移的双向移位寄存器,如图5.3.7所示。其中,DSR为右移串行输入端,DSL为左移串行输入端。 当S=1时,D0=DSR,D1=Q0,D2=Q1,D3=Q2,实现右移操作; 当S=0时,D0= Q1,D1=Q2,D2=Q3,D3=DSL,实现左移操作。 图5.3.74位双向移位寄存器电路 4. 集成移位寄存器 1) 功能 集成4位双向移位寄存器74194的逻辑图如图5.3.8(a)所示。采用了4个RS触发器,根据RS触发器特性方程Qn+1=S+Qn=D+D=Qn=D,实现了D触发器的功能。DSR是右移串行数据输入端,DSL是左移串行数据输入端,DI0~DI3是并行数据输入端,CR连接到每个触发器的直接置0端,可控制触发器异步清零。图中输入端接入的缓冲器用于减轻前级的负载,而输出缓冲器可以提高驱动能力。 图5.3.84位双向移位寄存器74194 74194的符号图如图5.3.8(b)所示,功能表如表5.3.3所示。表5.3.3中,第一行表明移位寄存器异步清零操作,第二行为保持功能,第三、四行为右移操作,第五、六行为左移操作,第七行为并行置数操作。74194输出默认排列顺序为Q0Q1Q2Q3。 表5.3.374194功能表 输入 清零控制串行输入时钟并行输入 CRS1S0DSLDSRCPDI0DI1DI2DI3 输出 Q0Q1Q2Q3工 作 模 式 0× ××××××××0 0 0 0异步清零 10 0×××××××Q0Q1Q2Q3保持 10 1×1↑××××1 Q0Q1Q2右移 10 1×0↑××××0 Q0Q1Q2右移 11 01×↑××××Q1Q2Q31左移 11 00×↑××××Q1Q2Q30左移 11 1××↑DI0DI1DI2DI3DI0DI1DI2DI3并行置数 2) 应用 (1) 扩展。 74194接成多位双向移位寄存器的方法十分简单。如图5.3.9所示是用两片74194接成8位双向移位寄存器的电路图。 图5.3.9用两片74194接成8位双向移位寄存器 两片74194具有8个并行输入端和8个并行输出端,仅需要将片74194(1)的Q3接片74194(2)的DSR,将片74194(2)的Q0接片74194(1)的DSL,同时将两片的S1、S0、CP、CR并联即可。 (2) 环形计数器。 将移位寄存器输出Q3直接反馈至串行数据输入端DSR,使寄存器工作在右移状态,就构成了环形计数器,如图5.3.10(a)所示。 图5.3.104位环形计数器 在S1启动脉冲的作用下,将初始状态1000置入移位寄存器74194中。之后S1S0=01,电路实现右移操作,将Q3反馈至DSR,在时钟脉冲的作用下,移位寄存器74194的数码依次变为0100、0010、0001,然后又回到1000。如此周而复始,实现了将寄存的数码循环右移。 图5.3.11为4位环形计数器的工作波形图。从波形图可以看出,将一个CP周期的脉冲宽度依次分配到各输出端,将这种电路称为顺序脉冲发生器。其主要应用于需要按照事先规定的顺序进行一系列操作的系统中,可以给系统的控制部分产生一组在时间上有一定先后顺序的脉冲信号。 图5.3.114位环形计数器的工作波形图 可以看出,4位移位寄存器74194构成的4位环形计数器,每4个脉冲构成一个循环,显然,N位移位寄存器可以构成N进制的环形计数器。 (3) 扭环形计数器。 如果将移位寄存器74194的输出Q3取反后再反馈至串行数据输入端DSR,如图5.3.12(a)所示,就构成了4位扭环形计数器。 利用清零引脚CR加入负脉冲,使得电路的初始状态为0000。S1S0=01,电路实现右移,将Q3取反反馈至DSR,在时钟脉冲的作用下,移位寄存器74194的数码依次变为1000、1100、1110……然后又回到0000,状态图如图5.3.12(b)所示。4位移位寄存器74194可以构成八进制的扭环形计数器。显然,N位移位寄存器可以构成2N进制的扭环形计数器。 图5.3.124位扭环形计数器 (三) 课后篇 5.3.4课后巩固——练习实践 1. 知识巩固练习 5.3.4.1题图5.3.4.1所示的移位寄存器,若Q0Q1Q2Q3=1010,而在4个CP内输入的代码依次为0011,则4个脉冲后,串出端依次输出的数值为()。 A. 1010B. 0101C. 0011D. 1100 5.3.4.2利用74194构成的移位寄存器如题图5.3.4.2所示,在图示的工作模式下,数据输出的端口是()。 A. Q0B. Q1C. Q2D. Q3 题图5.3.4.1 题图5.3.4.2 5.3.4.3试用移位寄存器74194和门电路设计一个时序逻辑电路,可产生题表5.3.4.3所示的脉冲序列。 题表5.3.4.3脉冲序列 CPQ0Q1Q2Q3 → 0 1 2 3 4 5 6 1000 1100 1110 1111 0111 0011 0001 5.3.4.4在题图5.3.4.4电路中,若两个移位寄存器中的原始数据分别为A3A2A1A0=1001,B3B2B1B0=0011,试问经过4个CP信号作用以后两个寄存器中的数据如何?这个电路完成什么功能? 题图5.3.4.4 5.3.4.5时序电路如题图5.3.4.5所示,其中RA、RB和RS均为8位移位寄存器,其余电路分别为全加器和D触发器,要求: (1) 说明电路的逻辑功能; (2) 若电路工作前先清零,且两组数码A=10001000,B=00001110,8个CP后,RA、RB和RS中的内容为何? (3) 再来8个CP,RS中的内容为何? 5.3.4.6由移位寄存器74194和3线8线译码器74138组成的时序电路如题图5.3.4.6所示,分析该电路: (1)画出74194的态序表; (2)求出Z的输出序列。 5.3.4.7试画出题图5.3.4.7所示电路的输出(Q0~Q3)波形,并分析该电路的逻辑功能。 题图5.3.4.5 题图5.3.4.6 题图5.3.4.7 5.3.4.8试用两片74194构成8位双向移位寄存器。 2. 工程实践练习 5.3.4.9利用口袋实验包完成环形计数器和扭环形计数器电路的搭建与调试。 5.3.5本节思维导图 知识拓展——国产CPU芯片企业巡礼 集成电路国产化进程 ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 目前,中国国产主要的CPU芯片有中国科学院的龙芯系列、华为海思公司的鲲鹏系列、国防科技大学的飞腾系列、曙光信息产业股份有限公司的海光系列、江南计算技术研究所的申威系列和平头哥半导体有限公司的倚天系列。主要采用7~28nm工艺制造,申威和龙芯拥有独立自主指令集,完全自主可控; 鲲鹏、飞腾是指令集架构ARM授权模式,自主可控程度高; 海光、兆芯则是IP核授权模式,自主可控程度低。其中搭载申威CPU的“神威·太湖之光”超级计算机,使用了40960块申威处理器,曾位列超级计算机TOP500榜首。飞腾CPU是国防科技大学高性能处理器研究团队研发的产品,“天河一号”和“天河二号”均使用数千颗飞腾CPU作为服务节点。 ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 5.4计数器 (一) 课前篇 本节导学单 1. 学习目标 根据《布鲁姆教育目标分类学》,从知识维度和认知过程两方面进一步细化本节课的教学目标,明确学习本节课所必备的学习经验。 知 识 维 度 认 知 过 程 1. 回忆2. 理解3. 应用4. 分析5. 评价6. 创造 A. 事实性知识回忆触发器的基本概念说出计数器的基本概念及分类 B. 概念性知识回忆常用触发器的逻辑符号、真值表、特性方程以及状态转换图 续表 知 识 维 度 认 知 过 程 1. 回忆2. 理解3. 应用4. 分析5. 评价6. 创造 C. 程序性知识回忆触发器多种表示方法之间的转换画出集成计数器符号图以及功能表应用触发器设计二进制计数器分析触发器构成的二进制计数器电路,分析集成计数器构成的电路,应用集成计数器实现任意进制计数器对比两种不同情况下集成计数器构成任意进制计数器的原理、思路及实现方法利用集成计数器设计24小时制数字电子钟电路,会借助于仿真软件进行验证,会利用口袋实验包进行电路搭建与调试 D. 元认知知识明晰学习经验是理解新知识的前提根据概念及学习经验迁移得到新理论的能力将知识分为若干任务,主动思考,举一反三,完成每个任务类比评价也是知识整合吸收的过程通过电路的设计、仿真、搭建、调试,培养工程思维 2. 导学要求 根据本节的学习目标,将回忆、理解、应用层面学习目标所涉及的知识点课前自学完成,形成自学导学单。 5.4.1课前自学——计数器的定义及分类 1. 计数器的定义 计数器是数字系统中应用最广泛的时序电路,其基本功能是对时钟脉冲进行计数(数字钟就是计数器的典型应用); 此外,还可以用于分频、定时、产生节拍脉冲和脉冲序列等多种数字逻辑。 2. 计数器的分类 计数器按照内部触发器的动作方式分为同步计数器和异步计数器。在同步计数器中,所有触发器受同一个CP的控制。在异步计数器中,至少有一个触发器不直接受CP的控制。 计数器按照运算功能可分为加法计数器、减法计数器和可逆计数器。随着计数脉冲输入做递增计数电路称为加法计数器。随着计数脉冲输入做递减计数电路称为减法计数器。在控制信号作用下,可递增计数也可递减计数的电路称为可逆计数器。 按照计数编码方式可分为二进制计数器和非二进制计数器。非二进制计数器中典型的是十进制计数器。计数器进制是计数器电路中有效状态个数,计数器进制又称为计数器的“模”。例如,十进制计数器中有10个有效状态,也称为模10计数器。 5.4.2课前自学——计数器的电路实现 如何能够用触发器来实现计数器功能?下面以二进制计数器为例介绍计数器电路的设计过程。 1. 同步计数器 1) 同步二进制加法计数器 根据计数器定义画出3位同步二进制加法计数器的状态转换表,如表5.4.1所示。 表5.4.13位同步二进制加法计数器的状态转换表 计数顺序 电路状态 Q2Q1Q0 0000 1001 2010 3011 4100 5101 6110 7111 电路状态的每一位均用一个触发器来实现,来观察各个触发器的动作特点。Q0: 每来一个CP,Q0翻转一次; Q1: Q0=1时,来一个CP,Q1翻转一次; Q2: Q1Q0=11时,来一个CP,Q2翻转一次。 因此,3位同步二进制加法计数器可以用3个T触发器构成,3个T触发器时钟端连在一起接CP,每次CP到达时,应翻转的触发器输入控制端Ti=1,不翻转的触发器输入控制端Ti=0。3位同步二进制加法计数器电路如图5.4.1所示,对应时序图如图5.4.2所示。 图5.4.13位同步二进制加法计数器电路 图5.4.23位同步二进制加法计数器电路的时序图 2) 同步二进制减法计数器 根据计数器的定义,可以画出3位同步二进制减法计数器的状态转换表,如表5.4.2所示。 表5.4.23位同步二进制减法计数器的状态转换表 计 数 顺 序 电 路 状 态 Q2Q1Q0 0000 1111 2110 3101 4100 5011 6010 7001 电路状态的每一位均用一个触发器来实现,因此3位同步二进制减法计数器电路由3个触发器构成,来观察各个触发器的动作特点。Q0: 每来一个CP,Q0翻转一次; Q1: Q0=0时,来一个CP,Q1翻转一次; Q2: Q1Q0=00时,来一个CP,Q2翻转一次。 因此,3位同步二进制减法计数器电路可以用3个T触发器构成,3个T触发器的时钟端连在一起接CP,每次CP到达时应翻转的触发器输入控制端Ti=1,不翻转的触发器输入控制端Ti=0。3位同步二进制减法计数器电路如图5.4.3所示。 图5.4.33位同步二进制减法计数器电路 电路对应的时序图如图5.4.4所示,若计数输入脉冲CP的频率为f0,则Q0、Q1、Q2端输出脉冲的频率将依次为f0/2、f0/4、f0/8,因此计数器也可实现分频功能。 图5.4.43位同步二进制减法计数器电路的时序图 3) 同步二进制可逆计数器 将加法计数器和减法计数器合并起来,并且引入一加/减控制信号X,便构成3位二进制同步可逆计数器。各触发器的驱动方程为 T0=1 T1=XQ0+0 T2=XQ1Q0+10 3位同步二进制可逆计数器电路如图5.4.5所示。当控制端X=1时,FF1、FF2触发器各T端分别与低位触发器的Q端相连,实现加法计数; 当控制端X=0时,FF1、FF2触发器各T端分别与低位触发器的端相连,实现减法计数。由此可见,该电路实现了可逆计数器的功能。 图5.4.53位同步二进制可逆计数器电路 同步二进制计数器构成方法总结: 因为计数脉冲CP连到各个触发器的时钟端,因此电路通过控制触发器的输入端来控制触发器是否翻转。通常采用T触发器构成,最低位触发器T=1,其余位触发器的驱动方程: 加法计数器: Ti=Qi-1Qi-2…Q0 减法计数器: Ti=i-1i-2…Q0 可逆计数器: Ti=XQi-1Qi-2…Q0+i-1i-2…0 2. 异步计数器 1) 异步二进制加法计数器 3位异步二进制加法计数器与3位同步二进制加法计数器的状态转换表相同,区别在于异步计数器的各个触发器不是同步翻转的,各个触发器的动作特点: Q0,每来一个CP,Q0翻转一次; Q1,当Q0出现下降沿时,Q1翻转一次; Q2,当Q1出现下降沿时,Q2翻转一次。 因此,3位异步二进制加法计数器电路可以用3个T′触发器构成,通过控制触发器的时钟端来控制触发器是否翻转,电路如图5.4.6所示。下降沿触发的JK触发器当J=K=1时得到T′触发器,CP是要记录的计数输入脉冲,接FF0的时钟端,将Q0接FF1的时钟端,将Q1接FF2的时钟端。用上升沿触发器的T′触发器同样可以组成异步二进制加法计数器,但是高位触发器的时钟端接低位触发器的端输出。 图5.4.63位异步二进制加法计数器电路 2) 异步二进制减法计数器 将T′触发器之间按照二进制减法计数规则连接,即可得到二进制减法计数器。观察表5.4.2,不难得出各个触发器的特点: Q0,每来一个CP,Q0翻转一次; Q1,当Q0出现上降沿时,Q1翻转一次; Q2,当Q1出现上降沿时,Q2翻转一次。 仍采用JK触发器构成的T′触发器实现3位异步二进制减法计数器如图5.4.7所示。CP是要记录的计数输入脉冲,接FF0的时钟端,将Q0接FF1的时钟端,将Q1接FF2的时钟端。 图5.4.73位异步二进制减法计数器电路 异步二进制计数器构成方法总结: 每个触发器都处在计数状态,通过时钟信号控制各个触发器计数,最低位触发器接CP,其余各位触发器接各自低一位触发器的输出端。 加法计数器: 如果采用下降沿触发的触发器,则高位触发器的时钟端CP接低一位触发器的输出Q端; 如果采用上升沿触发的触发器,则高位触发器的时钟端CP接低一位触发器的输出端。 减法计数器: 如果采用下降沿触发的触发器,则高位触发器的时钟端CP接低一位触发器的输出端; 如果采用上升沿触发的触发器,则高位触发器的时钟端CP接低一位触发器的输出Q端。 5.4.3课前自学——预习自测 5.4.3.1试用下降沿触发JK触发器组成5位异步二进制减法计数器电路。 5.4.3.2试用下降沿触发D触发器组成5位异步二进制加法计数器电路。 (二) 课上篇 5.4.4课中学习——集成计数器及其应用 常用的中规模集成计数器品种较多,主要分为同步计数器和异步计数器两大类,每一类又分为二进制计数器和十进制计数器。下面对部分集成计数器进行介绍。 图5.4.874160的符号图 1. 同步集成计数器 1) 同步十进制计数器74160 同步十进制加法计数器74160的符号图如图5.4.8所示。 74160计数翻转是在时钟信号的上升沿完成的,CTP、CTT是使能控制端,LD是置数端,CR是清零端,D0D1D2D3是四个数据输入端(D3为最高位,D0为最低位),Q0Q1Q2Q3是四个数据输出端(Q3为最高位,Q0为最低位),CO是进位输出端。74160具有清零、置数、保持以及计数功能。其功能表如表5.4.3所示。 表5.4.374160的功能表 CPCRLDCTTCTP工作状态 ×0×××清零 ↑10××置数 ×110×保持 ×11×0保持 ↑1111计数 (1) 异步清零: 当CR=0时,其他输入任意,可以使计数器立即清零。 (2) 同步置数: 当CR=1且D3D2D1D0=DCBA时,若置数控制信号LD=0,在CP的上升沿到来时,完成置数操作,使Q3Q2Q1Q0=DCBA。使能控制信号CTT、CTP的状态不影响置数操作。 (3) 保持: 当CR=LD=1时,若使能控制信号CTT(或者CTP)为0,都能使计数器保持状态不变。 (4) 计数: 当CR=LD=1时,CTT=CTP=1时,在CP的上升沿到来时,计数器进行计数。 CO是进位输出信号,CO=Q3Q0CTT,当Q3Q2Q1Q0=1001(计数到9)且CTT=1时,CO=1产生进位输出。 与74160相似的还有同步二进制计数器74161,它是4位二进制计数器,它的进位输出CO=Q3Q2Q1Q0CTT。 2) 同步二进制计数器74163 同步二进制加法计数器74163的符号图如图5.4.9所示。 74163计数翻转是在时钟信号的上升沿完成的,CTP、CTT是使能控制端,LD是置数端,CR是清零端,D0D1D2D3是四个数据输入端(D3为最高位,D0为最低位),Q0Q1Q2Q3是四个数据输出端(Q3为最高位,Q0为最低位),CO是进位输出端。74163具有清零、置数、保持以及计数功能。其功能表如表5.4.4所示。从表中不难看出,除了CR位同步清零外,其余功能与74160完全相同,这里不再赘述。 表5.4.474163的功能表 CPCRLDCTTCTP工作状态 ↑0×××清零 ↑10××置数 ×110×保持 ×11×0保持 ↑1111计数 与74163相似的还有同步十进制计数器74162,芯片的符号图和功能表完全相同。与74163不同的是,74162是十进制计数器,它的进位输出CO=Q3Q0CTT。 2. 异步集成计数器74290 74290是异步二五十进制加法计数器,逻辑符号图如图5.4.10所示。 图5.4.974163的符号图 图5.4.1074290的符号图 74290有CP1、CP0两个时钟脉冲,说明内部触发器并不是受同一个脉冲控制,因此是异步集成计数器,计数翻转在时钟信号的下降沿完成。CTP、CTT是使能控制端,S9(1)、S9(2)是置9端,R0(1)、R0(2)是清零端,Q3Q2Q1Q0是四个数据输出端。74290具有清零、置9以及计数功能。其功能表如表5.4.5所示。 表5.4.574290的功能表 输入输出 R0(1)R0(2)S9(1)S9(2)CP0CP1Q3Q2Q1Q0工作模式 110×××0000 11×0××0000异步清零 ××11××1001异步置9 R0(1) R0(2)=0S9(1) S9(2)=0 CP0二进制 0CP五进制 CPQ08421十进制 Q3CP5421十进制加法计数 (1) 异步清零: 当R0(1)=R0(2)=1时,S9(1)、S9(2)至少有1个为0,可以使计数器立即清零。 (2) 异步置9: 当S9(1)=S9(2)=1时,可以使计数器立即置9。 (3) 加法计数: 当CP仅送入CP0,由Q0输出,电路为二进制加法计数器; 当CP仅送入CP1,由Q3Q2Q1输出,电路为五进制加法计数器; 当CP送入CP0,Q0接置CP1,则构成2×5十进制加法计数器,Q3Q2Q1Q0输出8421码; 当CP送入CP1,Q3接置CP0,则构成5×2十进制加法计数器,Q0Q3Q2Q1输出5421码。下面具体介绍为什么能构成8421码和5421码的十进制加法计数器。 74290包含一个独立的二进制计数器和一个独立的五进制计数器。二进制计数器的时钟输入端为CP0,输出为Q0; 五进制计数器的时钟输入端为CP1,输出为Q3Q2Q1。如果将二进制计数器的输出作为五进制计数器的时钟端,如图5.4.11所示。 图5.4.1174290构成8421码十进制计数器 对于二进制计数器来说,每来一个脉冲,Q0就翻转; 对于五进制计数器来说,只有Q0的下降沿到来,计数器才会加1计数,否则计数器保持不变。根据电路的工作过程,列出电路的状态转换表,如表5.4.6所示。注意: 此时电路的高低位排列顺序是Q3Q2Q1Q0。 表5.4.6图5.4.11状态转换表 Qn3Qn2Qn1Qn0Qn+13Qn+12Qn+11Qn+10 00000001 00010010 00100011 00110100 01000101 01010110 01100111 01111000 10001001 10010000 1010×××× 1011×××× 1100×××× 1101×××× 1110×××× 1111×××× 将五进制计数器的输出Q3作为二进制计数器的时钟端,如图5.4.12所示。 图5.4.1274290构成5421码十进制计数器 对于五进制计数器来说,每来一个脉冲,计数器就加1计数; 对于二进制计数器来说,只有Q3的下降沿到来,计数器输出Q0才会翻转。根据电路的工作过程,列出电路的状态转换表,如表5.4.7所示。注意: 此时电路的高低位排列顺序是Q0Q3Q2Q1。 表5.4.7图5.4.12状态转换表 Qn0Qn3Qn2Qn1Qn+10Qn+13Qn+12Qn+11 00000001 00010010 00100011 00110100 01001000 0101×××× 0110×××× 续表 Qn0Qn3Qn2Qn1Qn+10Qn+13Qn+12Qn+11 0111×××× 10001001 10011010 10101011 10111100 11000000 1101×××× 1110×××× 1111×××× 3. 集成计数器的应用 由于中规模集成计数器体积小、功耗低、可靠性高等特点而获得了广泛应用。但是出于成本方面的考虑,集成计数器的定型产品追求大批量,因而目前市售集成计数器产品主要是应用较广泛的十进制、十六进制等几种产品,在需要其他任意进制计数器时,只能在现有中规模集成计数器基础上,经过外电路的不同连接来实现。这就是集成计数器的应用——任意进制计数器的实现。 假设集成计数器的最大计数值是N,而需要得到的计数器的模值是M,这时就有N>M和N<M两种情况。下面分别讨论两种情况下任意进制计数器的实现方法。 1) N>M 这种情况下,用一片集成计数器即可实现。 思路: 在集成计数器顺序计数的过程中,设法跳过N-M个状态。 方法: 反馈清零法和反馈置数法。 反馈清零法适用于有置零输入端计数器。其工作原理是: N进制计数器从全0状态S0开始计数,接收了M-1个计数脉冲后电路进入SM-1状态,将该状态译码产生一个置零信号加到计数器的置零输入端,则计数器将立刻返回S0状态,这样就跳过了N-M个状态而得到M进制计数器,如图5.4.13(a)所示。 反馈置数法适用于有置数输入端的计数器。与反馈清零法的区别在于,它是通过给计数器置入某个数值的方法来跳过N-M个状态,从而获得M进制计数器,如图5.4.13(b)所示,置数操作可以在电路的任何一个状态下进行。 图5.4.13任意进制计数器的实现方法 例5.4.1试利用同步十进制计数器74160实现六进制计数器。 解: 74160既有清零端又有置数端,所以两种方法均可采用。 (1) 反馈清零法。 按照反馈清零法的工作原理,当计数器计数到Q3Q2Q1Q0=0101(SM-1状态)时,担任译码电路的与非门输出低电平使得74160芯片的清零端CR有效,使得计数器回到0000状态。如果取5作为反馈,5的状态仅持续一个与非门的传输延迟时间,而这个时间非常短(纳秒级),因此在稳定的状态循环中不包括5。因此,对于异步清零的芯片,需要多取一个状态SM作为反馈。但是对于同步清零的芯片,因为清零的动作不仅与清零端有关,还与CP有关,所以只需要取有效循环的最后一个状态SM-1作为反馈,如图5.4.14所示。 图5.4.14反馈清零法的两种清零方式 因此,74160采用反馈清零法实现六进制计数器必须多取一个状态6作为反馈,如图5.4.15所示。 图5.4.1574160用反馈清零法实现六进制计数器(取6作为反馈) 图5.4.15所示电路由于置零信号被置零而立即消失,所以置零信号持续时间较短。芯片内部触发器的复位速度有快有慢,可能慢的触发器还没来得及复位置零信号就消失了,导致电路误动作,因此这种接法电路的可靠性不高。为了克服该缺点,采用图5.4.16所示电路,将基本RS触发器输出的低电平作为计数器的置零信号,利用基本RS触发器的记忆功能将电路进入0110状态时的置零信号维持住,直到计数脉冲回到低电平以后,基本RS触发器被置零,输出的低电平信号才消失。这样,加到计数器CR端的置零信号与输入脉冲CP的高电平持续时间相等,同时进位输出脉冲也可以从基本RS触发器的Q端引出,这个脉冲的宽度与计数脉冲高电平宽度相等。 图5.4.16图5.4.15的改进电路 (2) 反馈置数法。 反馈置数法可以从计数循环中的任意一个状态置入,这里主要介绍两种方案。 ① 从0000开始。计数范围为0000~0101,由于74160是同步清零,因此取有效循环的最后一个数5作为反馈,如图5.4.17所示。 图5.4.1774160用反馈置数法实现六进制计数器(从0000开始) ② 从0100开始。计数范围为0100~1001,由于74160是同步清零,因此取有效循环的最后一个数9作为反馈,由于计数器计到9(最大数)时,计数器的进位输出CO输出为1,因此也可以用进位输出作为置数译码信号,如图5.4.18所示。 图5.4.1874160用反馈置数法实现六进制计数器(从0100开始) 总结: 当N>M时,用一片集成计数器加反馈控制即可实现。 思路: 跳过(N-M)个状态。 方法: 反馈清零法和反馈置数法。 原理: 通过芯片的清零或者置数引脚,当计数到M个状态时产生清零/置数译码信号,使得芯片清零或置数,从而跳过N-M个状态,如图5.4.13所示。 注意: 不管是反馈清零法还是反馈置数法,关键看集成芯片的清零或置数方式,如果是异步,需要多取一个数作为反馈; 如果是同步,取有效循环中的最后一个数作为反馈。 2) N<M 这种情况下,需要用多片N进制计数器组合起来,才能构成M进制计数器。 方法: 整体法和分体法。 (1) 整体法。 其工作原理是先用多片N进制计数器级联,组成N×…×N进制计数器,再利用芯片的清零或者置数引脚通过反馈控制电路跳过N×…×N-M个状态,从而实现M进制计数器。级联分为同步级联和异步级联,下面以两片同步十进制加法计数器74160芯片的连接为例详细介绍两种级联方式。 同步级联是指所有计数器使用同一时钟信号,将前一级计数器的进位输出作为后一级计数器的使能信号,以获得计数容量更大的计数器。 图5.4.1974160的同步级联 如图5.4.19所示,两片74160采用同步级联方式构成一百进制加法计数器。两片74160共用CP,低位片(74160(1))使能信号CTT=CTP=1,所以总是工作在计数状态; 而高位片(74160(2))使能信号CTT、CTP接低位片进位输出CO,所以只有当低位片计数到最大值1001时,CO=1,使得高位片使能信号CTT=CTP=1,满足计数条件,在下一个脉冲到来时,低位片回零,高位片加1,实现了进位。 异步级联是指所有计数器没有共用同一时钟信号,将前一级计数器的进位输出作为后一级计数器的时钟信号,以获得计数容量更大的计数器。 如图5.4.20所示,两片74160采用异步级联方式构成一百进制加法计数器,外部时钟信号CP接至低位片(74160(1))CP端,使得低位片处于计数状态。当低位片计数值由1001回到0000时,低位片的进位输出CO发一个进位脉冲下降沿,而74160芯片的有效边沿是上升沿,因此需要通过非门送至高位片的时钟端,使得低位片回零,高位片加1,实现了进位。 图5.4.2074160的异步级联 例5.4.2试利用同步十进制计数器74160实现六十进制计数器。 解: 芯片74160是同步十进制加法计数器,而要实现的是六十进制计数器,很显然一片芯片无法实现,因此需要两片芯片采用级联方式实现一百进制计数器,将两片芯片看作一个整体,整体计数器的模值是100>60,利用清零或者置数引脚跳过100-60个状态,实现六十进制计数器。 反馈清零法。如图5.4.21所示,两片74160芯片采用同步级联的方式实现一百进制计数器。采用反馈清零法,因此计数器的计数范围为0~59,由于74160芯片是异步清零方式,因此取60作为反馈数,当计数器计数到60,即01100000时,担任译码电路的与非门输出低电平使得两片74160芯片的清零端CR处在有效状态,计数器回到0状态。 图5.4.21反馈清零法实现六十进制计数器 反馈置数法。如图5.4.22所示,两片74160采用同步级联方式实现一百进制计数器。反馈置数法可以从计数循环中任意一个状态置入,假如从0开始,计数范围依然是0~59。 图5.4.22反馈置数法实现六十进制计数器 反馈置数法与反馈清零法的区别: ①初始数0需要从数据输入端体现; ②由于74160是同步置数方式,因此取59作为反馈数,当计数器计数到59,即01011001时,担任译码电路的与非门输出低电平使得两片74160的置数端LD处在有效状态,下一个脉冲到来,计数器回到起始数0状态。 (2) 分体法。 其工作原理是将M分解为两个小于N的因数相乘,即M=N1×N2,然后将N1进制计数器和N2进制计数器连接起来构成M进制计数器。注意: 当M为大于N的素数时,不能分解为N1和N2,分体法就行不通了,此时必须采用整体法实现M进制计数器。 例5.4.3试利用同步十进制计数器74160采用分体法实现六十进制计数器。 解: 60=10×6,因此用两片74160分别实现十进制和六进制,十进制作为低位芯片,六进制作为高位芯片,将低位芯片的进位输出作为高位芯片的使能信号,而两片芯片共用同一个CP,电路如图5.4.23所示。片74160(1)是低位芯片,使能信号处于有效,由于74160就是十进制计数器,因此只需将CR和LD处于无效,在时钟脉冲CP的作用下处于计数状态即可实现十进制。片74160(2)是高位芯片,采用反馈清零法实现六进制。将低位芯片的进位输出作为高位芯片的使能信号,当低位芯片计数到最大值1001时,CO=1,使得高位片的使能信号CTT=CTP=1,满足计数条件,在下一个脉冲到来时,低位片回零,高位片加1,实现了进位,最终实现六十进制计数器。 图5.4.23分体法实现六十进制计数器 总结: 当N<M时,用多片集成计数器加反馈控制即可实现。 方法: 整体法和分体法。 原理: 整体法先用多片N进制计数器通过同步级联或异步级联组成N×…×N进制计数器,再利用芯片的清零或者置数引脚通过反馈控制电路跳过N×…×N-M个状态,从而实现M进制计数器。分体法将M分解为若干小于N的因数相乘,即M=N1×…×Ni,然后将多个小于N的计数器连接起来实现M进制计数器。 (三) 课后篇 5.4.5课后巩固——练习实践 1. 知识巩固练习 5.4.5.1分析题图5.4.5.1所示电路的逻辑功能。 题图5.4.5.1 5.4.5.2分析题图5.4.5.2所示的计数器在M=1和M=0时各为几进制。 5.4.5.3分析题图5.4.5.3所示电路的逻辑功能。 题图5.4.5.2 题图5.4.5.3 5.4.5.4题图5.4.5.4所示由74160构成的计数器,要求: (1)指出计数器的计数范围和计数长度; (2)用74161构成范围和长度与之相同的计数器; (3)用74290构成范围和长度与之相同的5421码计数器。 题图5.4.5.4 5.4.5.5题图5.4.5.5所示电路由74161构成的计数器,要求: (1)分析该计数器的计数范围及计数长度; (2)用74162实现与(1)计数长度相同的计数器。 题图5.4.5.5 5.4.5.6试分别用74160和74161及最少的门电路实现计数长度为8,计数范围6~9,0~3的计数器。 5.4.5.7(1)分析题图5.4.5.7所示74160(十进制、异步清零同步置数器件)构成的计数器,指出计数范围和计数长度。(2)用74290(二五十进制、异步清零异步置9器件)构成与图示电路计数范围和计数长度相同的5421码计数器。 题图5.4.5.7 5.4.5.8用同步十进制计数器芯片74162设计一个三百六十五进制的计数器,要求各位间为十进制关系,允许附加必要的门电路。 5.4.5.9题图5.4.5.9所示电路是可变进制计数器,试分析当控制变量A为1和0时电路各为几进制计数器。 题图5.4.5.9 2. 工程实践练习 5.4.5.10利用口袋实验包完成24小时制数字电子钟电路搭建与调试,要求: 能够显示小时、分钟、秒; 能够手动校时校分; 具有整点报时功能。 5.4.6本节思维导图 知识拓展——中国CPU第一芯: 龙芯 集成电路国产化进程 ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ CPU(中央处理器)作为集成电路中的重要元器件,一直是国家集成电路发展的标志性芯片。如果没有CPU的国产化与自主化,国家信息安全将无从谈起。我国的第一个CPU芯片研制开始于2001年中国科学院计算机研究所成立的一个芯片研发课题组,2002年8月10日,首片“龙芯1号”XIA50流片成功,这一天称为龙芯诞生日。经过20年的发展,“龙芯2号”“龙芯3号”一系列产品应用到金融、通信、教育、交通、军工各个领域,尤其是2021年龙芯拿出了“自主芯片+自主指令+自主操作系统”三大杀手锏,分别对应新一代3A5000/3C5000L芯片、LoongArch 自主指令集、信息行业的Loongnix以及工控类的LoongOS操作系统,实现我国CPU从硬到软到系统的全国产化。 ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 5.5同步时序逻辑电路的设计方法 (一) 课前篇 本节导学单 1. 学习目标 根据《布鲁姆教育目标分类学》,从知识维度和认知过程两方面进一步细化本节课的教学目标,明确学习本节课所必备的学习经验。 知 识 维 度 认 知 过 程 1. 回忆2. 理解3. 应用4. 分析5. 评价6. 创造 A. 事实性知识回忆触发器的基本概念说出序列信号发生器和序列信号检测器的基本概念 B. 概念性知识回忆常用触发器的逻辑符号、真值表、特性方程以及状态转换图阐释等价状态的概念应用等价状态的基本概念,判断电路状态转换图是否最简 C. 程序性知识回忆触发器多种表示方法之间的转换阐释触发器个数与电路状态个数之间的关系列举同步时序逻辑电路的设计步骤,解答每一个步骤所起的作用根据同步时序逻辑电路的设计步骤,设计计数器和序列信号检测器对比同步时序逻辑电路设计和同步时序逻辑电路分析步骤利用集成芯片设计应用电路,会借助仿真软件进行验证,会利用口袋实验包进行电路搭建与调试 D. 元认知知识明晰学习经验是理解新知识的前提根据概念及学习经验迁移得到新理论的能力将知识分为若干任务,主动思考,举一反三,完成每个任务通过类比学习是知识整合吸收的过程通过电路的设计、仿真、搭建、调试,培养工程思维 2. 导学要求 根据本节的学习目标,将回忆、理解、应用层面学习目标所涉及的知识点课前自学完成,形成自学导学单。 5.5.1课前自学——同步时序逻辑电路的设计步骤 同步时序逻辑电路的设计步骤(图5.5.1)如下: 图5.5.1同步时序逻辑电路的设计步骤 (1) 逻辑抽象。根据设计要求,确定输入、输出变量以及电路的状态数目。通常将引起事件的原因作为输入变量,将事件的结果作为输出变量。定义输入变量、输出变量的逻辑状态,确定电路每个状态含义并进行编号。根据设计要求,画出电路的状态转换图。 (2) 状态化简。为了使设计电路达到最简单,需检查电路的状态转换图是否最简单。状态转换图中状态数越少,设计出来电路就越简单。如果电路的两个状态在相同输入的条件下有相同的输出,同时转换到相同的次态,则这两个状态为等价状态,可以合并。 (3) 状态分配。将时序逻辑电路中的状态用触发器状态的不同组合来表示,需要首先确定触发器个数n。触发器个数n与电路状态个数M满足下列关系: 2n≥M>2n-1(5.5.1) 为了便于记忆和识别,一般选用的状态编码和它们的排列顺序都遵循一定的规律。 (4) 选定类型,求出方程。不同触发器的驱动方式不同,选用不同的触发器设计出的电路也不一样。因此,在设计具体电路前必须选定触发器的类型。根据状态转换表以及采用的触发器的逻辑功能,即可得出待设计电路的输出方程和驱动方程。 (5) 检查自启动。当电路有效状态不是2n时,应检查设计电路能否自启动。若电路不能够自启动,则需要重新设计电路,或者在电路开始工作时通过预置数将电路状态置成有效循环中的一种。 (6) 画电路图。根据驱动方程和输出方程画出电路图。 同步时序逻辑电路设计步骤与分析过程正好相反。 5.5.2课前自学——预习自测 5.5.2.1根据同步时序逻辑电路的设计步骤,试画出五进制加法计数器的状态转换图、状态转换表。 题图5.5.2.2 5.5.2.2某时序逻辑电路的状态转换图如题图5.5.2.2所示,该图中是否有等效状态?如果有,画出简化后的状态转换图。 (二) 课上篇 5.5.3课中学习——同步时序逻辑电路设计举例 例5.5.1试设计一个带进位输出端的同步五进制加法计数器。 解: (1) 逻辑抽象,确定输入、输出及状态数目。 根据设计要求,该电路无输入变量,有进位输出CO,电路状态数目为5,分别用S0、S1、S2、S3、S4表示。 (2) 根据设计要求,画出状态转换图,如图5.5.2所示。显然,该状态转换图是最简单的,不需化简。 图5.5.2例5.5.1状态转换图 (3) 状态分配,列状态转换表。根据式(5.5.1),五个状态需要三个触发器,为了便于记忆与识别,S0用000表示,S1用001表示,S2用010表示,S3用011表示,S4用100表示。根据图5.5.2所示的状态转换图画出对应的状态转换表,如表5.5.1所示。由于计数器正常工作时不会出现101、110、111三个状态,因此三个状态看作无关项,状态转换表中用“×”表示。 表5.5.1例5.5.1状态转换表 Qn2Qn1Qn0Qn+12Qn+11Qn+10CO 0000010 0010100 0100110 0111000 1000001 101×××× 110×××× 111×××× (4) 选择JK触发器,求方程。 根据状态转换表,可以画出Qn+12、Qn+11、Qn+10、CO卡诺图,如图5.5.3所示。 从Qn+12卡诺图中不难看出,利用无关项可以使得Qn+12表达式更简单。之所以不借助无关项,是因为借助无关项虽然表达式最简单Qn+12=Qn1Qn0,但要根据状态方程和JK触发器特性方程Qn+1=JQn+Qn,最终求出J、K表达式。借助于无关项已经将Qn2消去,不好直接确定J、K表达式。可见,最简和最佳可能是一对矛盾的两方面。 图5.5.3例5.5.1电路次态和输出的卡诺图 根据卡诺图可以得出电路的状态方程和输出方程为 Qn+12=n2Qn1Qn0 Qn+11=n1Qn0+Qn1n0 Qn+10=n2n0 CO=Qn2 由状态方程和触发器特性方程Qn+1=Jn+Qn,得出电路驱动方程为 J2=Qn1Qn0 K2=1,J1=Qn0 K1=Qn0,J0=n2 K0=1 (5) 检查自启动。 根据第1章含有无关项的卡诺图化简可知,在卡诺图中用符号“×”表示无关项。在化简函数时既可以认为它是1,也可以认为它是0。与1一起画在圈内它就是1,否则它就是0。根据图5.5.3所示的卡诺图可以直接读出101→010,110→010,111→000,因此电路可以自启动。 (6) 根据驱动方程和输出方程画出电路图,如图5.5.4所示。 例5.5.2用下降沿触发的JK触发器设计高电平输出的同步001序列信号检测器。该检测器有一个输入端X,它的功能是对输入信号进行检测,当连续输入001时,该电路输出Y=1,否则输出Y=0。 解: (1) 逻辑抽象,确定输入、输出及状态数目。 根据设计要求,取输入数据为输入变量,用X表示; 取检测结果作为输出变量,用Y表示。设电路在没有收到0时的状态为S0,收到一个0后的状态为S1,连续收到两个0后的状态为S2,连续收到001后的状态为S3。 (2) 根据题意画出状态转换图,如图5.5.5所示。 (3) 状态化简。 比较状态S0和S3即可发现,它们在相同输入下有相同输出,进入相同的次态。因此,S0和S3为等价状态,可以合并,于是可得到图5.5.6化简后的状态转换图。 图5.5.4例5.5.1电路 图5.5.5例5.5.2 状态转换图 图5.5.6例5.5.2化简 后的状态转换图 (4) 状态分配。 该电路有3个状态,根据式(5.5.1)可知触发器个数为2。取触发器Q1Q0状态为00、01、11,分别代表S0、S1、S2,根据图5.5.6可得出该电路状态转换表,如表5.5.2所示。 表5.5.2例5.5.2状态转换表 XQn1Qn0Qn+11Qn+10Z 000010 001110 010××× 011110 100000 101000 110××× 111001 (5) 选择JK触发器,求方程。 根据状态转换表可画出Qn+11、Qn+10的卡诺图,如图5.5.7所示。 图5.5.7例5.5.2电路次态的卡诺图 由于采用JK触发器,根据其特性方程Qn+1=Jn+Qn,卡诺图画圈的原则: 在保留Qni或ni的前提下,尽可能借助无关项使状态方程最简单。 根据卡诺图可以得出电路的状态方程: Qn+11=n1Qn0+Qn1 Qn+10=n0+Qn0 电路的输出方程为 Z=XQn1Qn0 根据状态方程和触发器的特性方程可得出驱动方程为 J1=Qn0 K1=X,J0= K0=X 图5.5.8例5.5.2电路图 (6) 检查自启动。 根据第1章含有无关项的卡诺图化简可知,在卡诺图中用符号“×”表示无关项。在化简函数时既可以认为它是1,也可以认为它是0。与1一起画在圈内它就是1,否则它就是0。根据图5.5.7所示的卡诺图可以直接读出以10作为现态,在输入为0的情况下次态为11,输出为0; 以10作为现态,在输入为1的情况下次态为00,输出为0。因此,电路可以自启动。 (7) 根据驱动方程和输出方程画出电路图,如图5.5.8所示。 (三) 课后篇 5.5.4课后巩固——练习实践 1. 知识巩固练习 5.5.4.1试分别用下降沿触发的JK触发器设计一个可重复触发的101序列信号检测器和一个不可重复触发的101序列信号检测器。 5.5.4.2试用JK触发器和门电路设计一个同步七进制加法计数器,并检查设计电路能否自启动。 5.5.4.3试用下降沿触发的D触发器设计一个1010序列检测器,输入为串行编码序列,输出为检出信号。 5.5.4.4设计一个控制步进电动机三相六状态工作的逻辑电路。若用1表示电动机绕组截止,则3个绕组ABC的状态转换图如题图5.5.4.4所示。M为输入控制变量,当M=1时,电动机为正转,当M=0时,电动机为反转。 题图5.5.4.4 5.5.4.5试用边沿JK触发器设计一个同步可控模三计数器,当控制端X=0时完成加法运算,X=1时完成减法运算,进借位输出公用端为Z。 2. 工程实践练习 5.5.4.6设计一个自动售饮料机电路。投币口每次只能投入一枚五角或一元硬币。投入一元五角钱硬币后机器自动给出一杯饮料; 投入两元(两枚一元)硬币后,在给出饮料同时找回一枚五角的硬币。利用口袋实验包完成自动售饮料机电路搭建与调试。 5.5.5本节思维导图 知识拓展——GPU国产先锋: 景嘉微 集成电路国产化进程 ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 每一个爱玩游戏的人都知道独立显卡的重要性,也知道英伟达这家图形处理器(Graphics Processing Unit,GPU)芯片设计公司,2020年它超越英特尔公司成为美国市值最高的芯片厂商。在中国有一家被称为“中国英伟达”的公司——长沙景嘉微电子股份有限公司(简称景嘉微),它主要有图形显控领域产品、小型专业化雷达领域产品和GPU芯片领域产品。例如,JM5400、JM7200和JM9系列GPU都是独立自主国产GPU。 ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 5.6用Verilog HDL描述时序逻辑电路 前面学习了各种时序逻辑电路功能模块,利用Verilog HDL可以实现硬件电路设计,本节将介绍时序逻辑电路的三种建模技巧。 (一) 课前篇 本节导学单 1. 学习目标 根据《布鲁姆教育目标分类学》,从知识维度和认知过程两方面进一步细化本节课的教学目标,明确学习本节课所必备的学习经验。 知 识 维 度 认 知 过 程 1. 回忆2. 理解3. 应用4. 分析5. 评价6. 创造 A. 事实性知识 B. 概念性知识回忆C语言运算符阐释结构化建模的基本思想 C. 程序性知识回忆条件语句、循环语句、多路分支语句的语法规则。回忆移位寄存器、计数器的逻辑功能应用Verilog HDL描述移位寄存器、计数器分析Verilog HDL程序,得出程序所描述的逻辑功能设计时序逻辑电路,会借助仿真软件进行验证,会利用FPGA开发板进行电路搭建与调试 D. 元认知知识明晰学习经验是理解新知识的前提根据基本思想及学习经验迁移得到新理论的能力通过电路的设计、仿真、搭建、调试,培养工程思维 2. 导学要求 根据本节的学习目标,将回忆、理解、应用层面学习目标所涉及的知识点课前自学完成,形成自学导学单。 5.6.1课前自学——移位寄存器的Verilog建模 5.3.3节介绍了集成移位寄存器74194的逻辑符号及功能,本节用Verilog HDL描述74194的逻辑功能。描述代码如下: module shift74194 ( input S1,S0,//功能选择端口声明 input Dsl, Dsr, //串行数据输入端口声明 input CP, CR, //时钟和清零输入端口声明 input [3:0]D, //并行数据输入端口声明 output reg [3:0]Q //输出端口及变量数据类型声明 ); always @ (posedge CP, negedge CR) if(~CR) Q<=4’b0000; //实现异步清零功能 else case({S1, S0}) 2’b00: Q<=Q; //输出保持不变 2’b01: Q<={Q[2:0],Dsr};//右移 2’b10: Q<={Dsl, Q[3:1]};//左移 2’b11: Q<=D; //并行置数 endcase endmodule 从程序代码的结构来看,整个代码分为端口声明和逻辑功能描述两部分。首先对于74194芯片的输入、输出端口进行声明,接下来对于74194的异步清零、保持、左移、右移、置数这五种逻辑功能进行描述。 当清零信号CR=0时,输出立即置0; 当CR=1时,与时钟信号相关的四种功能由case语句的两个选择输入信号S1、S0决定。移位通过串行输入和触发器的输出拼接起来描述的,例如: Q<={Q[2:0],Dsr}; 说明了右移的操作,即在时钟信号CP上升沿到来时,将右移串行输入端Dsr的数据直接传给输出Q[0],而Q[2∶0]传给Q[3∶1],完成了将数据右移1位的操作,注意: 由于计算机中规定输出排列顺序是Q3Q2Q1Q0,而芯片本身默认的排列顺序是Q0Q1Q2Q3,因此代码中描述的右移、左移是针对芯片本身默认的排列顺序而言。 5.6.2课前自学——预习自测 5.6.2.1试用Verilog HDL描述图5.3.6所示电路,并用Quartus Ⅱ软件进行逻辑功能仿真,给出仿真波形。 (二) 课上篇 5.6.3课中学习——计数器的Verilog建模 5.4.2节介绍了同步二进制计数器和异步二进制计数器的电路实现,本节用Verilog HDL描述同步二进制计数器、异步二进制计数器以及同步十进制计数器的逻辑功能。 1. 同步二进制计数器 module syncounter( output Q0, Q1, Q2; //输出端口声明 input CP; //输入端口声明 ); JK_FF FF0 ( Q0, Q0not,1, 1,CP); //实例化JK触发器 JK_FF FF1 ( Q1, Q1not, Q0, Q0,CP); JK_FF FF2 ( Q2, Q2not, Q0&Q1, Q0&Q1,CP); endmodule module JK_FF ( output reg Q, output Qnot, input J, K, CP ); //JK触发器模块 assign Qnot = ~Q; always @ (negedge CP) case({J,K}) 2’b00: Q<= Q; 2’b01: Q<= 1’b0; 2’b10: Q<= 1’b1; 2’b11: Q<= ~Q; endcase endmodule 从代码中不难看出,该程序采用结构化描述方式,第一个模块通过三次调用第二个模块完成计数功能,作为底层的第二个模块是下降沿触发的JK触发器。在第一个模块中,第一个触发器FF0的J、K接1,实现T′触发器的功能。第二个触发器FF1的J、K接前一个触发器的输出Q0,第三个触发器FF2的J、K是前两个触发器输出相与,三个触发器的时钟信号都接CP,因此是同步二进制计数器。代码描述与图5.4.1一致。 2. 异步二进制计数器 module ripplecounter( output Q0, Q1, Q2; //输出端口声明 input CP, CR; //输入端口声明 ); D_FF FF0 ( Q0, ~Q0, CP, ~CR); //实例化D触发器 D_FF FF1 ( Q1, ~Q1, Q0, ~CR); D_FF FF2 ( Q2, ~Q2, Q1, ~CR); endmodule module D_FF ( output reg Q, input D, CP, Rd ); //D触发器模块 always @ (negedge CP, negedge Rd) if(~Rd) Q<=1’b0; //实现异步清零功能 else Q<=D; endmodule 从代码中不难看出,该程序采用结构化描述方式,第一个模块通过三次调用第二个模块完成计数功能,作为底层的第二个模块是带有异步置零的D触发器。在第一个模块中,第一个触发器FF0的时钟接外部时钟CP,其输出Q0取反后与数据输入D相连,实现T′触发器的功能。第二个触发器FF1的时钟信号接前一个触发器的输出端,其输出Q1取反后接数据输入D。以此类推,将三个触发器级联构成异步二进制计数器,描述与图5.4.3类似。 3. 同步十进制计数器 module m10_counter( output reg[3:0]Q, //输出端口声明 input CE, CP, CR; //输入端口声明 ); always @ (negedge CP, negedge CR) if(~CR) Q=4’b0000; //实现异步清零功能 else if (CE) begin if (Q>= 4’b1001 ) Q<=4’b0000; else Q<=Q+4’b0001; end else Q<=Q; endmodule 从代码中不难看出,该程序描述的是带有使能端和异步清零端的同步十进制计数器。当清零信号CR跳变到低电平时,计数器输出被置0。当CR=1,CE=1时,在CP的上升沿作用下,计数器值小于9时,计数器的值加1; 计数值大于或等于9时,计数器的输出被置0。当CR=1,CE=0时,计数器保持原来的状态不变,实现了十进制计数器的功能。 5.6.4课中学习——任意分频的Verilog建模 分频在FPGA的设计中一直都担任着很重要的角色,而说到分频,很多人都已经想到了利用计数器来计算达到想要的时钟频率,但问题是仅仅利用计数器来分频,只可以实现偶数分频,而如果需要三分频、五分频、七分频等奇数类分频,究竟怎么办?在这里介绍一个可以实现任意整数分频的方法,这个办法也同样利用了计数器来计算,跟偶数分频不一样的是任意整数分频利用两个计数器来实现。三分频实现的时序图如图5.6.1所示。 图5.6.1三分频实现的时序图 由图5.6.1所示的时序图可以知道,奇数分频是利用主时钟信号的上升沿和下降沿产生一对脉冲信号,将两个脉冲信号相或即可实现奇数分频。 理解了基本原理,接下来用代码实现,N代表着需要多少分频,只要把N修改成需要的分频数即可,注意N>1。 module divider(clk, rst_n, out_clk); input clk, rst_n; //定义输入时钟,复位信号端口 output out_clk; //定义输出时钟信号端口 parameter N=6; //N是定义几分频 reg out_clk_1; //由上升沿产生的时钟信号 reg [9:0]count_1; //负责产生上升沿时钟信号的计数器 always @ (posedge clk or negedge rst_n) begin if (!rst_n) begin count_1 <= 10’d0; out_clk_1 <= 1’d0; end else begin if (N==2) out_clk_1 <= ~out_clk_1; else if (count_1 <=((N-1’d1)/2)-1’d1) begin count_1 <= count_1 + 1’d1; out_clk_1 <= 1’d1; end else if (count_1 <=(N-2’d2)) begin count_1 <= count_1 + 1’d1; out_clk_1 <= 1’d0; end else begin count_1 <=10’d0; out_clk_1 <= 1’d0; end end end reg out_clk_2; //由下降沿产生的时钟信号 reg [9:0]count_1; //负责产生下降沿时钟信号的计数器 always @ (negedge clk or negedge rst_n) begin if (!rst_n) begin count_2 <= 10’d0; out_clk_2 <= 1’d0; end else begin if (N==2) out_clk_2 <=1’d0; else if (count_2 <=((N-1’d1)/2)-1’d1) begin count_2 <= count_2 + 1’d1; out_clk_2 <= 1’d1; end else if (count_2 <=(N-2’d2)) begin count_2 <= count_1 + 1’d1; out_clk_2 <= 1’d0; end else begin count_2 <=10’d0; out_clk_2 <= 1’d0; end end end assign out_clk = out_clk_1 | out_clk_2; endmodule 仿真代码如下: `timescale 1ns/1ps//仿真时间单位是ns,仿真时间精度是ps module divider_tb(); reg clk, rst_n; //仿真激励时钟,复位信号 wire out_clk; //仿真输出分频信号 initial begin clk=0; //时钟信号初始化 rst_n=0; //复位信号初始化 #200 rst_n=1; //200.1ns之后复位结束 end always #10 clk=~clk; //产生50MHz的时钟信号 divider #(.N(3)) //设置divider模块中的参数N u1(.clk(clk), /把激励信号送进divider模块 .rst_n(rst_n), .out_clk(out_clk) ); endmodule 三分频仿真波形图如图5.6.2所示,奇数分频的占空是50%,clk的周期是20ns,而out_clk的周期20+40=60(ns),达到了三分频的目标。 图5.6.2三分频仿真波形图 现在把N设置成4,仿真代码如下: `timescale 1ns/1ps //仿真时间单位是ns,仿真时间精度是ps module divider_tb(); reg clk, rst_n; //仿真激励时钟,复位信号 wire out_clk; //仿真输出分频信号 initial begin clk=0; //时钟信号初始化 rst_n=0; //复位信号初始化 #200 rst_n=1; //200.1ns之后复位结束 end always #10 clk=~clk; //产生50MHz的时钟信号 divider #(.N(4)) //设置divider模块中的参数N u1(.clk(clk), /把激励信号送进divider模块 .rst_n(rst_n), .out_clk(out_clk) ); endmodule 四分频仿真波形图如图5.6.3所示,奇数分频的占空是50%,而偶数分频却不是50%,但偶数分频的目的也达到了,clk的周期是20ns,而out_clk的周期20+60=80(ns),达到了四分频的目标。 图5.6.3四分频仿真波形图 (三) 课后篇 5.6.5课后巩固——练习实践 1. 知识巩固练习 5.6.5.1试用Verilog HDL描述二五十进制计数器74290的行为,用Quartus Ⅱ软件实现逻辑功能仿真,并给出仿真波形。 5.6.5.2试用Verilog HDL描述一个110序列信号检测器电路,用Quartus Ⅱ软件对模块进行逻辑功能仿真,并给出仿真波形。 2. 工程实践练习 5.6.5.3利用FPGA开发板设计一个具有时、分、秒计时的数字钟电路,按照24小时制计时。要求: (1)输出时、分、秒的8421码,计时输入脉冲频率为1Hz; (2)具有分、时校正功能,校正输入脉冲频率为1Hz; (3)采用分层次、分模块的方法,用Verilog HDL进行设计。 5.6.6本节思维导图 知识拓展——FPGA在雷达上应用 集成电路先进技术介绍 ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 雷达原理类似于蝙蝠回声定位,由雷达信号产生发送、反馈回波接收和信号处理三部分组成。雷达信号产生包括信号产生、调制、上变频和波束形成等,回波接收包括解调、下变频、滤波、检测和成像等,信号处理包括A/D变换和解算出目标距离、方位、高度、速度等参数。随着数字电子技术的不断发展,雷达信号产生调制、回波信号滤波检测都已使用FPGA芯片完成,尤其是雷达信号处理使用FPGA使雷达信号处理进入了一个新的时代。FPGA比较易于实现硬件时序控制、高速并行运算和算法编程处理的模块化,而且具有开发周期短、费用低、处理能力强等特点,适应雷达研发需求,因此广泛应用于各类数字雷达设备中。 ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 5.78路彩灯控制电路工程任务实现 5.7.1基本要求分析 根据图5.7.1所示的8路彩灯控制电路系统框图,可得出8路彩灯控制电路的设计任务: ①花型演示电路设计; ②花型控制电路设计; ③节拍控制电路设计; ④时钟信号电路设计。 有了理论知识储备,明晰了系统各个模块的功能,一起来设计各个模块电路。 图5.7.18路彩灯控制电路系统框图 5.7.2模块电路设计 1. 花型演示电路设计 花型演示电路由两片移位寄存器74194级联实现,其8个输出信号接8个发光二极管,用74194的输出信号控制发光二极管的亮灭实现花型演示。根据三种花型可以列出移位寄存器的输出状态表,如表5.7.1所示。 表5.7.1三种花型对应的输出状态表 节拍序号花型1花型2花型3节拍 序号花型1花型2花型3 10000000000000000000000009000000000000000011111111 210001000000110001000000010100010000001100011111110 311001100001111001100000011110011000011110011111100 411101110011111101110000012111011100111111011111000 511111111111111111111000013111111111111111111110000 601110111111001111111100014011101111110011111100000 700110011110000111111110015001100111100001111000000 800010001100000011111111016000100011000000110000000 由于每种花型需要循环显示两次,因此三种花型完全显示一遍需要64拍,即0~15显示第一个花型,16~31显示第二个花型,32~63显示第三个花型。要用74194实现三个花型的连续显示必须对两片74194的S1、S0和DSL、DSR根据节拍的变化进行相应的改变。现将两片74194分为低位片(1)和高位片(2),再将其输出端从低位到高位记为L0~L7。列出各花型和其对应的74194的S1、S0、DSL、DSR的输入信号以及节拍控制信号之间的对应关系,如表5.7.2所示。 表5.7.2花型与74194以及节拍控制信号之间的对应关系 低位片高位片节拍控 制信号 花型DSLDSRS1S0DSLDSRS1S0Q7~Q0 1×301×70100000000 20×10×70100010000 3 ×701×L30100100000 L4×100×1000101000 经过分析,可得出74194高低位片各控制量与输出、节拍控制信号之间关系如下: 低位片: DSL=05+L4Q5,DSR=35+7Q5 S1=Q45+Q3Q5,S0=1 高位片: DSL=0,DSR=75+L3Q5 S1=Q3Q5,S0=1 根据表达式可画出电路图,如图5.7.2所示。 图5.7.2花型演示电路 2. 花型控制电路设计 根据花型演示要求,三种花型每种显示两遍,再总体重复一遍,共128个节拍,因此用两片74161实现128进制的计数器。花型控制电路如图5.7.3所示。 图5.7.3花型控制电路 3. 节拍控制电路设计 为了实现快慢节拍交替产生,利用4选1数据选择器74153和D触发器级联实现,如图5.7.4所示。D触发器的时钟输入接555定时器的输出(周期为1s时钟信号),利用D触发器接成T′触发器实现二分频,D触发器输出周期为2s时钟信号。 利用4选1数据选择器实现时钟信号的切换,进而实现快慢节拍的交替产生。由于三种花型全部显示一遍(总共64拍),74161输出为01000000,因此将74161(2)的Q2端接到4选1数据选择器74153地址输入最低位A0,A1接0,D0接1s时钟脉冲,D1接2s时钟脉冲。一开始选择1s时钟脉冲,当三种花型全部显示一遍时,74161(2)的Q2=1,时钟切换到2s时钟脉冲。 图5.7.4节拍控制电路 4. 时钟信号电路设计 可利用555定时器构成的多谐振荡器实现,如图5.7.5所示(详细内容可以参考7.5节)。取R1=4.7kΩ,R2=150kΩ,C=47μF,即可得到周期为1s的时钟信号。 图5.7.5多谐振荡器 5.7.3系统搭建 将各个功能模块电路拼接起来,就构建了8路彩灯控制电路,如图5.7.6所示,该系统能不能实现之前设想?自己动手仿真。 图5.7.68路彩灯控制电路 5.8本章知识综合练习 5.8.1分析题图5.8.1所示电路的逻辑功能。已知时钟脉冲的频率fCP=1Hz,fx是待测脉冲的频率。 5.8.2试用计数器和译码器设计一个能产生题图5.8.2所示的顺序脉冲发生器。 题图5.8.1 题图5.8.2 5.8.3由4位双向移位寄存器74194和3线8线译码器74138组成的电路如题图5.8.3所示,试列出在时钟CP作用下74194的态序表,并写出Z的输出序列。 5.8.44位双向移位寄存器74194和8选1数据选择器74151构成电路如题图5.8.4所示,试列出电路状态迁移关系(设初始状态为0110),并写出F输出序列。 题图5.8.3 题图5.8.4 5.8.5题图5.8.5所示电路是由3线8线译码器74138、4选1数据选择器和4个下降沿触发的JK触发器构成的可变进制计数器。触发器的初始状态为0000: (1)假设RD=1,试分析4个下降沿触发的JK触发器构成电路的逻辑功能,试写出触发器的驱动方程、状态方程,并列写完整的状态转换表; (2)当MN分别为00、01、10时,计数器是几进制?列出状态转换图。 题图5.8.5 5.8.6题图5.8.6所示电路由三个下降沿触发的JK触发器和一个4选1数据选择器构成。设触发器初始状态为000: (1)分析三个下降沿触发的JK触发器构成电路的逻辑功能,试写出驱动方程、状态方程,画出完整的状态转换表及状态转换图并判断电路能否自启动; (2)分析整体电路逻辑功能,并求输出L。 题图5.8.6 5.8.7题图5.8.7(一)为某非接触式转速表的原理框图,由A~H共8部分构成。转动体每转动一周,传感器就发出一个正弦波。 (1) A框传感器输出正弦波,B框要求输出同频率的矩形波,说明B框中应为何种电路? (2) C框要求输出1s的定时门控信号,电路如题图5.8.8所示,说明555定时器构成的电路名称,分析电路的工作原理并说明1s定时的实现过程,确定电阻R的值。 (3) 已知测速范围为0~99r/s,用74161芯片设计E框中的电路。 (4) 若G框中采用7447芯片,则H框中应为共阴极数码管还是共阳极数码管?当译码器7447输入代码为0110和1001时,显示的字形是什么? 题图5.8.7(一) 5.8.8题图5.8.8所示电路由一片4位数值比较器7485、一片同步十六进制计数器74161以及非门组成的电路,试分析该电路的逻辑功能。 题图5.8.7(二) 题图5.8.8 5.8.9如题图5.8.9所示电路,设输出逻辑变量R、Y、G分别为红灯、黄灯和绿灯的控制信号,时钟脉冲CP的周期为10s,试分析电路的逻辑功能。 题图5.8.9 5.8.10设计产生8位序列信号00010111的电路。 5.9本章课程设计拓展 2015年全国大学生电子设计竞赛本科组F题: 数字频率计 1. 任务 设计并制作一台闸门时间为1s的数字频率计。 2. 要求 1) 基本要求 (1) 频率和周期测量功能:  被测信号为正弦波,频率为1Hz~10MHz;  被测信号有效值电压为50mV~1V;  测量相对误差的绝对值不大于10-4。 (2) 时间间隔测量功能:  被测信号为方波,频率为100Hz~1MHz;  被测信号峰峰值电压为50mV~1V;  被测时间间隔为0.1μs~100ms;  测量相对误差的绝对值不大于10-2。 (3) 测量数据刷新时间不大于2s,测量结果稳定,并能自动显示单位。 2) 发挥部分 (1) 频率和周期测量的正弦信号频率为1Hz~100MHz,其他要求同基本要求(1)和(2)。 (2) 频率和周期测量时被测正弦信号的最小有效值电压为10mV,其他要求同基本要求(1)和(3)。 (3) 增加脉冲信号占空比的测量功能,要求:  被测信号为矩形波,频率为1Hz~5MHz;  被测信号峰峰值电压为50mV~1V;  被测脉冲信号占空比为10%~90%;  显示的分辨率为0.1%,测量相对误差的绝对值不大于10-2。 (4) 其他(如进一步降低被测信号电压的幅度等)。 3. 说明 本题的时间间隔测量是指A、B两路同频周期信号之间的时间间隔TAB。测试时可使用双通道DDS函数信号发生器,提供A、B两路信号。 5.10本章思维导图