05年《EDA技术》试题答案

  • 格式:doc
  • 大小:218.00 KB
  • 文档页数:8

………密………封………线………以………内………答………题………无………效……电子科技大学二零零五至二零零六学年第一学期(A)EDA技术课程考试题(年12 月? 日一、简答题:(30分,每小题5分)1.CPLD和FPGA有什么差异?在实际应用中各有什么特点?答:差异:(1)CPLD:复杂可编程逻辑器件,FPGA:现场可变成门阵列;(2)CPLD:基于乘积项技术的确定型结构,FPGA:基于查找表技术的统计型结构;(3)CPLD:5500 ~ 50000门,FPGA:1K ~ 10M 门。

实际应用中各自的特点:CPLD适用于逻辑密集型中小规模电路,编程数据不丢失,延迟固定,时序稳定;FPGA适用于数据密集型大规模电路,需用专用的ROM 进行数据配置,布线灵活,但时序特性不稳定2.简述VHDL语言中端口模式IN,OUT,BUFFER和INOUT 各自的特点及OUT,BUFFER与INOUT的主要区别?答:端口模式中各自的含义与特点为:IN:输入,只读;OUT:输出,只写;BUFFER:带反馈的输出,可读可写;INOUT:双向,可读可写。

OUT,BUFFER,INOUT各自的区别:OUT模式下的信号,在程序中只能作为对象被赋值,不能作为源赋给其他信号;BUFFER模式下的信号,在程序中既可作为对象被赋值,又可作为源赋给其他信号,对象和源是同时发生,是同一个信号;INOUT模式下的信号,双向传输,同样既做对象又可作源,但对象和源不是同一个信号。

3.VHDL中有哪3种数据对象?详细说明它们的功能特点以及使用场所。

3种数据对象为:常量、信号、变量。

各自的功能特点和使用场所:常量:代表电路中一个确定的数,如电源、地等。

全局量,信号变量使用的地方都可用信号:代表电路中的某一条硬件连接线,包括输入、输出端口,信号赋值存在延迟。

全局量,使用场所:architecture、package、entitiy。

变量:代表电路中暂存某些值的载体。

变量赋值不存在延迟。

………密………封………线………以………内………答………题………无………效……局部量,使用场所:process、function、procedure。

4.数字频率计功能是测量被测信号的频率,测量频率的基本原理是什么?实现的主要逻辑模块有那些?答:频率计测量频率的基本原理是:1秒时间内代测信号的脉冲个数。

实现频率计逻辑功能的主要模块有:时间基准产生电路:提供1秒中的准确计数时间信号;计数脉冲形成电路:将被测信号变换为可计数的窄脉冲,其输出受闸门脉冲的控制。

计数显示电路:对被测信号进行计数,显示被测信号的频率5.VHDL的基本结构及每部分的基本功能?答:VHDL的基本结构由:库(Library)、程序包(Package)、实体(Entity)、结构体(Architecture)和配置(Configuration)几部分组成。

每部分的基本功能为:库(Library):用来存储预先完成的程序包和数据集合体的仓库。

以供设计者对一些统一的语言标准或数据格式进行调用。

程序包(Package):将已定义的常数、数据类型、元件语句、子程序说明等收集起来构成一个集合,。

实体(Entity):定义系统的输入输出端口结构体(Architecture):定义系统的内部结构和功能。

配置(Configuration):从某个实体的多种结构体描述方式中选择特定的一个作为实体的实现方式。

6.用开发软件如MAX+PLUS Ⅱ进行EDA设计的基本过程及与传统电子设计的区别?答:EDA设计的基本过程:系统规格设计,建项目文件夹和打开软件建项目名,系统功能描述的源程序输入,源程序的编译与修改,源程序的功能仿真与修改,源程序的器件适配和逻辑综合、优化与布局布线,源程序的时序仿真与修改,门级网表的生成与芯片下载等过程。

与传统设计的区别:自顶向下,采用PLD器件,系统体积小,修改方便,速度快,从设计到实现计算机自动完成。

………密………封………线………以………内………答………题………无………效……二、改正下列程序中的错误,并简要说明每个错误的原因(30分,每小题5分)1.四选一多路选择器library ieee;use ieee.std_logic_1164.all;entity ex1 isport ( A,B,C,D: in std_logic;sel: in std_logic_vector(1 downto 0);Z: out std_logic);End ex1;Architecture arch of ex1 isBeginProcess(A,B,C,D)BeginZ <= A when sel = “00” else 说明:when….else 是并行语句,不能放在B when sel = “01” else Process 内。

去掉process(A,B,C,D)和C when sel= “10” else Begin语句D;End process;End arch;2.D触发器library ieee;use ieee.std_logic_1164.all ;entity ex2 isport (clk,d: in std_logic;q: out std_logic);End ex2;Architecture arch of ex2 isBeginProcess(clk) 说明:wait语句和process的敏感量不能同时Begin 存在。

去掉process(clk)中的(clk) Wait until clk‟event and clk = …1‟ ;q <= d ;End process;End arch ;3.数据分配器library ieee;use ieee.std_logic_1164.all ;entity ex3 isport (din: in std_logic_vector (2 downto 0);dout: out std_logic_vector (3 downto 0));end ex1 ;architecture rtl of ex1 is 说明:cass 语句是顺序语句要放在begin process内,在begin与case之间增加case (din) is process(din)与begin语句when “00” => dout <=“0001” ;when “01” => dout <= “0010” ;when “10” => dout <=“0100” ;when others => dout <=“1000” ;end case;end rtl ;………密………封………线………以………内………答………题………无………效……4.模16计数器library ieee;use ieee.std_logic_1164.all;entity ex4 isport(clk: in std_logic;count: out std_logic_vector(3 downto 0));end ex4;architecture rtl of ex4 is 说明:ieee.std_logic_1164.all程序包不具有加begin 运算功能,本程序有加法运算,因此需添加process(clk) use ieee.std_logic_unsigned.all语句;同时if clk‟event and clk=‟1‟ then count是out模式,在程序中做了源,因此需将count<=count+1; out改为buffer;还有在port声明部分用:=end if; 给count赋给初值。

end process;end rtl;5.三态门电路entity ex5 isport(en,din:in bit;dout:out bit);end ex5;architecture art of ex5 isbeginprocess(en,din) 说明:三态门电路有高阻状态,因此数据类型不能选begin bit。

更改为,在entity前加:if en='1' then dout<=din; library ieee;else dout<='Z'; use ieee.std_logic_1164.all;end if; port中的bit改为:std_logicend process;end art;6.寄偶校验电路library ieee;use ieee.std_logic_1164.all;entity ex6 isport(a: in std_logic_vector(7 downto 0);Y:out std_logic);End ex6; 说明:因为信号的数据刷新在end process后,Architecture art of ex6 is 在process内不能立即更新,因此在loop内不能Signal tmp: std_logic; 累加,此题要实现寄偶校验功能,只有把信号Begin temp更改为变量,即去掉:Signal tmp: std_logic;Process(a) 在process与begin之间增加:Begin variable tmp: std_logic; 同时把所有的”<=”改为temp<=‟1‟; “:=”For i in 0 to 7 looptmp<=tmp xor a(i);End loop;Y<=tmp;End process;End art;三、用VHDL设计电路:(40分)………密………封………线………以………内………答………题………无………效……1.按下图和表设计一个十进制的步进码扭循环计数器。

下图中Q4,Q3,Q2,Q1,Q0为计数器输出,CLK为时钟。

(10分)Library ieee;Use ieee.std_logic_1164.all;Use ieee.std_logic_unsigned.all;Entity des1 isPort(clk : in std_logi;Q : out std_logic_vector(4 downto 0));End des1;Architecture art of des1 isSignal temp: integer range 0 to 9 : =0;BeginProcess(clk)BeginIf clk‟event and clk=‟1‟ thenTemp<=temp+1;End if;End process;Process(temp)BeginCase temp isWhen 0=>Q<=”00000”;When 1=>Q<=”00001”;When 2=>Q<=”00011”;When 3=>Q<=”00111”;When 4=>Q<=”01111”;When 5=>Q<=”11111”;When 6=>Q<=”11110”;When 7=>Q<=”11100”;When 8=>Q<=”11000”;When others=> Q<=”10000”;End case;End process;End art;………密………封………线………以………内………答………题………无………效……2.设计一个对输入信号fin 按预定模进行分频的分频器,如下图,其中din为分频器的预置分频数,fin 为被分频的输入信号,rst为系统的复位信号。