当前位置:文档之家› EDA技术实验报告

EDA技术实验报告

EDA技术实验报告
EDA技术实验报告

(此文档为word格式,下载后您可任意编辑修改!)

实验一利用原理图输入法设计4位全加器

一、实验目的:

掌握利用原理图输入法设计简单组合电路的方法,掌握MAX+plusII的层次化设计方法。通过一个4位全加器的设计,熟悉用EDA软件进行电路设计的详细流程。

二、实验原理:

一个4位全加器可以由4个一位全加器构成,全加器的进位以串行方式实现,即将低位加法器的进位输出cout与相邻的高位加法器的低位进位输入信号cin相接。

1位全加器f-adder由2个半加器h-adder和一个或门按照下列电路来实现。

半加器h-adder由与门、同或门和非门构成。

四位加法器由4个全加器构成

三、实验内容:

1. 熟悉QuartusII软件界面,掌握利用原理图进行电路模块设计的方法。

QuartusII设计流程见教材第五章:QuartusII应用向导。

2.设计1位全加器原理图

(1)生成一个新的图形文件(file->new->graphic editor)

(2)按照给定的原理图输入逻辑门(symbol->enter symbol)

(3)根据原理图连接所有逻辑门的端口,并添加输入输出端口

(4)为管脚和节点命名:

在管脚上的PIN_NAME处双击鼠标左键,然后输入名字;

选中需命名的线,然后输入名字。

(5)创建缺省(Default)符号:

在 File菜单中选择 Create Symbol Files for Current File 项,即可创建一个设计的符号,该符号可被高层设计调用。

3.利用层次化原理图方法设计4位全加器

(1)生成新的空白原理图,作为4位全加器设计输入

(2)利用已经生成的1位全加器的缺省符号作为电路单元,设计4位全加器的原理图.

4.新建波形文件(file->new->Other Files->Vector Waveform File),保存后进行仿真(Processing ->Start Simulation),对4位全加器进行时序仿真。给出波形图,并分析仿真结果是否正确。

原理图:

仿真波形:

1位全加器:原理图:

仿真波形:

原理图:

仿真波形:

4位全加器仿真结果正确:

例:0011(A)+0111(B)+0(CI)结果为1010(S),进位CO为0。

5.思考如何在原理图中输入一个总线,并与其他总线连接?

先选中细线,然后右击,选”bus line”,总线是以粗线条表示。与其他总线连接:例如一根8位的总线 bus1[7..0]欲与另三根分别为1、3、4个位宽的连线相接,则它们的标号可分别表示为bus1[0],bus1[3..1],bus1[7..4]。

实验二简单组合电路的设计

一、实验目的:

熟悉QuartusII VHDL文本设计流程全过程。学习简单组合电路的设计、多层次电路设计、仿真和硬件测试。

二、实验原理

VHDL硬件描述语言是一种可以从多个层次上对数字逻辑电路进行建模的国际标准(IEEE),本次实验是用VHDL设计一个简单的数字组合逻辑电路,并结合QuartusII 环境和实验电路进行硬件测试。

三、实验内容:

1)根据实验一中一位全加器的电路原理图,改用VHDL语言文本输入方法,设计一位全加器,要求采用结构化的描述方法。设计完成后,利用QuartusII集成环境进行时序分析、仿真,记录仿真波形和时序分析数据。

2)用VHDL语言设计一个四选一数据选择器电路。

要求先设计一个二选一数据选择器mux21,然后利用元件例化语句设计四选一数据选择器mux41,同样请给出时序分析数据和仿真结果。

3)硬件测试(选用器件 EPF10K10 Pin84)

管脚锁定:

1)一位全加器 a PIO23(IO19) 30 SW1

b PIO24(IO20) 35 SW2

ci PIO25(IO21) 36 SW3

s PIO21(IO16) 27 LED10

co PIO19(IO8) 29 LED12

2)四选一数据选择器 a1 PIO23 30 SW1

a0 PIO24 35 SW2

d3 PIO27 38 SW5

d2 PIO28 39 SW6

