您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 第2-5讲 VHDL语言结合逻辑电路设计
EDA技术实用教程第2-5讲VHDL语言语言组合逻辑电路设计一、逻辑门电路设计例1:用数据流描述方式设计一个4输入“与或非”逻辑门LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYyhf4ISPORT(A,B,C,D:INSTD_LOGIC;Y:OUTSTD_LOGIC);ENDyhf4;ARCHITECTUREdata_flowOFyhf4ISBEGINY=NOT((AANDB)OR(CANDD));ENDdata_flow;请画出电路图一、逻辑门电路设计组合逻辑电路一.任务1:四舍五入判别电路1.任务分析组合电路:输出仅由输入决定,与电路当前状态无关;电路结构中无反馈环路(无记忆)传统组合逻辑电路的设计方法:EDA技术实用教程EDA技术实用教程电路功能描述真值表逻辑表达式或卡诺图最简与或表达式逻辑变换逻辑电路图以四舍五入判别电路为例:电路基本功能:其输入为8421BCD码,要求当输入大于或等于5时,判别电路输出为1,反之为0。四舍五入判别电路真值表DCBAYDCBAY00000010110001001101001000111100110100010100010011由真值表化简得到逻辑关系:Y=D+AC+BCEDA技术实用教程EDA技术实用教程2.任务实施完成四舍五入判别电路的文本编辑:ENTITYzuheISPORT(a,b,c,d:INBIT;y:OUTBIT);ENDENTITY;ARCHITECTUREbehavOFzuheISBEGINY=DOR(AANDC)OR(BANDC);ENDARCHITECTURE;EDA技术实用教程仿真测试EDA技术实用教程在开发系统上进行硬件测试。主芯片MAX3000A/EPM3064ALC44-4;4个拨码开关;1个LED。EDA技术实用教程二.任务2:举重裁判表决电路1.任务分析设举重比赛有3个裁判,一个主裁判和两个副裁判。杠铃完全举上的裁决由每一个裁判按一下自己面前的按钮来确定。只有当两个或两个以上裁判判明成功,并且其中有一个为主裁判时,表明成功的灯才亮。EDA技术实用教程设主裁判为变量A,副裁判分别为B和C;表示成功与否的灯为Y,根据逻辑要求列出真值表。举重裁判表决电路真值表由真值表化简得到逻辑关系:Y=AB+ACEDA技术实用教程2.任务实施完成举重裁判表决电路的文本编辑:ENTITYbiaojueISPORT(a,b,c:INBIT;y:OUTBIT);ENDENTITY;ARCHITECTUREbehavOFbiaojueISBEGINY=(AANDB)OR(AANDC);ENDARCHITECTURE;EDA技术实用教程仿真测试EDA技术实用教程在开发系统上进行硬件测试:主芯片MAX3000A/EPM3064ALC44-4;3个拨码开关;1个LED。EDA技术实用教程一.任务1:普通8_3编码器1.任务分析用一定位数的二进制数来表示十进制数码、字母、符号等信息称为编码。实现编码操作的电路称为编码器。编码器分为普通编码器和优先编码器。普通编码器任何时刻只允许一个输入有效。特点为“或”逻辑关系。编码器EDA技术实用教程普通8_3编码器真值表:其中输入8个互斥的信号,输出3位二进制代码EDA技术实用教程2.任务实施使用VHDL顺序语句,完成普通8_3编码器的文本编辑:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYbianma_3ISPORT(i:INSTD_LOGIC_VECTOR(7DOWNTO0);y:OUTSTD_LOGIC_VECTOR(2DOWNTO0));ENDENTITYbianma_3;ARCHITECTUREONEOFbianma_3ISBEGINEDA技术实用教程PROCESS(i)BEGINCASEiISWHEN00000001=y=000;WHEN00000010=y=001;WHEN00000100=y=010;WHEN00001000=y=011;WHEN00010000=y=100;WHEN00100000=y=101;WHEN01000000=y=110;WHEN10000000=y=111;WHENOTHERS=y=ZZZ;ENDCASE;ENDPROCESS;ENDARCHITECTUREONE;EDA技术实用教程仿真测试EDA技术实用教程在开发系统上进行硬件测试。主芯片MAX3000A/EPM3064ALC44-4;8个开关;3个LED灯。EDA技术实用教程二.任务2:8_3优先编码器1.任务分析优先编码器允许多个输入信号同时有效。设计时所有输入信号已按优先顺序排队。其中优先级别高的信号排斥级别低的,即具有单方面排斥的特性。以8_3优先编码器为例:设I7的优先级别最高,I6次之,依此类推,I0最低。输入I7I6I5I4I3I2I1I0输出Y2Y1Y01 × × × × × × ×0 1 × × × × × ×0 0 1 × × × × ×000 1× × × ×00001× × ×000001× ×0000001×000000011111101011000110100010008_3优先编码器真值表EDA技术实用教程EDA技术实用教程2.任务实施使用VHDL顺序语句,完成8_3优先编码器的文本编辑:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYbianmaISPORT(i:INSTD_LOGIC_VECTOR(7DOWNTO0);y:OUTSTD_LOGIC_VECTOR(2DOWNTO0));ENDENTITYbianma;ARCHITECTUREONEOFbianmaISBEGINEDA技术实用教程PROCESS(i)BEGINIFi(7)='1'THENy=111;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;ELSIFi(1)='1'THENy=001;ELSIFi(0)='1'THENy=000;ENDIF;ENDPROCESS;ENDARCHITECTUREONE;该描述具有优先级EDA技术实用教程仿真测试:EDA技术实用教程在开发系统上进行硬件测试:主芯片MAX3000A/EPM3064ALC44-4;8个开关;3个LED灯。一.任务1:普通8_3编码器1.任务分析将输入的二值代码转换成对应的高、低电平信号,称为译码。它是编码的反操作。实现译码操作的电路称为译码器。译码器分二进制译码器、十进制译码器及字符显示译码器,各种译码器的工作原理类似,设计方法也相同。设二进制译码器的输入端为n个,则输出端为2n个,且对应于输入代码的每一种状态,2n个输出中只有一个为1(或为0),其余全为0(或为1)。译码器译码器设计3_8译码器真值表:其中输入3位二进制代码,输出8个互斥的信号译码器设计三译码器设计设计3-8线译码器LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYymq83ISPORT(A,B,C:INSTD_LOGIC;Y:OUTSTD_LOGIC_VECTOR(7DOWNTO0));ENDymq83;请注意数据类型的声明ARCHITECTUREbehaviorOFymq83ISSIGNALINDATA:STD_LOGIC_VECTOR(2DOWNTO0);BEGININDATA=C&B&A;PROCESS(INDATA)BEGINCASEINDATAISWHEN“000”=Y=“11111110”;WHEN“001”=Y=“11111101”;WHEN“010”=Y=“11111011”;WHEN“011”=Y=“11110111”;WHEN“100”=Y=“11101111”;WHEN“101”=Y=“11011111”;WHEN“110”=Y=“10111111”;WHEN“111”=Y=“01111111”;WHENOTHERS=Y=“XXXXXXXX”;ENDCASE;ENDPROCESS;ENDbehavior;该描述不具有优先级译码器设计仿真测试译码器仿真二.任务2:七段数码显示译码器1.任务分析用来驱动各种显示器件,从而将用二进制代码表示的数字、文字、符号翻译成人们习惯的形式直观地显示出来的电路,称为显示译码器。这种显示器可用多种发光器件构成。例如半导体发光二极管、液晶等。显示译码器以发光二极管的七段数码显示译码器为例进行说明。显示译码器七段数码显示译码器真值表显示译码器2.任务实施使用VHDL顺序语句,完成七段数码显示译码器的文本编辑:libraryieee;useieee.std_logic_1164.all;entityyimaisport(d0,d1,d2,d3:instd_logic;a,b,c,d,e,f,g:outstd_logic);endyima;architecturebehavofyimaissignalm:std_logic_vector(3downto0);signalseg7:std_logic_vector(6downto0);beginm=d3&d2&d1&d0;显示译码器WITHmSELECTseg7=0111111when0000,0000110when0001,1011011when0010,1001111when0011,1100110when0100,1101101when0101,1111101when0110,0000111when0111,1111111when1000,1100111when1001,1110111when1010,显示译码器1111100when1011,0111001when1100,1011110when1101,1111001when1110,1110001when1111,0000000whenothers;g=seg7(6);f=seg7(5);e=seg7(4);d=seg7(3);c=seg7(2);b=seg7(1);a=seg7(0);endbehav;显示译码器仿真测试显示译码器主芯片MAX3000A/EPM3064ALC44-4;4个开关;1个共阴七段数码管。在开发系统上进行硬件测试:显示译码器加法器一.任务1:四位加法器1.任务分析能对两个1位二进制数进行相加而求得和及进位的逻辑电路称为半加器。能对两个1位二进制数进行相加并考虑低位来的进位,即相当于3个1位二进制数的相加,求得和及进位的逻辑电路称为全加器。实现多位二进制数相加的电路称为加法器。按照进位方式的不同,加法器分为串行进位加法器和超前进位加法器两种。串行进位加法器电路简单、但速度较慢,超前进位加法器速度较快、但电路复杂。加法器除用来实现两个二进制数相加外,还可用来设计代码转换电路、二进制减法器和十进制加法器等。加法器A[3..0]B[3..0]CINS[3..0]COUTAB低位进位A+B+CIN进位四位加法器真值表例1:设计4位二进制加法器数据类型必须一致才能赋值LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYjfq4ISPORT(a,b:INSTD_LOGIC_VECOR(3DOWNTO0);sum:OUTSTD_LOGIC_VECTOR(4DOWNTO0));ENDjfq4;ARCHITECTUREbehaviorOFjfq4ISBEGINPROCESS(a,b)BEGINsum=(‘0’&a)
本文标题:第2-5讲 VHDL语言结合逻辑电路设计
链接地址:https://www.777doc.com/doc-4601889 .html