EDA试题1.docx
- 文档编号:30739874
- 上传时间:2023-08-20
- 格式:DOCX
- 页数:19
- 大小:42.60KB
EDA试题1.docx
《EDA试题1.docx》由会员分享,可在线阅读,更多相关《EDA试题1.docx(19页珍藏版)》请在冰豆网上搜索。
EDA试题1
EDA试题1
一、填空
1.当前最流行的并成为IEEE标准的硬件描述语言包括VHDL语言和VerilogHDL语言。
2.EDA中文全称是电子设计自动化。
IP核在EDA技术和开发中具有十分重要的地位,IP指的是知识产权核或知识产权模块。
3.将硬件描述语言转化为硬件电路的重要工具软件称为HDL综合器。
P21
4.一般情况下,FPGA是基于与或阵列的可编程逻辑结构,CPLD是基于查找表的可编程逻辑结构。
P28
5.EDA仿真过程中主要涉及时序仿真和功能仿真。
6.EDA的优化设计主要是进行资源优化和速度优化,其中速度优化主要有流水线设计、寄存器配平和关键路径法等三种优化方法。
P326
7.VHDL子程序有PROCEDURE、FUNCTION两类。
P230
8.EDA的中文全称为_电子设计自动化_______,HDL为_硬件描述语言___。
9.基于EDA软件的FPGA/CPLD设计流程为:
原理图/HDL文本输入→_功能仿真_→综合→适配→_时序仿真__→编程下载→硬件测试。
10.FPGA中文全称是_现场可编程门阵列_,CPLD中文全称是_复杂可编程逻辑器件_。
其中___CPLD__是基于乘积项的可编程逻辑结构,_FPGA__是基于查找表的可编程逻辑结构。
P28
11.VHDL语言按照执行顺序的不同可以分为_顺序语句_和并行语句_语句。
12.在仿真延时中,y<=xAFTER20ns中的20ns指的是__固有______延时,y<=TRANSPORTxAFTER20ns中的20ns指的是__传输__延时。
P151
13.资源优化主要有__资源共享_、_逻辑优化__和_串行化__等三种优化方式。
P326
一、问答题
1.与传统电子设计方法相比,EDA采什么设计方法?
比较这两种设计方法的区别?
答:
EDA采用自顶向下的设计方法
手工设计方法缺点:
1)设计、调试十分困难。
2)查找和修改十分不便。
3)大量文档,不易管理。
4)可移植性差。
5)只有在设计出样机或生产出芯片后才能进行实测。
EDA技术有很大不同:
1)采用硬件描述语言作为设计输入。
2)库(Library)的引入。
3)设计文档的管理。
4)强大的系统建模、电路仿真功能。
5)具有自主知识产权。
6)标准化、规范化及IP核的可利用性。
7)自顶向下设计方案。
8)自动设计、仿真和测试技术。
9)对设计者的硬件知识、经验要求低。
10)高速性能好(与以CPU为主的电路系统相比)。
11)纯硬件系统的高可靠性。
.
2.简述EDA设计流程。
答:
设计输入综合适配仿真下载硬件测试
3.根据编程方式的不同,PLD器件可以分为哪几类?
熔丝型器件;反熔丝型器件;EPROM型;EEPROM型;SRAM型;Flash型。
4.什么是重载?
重载函数有何用处?
答:
同样名称的函数可以用不同的数据类型作为此函数的参数定义多次,以此定义的函数称为重载函数;
5.VHDL语言按照执行顺序的不同可以分为哪两类基本语句?
并且各举一例说明。
答:
顺序语句和并行语句
1.什么是自顶向下的设计方法?
与传统电子设计方法相比有什么优点?
答:
自顶向下就是在整个设计流程中各个设计流程逐步求精的过程,即是从高抽象级别到低抽象级别的整个设计周期。
优点:
在整个设计过程中不必太注意目标器件的设计细节。
2.在FPGA设计过程中,综合的含义是什么?
主要有哪几种类型的综合?
答:
综合:
将用行为和功能层次表达的电子系统转换成为低层次的便于具体实现的模块组合装配的过程。
有语言综合、行为综合、逻辑综合、结构综合
3.EDA技术最终实现目标的ASIC可以通过哪三种途径完成?
答:
门阵法标准单元法可编辑逻辑器件控制法
4.简述信号与变量的主要区别。
(3分)1
答:
p130
信号signal
变量variable
基本用法
用于电路线路中信号的连接
用于作为进程中局部数据存储单元
适用范围
在整个结构体中任何地方都可以适用
只能在所定义的进程中使用
行为特征
在进程最后才对信号赋值
立即赋值
5.在VHDL设计中,给触发器复位有哪两种方法?
如果时钟进程中用了敏感信号表,哪种复位方式必须要把复位信号放在敏感信号表中?
(3分)
答:
同步复位异步复位。
异步复位
6.利用FPGA构成数字系统时为什么需要配备一个PROM或EEPROM?
(2分)
二、VHDL程序填空:
(10分,每空1分)
下面程序是一个具有加法和减法功能的16位计数器VHDL描述,试补充完整。
空1IEEE;(LIBRARY)
use空2.STD_LOGIC_1164.all;(IEEE)
useieee.空3.all;(STD_LOGIC_UNSIGNED)
空4cnt_add_subis(ENTITY)
port(clk:
inSTD_LOGIC;
rst:
inSTD_LOGIC;
enable:
inSTD_LOGIC;
add_sub:
inSTD_LOGIC;
q:
outSTD_LOGIC_VECTOR(15downto0));
endcnt_add_sub;
architecturecnt_add_subof空5is(cnt_add_sub)
空6q_tmp:
STD_LOGIC_VECTOR(15downto0);(SIGNAL)
begin
空7(clk,rst)(PROCESS)
begin
空8rst='1'thenq_tmp<=(others=>'0');(if)
elsif空9andclk='1'then(clk’event)
ifenable='1'then
ifadd_sub='1'then
q_tmp<=q_tmp+1;
else
q_tmp<=q_tmp-1;
空10;(endif)
endif;
endif;
endprocess;
q<=q_tmp;
endcnt_add_sub;
下面程序是一位全加器的VHDL描述,试补充完整。
--半加器描述
空1IEEE;(library)
USEIEEE.STD_LOGIC_1164.ALL;
ENTITY空2IS(h_adder)
空3(a,b:
INSTD_LOGIC;(PORT)
co,so:
OUTSTD_LOGIC);
ENDENTITYh_adder;
ARCHITECTURE空4OFh_adderis(fh1)
BEGIN
so<=NOT(aXOR(NOTb));
co<=aANDb;
ENDARCHITECTUREfh1;
--一位全加器顶层设计描述
……
ENTITYf_adderIS
PORT(ain,bin,cin:
空5STD_LOGIC;(IN)
cout,sum:
OUTSTD_LOGIC);
ENDENTITYf_adder;
ARCHITECTUREfd1OFf_adderIS
空6h_adderIS(COMPONENT)
PORT(a,b:
INSTD_LOGIC;
co,so:
OUTSTD_LOGIC);
ENDCOMPONENT;
空7d,e,f:
STD_LOGIC;(SIGNAL)
BEGIN
u1:
空8PORTMAP(a=>ain,b=>bin,co=>d,so=>e);(h_adder)
u2:
h_adderPORTMAP(a=>空9,b=>cin,co=>f,so=>sum);(e)
cout<=d空10f;(OR)
ENDARCHITECTUREfd1;
在程序中存在5处错误,试找出错误,写出错误原因,并写出正确语句。
第1行-libraryieee;
第2行-useieee.std_logic_1164.all;
第3行-useieee.std_logic_unsigned.all;
第4行-entitydecoder38is
第5行-port(Q0:
outstd_logic_vector(7downto0);
第6行-Q1:
instd_logic_vector(2downto0);
第7行-en:
instd_logic);
第8行-endentitydecoder38;
第9行-architecturecode1ofdecoderis(decoder38)
第10行-begin
第11行-process()(process(Q1))
第12行-signaltemp:
std_logic_vector(7downto0);(variable)
第13行-begin
第14行-ifen='1'thentemp:
="ZZZZZZZZ";
第15行-else
第16行-caseQ1is
第17行-when"000"=>temp:
="00000001";
第18行-when"001"=>temp:
="00000010";
第19行-when"010"=>temp:
="00000100";
第20行-when"011"=>temp:
="00001000";
第21行-when"100"=>temp:
="00010000";
第22行-when"101"=>temp:
="00100000";
第23行-when"110"=>temp:
="01000000";
第24行-when"111"=>temp:
="10000000";
第25行-endif;(前插入ENDCASE)
第26行-Q1<=temp;(Q0)
第27行-endprocess;
第28行-endarchitecturecode1;
三、VHDL程序改错:
(10分)
在程序中存在5处错误,试找出错误,写出错误原因,并写出正确语句。
第1行-libraryIEEE;
第2行-useIEEE.STD_LOGIC_1164.all;
第3行-entitymux4is
第4行-port(s0,s1,a,b,c,d:
inSTD_LOGIC;
第5行-y:
outSTD_LOGIC;);(删去;)
第6行-endmux4;
第7行-architectureoneofmuxis(mux4)
第8行-signals:
std_logic_vector(2downto0);
(1)
begin
第9行-s<=s1&s0;
第10行-process()(s)
第11行-begin
第12行-casesis
第13行-when"00"=>y<=a;
第14行-when"01"=>y<=b;
第15行-when"10"=>y<=c;
第16行-endcase;(插入when"11"=>y<=d;)
第17行-endprocess;
第18行-endone;
四、编写VHDL程序:
(共20分,每题10分)
1.图1是一个含有下降沿触发的D触发器的时序电路,试写出此电路的VHDL设计文件。
图1
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYMULTIIS
PORT(CL:
INSTD_LOGIC;--输入选择信号
CLK0:
INSTD_LOGIC;--输入信号
OUT1:
OUTSTD_LOGIC);--输出端
ENDENTITY;
ARCHITECTUREONEOFMULTIIS
SIGNALQ:
STD_LOGIC;
BEGIN
PR01:
PROCESS(CLK0)
BEGIN
IFCLK0'EVENTANDCLK0='0'
THENQ<=NOT(CLORQ);ELSE
ENDIF;
ENDPROCESS;
PR02:
PROCESS(CLK0)
BEGIN
OUT1<=Q;
ENDPROCESS;
ENDARCHITECTUREONE;
2.“111”序列检测器的功能是连续输入三个或三个以上的1时,电路输出为“1”,其余情况下输出为“0”。
请画出该序列检测器的状态图,并编写完成该功能的程序。
1.3、画出程序描述的状态转移图。
(9分)
libraryIEEE;
useIEEE.STD_LOGIC_1164.all;
entitystate_84is
port(
clk,reset:
instd_logic;
ina:
instd_logic_vector(2downto0);
outa:
outstd_logic_vector(3downto0));
endstate_84;
architecturestate_84ofstate_84is
typestate_fsis(s0,s1,s2,s3);
signalcur_state,next_state:
state_fs;
begin
process(clk,reset)
begin
ifreset='1'then
cur_state<=s0;
elsifclk'eventandclk='1'then
cur_state<=next_state;
endif;
endprocess;
process(cur_state,ina)
begin
casecur_stateis
whens0=>next_state<=s1;
ifina="101"thenouta<="0010";
elsifina="111"thenouta<="1100";
elseouta<=null;
endif;
whens1=>ifina="110"thennext_state<=s2;
elsifina="000"thennext_state<=s1;
elsenull;
endif;
outa<="1001";
whens2=>ifina="100"thennext_state<=s2;
elsifina="011"thennext_state<=s1;
elsifina/="011"thennext_state<=s3;
elsenull;
endif;
outa<="1111";
whens3=>next_state<=s0;
ifina="101"thenouta<="1101";
elsifina="011"thenouta<="1110";
elseouta<=null;
endif;
whenothers=>next_state<=s0;
outa<="0000";
endcase;
endprocess;
endstate_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)画出与下例实体描述对应的原理图符号元件:
ENTITYbuf3sIS--实体1:
三态缓冲器
PORT(input:
INSTD_LOGIC;--输入端
enable:
INSTD_LOGIC;--使能端
output:
OUTSTD_LOGIC);--输出端
ENDbuf3s;
ENTITYmux21IS--实体2:
2选1多路选择器
PORT(in0,in1,sel:
INSTD_LOGIC;
output:
OUTSTD_LOGIC);
ENDmux21;
4、(4-2)图4-37所示的是4选1多路选择器,试分别用IF_THEN语句和CASE语句的表达方式写出此电路的VHDL程序,选择控制的信号s1和s0的数据类型为STD_LOGIC_VECTOR;当s1='0',s0='0';s1='0',s0='1';s1='1',s0='0'和s1='1',s0='1'分别执行y<=a、y<=b、y<=c、y<=d。
方法一:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYMUX41IS
PORT(s:
INSTD_LOGIC_VECTOR(1DOWNTO0);--输入选择信号
a,b,c,d:
INSTD_LOGIC;--输入信号
y:
OUTSTD_LOGIC);--输出端
ENDENTITY;
ARCHITECTUREONEOFMUX41IS
BEGIN
PROCESS(s)
BEGIN
IF(S="00")THENy<=a;
ELSIF(S="01")THENy<=b;
ELSIF(S="10")THENy<=c;
ELSIF(S="11")THENy<=d;
ELSEy<=NULL;
ENDIF;
ENDPROCESS;
ENDONE;
方法二:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYMUX42IS
PORT(s:
INSTD_LOGIC_VECTOR(1DOWNTO0);--输入选择信号
a,b,c,d:
INSTD_LOGIC;--输入信号
y:
OUTSTD_LOGIC);--输出端
ENDMUX42;
ARCHITECTUREtwoOFMUX42IS
BEGIN
PROCESS(s)
BEGIN
CASEsIS
WHEN"00"=>y<=a;
WHEN"01"=>y<=b;
WHEN"10"=>y<=c;
WHEN"11"=>y<=d;
WHENOTHERS=>NULL;
ENDCASE;
ENDPROCESS;
ENDtwo;
5、写出MUXK的顶层文件
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYMUXKIS
PORT(a1,a2,a3,s0,s1:
INSTD_LOGIC;
outy:
OUTSTD_LOGIC);
ENDENTITYMUXK;
ARCHITECTUREMUXOFMUXKIS
COMPONENTMUX21A
PORT(a,b,s:
INSTD_LOGIC;
y:
OUTSTD_LOGIC);
ENDCOMPONENT;
SIGALtmp:
STD_LOGIC;
BEGIN
u1:
MUX21APORTMAP(a=>a2,b=>a3,s=>0,y=>tmp);
u2:
MUX21APORTMAP(a=>a1,b=>tmp,s=>s1,y=>outy);
ENDARCHITECTUREMUX;
6、(5-8)判断下面3个程序中是否有错误,若有则指出错误所在,并给出完整程序。
程序1:
SignalA,EN:
std_logic;
Process(A,EN)
VariableB:
std_logic;
Begin
ifEN=1thenB<=A;
endif;
endprocess;
程序2:
Architectureoneofsampleis
variablea,b,c:
integer;
begin
c<=a+b;
end;
程序3:
libraryieee;
useieee.std_logic_1164.all;
entitymux21is
port(a,b:
instd_logic;sel:
instd_logic;c:
outstd_logic;);
endsam2;
architectureoneofmux21is
begin
ifsel='0'thenc:
=a;elsec:
=b;
endif;
endtwo;
7、一般时序状态机包括几个部分,分别是哪几个部分,请简要介绍.
答:
(1)包括4部分,分别是说明部、主控时序进程、主控组合进程、辅助进程
(2)说明部分一般放在结构体的ARCHITECTURE和BEGIN之间,使用TYPE语句定义新的数据类型;主控时序进程是指负责状态机运转和在时序驱动下负责转换的进程;主控组合进程根据条件进行状态转移;辅助进程用于配合状态机工作的组合进程或时序进程
8、读程序,画出状态图
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYMOORE1IS
PORT(DATAIN:
INSTD_LOGIC_VECTOR(1DOWNTO0);
CLK,RST:
INSTD_LOGIC;
Q:
OUTSTD_LOGIC_VECTOR(3DOWNTO0));
ENDMOORE1;
ARCHITECTUREbehavOFMOORE1IS
TYPEST_TYPEIS(ST0,ST1,ST2,ST3,ST4);
SIGNALC_ST:
ST_TYPE;
BEGIN
PROCESS(CLK,RST)
BEGIN
IFRST='1'TH
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 试题