数字系统设计与PLD应用实验报告(共18页)_第1页
数字系统设计与PLD应用实验报告(共18页)_第2页
数字系统设计与PLD应用实验报告(共18页)_第3页
数字系统设计与PLD应用实验报告(共18页)_第4页
数字系统设计与PLD应用实验报告(共18页)_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数字系统设计与PLD应用实验报告 * 实验一、高速并行乘法器的设计一、算法设计和结构选择本高速并行乘法器采用一下算法:被乘数A的数值位左移,它和乘数B的各个数值位所对应的部分进行累加运算。且用与门、4位加法器来实现,其电路结构如下图一所示,图中Ps=AsBs,用以产生乘积的符号位。图一 并行4位二进制乘法器的电路结构图二、设计输入本实验选择Altera公司的FLEX器件中的FLEX10K10芯片,并用QuartusII软件进行设计,采用原理图输入方式。图形输入文件如下图二所示。图二 高速并行乘法器的图形输入文件三、逻辑仿真建立高速并行乘法器的原理图输入文件之后,将文件编译,待编译成功后进行时序

2、仿真,仿真结果如下图三。图三 高速并行乘法器仿真结果实验二、十字路口交通管理器的设计一、交通管理器的功能该管理器控制甲、乙两道的红、黄、绿三色灯,指挥车辆和行人安全通行。交通管理器示意图如下图四所示。图中R1、Y1、G1是甲道红、黄、绿灯;R2、Y2、G2是乙道红、黄、绿灯。图四 十字路口交通管理器示意图该交通管理器由控制器和受其控制的三个定时器及六个交通管理灯组成。图四中三个定时器分别确定甲道和乙道通行时间t3、t1,以及公共的停车(黄灯燃亮)时间t2。这三个定时器采用以秒信号为时钟的计数器来实现,C1、C2、C3为1时,相应的定时器计数,W1、W2、W3为定时计数器的指示信号,计数器在计数

3、过程中,相应的指示信号为0,计数结束时为1.二、系统算法设计十字路口交通管理器是一个控制类型的数字系统,其数据处理单元较简单。其工作流程图如下图五。图五 交通管理器工作流程图三、设计输入本设计采用分层次描述方式,且用图形输入和文本输入混合方式建立描述文件。下图六即为其图形输入文件。它用框图方式表明系统的组成:控制器和三个各为模26、模5和模30的定时计数器,并给出它们之间的互连关系。图六 交通管理器顶层图形输入文件在顶层图形输入文件中的各模块,其功能用第二层次VHDL源文件描述如下:控制器Control源文件LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;EN

4、TITY traffic_control IS PORT( clk :IN STD_LOGIC; c1,c2,c3 :OUT STD_LOGIC; w1,w2,w3: IN STD_LOGIC; r1,r2: OUT STD_LOGIC; y1,y2: OUT STD_LOGIC; g1,g2: OUT STD_LOGIC; reset: IN STD_LOGIC);END traffic_control;ARCHITECTURE a OF traffic_control ISTYPE STATE_SPACE IS(S0,S1,S2,S3);SIGNAL state:STATE_SPACE;B