d1 PIO29 47 SW7

d0 PIO30 42 SW8

yout 29 LED12

四、思考题

比较原理图输入法和文本输入法的优缺点。

实验结果:

一位全加器的VHDL描述:

半加器的VHDL描述:

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY ,bin,cin :IN STD_LOGIC;

cout,sum:out STD_LOGIC);

END ENTITY f_adder;

ARCHITECTURE fd1 OF f_adder IS

COMPUTER ,b=>bin,co=>d,so=>e);

u2:,co=>f,so=>sum);

u3: or2a PORT MAP(a=>d,b=>f,c=>cout);

END ARCHITECTURE fd1;

仿真波形:

硬件测试结果及分析:

ain PIN_233 SW1

bin PIN_234 SW2

cin PIN_235 SW3

cout PIN_1 LED1

sum PIN_2 LED2

得结果正确。

四选一数据选择器的VHDL描述:

二选一数据选择器的VHDL描述:

ENTITY mux21a IS

PORT (a,b:IN BIT;s:IN BIT;y:OUT BIT); END ENTITY mux21a;

ARCHITECTURE one OF mux21a IS

BEGIN

y<=a WHEN s='0' ELSE b;

END ARCHITECTURE one;

四选一数据选择器的VHDL描述:

library ieee;

use ieee.std_logic_1164.all;

entity mux41a is

port (d0,d1,d2,d3,a0,a1:in std_logic;

yout:out std_logic);

end entity mux41a;

architecture fd1 of mux41a is

component mux21a

port (a,b,s:in std_logic;

y:out std_logic);

end component;

signal e,f:std_logic;

begin

u1:mux21a port map(a=>d0,b=>d2,s=>a1,y=>e); u2:mux21a port map(a=>d1,b=>d3,s=>a1,y=>f); u3:mux21a port map(a=>e,b=>f,s=>a0,y=>yout); end architecture fd1;

仿真波形:

硬件测试结果及分析:

a1 PIN_233 SW1

a0 PIN_234 SW2

d0 PIN_235 SW3

d1 PIN_236 SW4

d2 PIN_237 SW5

d3 PIN_238 SW6

yout PIN_1 LED1

此结果正确。

回答问题:

原理图输入法的优点:

1.设计者进行电子线路设计不需要增加新的相关知识;

2.设计过程形象直观;

3.由于设计方式接近于底层电路布局,因此易于控制逻辑资源的耗用。

原理图输入法的缺点:

1.图形文件兼容性差;

2.随着电路设计规模的扩大,原理图输入描述方式必然引起一系列难以克服的困难,如电

路功能原理的易读性下降,错误排查困难,整体调整和结构升级困难等;

3.由于图形文件的不兼容性,性能优秀的电路模块的移植和再利用十分困难;

4.由于在原理图中已确定了设计系统的基本电路结构和元件,留给综合器和适配器的优化

选择的空间已十分有限,因此难以实现用户所希望的面积,速度以及不同风格的综合优化;

5.在设计中,由于必须直接面对硬件模块的选用,因此行为模型的建立将无从谈起,从而

无法实现真实意义上的自顶向下的设计方案。

但是HDL文本输入的设计方法,基本上克服了用原理图输入法存在的所有弊端,所以HDL 输入设计仍然是最基本、最有效和通用的输入方法。

实验三简单时序电路的设计

一、实验目的:

熟悉QuartusII的VHDL文本设计过程,学习简单时序电路的设计、仿真和硬件测试。

二、实验原理

时序逻辑电路是现代复杂数字电路的重要组成部分,往往占到整个设计的90%以上。触发器是时序电路的基本单元,本实验中将涉及到边沿触发和电平触发两种电

路结构,其中边沿触发是实际电路实现的主要方式。

三、实验内容

1)设计一个上升沿触发的D触发器

输入:D

输出:Q

触发时钟:CLK

2)设计同步异步清零D触发器

触发器有两种清零方式:同步——当触发沿到来时,若清零信号有效,则实现清

