EDA技术习题.doc

EDA技术习题.doc

2023年7月17日发(作者:)

一、 填空

1.

当前最流行的并成为IEEE标准的硬件描述语言包括VIIDL语言 和Verilog IIDL i吾言。

2. EDA中文全称是 电了•设计自动化。1P核在EDA技术和开发中具有十分重要的地位,IP指的是 知识产权核或知识产 权模块 。

3.

将硬件描述语言转化为右件电路的重要工具软件称为1【1)1.综合器 。P21

4.

一般情况下,FPGA是基于 与或阵列 的可编程逻辑结构,CPLD是基于 杏找表 的可编程逻辑结构。P28

5. EDA仿真过程中主要涉及 时序仿真和功能仿真。

6. EDA的优化设计主要是进行资源优化和速度优化,其中速度优化主要石流水线设计、寄存器配平和关键路径法 等三种优化方法。P326

7. VIIDL

子程序有

PROCEDURE . FUNCTION

两类。P230

8. EDA的中文全称为一电子设计口动化 ,IIDL为_硬件描述语言 一。

9.

基于EDA软件的FPGA / CPLD设计流程为:原理图/1IDL文本输入一_功能仿真一一综合一适配一_时序仿真—一编程下载

一硬件测试。

10. FPGA中文全称是一现场可编程门阵列CPLD中文全称是一复杂可「编程逻辑器件一。其中—CPLD_是基于乘积项的可编程

逻辑结构,_FPGA_是基于查找表的可编程逻辑结构。P28

11. VIIDL语言按照执行顺序的不同可以分为 顺序语句一和 并行语句 语句。

12.

在仿真延时中,y <= x AFTER 20ns中的20ns指的是_固有 延时,y<= TRANSPORT x AFTER 20 ns中的20ns指 的是—传输—延时。P151

13.

资源优化主要有—资源共享_、_逻辑优化—和_串行化—等三种优化方式。P326

二、 问答题

1.

与传统电子设计方法相比,EDA采什么设计方法?比较这两种设计方法的区别?

答:EDA采用自顶向下的设计方法 手工设计方法缺点:

1)设计、调试十分困难。2)查找和修改十分不便。3)大量文档,不易管理。4)可移植性差。

5)只有在设计出样机或生产出芯片后才能进行实测。

EDA技术有很大不同:

1)采用硬件描述语言作为设计输入。2)库(Library)的引入。3)设计文档的管理。

4)强大的系统建模、电路仿真功能。5)具有自主知识产权。6)标准化、规范化及IP核的可利用性。7)自顶向下设计方案。

8)自动设计、仿真和测试技术。9)对设计者的硬件知识、经验要求低o 10)A速性能好(与以CPU为主的电路系统相比)。

11)纯硬件系统的高可靠性。.

2.

简述EDA设计流程。

答:设计输入综合适配仿真下载硬件测试

3.

根据编程方式的不同,PLD器件可以分为哪几类?

熔丝型器件:反熔丝型器件:EPROM型:EEPROM型:SRAM型:Flash型。

4.

什么是重载?重载函数有何用处?

答:同样名称的函数可以用不同的数据类型作为此函数的参数定义多次,以此定义的函数称为重载函数:

5. V1IDL语言按照执行顺序的不同可以分为哪两类基本语句?并且各举一例说明。

答:顺序语句和并行语句

1.

什么是自顶向下的设计方法?与传统电子设计方法相比有什么优点?

答:自顶向下就是在整个设计流程中各个设计流程逐步求精的过程,即是从高抽象级别到低抽象级别的整个设计周期。优

点:在整个设计过程中不必太注意目标器件的设计细节。

2.

在FPGA设计过程中,综合的含义是什么?主要有哪凡种类型的综合?

答:综合:将用行为和功能层次表达的电了系统转换成为低层次的便于具体实现的模块组合装配的过程。 有语言综合、行为综合、逻辑综合、结构综合 3. EDA技术最终实现目标的ASIC可以通过哪三种途径完成? 答:门阵法标准单元法可编辑逻辑器件控制法

4.

简述信号与变量的主要区别。(3分)1

答:pl30

信号signal

基本用法

适用范围

行为特征

用于电路线路中信号的连接

在整个结构体中任何地方都可以适用

在进程最后才对信号赋值

变量

variable

用于作为进程中局部数据存储单元

只能在所定义的进程中使用

立即赋值

5.

在VHDL设计中,给触发器复位有哪两种方法?如果时钟进程中用了敏感信号表,哪种复位方式必须要把复位信号放在

敏感信号表中?(3分)

答:同步复位异步复位。异步复位

6.

利用FPGA构成数字系统时为什么需要配备一个PROM或EEPROM? (2分)

三、VHDL程序填空:(10分,每空1分)

