VHDLl(硬件描述语言):第8章 基本逻辑电路设计

上传人:工**** 文档编号:573737622 上传时间:2024-08-15 格式:PPT 页数:58 大小:1,010.50KB
返回 下载 相关 举报
VHDLl(硬件描述语言):第8章 基本逻辑电路设计_第1页
第1页 / 共58页
VHDLl(硬件描述语言):第8章 基本逻辑电路设计_第2页
第2页 / 共58页
VHDLl(硬件描述语言):第8章 基本逻辑电路设计_第3页
第3页 / 共58页
VHDLl(硬件描述语言):第8章 基本逻辑电路设计_第4页
第4页 / 共58页
VHDLl(硬件描述语言):第8章 基本逻辑电路设计_第5页
第5页 / 共58页
点击查看更多>>
资源描述

《VHDLl(硬件描述语言):第8章 基本逻辑电路设计》由会员分享,可在线阅读,更多相关《VHDLl(硬件描述语言):第8章 基本逻辑电路设计(58页珍藏版)》请在金锄头文库上搜索。

1、第八章第八章 基本逻辑电路设计基本逻辑电路设计定义:定义:任一时刻的输出仅仅取决于当时的输入,与电路原来的状态 无关,这样的数字电路叫做组合逻辑电路。常用组合逻辑电路有以下几种:8.1组合逻辑电路设计组合逻辑电路设计1、各种基本门电路(与门、或门、非门、异或门)2、多选器(二选一、四选一、八选一、)3、编码器4、译码器5、奇偶校验器6、三态门7、缓冲器3-8译码器设计译码器设计G1、G2A、G2B是 3个选通输入端,只有在G1=1,G2A=0,G2B=0时,译码器正常译码,否则Y0-Y7均为高电平。输输入入输输出出G1G2AG2BA2A1A0Y0Y1Y2Y3Y4Y5Y6Y71111111111

