层次化设计——VHDL

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

实验名称:层次化设计——VHDL班级:09电气2Z学号:09312213姓名:钱雷一、用层次化VHDL设计16选1选择器(用4个4选1选择器、1个2—4译码器和1个四输入或门扩展而成)1.实体框图2.程序设计①正确的程序四选1选择器LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYMUX4BISPORT(A,B,C,D,EN:INSTD_LOGIC;S1,S0:INSTD_LOGIC;Y:OUTSTD_LOGIC);ENDENTITYMUX4B;ARCHITECTURETWOOFMUX4BISSIGNALS:STD_LOGIC_VECTOR(1DOWNTO0);BEGINS=S1&S0;Y=AWHENS=00ANDEN='0'ELSEBWHENS=01ANDEN='0'ELSECWHENS=10ANDEN='0'ELSEDWHENS=11ANDEN='0'ELSE'0';ENDTWO;2—4译码器LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYDECODER24ISPORT(B,A:INSTD_LOGIC;Y3,Y2,Y1,Y0:OUTSTD_LOGIC);ENDENTITYDECODER24;ARCHITECTUREONEOFDECODER24ISSIGNALINDATA:STD_LOGIC_VECTOR(1DOWNTO0);BEGININDATA=B&A;PROCESS(INDATA)BEGINCASEINDATAISWHEN00=Y3='1';Y2='1';Y1='1';Y0='0';WHEN01=Y3='1';Y2='1';Y1='0';Y0='1';WHEN10=Y3='1';Y2='0';Y1='1';Y0='1';WHEN11=Y3='0';Y2='1';Y1='1';Y0='1';WHENOTHERS=NULL;ENDCASE;ENDPROCESS;ENDARCHITECTUREONE;四输入或门LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYOR4AISPORT(A,B,C,D:INSTD_LOGIC;Y:OUTSTD_LOGIC);ENDENTITYOR4A;ARCHITECTURETHREEOFOR4AISBEGINY=AORBORCORD;ENDARCHITECTURETHREE;顶层文件LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYMUX161AISPORT(A3,A2,A1,A0,B3,B2,B1,B0,C3,C2,C1,C0,D3,D2,D1,D0,AIN,BIN,CIN,DIN:INSTD_LOGIC;YIN:OUTSTD_LOGIC);ENDENTITYMUX161A;ARCHITECTUREbbOFMUX161AISCOMPONENTDECODER24PORT(A,B:INSTD_LOGIC;Y3,Y2,Y1,Y0:OUTSTD_LOGIC);ENDCOMPONENT;COMPONENTMUX4BPORT(A,B,C,D,EN,S1,S0:INSTD_LOGIC;Y:OUTSTD_LOGIC);ENDCOMPONENT;COMPONENTOR4APORT(A,B,C,D:INSTD_LOGIC;Y:OUTSTD_LOGIC);ENDCOMPONENT;SIGNALE,F,G,H,I,J,K,L:STD_LOGIC;BEGINU1:DECODER24PORTMAP(A=DIN,B=CIN,Y3=E,Y2=F,Y1=G,Y0=H);U2:MUX4BPORTMAP(S1=BIN,S0=AIN,A=A0,B=A1,C=A2,D=A3,EN=E,Y=I);U3:MUX4BPORTMAP(S1=BIN,S0=AIN,A=B0,B=B1,C=B2,D=B3,EN=F,Y=J);U4:MUX4BPORTMAP(S1=BIN,S0=AIN,A=C0,B=C1,C=C2,D=C3,EN=G,Y=K);U5:MUX4BPORTMAP(S1=BIN,S0=AIN,A=D0,B=D1,C=D2,D=D3,EN=H,Y=L);U6:OR4APORTMAP(A=I,B=J,C=K,D=L,Y=YIN);ENDbb;3.仿真波形图原图4.仿真波形分析通过对A3,A2,A1,A0,B3,B2,B1,B0,C3,C2,C1,C0,D3,D2,D1,D0的设置,以及AIN,BIN,CIN,DIN的设置,来对输入信号进行选择输出,如波形图所示,当A3~D0设置为1010101110001101,IN按照0~15进行加,使得输出信号为1011110100010101二、用层次化VHDL设计一个100进制的计数器(用2个十进制计数器及相应的门电路扩展而成)1.实体框图2.程序设计①正确的程序十进制计数器libraryIEEE;useIEEE.std_logic_1164.all;useIEEE.std_logic_unsigned.all;entityA_10isport(CLK,EP,ET,RST,LD:instd_logic;D:instd_logic_vector(3downto0);Q:outstd_logic_vector(3downto0);CO:outstd_logic);endA_10;architectureEX5ofA_10issignalQQ:std_logic_vector(3downto0);beginprocess(CLK,RST)beginif(RST='0')thenQQ=0000;elsif(CLK'eventandCLK='1')thenif(LD='0')thenQQ=D;elsif(ET='1'andEP='1')thenif(QQ=9)thenQQ=0000;elseQQ=QQ+1;endif;elseQQ=QQ;endif;endif;endprocess;CO=QQ(3)andQQ(0);Q(3)=QQ(3);Q(2)=QQ(2);Q(1)=QQ(1);Q(0)=QQ(0);endEX5;门电路libraryIEEE;useIEEE.std_logic_1164.all;entityA_AND2isport(A,B:instd_logic;Y:outstd_logic);endA_AND2;architectureEX5ofA_AND2isbeginY=AandB;endEX5顶层文件libraryIEEE;useIEEE.std_logic_1164.all;useIEEE.std_logic_unsigned.all;entityA_100isport(CLK1,RST1,LD1:instd_logic;D1:instd_logic_vector(7downto0);Q1:outstd_logic_vector(7downto0);CO1:outstd_logic);endA_100;architectureEX5ofA_100iscomponentA_10port(CLK,EP,ET,RST,LD:instd_logic;D:instd_logic_vector(3downto0);Q:outstd_logic_vector(3downto0);CO:outstd_logic);endcomponent;componentA_AND2port(A,B:instd_logic;Y:outstd_logic);endcomponent;signale,f:std_logic;beginG1:A_10portmap(ET='1',EP='1',CO=f,RST=RST1,LD=LD1,CLK=CLK1,D=D1(3downto0),Q=Q1(3downto0));G2:A_10portmap(ET=f,EP=f,CO=e,RST=RST1,LD=LD1,CLK=CLK1,D=D1(7downto4),Q=Q1(7downto4));G3:A_AND2portmap(A=f,B=e,Y=CO1);endEX5;3.仿真波形图原图4.仿真波形分析如波形图所示,CLK1为时钟脉冲,RET1使能端高电平有效,LD1高电平有效,D1,D0与LD1一致,Q1在0~9之间变化,输出波形在1111跳变到0000时出现高电平,其余都是低电平。

1 / 9
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功