视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
EDA期末复习资料 (4)
2025-10-02 15:34:27 责编:小OO
文档
考试试卷(A卷)

一 填空题(30分,每小题3分)

1、定义TIMER为整型变量,取值范围为0-255,VHDL的语句为:   variable timer:integer range 0 to 255;

2、JTAG包括   TDI、TDO、TMS、TCK、TRST五个引脚。

3、在ISE中建立一个工程文件,如果要锁定使用的引脚,需要建立一个        用户用户约束文件(UCF文件)文件。

4、进程之间的通信是通过 信号 来实现的。

5、single a :std_logic_vector(7 downto 0),则a的最高位是   a(7) 

6、资源优化有    资源共享、逻辑优化和串行优化  三种方法。

7、元件例化语句由两部分组成,前一部分 对一个设计实体定义为一个元件  第二部分   此元件与当前设计实体的连接说明 

8、关键路径优化法的主要目的是减少从输入到输出经过的延时最 大(长) 路径的时延。

9、任何的组合电路,可以用 与、或、非基本门电路   电路实现;任何的时序电路都可由 组合 电路加上  储存元件(即锁存器、触发器、RAM)        构成。

10、关系操作的结果为  BOOLEAN  数据类型;逻辑操作可以使用 BIT、 BOOLEAN、 STD_LOGIC 数据类型。

二 简答题(30分,每小题5分)

可编程芯片的可编程体现在哪几个方面? 

要点:(1) 内部组合逻辑单元可编程;

     (2) 内部连线可编程;

        (3) IO单元可编程;

     (4) 全局时钟、全局复位信号等。

2  谈一谈你对IP核的认识。

要点:(1) IP核具有自主知识产权;

     (2) 以硬件描述语言描述;

     (3) 实现特定功能;

     (4) 可以集成与其他的用硬件描述语言描述的系统。

3  逻辑单元LE包括哪几个部分?

要点:(1) 1个4输入的LUT;

     (2) 1个带有同步使能的可编程触发器;

     (3) 1个进位链;

     (4) 1个级连链。

4  什么是固有延时?什么是传输延时?

要点:固有延时也称为惯性延时,是任何电子器件都存在的一种延时特性,固有延时的主要物理机制是分布电容效应,分布电容具有吸收脉冲能量的效应。

5  利用LUT如何实现一个四输入函数。

要点:LUT是look up table(查找表)的缩写,它是用逻辑芯片内部的SRAM来构成逻辑函数发生器,SRAM内存储真值表,真值表是函数所有取值的集合,一个N输入LUT可以实现N个输入变量的任何逻辑功能。

四输入函数的LUT实现过程图(略)

6  寄存器配平为什么能够提高电路的运行速度?

要点:一个设计项中,如果包含逻辑块的延时差别过大,其总体工作频率取决于延时最大的模块,从而导致设计的整体性能受到。可以将大的延时部分(T1)划分一部分到小延时部分(T2),原系统的速度由T1决定,减小T1可以提高电路的运行速度。

三 利用流水线技术对下面程序进行优化。(10分)

library IEEE;

use IEEE.std_logic_11.all;

use IEEE.std_logic_arith.all;

use IEEE.std_logic_unsigned.all;