2、1111111101111111110000001111111100001101111111000101101111110001111101111100100111101111001011111101110011011111101100111111111103线线8线译码器线译码器74138真值表真值表 按数据流描述方式编写的按数据流描述方式编写的3线线8线译码器线译码器74138LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYdecoder138ISPORT(G1,G2A,G2B:INSTD_LOGIC;A:INSTD_LOGIC_VECTOR(2D

3、OWNTO0);Y:OUTSTD_LOGIC_VECTOR(7DOWNTO0);ENDdecoder138;ARCHITECTUREdataflowOFdecoder138ISBEGINPROCESS(G1,G2A,G2B,A)BEGINIF(G1=1ANDG2A=0ANDG2B=0)THEN CASEAISWHEN000=YYYYYYYY=01111111;ENDCASE;ELSEYAAAAAAAA=000;ENDCASE;ENDPROCESS;ENDdataflow;优先编码器优先编码器优先编码器常用于中断的优先控制。当其某一个输入有效时,就可以输出一个对应的3位二进制码。另外,当同时有几

4、个输入有效时,将输出优先级最高的那个输入所对应的二进制码。低电平有效input(0)优先级最高,input(1)优先级次之,如此类推,input(7)优先级最低LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYpriorityencoderISPORT(input:INSTD_LOGIC_VECTOR(7DOWNTO0);y:OUTSTD_LOGIC_VECTOR(2DOWNTO0);ENDpriorityencoder;ARCHITECTURErtlOFpriorityencoderISBEGINPROCESS(input)BEGINIF(input(

5、0)=0)THENy=“111”;ELSIF(input(1)=0)THENy=“110”;按行为数据流方式编写优先编码器的VHDL源代码如下:利用利用利用利用 if if if if 多选择语句自顶向下的优先特性多选择语句自顶向下的优先特性多选择语句自顶向下的优先特性多选择语句自顶向下的优先特性ELSIF(input(2)=0)THENy=“101”;ELSIF(input(3)=0)THENy=“100”;ELSIF(input(4)=0)THENy=“011”;ELSIF(input(5)=0)THENy=“010”;ELSIF(input(6)=0)THENy=“001”;ELSEy=

6、“000”;ENDIF;ENDPROCESS;ENDrtl;利用IF多选择语句,自顶向下的优先特性。input(0)优先级最高,input(1)优先级次之,如此类推,input(7)优先级最低3 3 选择器选择器在多路数据传送过程中,能够根据需要将其中任意一路选出来的电路,叫做数据选择器,也称多路选择器或多路开关。8选选1数据选择器设计数据选择器设计YbD7D71110D6D60110D5D51010D4D40010D3D31100D2D20100D1D11000D0D0000010XXX1A0A1A2GY地址选择使能输出输入741518选1数据选择器真值表 参考参考7415174151的真值

7、表,采用的真值表,采用IFIF语句结构编写的语句结构编写的VHDLVHDL描述:描述: LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYmux8ISPORT(A:INSTD_LOGIC_VECTOR(2DOWNTO0);D0,D1,D2,D3,D4,D5,D6,D7:INSTD_LOGIC;G:INSTD_LOGIC;Y:OUTSTD_LOGIC;YB:OUTSTD_LOGIC);ENDmux8;ARCHITECTUREdataflowOFmux8ISBEGINPROCESS(A,D0,D1,D2,D3,D4,D5,D6,D7,G)用用IF语句设计语句

8、设计8选选1选择器选择器BEGINIF(G=1)THENY=0;YB=1;ELSIF(A=000)THENY=D0;YB=NOTD0;ELSIF(A=001)THENY=D1;YB=NOTD1;ELSIF(A=010)THENY=D2;YB=NOTD2;ELSIF(A=011)THENY=D3;YB=NOTD3;用用IF语句设计语句设计8选选1选择器(续)选择器(续)多选择控制的IF语句格式:IF条件条件THEN顺序处理语句;顺序处理语句;ELSIF条件条件THEN顺序处理语句;顺序处理语句; ELSIF条件条件THEN顺序处理语句;顺序处理语句;ELSE顺序处理语句;顺序处理语句;ENDIF

9、; ELSIF(A=100)THENY=D4;YB=NOTD4;ELSIF(A=101)THENY=D5;YB=NOTD5;ELSIF(A=110)THENY=D6;YB=NOTD6;ELSEY=D7;YB=NOTD7;ENDIF;ENDPROCESS;ENDdataflow;用用IF语句设计语句设计8选选1选择器(续)选择器(续)参考参考74151的真值表,采用的真值表,采用CASE语句结构编写的语句结构编写的VHDLLIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYmux8ISPORT(A2,A1,A0:INSTD_LOGIC;D0,D1,D2,D3

10、,D4,D5,D6,D7:INSTD_LOGIC;G:INSTD_LOGIC;Y:OUTSTD_LOGIC;YB:OUTSTD_LOGIC);ENDmux8;ARCHITECTUREdataflowOFmux8ISSIGNALcomb:STD_LOGIC_VECTOR(3DOWNTO0);BEGINcombY=D0;YBY=D1;YBY=D2;YBY=D3;YBY=D4;YBY=D5;YBY=D6;YBY=D7;YBY=0;YB=1;ENDCASE;ENDPROCESS;ENDdataflow;用用CASE语句设计语句设计8选选1选择器(续)选择器(续)其中其中:A和和B是两个相加的是两个相加

11、的8位二进制数位二进制数;Cin是低位进位位是低位进位位;S是是A、B相加之和相加之和;Co是是A、B相加之后的进位位。相加之后的进位位。8.1.3 加法器加法器 加法器是数字电路中的基本运算单元,下例是直接利用VHDL运算符“+”实现加法运算的8位加法器源代码。LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYadder8ISPORT(A:INSTD_LOGIC_VECTOR(7DOWNTO0);B:INSTD_LOGIC_VECTOR(7DOWNTO0);Cin:INSTD_LOGIC;C

12、o:OUTSTD_LOGIC;S:OUTSTD_LOGIC_VECTOR(7DOWNTO0);ENDadder8;声声明明了了IEEE库库中中的的包包集集合合STD_LOGIC_UNSIGNED,才才能能对对STD_LOGIC_VECTOR类型数据进行加减运算类型数据进行加减运算ARCHITECTUREbehaveOFadder8ISSIGNALSint:STD_LOGIC_VECTOR(8DOWNTO0);SIGNALAA,BB:STD_LOGIC_VECTOR(8DOWNTO0);BEGINAA=0&A(7DOWNTO0);BB=0&B(7DOWNTO0);Sint=AA+BB+Cin;S

13、(7DOWNTO0)=Sint(7DOWNTO0);Co=Sint(8);ENDbehave;将将8位位加加数数矢矢量量扩扩展展为为9位位,为为进进位位提供空间提供空间1、设计6-3编码器,要求:(1)实验板上的6个按钮对应6路输入,对每路输入进行编码,该码通过1个数码管显示出来。如:第2个按钮按下,数码管应显示“2”。(2)分别用case语句和if语句实现(3)在quartusII上编程调试,用实验板测试上交形式:word文档编排好程序(附调试结果照片,其中至少要有一张是有学生证摆在一起照的,要求能清晰分辨姓名、学号)。文档名为“姓名_学号”,上传到课程邮箱“其它*个文件夹”目录下的“201

14、3_6-3编码器作业编码器作业”文件夹文件夹。组合逻辑作业组合逻辑作业时时序序逻逻辑辑电电路路定定义义:任意时刻的输出不仅取决于当时的输入信号,而且还取决于电路原来的状态,或者说,还与以前的输入有关。按照电路的工作方式,时序逻辑电路可分为同同步步时时序序逻逻辑辑电电路路(简称同步时序电路)和异异步步时时序序逻逻辑辑电电路路(简称异步时序电路)两种类型。常见的时序逻辑电路有触发器、计数器、寄存器等。时序逻辑电路定义时序逻辑电路定义任何时序电路都是用时钟信号作为驱动信号的。时序电路只是在时钟信号的有效沿或电平到来时,其状态才发生变化。因此,时钟信号通常是描述时序电路的程序的执行条件。1)同步复位)

15、同步复位process (clock_signal) begin if (clock_edge_condition) then if (reset_condition) then signal_out = reset_value; else signal_out = signal_in ; end if ; end if ; end process ; 同步复位:当复位信号有效且在给定的时钟边沿到来时,触发器才被复位。“同步”:与时钟信号同步。2)异异步复位步复位异步复位:用IF语句描述复位条件;在ELSE段描述时钟信号边沿的条件。PROCESS(reset_signal,clk_signal

16、)BEGINIF(reset_condition)THENsignal_out=reset_value;ELSIF(clk_eventANDclk_edge_condition)THENsignal_out=signal_in;-其它时序语句;其它时序语句;-“异步”:一旦复位信号有效,触发器就被复位,与时钟信号无关。进程中的IF语句一开始就判断清0条件,可见此时清0优先级高于时钟。异步复位异步复位D锁存器程序实例锁存器程序实例异步复位异步复位/置位置位D锁存器程序实例锁存器程序实例进程后跟括号内有三个敏感信号:时钟信号,复位信号和置位信号。通过进程中的IFTHENELSEIF语句可以看出:优