下面程序是一个具有加法和减法功能的16位计数器VIIDL描述,试补充完整。

1 IEEE; (LIBRARY)

use

2

.STD LOGIC 1164. all; (IEEE)

use ieee. ___

3 ___________ . all;空 ________________ (STD_L()G1C_UNS1GNED)

4

ent add sub is (ENTITY)

port (elk : in STI)_L0GIC;

rst : in ST【)_L0GIC;

enable : in STD LOGIC;

add_sub : in STD_LOG1C;

q :out STD_LOG1C_VECTOR(15 downto 0));

end cnt_add_ sub;

architecture

cnt_add_sub of

5 is (cnt_add_sub)

空6

_ q_tmp: STD LOGIC VECTOR(15 downto 0):(SIGNAL)

begin

空7

_(elk, rst) (PROCESS)

begin

空8

rst=T then q_tmp<= (others=>" 0’);( if )

elsif

9 and elk='1' then (elk' event)

if enable二'1' then

if add_sub-‘ 1' then

q_tmp<=+l;

else

q _tmp<=q_tnip-l;

10 ; (end if)

end if ; end if ; end process;

q<=q tmp:

end cnt_cidd_sub;

下面程序是一位全加器的VIIDL描述试补充完整,。 一半加器描述

1 IEEE;

USE IEEE. STD LOGIC 1164. ALL;

ENTITY

2 IS

3 (a, b : IN STI)_LOG1C;

co, so : OUT STD LOGIC);

END ENTITY h_adder;

ARCHITECTURE

4 OF h_adder is

BEGIN

so <= NOT(a XOR (NOT b));

co <= a AND b ;

END ARCHITECTURE fhl;

(library)

(h_adder)

(PORT)

(fhl)

一一位全加器顶层设计描述

ENTITY f_adder IS

PORT (ain, bin, cin :

5 STD LOGIC;(IN) cout, sum : OUT STD_LOG1C );

END ENTITY f_adder;

ARCHITECTURE fdl OF f_adder IS

6 h_adder IS

PORT ( a, b : IN STD_LOG1C;

co, so : OUT STD_LOG1C);

END COMPONENT

(COMPONENT)

7 d, e, f : STI)_LOGIC;

BEGIN

(SIGNAL)

ul :

8 PORT MAP(a=>ain, b=>bin, co=>d, so=>e); (h adder) u2 : h_cidder PORT MAP

(a二〉

cout <= d

10 f; (OR)

END ARCHITECTURE fdl;

9 , b=>cin, co=>f, so二〉sum) ; (e)

在程序中存在5处错误,试找出错误,写出错误原因,并写出正确语句。

1

行一library ieee;

第2行一

use ieee. std logic l 164. al 1;

第3行一

use ieee. std_logic_unsigned. all;

第4行一

entity decoder38 is

第5行一

port (Q0: out std_logic_vector (7 downto 0):

第6行一

第7行一

QI: in std logic vector(2 downto 0):

en: in std_logic);

第8行一

end entity decoder38;

第9彳亍一

architecture code! of decoder is

10行一begin

第11

行一process( )

13行一begin

14行一

if en = * T then temp := 〃ZZZZZZZZ〃;(process(QI))

(decoder38)

12行一

signal temp : std_logic_vector(7 downto 0): (variable) 第15行一第16行一第

17行一第

18行一第

19行一

第20行一第

21行一第

22行一第

23行else

case QI is

when 〃000〃 => temp := "00000001”;

when 〃001〃 => temp := "00000010”;

when "010” => temp := "00000100〃;

when "Oil" => temp := "00001000”;

when "100” => temp

:二”00010000〃;

when 〃101〃 => temp :="00100000〃;

when 〃110〃 => temp := "01000000”;

一第

24行when "111〃 => temp := "10000000〃;

一第

25行encl if;

(前插入

END

CASE)

第26行一第

27行end process;

第28行end architecture code!;

一四、VHDL程序改错:(10分)

在程序中存在5处错误,试找出错误,写出错误原因,并写出正确语句。

第1行library IEEE;

— 第2use IEEE. STI) LOGIC 1164. all;

行一 第entity mux4 is

3行一

port ( sO, si, a, b, c, d : in STD LOGIC ;

y : out STD_L()G1C ;);

QI <= temp; (QO)

第4行行_ 第6行一 第7行一

(删去;)

( mux4)

( 1 )

一 第5end mux4; architecture one of mux is

signa1 s:std_1ogic_vector( 2 dounto 0 ):

begin

sSsl&sO;

process( )

begin

case s is

when "00〃=> y<=a;

when "01”二〉

y<=b;

when 〃10"=>

end case;

end process;

end one ;

y<=c;

第9行一 第10行一 第11行一

(s)

第12行一 第13行一 第14行一

(插入

when y<=d;)

第15行

