pld实验报告由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“pld实验板”。
数字系统设计与PLD应用实验报告
041010204 欧阳琼
一、实验目的1、了解并学习HDPLD设计数字系统的设计思路和设计过程。
2、通过自行设计数字系统实例,更好的掌握数字系统设计方法以及设计软件的使用,让书本知识在教学实践中得到成功应用。
二、实验内容
1、高速并行乘法器的设计(1)、实验原理
采用以下算法:被乘数的数值位左移,它和乘数的各个数值位进行累加运算。且用与门、4位加法器来实现。(2)、设计输入
器件选定以后,用相应的设计开发软件(quartus 2),并采用原理图输入方式。图形输入文件如图1所示(使用图形输入方式时应注意软件所能提供的库函数,以便正确调用):
图1(3)、逻辑仿真
逻辑仿真是设计校验的重要步骤。本例使用开发软件的波形编辑器直接画出输入激励波形,启动仿真器,得到显示功能仿真的结果如图2所示:
图2
2、十字路口交通管理器的设计(1)、实验原理
用一片HDPLD和若干外围电路实现十字路口交通管理器。该管理器控制甲乙两道的的红黄绿三色灯,指挥车辆和行人安全通行。该交通管理器是由控制器和受其控制的三个定时器及六个交通管理灯组成。(2)设计输入
本设计采用分层次描述方式,且用图形输入和文本输入结合的方式建立描述文件。在顶层图形输入文件中的各模块,其功能用第二层次VHDL原文件描述如下:
控制器control源文件
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY 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 IS TYPE STATE_SPACE IS(S0,S1,S2,S3);SIGNAL state:STATE_SPACE;BEGIN PROCESS(reset,clk)BEGIN
IF reset='1'THEN
state
ELSIF(clk'EVENT AND clk='1')THEN
CASE state IS
WHEN S0=>
IF w1='1'THEN
state
END IF;
WHEN S1=>
IF w2='1'THEN
state
END IF;
WHEN S2=>
IF w3='1'THEN
state
END IF;
WHEN S3=>
IF w2='1'THEN
state
END IF;
END CASE;
END IF;END PROCESS;c1
模30计数器
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY count30 IS PORT(clk :IN STD_LOGIC;enable :IN STD_LOGIC;c :OUT STD_LOGIC);END count30;ARCHITECTURE a OF count30 IS BEGIN PROCESS(clk)VARIABLE cnt:INTEGER RANGE 30 DOWNTO 0;BEGIN IF(clk'EVENT AND clk='1')THEN IF enable='1'AND cnt
模5计数器
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY count05 IS PORT(clk :IN STD_LOGIC;enable :IN STD_LOGIC;c :OUT STD_LOGIC);END count05;ARCHITECTURE a OF count05 IS BEGIN PROCESS(clk)VARIABLE cnt:INTEGER RANGE 05 DOWNTO 0;BEGIN IF(clk'EVENT AND clk='1')THEN IF enable='1'AND cnt
模26计数器
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY count26 IS PORT(clk :IN STD_LOGIC;enable :IN STD_LOGIC;c :OUT STD_LOGIC);END count26;ARCHITECTURE a OF count26 IS BEGIN PROCESS(clk)VARIABLE cnt:INTEGER RANGE 26 DOWNTO 0;BEGIN IF(clk'EVENT AND clk='1')THEN IF enable='1'AND cnt
其电路图如图3所示:
图3(3)、逻辑仿真
仿真结果波形文件如图4所示:
图4
3、九九乘法表系统的设计(1)、设计输入
对于此较复杂的系统,采用层次化设计思路。首先,建立VHDL文本输入文件:
程序包PLUS_LIB的描述源文件: LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;
PACKAGE PLUS_LIB IS COMPONENT PLUSCONTROL
PORT(CLK :IN STD_LOGIC;
START,ARH,TT,EE :IN STD_LOGIC;
DONE,CRT,S,ENT :OUT STD_LOGIC);END COMPONENT;
COMPONENT COUNT8 PORT(CLK :IN STD_LOGIC;
CRT,ENT :IN STD_LOGIC;
TT :OUT STD_LOGIC);END COMPONENT;
COMPONENT CNT1 PORT(CLK : IN STD_LOGIC;CRT :IN STD_LOGIC;OC :OUT STD_LOGIC;QA :OUT INTEGER RANGE 0 TO 9);END COMPONENT;
COMPONENT CNT2 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 COMPONENT;COMPONENT MUX1 PORT(BB,QB:IN INTEGER RANGE 0 TO 9;
S:IN STD_LOGIC;
B:OUT INTEGER RANGE 0 TO 9);END COMPONENT;
COMPONENT MUX2 PORT(AA,QA :IN INTEGER RANGE 0 TO 9;
S :IN STD_LOGIC;
A :OUT INTEGER RANGE 0 TO 9);END COMPONENT;
系统顶层设计的源文件: LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE WORK.PLUS_LIB.ALL;
ENTITY PLUS_TOP IS PORT(CLK:IN STD_LOGIC;AA,BB: IN INTEGER RANGE 0 TO 9;A,B:BUFFER INTEGER RANGE 0 TO 9;EE,OC: BUFFER STD_LOGIC;BD1,BD2:OUT INTEGER RANGE 0 TO 9;START,ARH:IN STD_LOGIC);END PLUS_TOP;
ARCHITECTURE XYB OF PLUS_TOP IS SIGNAL ENT,CRT,DONE,S,TT:STD_LOGIC;SIGNAL QA,QB,TA,TB:INTEGER RANGE 0 TO 9;SIGNAL M: INTEGER RANGE 0 TO 81;BEGIN A
PORT MAP(CLK,START,ARH,TT,EE,DONE,CRT,S,ENT);COUNT1:COUNT8
PORT MAP(CLK,CRT,ENT,TT);COUNT2:CNT1
PORT MAP(CLK,CRT,OC,QA);COUNT3:CNT2
PORT MAP(CLK,CRT,OC,EE,QB);M1:MUX1
PORT MAP(BB,QB,S,TB);M2:MUX2
PORT MAP(AA,QA,S,TA);P1:PLUS
PORT MAP(TA,TB,M);P2:TRANS
PORT MAP(M,BD1,BD2);END XYB;
系统第二层描述含较多模块的VHDL源文件,分别如下所示: 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;
ARCHITECTURE XYB OF CNT1 IS BEGIN PROCESS(CLK)VARIABLE COUNT:INTEGER RANGE 0 TO 9;BEGIN IF CLK'EVENT AND CLK='1' THEN
IF CRT='1' THEN
IF COUNT=9 THEN
COUNT:=0;
OC
ELSIF COUNT=8 THEN
COUNT:=COUNT+1;
OC
ELSE
COUNT:=COUNT+1;
OC
END IF;
END IF;END IF;QA
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;
ARCHITECTURE XYB OF CNT2 IS BEGIN PROCESS(CLK)VARIABLE COUNT:INTEGER RANGE 0 TO 9;BEGIN IF CLK'EVENT AND CLK='1' THEN
IF CRT='1' THEN
IF EN2='1' THEN
IF COUNT=9 THEN
COUNT:=0;
EE
ELSE
COUNT:=COUNT+1;
END IF;
ELSE
EE
END IF;
END IF;END IF;QB
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;
ENTITY COUNT8 IS PORT(CLK : IN STD_LOGIC;CRT,ENT:IN STD_LOGIC;TT:OUT STD_LOGIC);END;
ARCHITECTURE XYB 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
ELSE
COUNT:=COUNT+1;
TT
END IF;
END IF;
END IF;END PROCESS;END XYB;
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;
ENTITY MUX1 IS PORT(BB,QB:IN INTEGER RANGE 0 TO 9;S:IN STD_LOGIC;B:OUT INTEGER RANGE 0 TO 9);END MUX1;
ARCHITECTURE XYB OF MUX1 IS BEGIN B
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);END MUX2;
ARCHITECTURE XYB OF MUX2 IS BEGIN A
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 XYB OF plus IS BEGIN m
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 XYB OF PLUSCONTROL IS TYPE STATE_SPACE IS(S0,S1,S2,S3);SIGNAL STATE:STATE_SPACE;BEGIN PROCESS(CLK)BEGIN
IF CLK'EVENT AND CLK='1' THEN
CASE STATE IS
WHEN S0=>
IF START='1'THEN
STATE
END IF;
WHEN S1=>
IF ARH='1'THEN
STATE
ELSE
STATE
END IF;
WHEN S2=>
IF TT='1'THEN
STATE
ELSE
STATE
END IF;
WHEN S3=>
IF EE='1'THEN
STATE
END IF;
END CASE;
END IF;END PROCESS;DONE
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 XYB OF trans IS BEGIN proce(m)begin if m
本题的实验电路如图5所示
图5(2)、逻辑仿真
设计输入文件经适当的软件开发系统编译处理,由功能仿真器进行逻辑模拟,获得该电路仿真结果如图6所示:
图6
三、实验心得
通过这三个数字系统的设计,我学会了用QUARTUS 2这个软件,利用它进行数字系统的设计与仿真。这三个实验由简到繁,由易到难,由功能电路到系统的原则排序,有些实例给出图形,有些是VHDL文本输入方式,有些是图形文本结合。多种多样的设计方法让我更好更熟练的掌握了数字系统设计软件的操作与应用。