零;异步——任何时候清零信号一旦有效,触发器马上清零,而不论触发沿是否到来。

在以上设计的D触发器基础上,加入清零端rst,分别实现同步和异步清零方式。

3)设计一个高电平有效的锁存器

输入:D

输出:Q

触发:E

电平触发的锁存器与沿触发的触发器不同之处在于当触发端处于有效电平时,输出等于输出,随输入变化;触发端无效时输出保持不变。

4)在QuartusII环境下对以上设计的模块进行编译,记录时序分析数据和仿真波形,并在实验电路上进行硬件测试。

管脚锁定: D PIO23 30 SW1

CLK CLK1 43 频率源(35 SW2)

Q PIO19 29 LED12

四、问题

1)在本次实验中你使用的VHDL描述方式是和实验二中一样的结构化描述还是

行为级描述?这两种方式描述的编译出来的仿真结果是否相同?

2)请在试验报告中分析和比较1)和3)的仿真和实测结果,说明两者之间的异

同点。

实验结果:

上升沿触发的D触发器的VHDL描述:

library ieee;

use ieee.std_logic_1164.all;

entity d is

port(CLK:in std_logic;D:in std_logic;Q:out std_logic);

end;

architecture bhv of d is

signal q1:std_logic;

begin

process(CLK,q1)

begin

if CLK'event and CLK='1'

then q1<=D;

end if;

end process;

Q<=q1;

end bhv;

仿真波形:

硬件测试结果及分析:

CLK PIN_233 SW1

D PIN_234 SW2

Q PIN_1 LED1

若SW2为1,当按下SW1时,LED1亮,此时若让SW2为0,再按下SW1,则LED1灭。可知:当CLK上升沿到来时,输出Q就是D值。故结果正确。

设计同步异步清零D触发器的VHDL描述:

同步清零D触发器的VHDL描述:

library ieee;

use ieee.std_logic_1164.all;

entity DT is

port(clk,rst: in std_logic; D: in std_logic;

Q: out std_logic);

end ;

architecture one of DT is signal Q1: std_logic;

begin

process(clk,rst,Q1)

begin

if clk'event and clk='1' then if rst='0' then Q1<=D;

else Q1<='0';

end if;

end if;

end process;

Q<=Q1;

end one;

仿真波形:

硬件测试结果及分析:

CLK PIN_233 SW1

D PIN_234 SW2

rst PIN_235 SW3

Q PIN_1 LED1

若SW3为1,只有在按下SW1时,输出才复位。结果正确。

异步清零D触发器的VHDL描述:

library ieee;

use ieee.std_logic_1164.all;

entity DY is

port(CLK:in std_logic;D,RST:in std_logic;Q:out std_logic); end;

architecture bhv of DY is

signal q1:std_logic;

begin

process(CLK,q1)

begin

if RST='1'

then q1<='0';

elsif CLK'event and CLK='1'

then q1<=D;

end if;

end process;

Q<=q1;

end bhv;

仿真波形:

硬件测试结果及分析:

CLK PIN_233 SW1

D PIN_234 SW2

RST PIN_235 SW3

Q PIN_1 LED1

一旦当SW3为1时,输出就复位。结果正确。高电平有效的锁存器的VHDL描述:

library ieee;

use ieee.std_logic_1164.all;

entity SD1 is

port(d,clk:in std_logic;

q:out std_logic);

end entity SD1;

architecture one of SD1 is

begin

process(clk,d)

begin

if clk='1'

then q<=d;

end if;

end process;

end architecture one;

仿真波形:

硬件测试结果及分析:

clk PIN_233 SW1

d PIN_234 SW2

q PIN_1 LED1

仅当clk为1时,输出q才随输入d变化。验证结果正确。

回答问题:

1),本次实验中采用的VHDL描述方式是行为级描述。

2),1)和3)仿真和实测结果

相同点是:两者均能在CLK高电平上升沿到达时输出等于输入,且在CLK处于低电平时输出保持低电平之前的一个高电平时的输出状态;