一 第16五、编写VHDL程序:(共20分,每题10分)

1.图1是一个含有下降沿触发的D触发器的时序电路,试写出此电路的VI1DL设计文件。LIBRARY IEEE;

USE IEEE. STI) LOGIC 1164. ALL;

ENTITY MULTI IS

PORT (CL: IN STD_L()G1C;一输入选择信号

CLKO:IN STD_LOG1C;

一输入信号

OUT1:OUT STD_LOGIC)输出端

END ENTITY;

ARCHITECTURE ONE OF MULTI IS

SIGNAL Q : STD_L()GIC;

BEGIN

PRO1: PROCESS (CLKO)

BEGIN

IF CLKO' EVENT AND CLKO=' O'

THEN Q<=N()T (CL OR Q) ;ELSE

END IF;

END PROCESS;

PR02: PROCESS (CLKO)

BEGIN

OUTIOQ;

END PROCESS;

EM) ARCHITECTURE ONE;

2. “Ill”序列检测器的功能是连续输入三个或三个以上的1时,电路输出为列检测器的状态图,并编写完成该功能的程序。

1. 3、画出程序描述的状态转移图。(9分)

library IEEE;

use IEEE. STD LOGIC 1164. all;

entity state_84 is

port (

elk,reset:in std_logic;

ina : in std_logic__vector(2 downto 0);

outa :out st d_1og i c_vector(3 down to 0));

end state_84;

architecture state 84 of state 84 is

type state__fs is (sO, si, s2, s3);

signal cur_state, next_state: state_fs;

“1”,其余情况下输出为“0”。靖画出该序 beginprocess(elk,reset)

begin

if reset='1’ then

cur_state<=sO;

elsif elk'event and clk=T then

cur state〈二next state;

end if;

end process;

process(cur_state, ina)

begin

case cur state is

when sO二〉next_state<=sl:

if ina="101" then outa<="0010〃;

elsif ina="lll" then outa<="1100”;

else outa<=nul1;

end if;

when si=〉if ina=〃110〃 then next_state〈二s2;

elsif ina-〃000〃 then next_state<-sl;

else null;

end if;

outa<=100r;

when s2

二〉if inaF〃100〃 then next_state〈=s2;

elsif ina="011〃 then next_state<=sl;

elsif ina/=〃011〃 then next_state<=s3;

else nul1;

end if;

outaK="1111”;

when s3 -> next_state<=s0;

if ina="101〃 then outa<="1101”;

elsif ina="011" then outa<>"l110〃;

else outa<=null;

end if;

when others -> next_state<-s0;

outa<="0000”;

end case;

end process;

end state_84;

,//1、EDA与传统电子设计方法的比较:

手工设计方法缺点:

1)

设计、调试十分困难。 2)

查找和修改十分不便。

3)

大量文档,不易管理。

4)

可移植性差。5)只有在设计出样机或生产出芯片后才能进行实测。

EDA技术有很大不同:

1)

采用硬件描述语言作为设计输入。

2)

库(Library)的引入。

3)

设计文档的管理。

4)

强大的系统建模、电路仿真功能。

5)

具有自主知识产权。

6)

标准化、规范化及IP核的可利用性。

7)

自顶向下设计方案。

8)

自动设计、仿真和测试技术。

9)

对设计者的硬件知识、经验要求低。

10)

高速性能好(与以CPU为主的电路系统相比)。

11)

纯硬件系统的高可靠性。

2、FPGA / CPLD设计流程

3(4-1)

画出与下例实体描述对应的原理图符号元件:

ENTITY but3s IS

--实体I

:三态缓冲器

PORT (input: IN STD_LOGIC ;

enable : IN STD_LOGTC ;

-输入端

-使能端

output: OUT STD_LOGIC

);-输出端

END buf3s;

ENABLE]〉・ 勺s p

INPUT I

> 一. | OUTPUT

ENTITY mux21 IS

--实体2: 2选1多路选择器

PORT (inO, ini, sei: IN STD_LOGIC;

output: OUT );

END mux21;

4、(4.2)图4.37所示的是4选1多路选择器,试分别用IF_THEN语句和CASE语句的表达方式写出此电路的VHDL程

序,选择控制的信号si和so的数据类型为STD_LOGIC_VECTOR;当si如

s0='0'; sU O*, s0= T; sl=T, sO=MT和

sl=fl

sO=T分别执行

y<=a> yv=b、yv=c、yv=d。sT> -----

S1 so

E>

2方法一:LIBRARY IEEE;

USE LOGIC ;

ENTITY MUX41 IS

PORT(s:IN STD_LOGIC_VECTOR( I DOWNTO 0);-输入选择信号

a,b,c,d:IN STD_LOGIC;--输入信号

y:OUT );-输出端

END ENTITY;

ARCHITECTURE ONE OF MUX41 IS

BEGIN