entity dmul1 is

    Port ( a0, a1, a2,a3: in  std_logic_vector(7 downto 0);

           result : out std_logic_vector(width-1 downto 0);

end dmul1;

architecture Behav of dmul1 is

constant width:=;

begin

process(a0, a1, a2,a3)

result<= a0* a1* a2* a3;

end process;

end Behav;

优化:

library IEEE;

use IEEE.std_logic_11.all;

use IEEE.std_logic_arith.all;

use IEEE.std_logic_unsigned.all;

entity dmul1 is

    Port ( a0, a1, a2,a3: in  std_logic_vector(7 downto 0);

           result : out std_logic_vector(width-1 downto 0);

end dmul1;

architecture Behav of dmul1 is

constant width:=32;

signal tmp1: std_logic_vector(15 downto 0);

signal tmp2: std_logic_vector(23 downto 0);

signal tmp3: std_logic_vector(31 downto 0);

begin

process(a0, a1, a2,a3)

  tmp1<= a0* a1* a2* a3;

tmp2<= tmp1* a2;

tmp3<= tmp2* a3;

result<= tmp3;

end process;

end Behav;

四 VHDL程序设计(30分)

1、设计一个位宽度的双向总线驱动电路。(10分)

参考程序:

library IEEE;

use IEEE.STD_LOGIC_11.all;

entity bidir is

      Port ( dir,en: in std_logic;

           a,b: inout std_logic_vegtor(width-1 downto 0));

end bidir;

architecture art1 of bidir is

Signal aout,bout: std_logic_vegtor(width-1 downto 0);

Constant width:=;

Begin

Process(a,dir,en)

Begin

If ((en=‘1’)and (dir=‘1’)) then bout<=a;

Else bout<=“zzzzzzzz”;

End if;

B<=bout;

End process;

Process(b,dir,en)

Begin

If ((en=‘1’)and (dir=‘0’)) then aout<=b;

Else aout<=“zzzzzzzz”;

End if;

a<=aout;

End process;

end art1;

2、

2、 设计一个带异步复位和可预置初值的10进制加1计数器。(10分)

参考程序:

library IEEE;

use IEEE.STD_LOGIC_11.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity counter is

    Port ( a : in std_logic_vector(3 downto 0);

           load : in std_logic;

           reset : in std_logic;

           count : out std_logic_vector(3 downto 0);

           clk : in std_logic);

end counter;

architecture Behavioral of counter is

begin

process(reset,clk)

 if reset='1'then count='0000'

 elsif clk'event and clk='1' then 

       begin 

if load='1'then count<=a;

elsif count>'1001'then count<='0000';

        else count=count+1;

        end if;

 end if;

 end process;

end Behavioral;

3、 设计一个带进位位的8位二进制全加器电路。(10分)

参考程序:

library IEEE;

use IEEE.STD_LOGIC_11.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity add8 is

    Port ( a : in std_logic_vector(0 to 7);

           b : in std_logic_vector(0 to 7);

           ci : in std_logic;

           cout : out std_logic;

           sum : out std_logic_vector(0 to 7));

end add8;

architecture Behavioral of add8 is

variable tmp:std_logic_vector(0 to 8);

begin

  process(a,b)

   begin

   tmp:='0'&a+'0'&b;

   tmp:=tmp+ci;

cout<=tmp(8);

sum<=tmp(7:0);

  end process;

end Behavioral;

考试试卷(A卷)

一  填空题(每空1分,共30分)

1.SOC是指     单片系统(片上系统)                  。

2.LUT是指    查找表    ,一个4输入的LUT需要  16    bit存储空间。

3.MAX7000中   16  个宏单元组成一个LAB。

4.FLEX10K由  嵌入式阵列块   , 逻辑阵列块    ,  快速通道   和I/O系统  四部分组成。

5.在可编程电路的逻辑表示中表示   未连接      ,表示    固定连接     ,表示  可编程连接      。

6.综合器的综合步骤自顶层向低层依次为: 自然语言      综合,  行为   综合, 逻辑    综合和  结构(版图)  综合。

7.时序仿真是指   仿真文件中包含了器件的特性参数,接近于真实器件运行特性的仿真 。功能仿真是指   直接对VHDL、原理图或其他描述形式的逻辑功能进行测试模拟,不涉及硬件的的物理特性。

8.IP模块设计应易于  重用  。

9.任何组合电路可以用 与门-或门二级电路  实现,任何时序电路可以用  储存元件(即锁存器、触发器、RAM)  实现。

10.一般有限状态机包含  说明部分 ,主控时序进程, 主控组合进程 和 辅助进程 四部分。

11.电路设计中面积优化有资源共享,逻辑优化,串行优化  等方法,速度优化有 流水线,寄存器配平,关键路径法 等方法。

二 问答题(每题5分,共10分)

1.信号和变量的主要区别是什么?

  要点:

(1)变量具有局部特征,有效范围只在所定义的进程或子程序中;

(2)信号具有全局特征,在一个实体内部的各单元之间传送数据,或与其他实体之间通信;

(3)变量赋值是立即发生的,零延迟;

(4)信号赋值是在一个进程的结束,有延迟;

(5)变量在综合后可能没有与之对应的硬件结构;

(6)信号在综合后可以找到与之对应的硬件结构,如一根线,一个端口或一个D触发器等

2.什么是固有延时?什么是传输延时?

要点:

固有延时页也叫惯性延时,是任何电子器件都存在的一种延时特性,主要由分布电容产生。传输延时是输入与输出之间的一种绝对延时,使信号传输推迟了一个时间段。

三 根据要求完成各小题(共16分)

1. 在横线处补齐相应语句,使下面语句构成完整程序。(本题10分,每空1分)

(1) LIBRARY IEEE     ;

USE IEEE.STD_ LOGIC_11.ALL;

ENTITY  MUX21A  IS

PORT(A,B:IN STD_LOGIC;

        S:IN STD_LOGIC;

      Y:OUT STD_LOGIC);

(2) END ENTITY; 或 END ENTITY MUX21A;

ARCHITECTURE  ART1  OF  MUX21A  IS

BEGIN 

PROCESS(A,B,S)

BEGIN

IF S=’1’ THEN Y<= A;

(3)ELSE   Y<= B;

(4)END IF;

(5)END PROCESS;

(6)END ARCHITECTURE;或END ARCHITECTURE  ART1;

LIBRARY IEEE;

USE IEEE.STD_LOGIC_11.ALL;

ENTITY MUXK IS

    PORT(A1,A2,A3,S0,S1: IN STD_LOGIC;

                  OUTY: OUT STD_LOGIC);

END ENTITY MUXK;

ARCHITECTURE ART2 OF MUXK IS

COMPONENT MUX21A 

 (7)PORT(A,B:IN STD_LOGIC;

           S:IN STD_LOGIC;

           Y:OUT STD_LOGIC);

END COMPONENT;

(8)SIGNAL  TMP: STD_LOGIC;

BEGIN

PROCESS(A1,A2,A3,S0,S1)

BEGIN

U1: MUX21A (9)PORT MAP(A=>A2,B=>B3,S0=>S, Y=>TMP);

U2: MUX21A (10)PORT MAP(A=>A1,B=>TMP,S=>S1,Y=>OUTY);

END PROCESS;

END ARCHITECTURE ART2;

2. 下图是FLEX10K的结构框图,请分别写出(1)--(8)所对应结构名称。(本题6分,每(1)+(2)1分,(3)+(4)1分,其他空各1分)

1)IOC(IOE或IOB);(2)IOC(IOE或IOB);(3)EAB;(4)EAB;(5)LA(逻辑阵列);(6)LAB;(7)内部互连;(8)LE。

四.用VHDL语言设计一个带有异步复位和并行置位的左移一位寄存器。(14分)

library IEEE;

use IEEE.STD_LOGIC_11.all;

entity Lshifter is

    Port ( clk,rst,load: in std_logic;

             din:in std_logic_vector(7 downto 0);

qb: out std_logic );

end Lshifter;

architecture art1 of Lshifter is

Begin

Process(clk,rst,load)

Variable reg8:std_logic_vector(7 downto 0);

Begin

If load=’1’ then  reg8:=(others=’0’);

IF CLK’EVENT AND CLK=’1’ THEN

   If load=’1’ then  reg8:=din;

   Else reg8(7downto 1) := reg8(6 downto 0) ;

   End if;

End if;

QB<=REG8(7);

End process;

end art1;

五 用VHDL语言实现一个3—8译码器。(本题14分)

参:(本题有多种实现方法)

library IEEE;

use IEEE.STD_LOGIC_11.ALL;

entity de3to8 is

    Port ( inp : in std_logic_vector(2 downto 0);

           outp : out std_logic_vector(7 downto 0));

end de3to8;

architecture art3 of de3to8 is

Begin

Case inp is

Outp(0)<= ’1’ when inp=“000” else’0’;

Outp(1)<= ’1’ when inp=“001” else’0’;

Outp(2)<= ’1’ when inp=“010” else’0’; 

Outp(3)<= ’1’ when inp=“011” else’0’;

Outp(4)<= ’1’ when inp=“100” else’0’;

Outp(5)<= ’1’ when inp=“101” else’0’;

Outp(6)<= ’1’ when inp=“110” else’0’;

Outp(7)<= ’1’ when inp=“111” else’0’;

End case;

end art3;

六 用VHDL语言设计一个十进制数中六十进制加法计数器。(本题16分)

library IEEE;

use IEEE.STD_LOGIC_11.all;

use IEEE.STD_LOGIC_UNSIGNED.all;

entity CNT60 is

    Port ( CLK ,RST,EN: in STD_LOGIC;

             CQ: OUT STD_LOGIC_vector(7 downto 0);

             COUT:OUT STD_LOGIC);

end CNT60;

architecture BHV of CNT60 is

Signal Q1: STD_LOGIC_vector(7 downto 0);

Begin

    Process(CLK,RST,EN)

VARIABLE CQI: STD_LOGIC_vector(7 downto 0);

VARIABLE HIGHCQI,LOWCQI: STD_LOGIC_vector(3 downto 0);

      Begin

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

            HIGHCQI:= CQI[7:4];

            LOWCQI:= CQI[3:0];

          ELSIF CLK’EVENT AND CLK=’1’ THEN

                 IF EN =’1’ THEN

IF LOWCQI <’9’ THEN LOWCQI := LOWCQI +1;

                      ELSE LOWCQI:=(OTHERS =’0’) ;

                           HIGHCQI:= HIGHCQI+1;

                      END IF;

IF HIGHCQI>=’5’ THEN COUT < =’1’;

                                           HIGHCQI:= (OTHERS =’0’) ;

                      END IF;

ELSE COUT < =’0’;

                   END IF; 

END IF;

            END IF;

            CQI:= HIGHCQI& LOWCQI;

CQ<=CQI;

    End process;

end BHV;下载本文

显示全文
专题