版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
5.1组合逻辑电路设计5.1.1门电路设计门电路种类较多,我们设计一个二输入与非门、一个二输入或非门和一个二输入异或门,其电路的符号如图5.1所示。注意:为方便起见,将它们安排在一个结构体中,同时实现相应的输出。5.1.2三态门及总线缓冲器设计三态门是驱动电路常用到的器件,其输出除有高、低电平两种状态外,还有第三种状态——高阻态。VHDL语言指定大写字母“Z”表示高阻态,三态门电路都有一个使能控制端EN,用来控制门电路的通/断。其具体的描述代码如下:下一页返回5.1组合逻辑电路设计
上一页下一页返回如下5.1组合逻辑电路设计
上一页下一页返回续5.1组合逻辑电路设计
在ENTITY中,定义了两个输入信号:数据信号din和控制信号en;定义了一个三态的输出信号。在ARCHITECTURE中,定义了电路的功能。当en=‘1’(en端接高电平)时,该三态门导通,输入信号传递到输出端;当en=‘0’(en端接低电平)时,该三态门断开,输入信号不能传递到输出端,输出端呈现高阻态。注意:将一组三态门并行地组成总线,就可以形成总线缓冲器,总线缓冲器分为单向总线缓冲器和双向总线缓冲器。用VerilogHDL的关键字bufifl来描述一个三态门,该三态门有一个输入端in、一个输出端out和一个控制端oe。当oe端为高时,out=in;当oe端为低时,输出out为高阻态。上一页下一页返回5.1组合逻辑电路设计
该三态门的源代码如下:上一页下一页返回5.1组合逻辑电路设计
1.8位单向总线缓冲器在微机的总线驱动中经常用到单向总线缓冲器,用于驱动地址总线和控制总线。其电路符号如图5.4所示。一个8位的单向总线缓冲器的VHDL代码如下:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYTR1_BUFFER8ISPORT(Din:INSTD_LOGIC_VECTOR(7DOWNTO0);EN:INSTD_LOGIC;上一页下一页返回5.1组合逻辑电路设计
Dout:OUTSTD_LOGIC_VECTOR(7DOWNTO0));ENDTR1_BUFFER8;ARCHITECTUREfourOFTR1_BUFFER8ISBEGINPROCESS(EN,Din)//定义了一个进程BEGINIF(EN='1')THENDout<=Din;上一页下一页返回5.1组合逻辑电路设计
ELSEDout<="ZZZZZZZZ";//Z表示高阻态ENDIF;ENDPROCESS;ENDfour;在这段代码中,数据输入和数据输出端都用8位矢量信号来代替1位信号,形成了8位的单向总线缓冲器。上一页下一页返回5.1组合逻辑电路设计
2.双向总线缓冲器双向总线缓冲器用于数据总线的驱动和缓冲,两个数据端口均为双向端口(INPUT),除了具有一个选通使能端EN外还有一个方向控制端DIR。其电路符号如图5.5所示。VHDL语言对于复杂的情况一般采用多进程描述,由于双向总线缓冲器的数据传输是两个方向,且是分时运行的,因此用两个进程描述两种情况下的数据传输。上一页下一页返回5.1组合逻辑电路设计
8位双向总线缓冲器的具体VHDL代码如下:上一页下一页返回5.1组合逻辑电路设计
继续上一页下一页返回5.1组合逻辑电路设计5.1.3编码器、译码器设计在数字电路中,需要建立起特定的信息与二进制码间的联系。输入为特定信息,输出为相应的二进制码,这就是编码器。输入为二进制码,输出为对应的特定信息,这就是译码器。1.8线−3线优先编码器8线−3线优先编码器是最常见的一种编码器,它将输入的某一个有效信号转化为3位二进制码,为了应对同时出现多个输入信号都有效的情况,确定每个输入信号的等级,进行优先编码。其中,有8个输入信号,3个输出信号。输入信号中i(0)的优先级别最低,i(1)次之,以此类推,i(7)的优先级别最高。上一页下一页返回5.1组合逻辑电路设计具体的VHDL代码如下:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;//调用库ENTITYENCODERIS//实体部分,描述电路功能PORT(i:INSTD_LOGIC_VECTOR(7DOWNTO0);y:OUTSTD_LOGIC_VECTOR(2DOWNTO0));ENDENCODER;ARCHITECTUREsixOFENCODERIS上一页下一页返回5.1组合逻辑电路设计BEGINPROCESS(i)//进程开始BEGINIFi(7)='1'THENy<="111";//如果输入为1,则输出值ELSIFi(6)='1'THENy<="110";ELSIFi(5)='1'THENy<="101";ELSIFi(4)='1'THENy<="100";ELSIFi(3)='1'THENy<="011";ELSIFi(2)='1'THENy<="010";上一页下一页返回5.1组合逻辑电路设计ELSIFi(1)='1'THENy<="001";ELSIFi(0)='1'THENy<="000";ELSEy<="XXX";ENDIF;ENDPROCESS;//结束进程ENDsix;注意:IF语句具有优先特性,谁在外层谁优先。在本例中当敏感信号i发生变化时,进程执行,首先对外层的i(7)判别,若i(7)有效,即优先编码。使用VerilogHDL设计的8线−3线优先编码器,代码如下:上一页下一页返回5.1组合逻辑电路设计Moduleencoder8_3(none_on,outcode,a,b,c,d,e,f,g,h);outputnone_on;output[2:0]outcode;inputa,b,c,d,e,f,g,h;reg[3:0]temp;assign{none_on,outcode}=temp;always@(aorborcordoreorforgorh)上一页下一页返回5.1组合逻辑电路设计beginif(h)temp=4'b0111;else(g)temp=4'b0110;elseif(f)temp=4'b0101;elseif(e)temp=4'b0100;elseif(d)temp=4'b0011;elseif(c)temp=4'b0010;elseif(b)temp=4'b0001;上一页下一页返回5.1组合逻辑电路设计elseif(a)temp=4'b0000;elsetemp=4'b1000;endendmodule上一页下一页返回5.1组合逻辑电路设计
2.3线−8线译码器译码是编码的逆过程,输入为N位二进制码,输出的2N个信号中有且只有一个有效,每个输入的二进制码与输出信号是一一对应的关系。3线−8线译码器输入3位二进制码,确定8个输出信号中的一个有效,其电路符号如图5.7所示。其中,g1、g2、g3是使能信号。上一页下一页返回5.1组合逻辑电路设计
5.1.4多路数据选择器和多路数据分配器设计多路数据选择器和多路数据分配器都属于通道选择电路,多路数据选择器是把从多个输入支路中的一路作为输出;多路数据分配器则是把一路输入分配到多路输出中的一路中。路径的选择都由数据选择控制端决定。1.4选1数据选择器4选1数据选择器是多路数据选择器中最常见的一种。有四路输入、一路输出,输出信号从四路输入中选取一路。其电路符号如图5.8所示。其中,g是使能控制输入端,当g=0时,电路不工作,输出为0,a[1..0]是数据选择控制端,决定4输入哪个被选中。上一页下一页返回5.1组合逻辑电路设计
2.1对4数据分配器1对4数据分配器是4选1数据选择器的逆过程。有一路输入、四路输出,输入信号从四路输出中选取一路通过。其电路符号如图5.9所示。其中,a[1..0]是数据选择控制端,决定输入信号din将分配到y0、y1、y2和y3哪个中去。上一页返回5.2时序逻辑电路设计5.2.1触发器设计触发器是构成时序逻辑电路的基本元件。按照有无复位、置位功能以及复位、置位与时钟信号是否同步,可以分为多种常见的D触发器。这里以最常用的同步复位D触发器为例,讲述触发器电路的设计方法。其电路符号如图5.10所示。下面使用VHDL语言对同步复位D触发器进行描述,下一页返回5.2时序逻辑电路设计
具体的代码如下:上一页下一页返回5.2时序逻辑电路设计
继续上一页下一页返回5.2时序逻辑电路设计
注意:CLK'EVENTANDCLK=‘1’就是用于检测时钟上升沿的函数,CLK'EVENTANDCLK=‘0’则用于检测时钟下降沿。IF语句具有优先特性。上例在使用IF嵌套结构时,时钟信号在外层,优先级高于复位信号,因此是同步复位。如果将代码段“IF(PRESET=‘0’)THENQ<=‘0’;”放在时钟检测语句外面,就是异步复位。使用VHDL描述,其代码如下:上一页下一页返回5.2时序逻辑电路设计
下面是使用VerilogHDL语言编写的触发器代码:上一页下一页返回5.2时序逻辑电路设计
5.2.2寄存器设计寄存器由一组触发器连接而成,用于存储一组二进制信息,广泛用于各类数字系统。寄存器分为普通寄存器和特殊功能寄存器,特殊功能寄存器又包括锁存器、移位寄存器、串入串出寄存器、串入并出寄存器、并入串出寄存器。5.2.3计数器设计计数器的逻辑功能就是用来记忆时钟脉冲的个数,是数字系统中使用广泛的时序电路。它不仅用于对时钟脉冲计数,实现分频、计时,还可以用于产生节拍脉冲和脉冲序列以及进行数字运算等。计数器的最大计数值称为计数器的模。上一页下一页返回5.2时序逻辑电路设计
计数器由一组触发器构成,计数器中的触发器是否同时翻转分类,可以把计数器分为同步计数器和异步计数器。在同步计数器中,时钟脉冲变化与触发器的翻转是同时发生的,在异步计数器中,每个触发器的时钟不同,因而翻转有前有后,不是同时发生的。上一页返回5.3有限状态机电路设计5.3.1有限状态机概述有限状态机是指输出取决于输入信号和当前所处状态的时序逻辑电路。有限状态机含有一组具有记忆功能的寄存器,称为状态寄存器,这些寄存器的功能是记忆有限状态机的内部状态,状态寄存器的下一个状态不仅与输入信号有关,而且还与该寄存器的当前状态有关。因此,有限状态机又可以认为是组合逻辑和寄存器逻辑的一种组合。其中,寄存器逻辑的功能是存储有限状态机的内部状态;而组合逻辑又可以分为次态逻辑和输出逻辑两部分,次态逻辑的功能是确定有限状态机的下一个状态,输出逻辑的功能是确定有限状态机的输出。在实际应用中,按照有限状态机是否使用输入信号,将其分为Moore型有限状态机和Mealy型有限状态机两种类型。下一页返回5.3有限状态机电路设计
5.3.2有限状态机的算法描述当接到设计任务后,仔细研究所设计的数字控制系统的功能,如果该系统具有按一定顺序产生不同输出的特征,那么就可以用有限状态机来实现该控制系统。描述有限状态机的算法有两种:状态转换真值表和状态转换图。两种方法的描述结果是一样的,本章使用状态转换真值表。对于同一个数字系统的功能描述,不同的设计者可能构建出不同的状态转换真值表,而且都能很好完成系统要求。目前还不能找到一个通用的构建状态转换真值表的算法,还依赖于设计者的设计经验。上一页下一页返回5.3有限状态机电路设计
但设计者若能认真阅读前人设计的源代码,学习前人的设计思路,就能构建出较好的状态转换真值表。在这里,将列举一个洗衣机控制器的例子,详细介绍有限状态机的设计方法。洗衣机控制器的设计要求:(1)启动电源开机,确定水位后,启动进水阀加水。(2)达到水位后进入洗涤状态,关闭进水阀,启动洗涤电动机。(3)达到洗涤时间,洗涤电动机停转,启动出水阀。(4)水排干净后,启动甩干电动机把水甩干。(5)甩干后,关闭进水阀,启动进水阀加水。上一页下一页返回5.3有限状态机电路设计
(6)达到水位后进入漂洗状态,关闭进水阀,启动旋转电动机。(7)达到漂洗时间,旋转电动机停转,启动出水阀。(8)水排干净后,启动甩干电动机把水甩干。(9)甩干后,关闭进水阀、断电。通过以上要求,发现系统具有按一定顺序产生不同输出的特征,应该采用有限状态机来实现。系统的输入信号是:开机输入START、加水用的水位传感器送来的WL1、排水用的水位传感器送来的WL2、洗涤定时器输入T1、甩干定时器输入T2。系统的输出信号是:进水阀控制端J、排水阀控制端P、洗涤电动机控制端M1、漂洗电动机控制端M2、电源控制端Y。上一页下一页返回5.3有限状态机电路设计
洗衣机控制器的状态根据洗衣机的工作时序可分成9个状态,分别是S0、S1、S2、S3、S4、S5、S6、S7、S8,与上述洗衣机的工作时序相对应。开机输入START作为使能信号。本例是简化了的洗衣机控制器,只是为了说明设计有限状态机的思路,有兴趣的读者可以补充完整。5.3.3有限状态机的VHDL描述模式使用VHDL语言描述的有限状态机,基本上有固定描述方式,我们将状态转换真值表的内容填入模板,就可以设计出程序。上一页下一页返回5.3有限状态机电路设计
模板代码如下:上一页下一页返回5.3有限状态机电路设计继续上一页下一页返回5.3有限状态机电路设计
继续上一页下一页返回5.3有限状态机电路设计
继续上一页下一页返回5.3有限状态机电路设计
5.3.4有限状态机的VerilogHDL描述模式在VerilogHDL设计中,描述状态机代码有一定的开发模板。根据该模板写出来的状态机有着较高的性能和完全的可综合性,可以提高设计效率。本节主要介绍两类状态机的经典实现模板。状态机的描述通常有三种方法,称为一段式状态机、二段式状态机和三段式状态机。不同的描述所对应的电路是不同的,因此最终的性能也是不同的。状态机的描述通常包含以下四部分:(1)利用参数定义语句parameter描述状态机各个状态名称,即状态编码。状态编码通常有很多方法,包含自然二进制编码、One−hot编码和格雷编码等。上一页下一页返回5.3有限状态机电路设计
(2)用时序的always块描述状态触发器实现状态存储。(3)使用敏感表和case语句(也采用if−else等价语句)描述状态转换逻辑。(4)描述状态机的输出逻辑。下面介绍状态机的三种方法,以比较各种方法的优劣。1.一段式状态机这种方式是将当前状态向量和输出向量用同一个时序always块来进行描述,由于是寄存器输出,输出向量不会产生毛刺,也有利于综合。但是这种方式有缺点,比如代码冗长,不易修改和调试,可维护性差且占用资源多;上一页下一页返回5.3有限状态机电路设计
通过case语句对输出向量的赋值应是下一个状态的输出,这易出错。状态向量和输出向量都由寄存器逻辑实现,占用面积较大;不能实现异步Mealy型有限状态机。2.二段式状态机二段式状态机中,一个时序always块给当前状态向量赋值,一个组合always块给下一状态和输出向量赋值,常用于描述组合输出的Moore型状态机或异步Mealy型状态机,这种方式具有最优的面积和时序性能,其缺点是其输出为当前状态的组合函数,因此存在以下问题:上一页下一页返回5.3有限状态机电路设计
(1)组合逻辑输出会使输出向量产生毛刺。一般情况下,输出向量的毛刺对电路的影响可以忽略不计。但当输出向量作为三态使能控制或者时钟信号使用的时候,就必须消除毛刺,否则会对后面的电路产生致命的隐患。(2)从速度角度来看,由于这种状态机的输出向量必须由状态向量经译码得到,加大了从状态向量到输出向量的延时。(3)从综合角度来看,组合输出消耗了一部分时钟周期,即增加了由它驱动的下一个模块的输入延时,不利于综合脚本的编写和综合优化算法的实现。上一页下一页返回
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新颖游乐活动策划方案(3篇)
- 2026内蒙古昌都市丁青县消防救援大队补招政府专职消防员4人备考考试试题及答案解析
- 2026山东事业单位统考淄博高新区事业单位面向退役大学生士兵招聘综合类(专项)岗位备考考试题库及答案解析
- 2026中电科金仓(北京)科技股份有限公司校园招聘备考考试试题及答案解析
- 2026年上半年黑龙江省林业科学院事业单位公开招聘工作人员55人笔试备考试题及答案解析
- 2026甘肃兰州市安宁区人民医院招聘编外医务工作人员1名备考考试题库及答案解析
- 2026四川宜宾市屏山县融媒体中心第一次招聘编外工作人员1人参考考试题库及答案解析
- 2026浙江宁波东方蔚蓝人力资源有限公司第一期招聘2人备考考试试题及答案解析
- 2026中国科学院理化技术研究所热声热机团队招聘特别研究助理博士后1人备考考试题库及答案解析
- 2026广东茂名出入境边防检查站编制外人员招聘1人笔试模拟试题及答案解析
- 太仓市高一化学期末考试卷及答案
- 生活物资保障指南解读
- 2025年浙江省委党校在职研究生招生考试(社会主义市场经济)历年参考题库含答案详解(5卷)
- DB3704∕T0052-2024 公园城市建设评价规范
- 采购领域廉洁培训课件
- 公司股东入股合作协议书
- 2025年中国化妆品注塑件市场调查研究报告
- 小儿药浴治疗
- 保险实务课程设计
- 物业管理公司管理目标标准
- 2023年重庆巴南区重点中学指标到校数学试卷真题(答案详解)
评论
0/150
提交评论