17、优先先级级,置置位位最最高高,复复位位次次之之,时时钟钟最低。最低。PROCESS(clk,pset,clr)ISBEGINIF(pset=0)THENq=1;ELSIF(clr=0)THENq=0;ELSIF(clkEVENTANDclk=1)THENq=d;ENDIF;ENDPROCESS;进程后跟括号内只有一个敏感信号:时钟信号。通过进程中的IFTHENELSE语句可以看出:复复位优先级最高。位优先级最高。PROCESS(clk)BEGINIF(clkEVENTANDclk=1)THENIF(clr=1)THENq=0;ELSEq=d;ENDIF;ENDIF;ENDPROCESS;当复位

18、信号有效(clr=1)以后,只是在有效边沿来时才能进行复位操作。4)同步复位同步复位D锁存器锁存器8.2.4计数器计数器在数字电子技术中应用的最多的时时序序逻逻辑辑电电路路。计数器不仅能用于对时钟脉冲计数,还可以用于分频、定时、产生节拍脉冲和脉冲序列以及进行数字运算等。1、如果按照计数器中的触发器是否同时翻转分类,可将计数器分为同步计数器和异步计数器两种。常见的同步计数器有74160系列,74LS190系列,常见的异步计数器有74LS290系列。2、如果按照技术过程中数字增减分类,又可将计数器分为加法计数器和减法计数器,随时钟信号不断增减的为加法计数器,不断减少的为减法计数器。 同步计数器指在

