EDA期末复习资料.docx
- 文档编号:18375579
- 上传时间:2023-08-16
- 格式:DOCX
- 页数:14
- 大小:112.95KB
EDA期末复习资料.docx
《EDA期末复习资料.docx》由会员分享,可在线阅读,更多相关《EDA期末复习资料.docx(14页珍藏版)》请在冰点文库上搜索。
EDA期末复习资料
EDA技术期末复习参考资料(含答案版)
一、选择题
1.下列是EDA技术应用时涉及的步骤:
A.原理图/HDL文本输入;B.适配;C.时序仿真;D.编程下载;E.硬件测试;F.综合
请选择合适的项构成基于EDA软件的FPGA/CPLD设计流程:
A→___F___→___B__→____C___→D→___E____
2.PLD的可编程主要基于A.LUT结构或者B.乘积项结构:
请指出下列两种可编程逻辑基于的可编程结构:
FPGA基于____A_____
CPLD基于____B_____
3.在VHDL语言中,下列对时钟边沿检测描述中,错误的是__D___。
A.ifclk’eventandclk=‘1’then
B.iffalling_edge(clk)then
C.ifclk’eventandclk=‘0’then
D.ifclk’stableandnotclk=‘1’then
4.IP核在EDA技术和开发中具有十分重要的地位;提供用VHDL等硬件描述语言描述的功能块,但不涉及实现该功能块的具体电路的IP核为__________。
A
A.软IPB.固IPC.硬IPD.都不是
5.综合是EDA设计流程的关键步骤,在下面对综合的描述中,_________是错误的。
D
a)综合就是把抽象设计层次中的一种表示转化成另一种表示的过程;
b)综合就是将电路的高级语言转化成低级的,可与FPGA/CPLD的基本结构相映射的网表文件;
c)为实现系统的速度、面积、性能的要求,需要对综合加以约束,称为综合约束;
d)综合可理解为,将软件描述与给定的硬件结构用电路网表文件表示的映射过程,并且这种映射关系是唯一的(即综合结果是唯一的)。
6.大规模可编程器件主要有FPGA、CPLD两类,下列对FPGA结构与工作原理的描述中,正确的是__C__。
a)FPGA是基于乘积项结构的可编程逻辑器件;
b)FPGA是全称为复杂可编程逻辑器件;
c)基于SRAM的FPGA器件,在每次上电后必须进行一次配置;
d)在Altera公司生产的器件中,MAX7000系列属FPGA结构。
7.进程中的变量赋值语句,其变量更新是_________。
A
a)立即完成;
b)按顺序完成;
c)在进程的最后完成;
都不对。
8.VHDL语言是一种结构化设计语言;一个设计实体(电路模块)包括实体与结构体两部分,结构体描述___________。
D
a)器件外部特性;
b)器件的综合约束;
c)器件外部特性与内部功能;
d)器件的内部功能。
9.不完整的IF语句,其综合结果可实现________。
A
A.时序逻辑电路B.组合逻辑电路
C.双向电路D.三态控制电路
10.子系统设计优化,主要考虑提高资源利用率减少功耗(即面积优化),以及提高运行速度(即速度优化);指出下列哪些方法是面积优化_________。
B
①流水线设计②资源共享③逻辑优化④串行化⑤寄存器配平⑥关键路径法
A.①③⑤B.②③④
C.②⑤⑥D.①④⑥
11.下列标识符中,__________是不合法的标识符。
B
A.State0B.9moonC.Not_Ack_0D.signall
二程序设计
设计一数据选择器MUX,其系统模块图和功能表如下图所示。
试采用下面三种方式中的两种来描述该数据选择器MUX的结构体。
(a)用if语句。
(b)用case语句。
(c)用whenelse语句。
Libraryieee;
Useieee.std_logic_1164.all;
Entitymymuxis
Port(sel:
instd_logic_vector(1downto0);--选择信号输入
Ain,Bin:
instd_logic_vector(1downto0);--数据输入
Cout:
outstd_logic_vector(1downto0));
Endmymux;
Architectureoneofmymuxis
Begin
Process(sel,ain,bin)
Begin
Ifsel=“00”thencout<=ainorbin;
Elsifsel=“01”thencout<=ainxorbin;
Elsifsel=“10”thencout<=ainandbin;
Elsecout<=ainnorbin;
Endif;
Endprocess;
Endone;
Architecturetwoofmymuxis
Begin
Process(sel,ain,bin)
Begin
Caseselis
when“00”=>cout<=ainorbin;
when“01”=>cout<=ainxorbin;
when“10”=>cout<=ainandbin;
whenothers=>cout<=ainnorbin;
Endcase;
Endprocess;
Endtwo;
Architecturethreeofmymuxis
Begin
Cout<=ainorbinwhensel=“00”else
Ainxorbinwhensel=“01”else
Ainandbinwhensel=“10”elseainnorbin;
Endthree;
三阅读下列VHDL程序,画出原理图(RTL级)
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYHADIS
PORT(a:
INSTD_LOGIC;
b:
INSTD_LOGIC;
c:
OUTSTD_LOGIC;
d:
OUTSTD_LOGIC
);
ENDENTITYHAD;
ARCHITECTUREfh1OFHADIS
BEGIN
c<=NOT(aNANDb);
d<=(aORb)AND(aNANDb);
ENDARCHITECTUREfh1;
四、请按题中要求写出相应VHDL程序
1.带计数使能的异步复位计数器
输入端口:
clk时钟信号
rst异步复位信号
en计数使能
load同步装载
data(装载)数据输入,位宽为10
输出端口:
q计数输出,位宽为10
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYCNT1024IS
PORT(CLK,RST,EN,LOAD:
INSTD_LOGIC;
DATA:
INSTD_LOGIC_VECTOR(9DOWNTO0);
Q:
OUTSTD_LOGIC_VECTOR(9DOWNTO0));
ENDCNT1024;
ARCHITECTUREONEOFCNT1024IS
BEGIN
PROCESS(CLK,RST,EN,LOAD,DATA)
VARIABLEQ1:
STD_LOGIC_VECTOR(9DOWNTO0);
BEGIN
IFRST='1'THEN
Q1:
=(OTHERS=>'0');
ELSIFCLK='1'ANDCLK'EVENTTHEN
IFLOAD='1'THEN
Q1:
=DATA;
ELSE
IFEN='1'THEN
Q1:
=Q1+1;
ENDIF;
ENDIF;
ENDIF;
Q<=Q1;
ENDPROCESS;
ENDONE;
五在下面横线上填上合适的语句,完成简易彩灯控制电路的VHDL设计。
说明:
在EDA实验箱上利用OUT1~OUT8共8个发光二极管实现从左到右再从右到左循环,依次仅有一只LED不亮的简单跑马灯。
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
USEIEEE.STD_LOGIC_ARITH.ALL;
ENTITYTEST2IS
PORT(CLK1HZ:
INSTD_LOGIC;
LED:
OUTSTD_LOGIC_VECTOR(7DOWNTO0));
ENDTEST2;
ARCHITECTUREBEHAOFTEST2IS
SIGNALCOUNT1:
STD_LOGIC_VECTOR(3DOWNTO0);
BEGIN
P1:
PROCESS(CLK1HZ)
BEGIN
IF(CLK1HZ'EVENTANDCLK1HZ='1')THEN
IF(COUNT1="1110")THENCOUNT1<="0000";
ELSECOUNT1<=COUNT1+1;
ENDIF;
ENDIF;
ENDPROCESS;
P2:
PROCESS(COUNT1)
BEGIN
CASECOUNT1IS
WHEN"0000"=>LED<="01111111";
WHEN"0001"=>LED<="10111111";
WHEN"0010"=>LED<="11011111";
WHEN"0011"=>LED<="11101111";
WHEN"0100"=>LED<="11110111";
WHEN"0101"=>LED<="11111011";
WHEN"0110"=>LED<="11111101";
WHEN"0111"=>LED<="11111110";
WHEN"1000"=>LED<="11111101";
WHEN"1001"=>LED<="11111011";
WHEN"1010"=>LED<="11110111";
WHEN"1011"=>LED<="11101111";
WHEN"1100"=>LED<="11011111";
WHEN"1101"=>LED<="10111111";
WHEN"1110"=>LED<="01111111";
WHENOTHERS=>NULL;
ENDCASE;
ENDPROCESS;
ENDARCHITECTUREBEHA;
六综合题(选做)
用VHDL设计两层升降平台控制器
图a是一个两层的升降平台示意图,一层和二层各有一个按钮用来呼叫升降机。
图a两层升降平台示意图
对应图a的升降平台控制器,拟用VHDL语言设计一个电路模拟其控制逻辑,图b为该VHDL电路的设计模块图。
图b两层升降平台控制器设计模块图
图b中的cnt100模块用来控制升降台开关门延时,elev2为升降平台状态控制器。
升降台闸门由打开到关闭或由关闭到打开时,elev2模块向cnt100模块输出一个en计数使能信号(高电平有效)。
cnt100模块计数溢出(≥100)时cnt100输出cout信号为高电平,同时cnt100计数停止。
cnt100模块的实体描述如下所示:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYCNT100IS
PORT(CLK,EN:
INSTD_LOGIC;--时钟、使能信号
COUT:
OUTSTD_LOGIC);--溢出信号
ENDCNT100;
问题1,请完成cnt100模块的VHDL设计(实体部分已给出,不用写),参考的仿真波形如图c所示。
图ccnt100仿真波形图
Architectureoneofcnt100is
Begin
Process(clk,en)
Variableq:
std_logic_vector(7downto0);
Begin
Ifen=‘0’thenq:
=(others=>‘0’);
Elsifclk’eventandclk=‘1’thenq:
=q+1;
Endif;
Ifq<“01100100”thencout<=‘0’;
Elsecout<=‘1’;
Endif;
Endprocess;
Endone;
问题2,以下是elev2模块的VHDL描述:
libraryieee;
useieee.std_logic_1164.all;
entityelev2is
port(clk,rst:
instd_logic;--时钟、复位信号
cout:
instd_logic;--定时溢出信号
call:
instd_logic_vector(2downto1);--呼叫信号
arr:
instd_logic_vector(2downto1);--到达信号
door:
outstd_logic;--门控信号,低电平开门
up:
outstd_logic;--上升信号
down:
outstd_logic;--下降信号
en:
outstd_logic);--延时计数清零、使能信号
endelev2;
architecturebehavofelev2is
constantCL1:
std_logic_vector(2downto0):
="000";--一楼关门
constantOP1:
std_logic_vector(2downto0):
="100";--一楼开门
constantUP1:
std_logic_vector(2downto0):
="010";--一楼上升
constantDN2:
std_logic_vector(2downto0):
="001";--二楼下降
constantCL2:
std_logic_vector(2downto0):
="011";--二楼关门
constantOP2:
std_logic_vector(2downto0):
="111";--二楼开门
signalcontrol:
std_logic_vector(2downto0);--状态控制信号
begin
door<=notcontrol
(2);up<=control
(1);down<=control(0);
process(clk,rst,arr,call)
variableven:
std_logic;
begin
ifrst='1'thencontrol<=CL1;
elsifclk'eventandclk='1'then
casecontrolis
whenCL1=>ifcout='1'then--关门已完毕
ifcall
(1)='1'thencontrol<=OP1;en<='0';
elsifcall
(2)='1'thencontrol<=UP1;en<='1';
elsecontrol<=CL1;en<='1';endif;
elsecontrol<=CL1;en<='1';endif;
whenOP1=>ifcout='1'then--开门已完毕
ifcall
(1)='1'thencontrol<=OP1;en<='1';
elsecontrol<=CL1;en<='0';endif;
elsecontrol<=OP1;en<='1';endif;
whenUP1=>ifarr
(2)='1'thencontrol<=CL2;
elsecontrol<=UP1;endif;
whenDN2=>ifarr
(1)='1'thencontrol<=CL1;
elsecontrol<=DN2;endif;
whenCL2=>ifcout='1'then--关门已完毕
ifcall
(2)='1'thencontrol<=OP2;en<='0';
elsifcall
(1)='1'thencontrol<=DN2;en<='1';
elsecontrol<=CL2;en<='1';endif;
elsecontrol<=CL2;en<='1';endif;
whenOP2=>ifcout='1'then--开门已完毕
ifcall
(2)='1'thencontrol<=OP2;en<='1';
elsecontrol<=CL2;en<='0';endif;
elsecontrol<=OP2;en<='1';endif;
whenothers=>ifarr(10=‘1’thencontrol<=CL1;
elsecontrol<=CL2;endif;
endcase;
endif;
endprocess;endbehav;
请根据elev2的VHDL描述画出其状态迁移图。
问题3,根据图b所示升降平台模块图,写出升降平台控制器ELEV_TOP的VHDL顶层描述:
Libraryieee;
Useieee.std_logic_1164.all;
Entityelevis
Port(clk,rst:
instd_logic;
Call,arr:
instd_logic_vector(2downto1);
Door,up,down:
outstd_logic);
Endelev;
Architectureoneofelevis
componentCNT100
PORT(CLK,EN:
INSTD_LOGIC;--时钟、使能信号
COUT:
OUTSTD_LOGIC);--溢出信号
ENDcomponent;
componentelev2is
port(clk,rst:
instd_logic;--时钟、复位信号
cout:
instd_logic;--定时溢出信号
call:
instd_logic_vector(2downto1);--呼叫信号
arr:
instd_logic_vector(2downto1);--到达信号
door:
outstd_logic;--门控信号,低电平开门
up:
outstd_logic;--上升信号
down:
outstd_logic;--下降信号
en:
outstd_logic);--延时计数清零、使能信号
endcomponent;
signalena,cout:
std_logic;
begin
u1:
cnt100portmap(clk,ena,cout);
u2:
elev2portmap(clk,rst,cout,call,arr,door,up,down,ena);
endone;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 期末 复习资料
![提示](https://static.bingdoc.com/images/bang_tan.gif)