数字系统设计与PLD应用实验报告****************实验一、高速并行乘法器的设计一、算法设计和结构选择本高速并行乘法器采用一下算法:被乘数A的数值位左移,它和乘数B的各个数值位所对应的部分进行累加运算。且用与门、4位加法器来实现,其电路结构如下图一所示,图中Ps=As⊕Bs,用以产生乘积的符号位。图一并行4位二进制乘法器的电路结构图二、设计输入本实验选择Altera公司的FLEX器件中的FLEX10K10芯片,并用QuartusII软件进行设计,采用原理图输入方式。图形输入文件如下图二所示。图二高速并行乘法器的图形输入文件三、逻辑仿真建立高速并行乘法器的原理图输入文件之后,将文件编译,待编译成功后进行时序仿真,仿真结果如下图三。图三高速并行乘法器仿真结果实验二、十字路口交通管理器的设计一、交通管理器的功能该管理器控制甲、乙两道的红、黄、绿三色灯,指挥车辆和行人安全通行。交通管理器示意图如下图四所示。图中R1、Y1、G1是甲道红、黄、绿灯;R2、Y2、G2是乙道红、黄、绿灯。图四十字路口交通管理器示意图该交通管理器由控制器和受其控制的三个定时器及六个交通管理灯组成。图四中三个定时器分别确定甲道和乙道通行时间t3、t1,以及公共的停车(黄灯燃亮)时间t2。这三个定时器采用以秒信号为时钟的计数器来实现,C1、C2、C3为1时,相应的定时器计数,W1、W2、W3为定时计数器的指示信号,计数器在计数过程中,相应的指示信号为0,计数结束时为1.二、系统算法设计十字路口交通管理器是一个控制类型的数字系统,其数据处理单元较简单。其工作流程图如下图五。图五交通管理器工作流程图三、设计输入本设计采用分层次描述方式,且用图形输入和文本输入混合方式建立描述文件。下图六即为其图形输入文件。它用框图方式表明系统的组成:控制器和三个各为模26、模5和模30的定时计数器,并给出它们之间的互连关系。图六交通管理器顶层图形输入文件在顶层图形输入文件中的各模块,其功能用第二层次VHDL源文件描述如下:控制器Control源文件LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYtraffic_controlISPORT(clk:INSTD_LOGIC;c1,c2,c3:OUTSTD_LOGIC;w1,w2,w3:INSTD_LOGIC;r1,r2:OUTSTD_LOGIC;y1,y2:OUTSTD_LOGIC;g1,g2:OUTSTD_LOGIC;reset:INSTD_LOGIC);ENDtraffic_control;ARCHITECTUREaOFtraffic_controlISTYPESTATE_SPACEIS(S0,S1,S2,S3);SIGNALstate:STATE_SPACE;BEGINGPROCESS(reset,clk)BEGINIFreset='1'THENstate=S0;ELSIF(clk'EVENTANDclk='1')THENCASEstateISWHENS0=IFw1='1'THENstate=S1;ENDIF;WHENS1=IFw2='1'THENstate=S2;ENDIF;WHENS2=IFw3='1'THENstate=S3;ENDIF;WHENS3=IFw2='1'THENstate=S0;ENDIF;ENDCASE;ENDIF;ENDPROCESS;c1='1'WHENstate=S0ELSE'0';c2='1'WHENstate=S1ORstate=S3ELSE'0';c3='1'WHENstate=S2ELSE'0';r1='1'WHENstate=S1ORstate=S0ELSE'0';y1='1'WHENstate=S3ELSE'0';g1='1'WHENstate=S2ELSE'0';r2='1'WHENstate=S2ORstate=S3ELSE'0';y2='1'WHENstate=S1ELSE'0';g2='1'WHENstate=S0ELSE'0';ENDa;三个计数器的源文件LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYcount30ISPORT(clk:INSTD_LOGIC;enable:INSTD_LOGIC;c:OUTSTD_LOGIC);ENDcount30;ARCHITECTUREaOFcount30ISBEGINPROCESS(clk)VARIABLEcnt:INTEGERRANGE30DOWNTO0;BEGINIF(clk'EVENTANDclk='1')THENIFenable='1'ANDcnt30THENcnt:=cnt+1;ELSEcnt:=0;ENDIF;ENDIF;IFcnt=30THENC='1';ELSEC='0';ENDIF;ENDPROCESS;ENDa;LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYcount05ISPORT(clk:INSTD_LOGIC;enable:INSTD_LOGIC;c:OUTSTD_LOGIC);ENDcount05;ARCHITECTUREaOFcount05ISBEGINPROCESS(clk)VARIABLEcnt:INTEGERRANGE5DOWNTO0;BEGINIF(clk'EVENTANDclk='1')THENIFenable='1'ANDcnt5THENcnt:=cnt+1;ELSEcnt:=0;ENDIF;ENDIF;IFcnt=5THENC='1';ELSEC='0';ENDIF;ENDPROCESS;ENDa;LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYcount26ISPORT(clk:INSTD_LOGIC;enable:INSTD_LOGIC;c:OUTSTD_LOGIC);ENDcount26;ARCHITECTUREaOFcount26ISBEGINPROCESS(clk)VARIABLEcnt:INTEGERRANGE26DOWNTO0;BEGINIF(clk'EVENTANDclk='1')THENIFenable='1'ANDcnt26THENcnt:=cnt+1;ELSEcnt:=0;ENDIF;ENDIF;IFcnt=26THENC='1';ELSEC='0';ENDIF;ENDPROCESS;ENDa;四、逻辑仿真编译器将顶层图形输入文件和第二层次功能块VHDL输入文件相结合并编译,确定正确无误后,即可经设计处理产生交通管理器的目标文件。建立波形文件并对其进行时序仿真后,结果如下图七。图七十字路口交通管理器仿真结果实验三、九九乘法器系统的设计一、系统功能和技术指标本九九乘法表系统能够自动或手动进行两个1位十进制数的乘法,并自动显示被乘数、乘数和结果,该系统示意图如图八所示。系统的功能和指标如下:(1)自动进行乘法器运算并显示。用户将控制开关ARH置逻辑1,则系统内部自动产生被乘数A’和乘数B’,并按常规的九九乘法表方式,依照一定速率自动进行A’=0~9和B’=0~9的乘法运算。(2)手动进行乘法运算并显示。当控制开关ARH为逻辑0时,则乘法表系统仅对外部输入被乘数AA和乘数BB的特定数据进行乘法运算并输出。在手动工作状态时,分别采用两组4位开关产生被乘数和乘数的BCD码输入。(3)乘法运算是以二进制数的乘法来进行的,而其结果要用变换器转换为2位BCD码输出,也应配有相应的显示译码器。图八九九乘法表系统示意图二、算法设计乘法器M=A*B具有自动运算和手动运算两种方式,在自动运算时,A=A’,B=B’;在手动方式时,A=AA,B=BB,这由控制开关ARH的状态来决定。现设定信号EE为九九乘法表完成一次自动工作,从0*0=0到9*9=81全过程的结束信号;TT是某定时器的结束信号,该定时器确定手动运算的显示时间。则本系统的算法流程图如下图九所示。图九九九乘法表系统算法流程图三、设计输入本系统完全采用VHDL源文件输入方式层次化设计。所有源文件如下:程序包PLUS_LIB:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;PACKAGEPLUS_LIBISCOMPONENTPLUSCONTROLPORT(CLK:INSTD_LOGIC;START,ARH,TT,EE:INSTD_LOGIC;DONE,CRT,S,ENT:OUTSTD_LOGIC);ENDCOMPONENT;COMPONENTCOUNT8PORT(CLK:INSTD_LOGIC;CRT,ENT:INSTD_LOGIC;TT:OUTSTD_LOGIC);ENDCOMPONENT;COMPONENTCNT1PORT(CLK:INSTD_LOGIC;CRT:INSTD_LOGIC;OC:OUTSTD_LOGIC;QA:OUTINTEGERRANGE9TO0);ENDCOMPONENT;COMPONENTCNT2PORT(CLK:INSTD_LOGIC;CRT:INSTD_LOGIC;EN2:INSTD_LOGIC;EE:OUTSTD_LOGIC;QB:OUTINTEGERRANGE9TO0);ENDCOMPONENT;COMPONENTMUX1PORT(BB,QB:ININTEGERRANGE9DOWNTO0;S:INSTD_LOGIC;B:OUTINTEGERRANGE9DOWNTO0);ENDCOMPONENT;COMPONENTMUX2PORT(AA,QA:ININTEGERRANGE9DOWNTO0;S:INSTD_LOGIC;A:OUTINTEGERRANGE9DOWNTO0);ENDCOMPONENT;COMPONENTPLUSPORT(A:ININTEGERRANGE9DOWNTO0;B:ININTEGERRANGE9DOWNTO0;M:OUTINTEGERRANGE81DOWNTO0);ENDCOMPONENT;COMPONENTTRANSPORT(M:ININTEGERRANGE81TO0;BD2,BD1:OUTINTEGERRANGE9TO0);ENDCOMPONENT;COMPONENTDISPLAYPORT(DB1:ININTEGERRANGE9DOWNTO0;XA1:OUTSTD_LOGIC_VECTOR(6DOWNTO0));ENDCOMPONENT;ENDPLUS_LIB;系统顶层设计:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEWORK.PLUS_LIB.ALL;ENTITYPLUSTOPISPORT(CLK:INSTD_LOGIC;START,ARH:INSTD_LOGIC;BB,AA:ININTEGERRANGE9DOWNTO0;XA1,XA2:OUTSTD_LOGIC_VECTOR(6DOWNTO0);XA3,XA4:OUTSTD_LOGIC_VECTOR(6DOWNTO0));ENDPLUSTOP;ARCHITECTUREONEOFPLUSTOPISSIGNALTT,EE,ENT,CRT,DONE,OC,S:STD_LOGIC;SIGNALQA,QB,B,A:INTEGERRANGE9DOWNTO0;SIGNALM:INTEGERRANGE81DOWNTO0;SIGNALBD1,BD2:INTEGERRANGE9DOWNTO0;BEGINCONTROL:PLUSCONTROLPORTMAP(CLK,START,ARH,TT,EE,DONE,CRT,S,ENT);COUNT1:COUNT8PORTMAP(CLK,CRT,ENT,TT);COUNTR:CNT1PORTMAP(CLK,CRT,OC,QA);COUNT3:CNT2PORTMAP(CLK,CRT,OC,EE,QB);M1:M