19、时钟脉冲(计数脉冲)的控制下,构成计数器的各触发器状态同时发生变化的计数器。1同步计数器同步计数器(1) (1) 带允许端的十二进制计数器带允许端的十二进制计数器计数器由4个触发器构成,clr是清零,en是计数控制端,qa,qb,qc,qd为计数器的4位二进制值的输出端。带允许端的十二进制计数器用VHDL语言描述:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYcount12enISPORT(clk,clr,en:INSTD_LOGIC;qa,qb,qc,qd:OUTSTD_LOGIC);E

20、NDENTITYcount12en;ARCHITECTURErtlOFcount12enISSIGNALcount_4:STD_LOGIC_VECTOR(3DOWNTO0);BEGINqa=count_4(0);qb=count_4(1);qc=count_4(2);qd=count_4(3);PROCESS(clk,clr)ISBEGINIF(clr=1)THENcount_4=0000;ELSIF(clkEVENTANDclk=1)THENIF(en=1)THENIF(count_4=1011)THENcount_4=0000;ELSEcount_4=count_4+1;ENDIF;END

21、IF;ENDIF;ENDPROCESS;ENDARCHITECTURErtl;异步复位1、用VHDL语言设计秒表,要求:(1)用实验板上的4个数码管分别显示秒和百分秒(0.01秒),其中两个数码管显示秒,另两个显示百分秒。“百分秒”部分每0.01秒加1,到99后,“秒”部分加1。(2)用一个按钮控制开始计时和停止计时,另一个按钮清零。(3)在quartusII上编程调试,用实验板测试上交形式:(1)word文档编排好程序(附调试结果照片,其中至少要有一张是有学生证摆在一起照的,要求能清晰分辨姓名、学号)。文档名为“姓名_学号”,上传到课程邮箱“其它9个文件夹”目录下的“2013_秒表作业秒表作

22、业”文件夹文件夹。时序电路作业时序电路作业有有限限状态机状态机在数字电路系统中,是一种输出取决于过去输入部分和当前输入部分的时序逻辑电路。finite-statemachine,FSM,又称有限状态自动机有限状态自动机,简称状状态机态机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。DIN=0下图示意了有限状态机的状态转移图。S0/0DIN=0S3/1DIN=0S1/0DIN=1DIN=1DIN=0S2/1S/DOUTDIN=1DIN=1概概述述 有限状态机主要功能是用来实现一个数字电路设计中的控制部分,它与CPU的功能相似。状态机优于CPU的地方:1、CPU在实现控制功能的

23、过程中,需要很多的操作指令步骤和硬件操作单元(如ALU);而有限状态机中,控制状态存储在多个触发器中,表示状态转移和控制功能的代码存储在门级网络中。2、有限状态机逻辑通常十分适用于可编程逻辑器件。通过恰当的VHDL描述和EDA工具的综合,一般可以生成性能极优的有限状态机,使其在执行时间、运行速度和占用资源等方面优于由CPU实现的设计方案。有限状态机分为两类:Moore型-输出信号输出信号仅与当前状态有关Mealy型-输出信号输出信号不仅与当前状态有关,还与输入信号有关Moore状态机(例)状态机(例)LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.

24、STD_LOGIC_ARITH.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYmooreISPORT(CLK,RD,DIN:INSTD_LOGIC;DOUT:OUTSTD_LOGIC);ENDMOORE;ARCHITECTUREexampleOFMOOREISTYPES_MIS(S0,S1,S2,S3);-定义枚举类型,4种状态SIGNALC_S:S_M;-定义当前状态信号SIGNALN_S:S_M;-定义次状态信号BEGINPROCESS(CLK,RD)状态寄存器进程,上升沿跳转BEGIN-在每个上升沿将次态赋给当前状态IFRD=0THENC_S=S0;E

25、LSIFCLKEVENTANDCLK=1THENC_S-状态S0IFDIN=0THENN_S=S0;-DIN=0时,次状态为S0ELSEN_S=S1;-否则次状态为S1ENDIF;DOUTIFDIN=0THENN_S=S1;-DIN=0时,次状态为S1ELSEN_S=S2;-否则次状态为S2ENDIF;DOUTIFDIN=0THENN_S=S2;-DIN=0时,次状态为S2ELSEN_S=S3;-否则次状态为S3ENDIF;DOUTIFDIN=0THENN_S=S3;-DIN=0时,次状态为S3ELSEN_S=S0;-否则次状态为S3ENDIF;DOUT=1;-状态S3时输出1ENDCASE;