不同点是:前者直到下一个CLK高电平到达前均保持相同输出,而后者在CLK 保持高电平期间,若输入D发生变化,则输出Q也随之变化。

实验四设计一个异步清零和同步时钟使能的4位加法计数器

一、实验目的:

学习计数器的设计、仿真和硬件测试,进一步熟悉VHDL设计技术。

二、实验原理

本试验中所要设计的计数器,由4位带异步清零的加法计数器和一个4位锁存器

组成。其中,rst是异步清零信号,高电平有效;clk是计数时钟,同时也是锁存信号;

ENA为计数器输出使能控制。当ENA为‘1’时,加法计数器的输出值加载于锁存

器的数据端,;当ENA为‘0’时锁存器输出为高阻态。当计数器输出“1111”时,

进位信号COUT为“1”。

三、实验内容

1)画出该计数器的原理框图。

2)用VHDL语言完成上述计数器的行为级设计。

可以采用分层描述的方式,分别设计计数器和输出锁存器模块,然后将两个模块组合成一个顶层模块。注意锁存器输出高阻时的描述的方式。

3)用QuartusII对上述设计进行编译、综合、仿真,给出其所有信号的仿真波形和

时序分析数据。

4)通过QuartusII集成环境,将设计下载到实验电路上进行硬件测试。

引脚锁定:

clk: clk1 43 clk1

rst: PIO24 35 SW2

ena: PIO23 30 SW1

outy(3) PIO19 29 LED12

outy(2) PIO20 28 LED11

outy(1) PIO21 27 LED10

outy(0) PIO22 25 LED9

cout PIO12 23 LED7

2、思考题:

如果需要设计带并行预置初始值的计数器,用VHDL应如何描述?

实验结果:

计数器的原理框图:

计数器的VHDL描述:

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY CNT4 IS

PORT (RST,CLK,ENA:IN STD_LOGIC;

COUT: OUT STD_LOGIC;

OUTY :OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END CNT4;

ARCHITECTURE behv OF CNT4 IS

BEGIN

PROCESS (RST,ENA,CLK)

VARIABLE CQI :STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN

IF RST='1' THEN CQI :=(OTHERS =>'0');

ELSIF CLK'EVENT AND CLK='1' THEN

IF ENA ='1' THEN

IF CQI < 15 THEN CQI:=CQI+1;

ELSE CQI :=(OTHERS =>'0');

END IF;

END IF;

END IF;

IF CQI =15 THEN COUT<='1';

ELSE COUT <='0';

END IF;

OUTY <=CQI;

END PROCESS;

END behv;

仿真波形:

硬件测试结果及分析:

CLK PIN_233

ENA PIN_234

RST PIN_235

COUT PIN_1

OUTY[0] PIN_2

OUTY[1] PIN_3

OUTY[2] PIN_4

OUTY[3] PIN_6

当ENA=1且RST=0时计数器开始计数,当ENA=0时停止计数。若RST=1则计数器清零。当计数器输出OUTY=1111时,进位信号COUT=1。结果正确。

回答问题:

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY CNT4A IS

PORT (CLK : IN STD_LOGIC;

RST : IN STD_LOGIC;

ENA : IN STD_LOGIC;

OUTY : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);

COUT : OUT STD_LOGIC );

END CNT4A;

ARCHITECTURE behav OF CNT4A IS

SIGNAL CQI : STD_LOGIC_VECTOR(3 DOWNTO 0);

BEGIN

P_REG: PROCESS(CLK, RST, ENA)

BEGIN

IF RST = '1' THEN CQI <= "0000";

ELSIF CLK'EVENT AND CLK = '1' THEN

IF ENA = '1' THEN CQI <= CQI + 1;

END IF;

END IF;

OUTY <= CQI ;

END PROCESS P_REG ;

COUT<=CQI(0) AND CQI(1) AND CQI(2) AND CQI(3);

END behav;

实验五七段数码显示译码器设计

一、实验目的:

学习7段数码显示译码器设计,学习VHDL的多层次设计方法。

二、实验原理:

相关主题
文本预览
相关文档 最新文档