5、EGINGPROCESS(reset,clk)BEGINIF reset='1'THEN state<=S0;ELSIF(clk'EVENT AND clk='1')THENCASE state IS WHEN S0=> IF w1='1'THEN state<=S1; END IF; WHEN S1=> IF w2='1'THEN state<=S2; END IF; WHEN S2=> IF w3='1'THEN state<=S3; END IF; WHEN

6、S3=> IF w2='1'THEN state<=S0; END IF; END CASE;END IF;END PROCESS;c1<='1' WHEN state=S0 ELSE'0'c2<='1' WHEN state=S1 OR state=S3 ELSE'0'c3<='1' WHEN state=S2 ELSE'0'r1<='1' WHEN state=S1 OR state=S0 ELSE'0'y1&l

7、t;='1' WHEN state=S3 ELSE'0'g1<='1' WHEN state=S2 ELSE'0'r2<='1' WHEN state=S2 OR state=S3 ELSE'0'y2<='1' WHEN state=S1 ELSE'0'g2<='1' WHEN state=S0 ELSE'0'END a;三个计数器的源文件LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.

8、ALL;ENTITY count30 ISPORT( clk :IN STD_LOGIC; enable :IN STD_LOGIC; c :OUT STD_LOGIC);END count30;ARCHITECTURE a OF count30 ISBEGIN PROCESS(clk) VARIABLE cnt:INTEGER RANGE 30 DOWNTO 0; BEGIN IF(clk'EVENT AND clk='1')THEN IF enable='1'AND cnt<30 THEN cnt:=cnt+1; ELSE cnt:=0; EN

9、D IF; END IF; IF cnt=30 THEN C<='1' ELSE C<='0' END IF;END PROCESS;END a;LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY count05 ISPORT( clk :IN STD_LOGIC; enable :IN STD_LOGIC; c :OUT STD_LOGIC);END count05;ARCHITECTURE a OF count05 ISBEGIN PROCESS(clk) VARIABLE cnt:INTEGER RA

10、NGE 5 DOWNTO 0; BEGIN IF(clk'EVENT AND clk='1')THEN IF enable='1'AND cnt<5 THEN cnt:=cnt+1; ELSE cnt:=0; END IF; END IF; IF cnt=5 THEN C<='1' ELSE C<='0' END IF;END PROCESS;END a; LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY count26 ISPORT( clk :IN STD

11、_LOGIC; enable :IN STD_LOGIC; c :OUT STD_LOGIC);END count26;ARCHITECTURE a OF count26 ISBEGIN PROCESS(clk) VARIABLE cnt:INTEGER RANGE 26 DOWNTO 0; BEGIN IF(clk'EVENT AND clk='1')THEN IF enable='1'AND cnt<26 THEN cnt:=cnt+1; ELSE cnt:=0; END IF; END IF; IF cnt=26 THEN C<=

12、9;1' ELSE C<='0' END IF;END PROCESS;END a; 四、逻辑仿真编译器将顶层图形输入文件和第二层次功能块VHDL输入文件相结合并编译,确定正确无误后,即可经设计处理产生交通管理器的目标文件。建立波形文件并对其进行时序仿真后,结果如下图七。图七 十字路口交通管理器仿真结果实验三、九九乘法器系统的设计一、系统功能和技术指标本九九乘法表系统能够自动或手动进行两个1位十进制数的乘法,并自动显示被乘数、乘数和结果,该系统示意图如图八所示。系统的功能和指标如下:(1)自动进行乘法器运算并显示。用户将控制开关ARH置逻辑1,则系统内部自动产生被

13、乘数A和乘数B,并按常规的九九乘法表方式,依照一定速率自动进行A=09和B=09的乘法运算。(2)手动进行乘法运算并显示。当控制开关ARH为逻辑0时,则乘法表系统仅对外部输入被乘数AA和乘数BB的特定数据进行乘法运算并输出。在手动工作状态时,分别采用两组4位开关产生被乘数和乘数的BCD码输入。(3)乘法运算是以二进制数的乘法来进行的,而其结果要用变换器转换为2位BCD码输出,也应配有相应的显示译码器。图八 九九乘法表系统示意图二、算法设计乘法器M=A*B具有自动运算和手动运算两种方式,在自动运算时,A=A,B=B;在手动方式时,A=AA,B=BB,这由控制开关ARH的状态来决定。现设定信号EE

14、为九九乘法表完成一次自动工作,从0*0=0到9*9=81全过程的结束信号;TT是某定时器的结束信号,该定时器确定手动运算的显示时间。则本系统的算法流程图如下图九所示。图九 九九乘法表系统算法流程图三、设计输入本系统完全采用VHDL源文件输入方式层次化设计。所有源文件如下:程序包PLUS_LIB:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;PACKAGE PLUS_LIB ISCOMPONENT PLUSCONTROLPORT(CLK :IN STD_LOGIC;START,ARH,TT,EE:IN STD_LOGIC;DONE,CRT,S,ENT:OUT

15、STD_LOGIC);END COMPONENT;COMPONENT COUNT8PORT(CLK:IN STD_LOGIC;CRT,ENT:IN STD_LOGIC;TT:OUT STD_LOGIC);END COMPONENT;COMPONENT CNT1PORT(CLK:IN STD_LOGIC;CRT:IN STD_LOGIC;OC:OUT STD_LOGIC;QA:OUT INTEGER RANGE 9 TO 0);END COMPONENT;COMPONENT CNT2PORT(CLK:IN STD_LOGIC;CRT:IN STD_LOGIC;EN2:IN STD_LOGIC;E

16、E:OUT STD_LOGIC;QB:OUT INTEGER RANGE 9 TO 0);END COMPONENT;COMPONENT MUX1PORT(BB,QB:IN INTEGER RANGE 9 DOWNTO 0;S:IN STD_LOGIC;B:OUT INTEGER RANGE 9 DOWNTO 0);END COMPONENT;COMPONENT MUX2PORT(AA,QA:IN INTEGER RANGE 9 DOWNTO 0;S:IN STD_LOGIC;A:OUT INTEGER RANGE 9 DOWNTO 0);END COMPONENT;COMPONENT PLU

17、SPORT(A:IN INTEGER RANGE 9 DOWNTO 0;B:IN INTEGER RANGE 9 DOWNTO 0;M:OUT INTEGER RANGE 81 DOWNTO 0);END COMPONENT;COMPONENT TRANSPORT(M:IN INTEGER RANGE 81 TO 0;BD2,BD1:OUT INTEGER RANGE 9 TO 0);END COMPONENT;COMPONENT DISPLAYPORT(DB1:IN INTEGER RANGE 9 DOWNTO 0;XA1:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);E

18、ND COMPONENT;END PLUS_LIB;系统顶层设计:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE WORK.PLUS_LIB.ALL;ENTITY PLUSTOP IS PORT(CLK:IN STD_LOGIC; START,ARH:IN STD_LOGIC; BB,AA:IN INTEGER RANGE 9 DOWNTO 0; XA1,XA2:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); XA3,XA4: OUT STD_LOGIC_VECTOR(6 DOWNTO 0);END PLUSTOP;ARCHITEC

19、TURE ONE OF PLUSTOP ISSIGNAL TT,EE,ENT,CRT,DONE,OC,S:STD_LOGIC;SIGNAL QA,QB,B,A:INTEGER RANGE 9 DOWNTO 0;SIGNAL M:INTEGER RANGE 81 DOWNTO 0;SIGNAL BD1,BD2:INTEGER RANGE 9 DOWNTO 0;BEGIN CONTROL:PLUSCONTROL PORT MAP(CLK,START,ARH,TT,EE,DONE,CRT,S,ENT); COUNT1:COUNT8 PORT MAP(CLK,CRT,ENT,TT); COUNTR:C

20、NT1 PORT MAP(CLK,CRT,OC,QA); COUNT3:CNT2 PORT MAP(CLK,CRT,OC,EE,QB); M1:MUX1 PORT MAP(BB,QB,S,B); M2:MUX2 PORT MAP(AA,QA,S,A); P1:PLUS PORT MAP(A,B,M); T1:TRANS PORT MAP(M,BD2,BD1); X1:DISPLAY PORT MAP(A,XA1); X2:DISPLAY PORT MAP(B,XA2); X3:DISPLAY PORT MAP(BD1,XA3); X4:DISPLAY PORT MAP(BD2,XA4);END

21、 ONE;控制器:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY PLUSCONTROL IS PORT( CLK:IN STD_LOGIC; START,ARH,TT,EE:IN STD_LOGIC; DONE,CRT,S,ENT:OUT STD_LOGIC);END PLUSCONTROL;ARCHITECTURE ONE OF PLUSCONTROL ISTYPE STATE_SPACE IS(S0,S1,S2,S3);SIGNAL STATE:STATE_SPACE;BEGINPROCESS(CLK)BEGINIF (CLK'EV

22、ENT AND CLK='1')THENCASE STATE ISWHEN S0=>IF START='1'THENSTATE<=S1;END IF;WHEN S1=>IF ARH='1'THENSTATE<=S3;ELSESTATE<=S2;END IF;WHEN S2=>IF TT='1'THEN STATE<=S0;ELSE STATE<=S2;END IF;WHEN S3=>IF EE='1'THENSTATE<=S1;END IF;END CAS

23、E;END IF;END PROCESS;DONE<='1' WHEN STATE=S0 ELSE'0'CRT<='0' WHEN STATE=S0 ELSE'1'S<='1' WHEN STATE=S3 ELSE'0'ENT<='1' WHEN STATE=S2 ELSE'0'END ONE;模八计数器:LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY COUNT8 IS PORT(CLK :

24、 IN STD_LOGIC; CRT,ENT:IN STD_LOGIC; TT:OUT STD_LOGIC); END COUNT8; ARCHITECTURE ONE OF COUNT8 IS BEGIN PROCESS(CLK) VARIABLE COUNT:INTEGER RANGE 0 TO 7; BEGIN IF CLK'EVENT AND CLK='1' THEN IF CRT='1' AND ENT='1' THEN IF COUNT=7 THEN COUNT:=0; TT<='1' ELSE COUN

25、T:=COUNT+1; TT<='0' END IF; END IF; END IF; END PROCESS; END ONE; 被乘数发生器:LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY CNT1 IS PORT(CLK : IN STD_LOGIC; CRT:IN STD_LOGIC;OC:OUT STD_LOGIC; QA:OUT INTEGER RANGE 0 TO 9); END CNT1; ARCHITECTURE ONE OF CNT1 IS BEGIN PROCESS(CLK) VARIABLE CO

26、UNT:INTEGER RANGE 0 TO 9; BEGIN IF CLK'EVENT AND CLK='1' THEN IF CRT='1' THEN IF COUNT=9 THEN COUNT:=0; OC<='0' ELSIF COUNT=8 THEN COUNT:=COUNT+1; OC<='1' ELSE COUNT:=COUNT+1; OC<='0' END IF;END IF;END IF; QA<=COUNT; END PROCESS; END ONE; 乘数发生器

27、:LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY CNT2 IS PORT(CLK :IN STD_LOGIC; CRT :IN STD_LOGIC; EN2 :IN STD_LOGIC; EE :OUT STD_LOGIC;QB :OUT INTEGER RANGE 0 TO 9); END CNT2; ARCHITECTURE ONE OF CNT2 IS BEGIN PROCESS(CLK) VARIABLE COUNT:INTEGER RANGE 0 TO 9; BEGIN IF CLK'EVENT AND CLK='

28、1' THEN IF CRT='1' THEN IF EN2='1' THEN IF COUNT=9 THEN COUNT:=0; EE<='1' ELSE COUNT:=COUNT+1; END IF; ELSE EE<='0' END IF; END IF; END IF; QB<=COUNT; END PROCESS; END ONE; 乘数选择器:LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY MUX1 IS PORT(BB,QB:IN INTE

29、GER RANGE 0 TO 9; S:IN STD_LOGIC; B:OUT INTEGER RANGE 0 TO 9 ); END MUX1; ARCHITECTURE ONE OF MUX1 IS BEGIN B<=QB WHEN S='1'ELSE BB;END ONE; 被乘数选择器:LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY MUX2 IS PORT(AA,QA:IN INTEGER RANGE 0 TO 9;S:IN STD_LOGIC; A:OUT INTEGER RANGE 0 TO 9 ); EN

30、D MUX2; ARCHITECTURE ONE OF MUX2 IS BEGIN A<=QA WHEN S='1'ELSE AA; END ONE; 乘法器:LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY PLUS IS PORT(A:IN INTEGER RANGE 0 TO 9;B:IN INTEGER RANGE 0 TO 9; M:OUT INTEGER RANGE 0 TO 81); END PLUS; ARCHITECTURE ONE OF PLUS IS BEGIN M<=A*B; END ONE;

31、码制变换器:LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY TRANS IS PORT(M:IN INTEGER RANGE 0 TO 81; BD2,BD1:OUT INTEGER RANGE 0 TO 9); END TRANS; ARCHITECTURE ONE OF TRANS ISBEGIN PROCESS(M) BEGINIF M<=9 THENBD2<=0; BD1<=M; ElSIF M<=19 THENBD2<=1; BD1<=M-10; ElSIF M<=29 THEN BD2<=2; BD1<=M-20; ElSIF M<=39 THEN BD2<=3; BD1<=M-30; ElSIF M<=49 THEN BD2<=4;BD1<=M-40; ElSIF M<=59 THENBD2<=5;BD1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论