欢迎来到天天文库
浏览记录
ID:52046405
大小:578.50 KB
页数:35页
时间:2020-03-31
《用VHDL进行基本逻辑电路设计总结.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、用VHDL进行基本逻辑电路设计总结组合逻辑电路设计时序逻辑电路设计状态机设计存储器设计(调用宏功能模块进行设计)1组合逻辑电路设计常见组合逻辑电路设计主要有:基本门电路、3-8译码器、8-3线优先编码器、比较器、多路选择器、三态门电路、单向总线驱动器、双向总线缓冲器等。1.1基本门电路基本门电路用VHDL语言来描述十分方便。为方便起见,在下面的两输入模块中,使用VHDL中定义的逻辑运算符,同时实现一个与门、或门、与非门、或非门、异或门及反相器的逻辑。LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYGATEISPORT(A,B:INSTD_LOGI
2、C;YAND,YOR,YNAND,YNOR,YNOT,YXOR:OUTSTD_LOGIC);ENDGATE;ARCHITECTUREARTOFGATEISBEGINYAND<=AANDB;--与门输出YOR<=AORB;--或门输出YNAND<=ANANDB;--与非门输出YNOR<=ANORB;--或非门输出YNOT<=ANOTB;--反相器输出YXOR<=AXORB;--异或门输出ENDART;方法1:使用CASE_WHEN语句LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYDECODERISPORT(SEL:INSTD_LOGIC_VECT
3、OR(2DOWNTO0);EN:INSTD_LOGIC;---加使能控制端Y:OUTSTD_LOGIC_VECTOR(7DOWNTO0));END;1.23-8译码器下面我们分别以2种方法描述一个3-8译码器。ARCHITECTUREART1OFDECODERISBEGINPROCESS(SEL,EN)BEGINY<=”11111111”;IF(EN=’1’)THENCASESELISWHEN"000"=>Y(0)<=‘0’;--输出低有效WHEN"001"=>Y(1)<=‘0’;WHEN"010"=>Y(2)<=‘0’;WHEN"011"=>Y(3)<=‘0’;WHEN"100"=>Y
4、(4)<=‘0’;WHEN"101"=>Y(5)<=‘0’;WHEN"110"=>Y(6)<=‘0’;WHEN"111"=>Y(7)<=‘0’;WHENOTHERS=>NULL;ENDCASE;ELSEY<=”11111111”;ENDIF;ENDPROCESS;ENDART1;方法2:使用条件选择WHENELSE语句ARCHITECTUREART2OFDECODERISBEGINY(0)<=‘0’WHEN(EN=’1’ANDSEL="000")ELSE’1’;Y(1)<=‘0’WHEN(EN=’1’ANDSEL="001")ELSE’1’;Y(2)<=‘0’WHEN(EN=’1’AND
5、SEL="010")ELSE’1’;Y(3)<=‘0’WHEN(EN=’1’ANDSEL="011")ELSE’1’;Y(4)<=‘0’WHEN(EN=’1’ANDSEL="100")ELSE’1’;Y(5)<=‘0’WHEN(EN=’1’ANDSEL="101")ELSE’1’;Y(6)<=‘0’WHEN(EN=’1’ANDSEL="110")ELSE’1’;Y(7)<=’0’WHEN(EN=’1’ANDSEL="111")ELSE’1’;ENDART2;注意:使用了8条WHENELSE语句1.38-3线优先编码器8-3线优先编码器输入信号为y0、y1、y2、y3、y4、y5、y6和y
6、7,输出信号为OUT0、OUT1和OUT2。输入信号中y0的优先级别最低,依次类推,y7的优先级别最高。下面我们用两种方法设计8-3线优先编码器。方法1:使用条件赋值语句LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYENCODERISPORT(y0,y1,y2,y3,y4,y5,y6,y7:INSTD_LOGIC;OUT0,OUT1,OUT2:OUTSTD_LOGIC);ENDENCODER;ARCHITECTUREART1OFENCODERISSIGNALOUTS:STD_LOGIC_VECTOR(2DOWNTO0);BEGINOUTS(2D
7、OWNTO0)<="111”WHENy7=‘1’ELSE"110"WHENy6=‘1’ELSE"101"WHENy5=‘1’ELSE"100"WHENy4=‘1’ELSE"011"WHENy3=‘1’ELSE"010"WHENy2=‘1’ELSE"001"WHENy1=‘1’ELSE"000"WHENy0=‘1’ELSE"XXX";OUT0<=OUTS(0);OUT1<=OUTS(1);OUT2<=OUTS(2);ENDART1;方
此文档下载收益归作者所有