26、ENDPROCESS;ENDexample;可见:Moore状态机的-输输出出信信号号仅与当前状态有关,与输入信号无关。Mealy状态机(例)状态机(例)LIBRARYIEEE;-USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;-USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYMEALYIS-实体声明PORT(CLK:INSTD_LOGIC;-输入时钟信号RD:INSTD_LOGIC;-异步复位信号DIN:INSTD_LOGIC;-输入信号DOUT:OUTSTD_LOGIC-输出信号);ENDMEALY;A

27、RCHITECTUREexampleOFMEALYIS-结构体声明TYPES_MIS(S0,S1,S2,S3);-定义枚举类型SIGNALC_S:S_M;-定义当前状态信号SIGNALN_S:S_M;-定义次状态信号BEGINBEGINPROCESS(CLK,RD)-寄存器进程,上升沿跳转BEGINIFRD=0THENC_S=S0;ELSIFCLKEVENTANDCLK=1THENC_S-状态S0IFDIN=0THEN-DIN为0时N_S=S0;-次状态为S0DOUT=0;-DOUT为0ELSE-DIN为1时,N_S=S2;-次状态为S1DOUT-状态S1IFDIN=0THEN-DIN为0时,

28、N_S=S0;-次状态为S0DOUT=0;-DOUT为0ELSE-DIN为1时,N_S=S2;-次状态为S2DOUT-状态S2IFDIN=0THEN-DIN为0时,N_S=S2;-次状态为S0DOUT=1;-DOUT为1ELSE-DIN为1时,N_S=S3;-次状态为S3DOUT-状态S3IFDIN=0THEN-DIN为0时,N_S=S3;-次状态为S3DOUT=0;-DOUT为1ELSE-DIN为1时,N_S=S1;-次状态为S0DOUTwe=0;re=0;if(ready=1)thennext_state=decision;elsenext_statewe=0;re=0;if(read_w

29、rite=1)thennext_state=read;elsenext_statewe=0;re=1;if(ready=0)thennext_state=idle;elsenext_statewe=1;re=0;if(ready=0)thennext_state=idle;elsenext_state=write;endif;endcase;Endprocess;State_rigister:Process(clk)beginif(clkeventandclk=1)thenpresent_state=next_state;endif;Endprocess;Endstate_machine;用V

30、HDL语言实现交通灯控制:主干道和次干道上等待通过的车辆轮流通过,主、次干道上车流的通过时间分别为45秒和25秒,绿灯到红灯的切换过渡时间均为5秒(亮黄灯)。只有当次干道有车等待通过时才作上述切换,否则保持主干道通过(即主干道绿灯亮次干道红灯亮)。交通灯交通灯次干道主干道MGSRIf(Subway=1ANDcnt=0)cnt=5MYSRcnt=45MRSGIf(cnt=0)cnt=25MRSYIf(Subway=0ORcnt=0)cnt=5If(cnt=0)状态含义状态含义:M:主干道主干道S:次干道次干道G:绿灯亮绿灯亮Y:黄灯亮黄灯亮R:红灯亮红灯亮如如:“MGSR”表示表示主干道绿灯亮,

31、次主干道绿灯亮,次干道红灯亮干道红灯亮1、用VHDL语言设计实现上述交通灯,用实验板模拟:(1)实验板上一个按钮开关模拟次干道是否有车等待,例如,按钮按下表示次干道有车等待通过,松开则表示无车等待通过。(2)“红”、“绿”、“黄”灯的状态可组合为3位二进制表示,如红灯亮表示为:“100”,绿灯亮:“010”,黄灯亮:“001”,将此码左边补“0”后构成4位二进制码(“0100”、“0010”、“0001”)送至数码管显示,分别显示“4”、“2”、“1”。(3)上述主干道和次干道的“红”、“绿”、“黄”状态各用一个数码管显示,计时则用另两个数码管显示。上交形式:(1)word文档编排好程序(附调试结果照片,其中至少要有一张是有学生证摆在一起照的,要求能清晰分辨姓名、学号,并转换为并转换为pdf格式格式)。文档名为“姓名_学号”,上传到课程邮箱“其它9个文件夹”目录下的“2013_交通灯作业交通灯作业”文件夹文件夹。交通灯作业交通灯作业

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号