用VHDL进行基本逻辑电路设计总结.ppt
上传人:天马****23 上传时间:2024-09-11 格式:PPT 页数:34 大小:1.5MB 金币:10 举报 版权申诉
预览加载中,请您耐心等待几秒...

用VHDL进行基本逻辑电路设计总结.ppt

用VHDL进行基本逻辑电路设计总结.ppt

预览

免费试读已结束,剩余 24 页请下载文档后查看

10 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

1组合逻辑电路设计1.1基本门电路基本门电路用VHDL语言来描述十分方便。为方便起见,在下面的两输入模块中,使用VHDL中定义的逻辑运算符,同时实现一个与门、或门、与非门、或非门、异或门及反相器的逻辑。方法1:使用CASE_WHEN语句LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYDECODERISPORT(SEL:INSTD_LOGIC_VECTOR(2DOWNTO0);EN:INSTD_LOGIC;---加使能控制端Y:OUTSTD_LOGIC_VECTOR(7DOWNTO0));END;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)<=‘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’ANDSEL="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和y7,输出信号为OUT0、OUT1和OUT2。输入信号中y0的优先级别最低,依次类推,y7的优先级别最高。下面我们用两种方法设计8-3线优先编码器。1.4加法器—带进位的4位加法器方法1:用FOR-LOOP语句实现LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYADDER4ISPORT(A,B:INSTD_LOGIC_VECTOR(3DOWNTO0);CIN:INSTD_LOGIC;SUM:OUTSTD_LOGIC_VECTOR(3DOWNTO0);COUT:OUTSTD_LOGIC);ENDADDER4;ARCHITECTUREARTOFADDER4ISSIGNALC:STD_LOGIC_VECTOR(4DOWNTO0);BEGINPROCESS(A,B,CIN,C)BEGINC(0)<=CIN;FORIIN0TO3LOOP---用FOR循环语句实现多位相加SUM(I)<=A(I)XORB(I)XORC(I);C(I+1)<=(A(I)ANDB(I))OR(C(I)AND(A(I))OR(C(I)ANDB(I));ENDLOOP;COUT<=C(4);---总的进位输出ENDPROCESS;ENDART;方法2:直接使用加法“+”函数LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED_ALL;ENTITYADDER4_OPISPORT(A,B:INSTD_LOGIC_VECTOR(3DOWNTO0);CIN:INSTD_LOGIC;SUM:OUTSTD_LOGIC_VECTOR(3DOWNTO0);COUT:OUTSTD_LOGIC);ENDADDER4_OP;ARCHITECTUREARTOFADDER4_OPISSIGNALC:STD_LOGIC_VECTOR(4DOWNTO0);SIGNALAA,BB:STD_LOGIC_VECTOR(4DOWNTO0);B