PROCESS(s)

BEGIN

IF (S="00”)THEN y<=a;

ELSTF (S="01 ”) THEN y<=b;

ELSIF (S=" 10”)THEN yv=c;

ELSIF (S=" 11 ”) THEN y<=d;

ELSE yv=NULL;

END IF;

END PROCESS;

END ONE;

方法二:

LIBRARY IEEE;

USE LOGIC 1164. ALL;

ENTITY MUX42 IS

PORT(s:IN STD_LOGIC_VECTOR( I DOWNTO 0);-输入选择信号

a,b,c,d:IN STD_LOGIC;--输入信号

y:OUT );-输出端

END MUX42;

ARCHITECTURE two OF MUX42 IS

BEGIN PROCESS(s)

BEGIN

CASE s IS

WHEN ”00”=> y<=a;

WHEN "01”=>yv=b;

WHEN ”IO”=>yv=c;

WHEN ”ll”=>yv=d:

WHEN OTHERS =>NULL;

END CASE;

END PROCESS;

END two;

5、写出MUXK的顶层文件

LIBRARY IEEE;

USE _LOGIC_1164. ALL;

ENTITY MUXK IS

PORT (al,a2,a3,s0,s I :IN STD_LOGIC;

outy:OUT );

END ENTITY MUXK;

ARCHITECTURE MUX OF MUXK IS

COMPONENT MUX21A

PORT ( a,b,s:IN STD_LOGIC;

y: OUT STD_LOGIC);

END COMPONENT;

SIGAL lmp:STD_LOGIC;

BEGIN

ul: MUX21A PORT MAP ( a=>a2,b=>a3,s=>O,y=>tinp);

u2:MUX21A PORT MAP (a=>al ,b=>tmp,s=>s I ,y=>outy);

END ARCHITECTURE MUX;

6、(5.8)判断下面3个程序中是否有错误,若有则指出错误所在,并给出完整程序。

程序1:

Signal A, EN : stdjogic; Process (A, EN)

Variable B : std_logic;Begin if EN = 1 then B end if; end process;

程序2:

Architecture one of

<=

sample is

variable a, b, c : integer;

begin

c <= a + b;

end;

程序3:

library ieee;

use Jogic^l ; entity mux21 is

port ( a, b : in stdjogic; sei: in stdjogic; c : out stdjogic;); end sam2;

architecture one of mux21 is begin

if sei = 'O' then c := a; else c := b; end if;

end two;

7、 一般时序状态机包括几个部分,分别是哪几个部分,清简要介绍.

答:(1)包括4部分,分别是说明部、主控时序进程、主控组合进程、辅助进程

(2)说明部分一般放在结构体的ARCHITECTURE和BEGIN之间,使用TYPE语句定义新的数据类型:主控时序进程是 指负责状态机运转和在时序驮动下负贲转换的进程:主控组合进程根据条件进行状态转移:辅助进程用于配合状态机工作的 组合进程或时序进程

8、 读程序,画出状态图

LIBRARY IEEE;

USE LOGIC ;

ENTITY MOORE1 IS

PORT (DATAIN :IN STD_LOGIC_VECTORf 1 DOWNTO 0);

CLK,RST : IN STD LOGIC;

Q : OUT STD_LOGIC_VECTORS DOWNTO 0));

ENDMOORE1;

ARCHITECTURE behav OF MOORE 1 IS

TYPE ST_TYPE IS (STO, ST1,ST2, ST3,ST4);

SIGNAL C ST: ST TYPE ; BEGIN

PROCESS(CLK,RST) BEGIN

IF RST ='I* THEN C_ST <= STO ; Q<= ”00()0” ;

ELSIF CLK EVENT AND CLK= 1' THEN

CASE C_ST IS

WHEN STO => IF DATAIN =''10” THEN C_ST <= STI ;ELSE C_ST <= STO ; END IF;

Q<= "1001'';

WHEN STI => IF DATAIN =”11” THEN C_ST <= ST2 ;

ELSE C_ST <= STI ;END IF;

Q<= ”0101”

WHEN ST2 => IF DATAIN =”01” THEN C_ST <= ST3 ;

ELSE C ST <= STO ;END IF;

Q <= ”1100” ;

WHEN ST3 => IF DATAIN =‘00” THEN C_ST <= ST4 ;

ELSE C_ST <= ST2 ;END IF;

Q<= ”0010”

WHEN ST4 => IF DATAIN =”11” THEN C ST <= STO ;ELSE C_ST <= ST3 ;END IF;

Q<= ”1001”

WHEN OTHERS => C_ST <= STO;

END CASE;

END IF;

END PROCESS;

END behav;

5ST

L STO JL ST1

JL ST2 JL ST3

发布者:admin,转转请注明出处:http://www.yc00.com/web/1689542297a264712.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信