EDA习题答案文档格式.docx
- 文档编号:1492461
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:29
- 大小:50.93KB
EDA习题答案文档格式.docx
《EDA习题答案文档格式.docx》由会员分享,可在线阅读,更多相关《EDA习题答案文档格式.docx(29页珍藏版)》请在冰点文库上搜索。
ApplicationSpecificIntegratedCircuit专用集成电路,是具有专门用途和特定功能的独立集成电路器件。
2、简介CPLD、FPGA及其特点。
FPGA:
FieldProgrammableGateArray现场可编程门阵列,采用查找表工作原理,RAM,可擦写10万多次。
CPLD:
ComplexProgrammableLogicDevice大规模可编程逻辑器件,可擦写100多次。
特点:
直接面向用户,具有极大的灵活性和通用性,使用方便.硬件测试和实现快捷,开发效率高,成本低,上市时间短,技术维护简单,工作可靠性好等。
3、简介EDA的几种设计输入方法。
1)图形输入:
又可分为原理图输入、状态图输入和波形图输入;
2)HDL文本输入
4、简介IP的含义。
IP:
IntellectualProperty是知识产权核或知识产权模块的意思。
用于ASIC或FPGA/CPLD中的预先设计好的电路功能模块。
可分为软IP、固IP和硬IP。
5、简介HDL语言设计的优点。
第四章原理图输入设计方法
1、简介MAX+plusII中的元件库
基本逻辑元件库PRIM:
与非门、非门、D触发器等
宏功能元件MF:
74系列器件
LPM:
兆功能块(类似IP核)
2、给出MAX+plusII下EDA设计流程
建立好工作库目录
编辑输入并保存源文件(文件名必须与实体名—致,后缀为.VHD)
设定工程
选择目标芯片
COMPILE并排错
编辑输入波形进行时序仿真
锁定引脚
COMPILE并下载
进行硬件测试
3、4位加法器设计(参实验,略)
4、4位十进制频率计设计(参实验,略)
第五章VHDL设计初步
1、简述VHDL程序基本结构。
一个相对完整的VHDL设计由以下四部分组成:
(1)库LIBRARY、程序包PACKAGE:
库用于存储预先完成的程序包和数据集合体;
程序包用于声明在设计中将要用到的常数、数据类型、元件及子程序等。
(2)实体ENTITY:
定义设计的输入输出端口。
(3)结构体ARCHITECTURE:
定义实体的实现,即电路的具体描述。
可有多个结构体,但只有一个起作用。
(4)配置CONFIGURATION:
为实体选定某个特定的结构体。
以上四个部分不是每个VHDL程序必须的,但每个VHDL程序至少含有1个实体和1个结构体。
1个实体可有多个结构体,通过配置选择1个结构体对实体起作用,其他结构体不起作用。
当只有1个结构体时不要实体。
2、简述顺序语句与并行语句的含义,VHDL为什么存在并行语句?
并行语句:
执行顺序与语句排列的先后顺序无关,是硬件描述语言与一般软件程序最大的区别所在,所有并行语句在结构体中的执行是同时执行的,即它的执行顺序与语句书写的顺序无关。
这种并行性是硬件本身的并行性决定的,即一旦电路接通电源,它的各部分就会按照事先设计好的方案同时工作。
顺序语句:
与计算机程序类似,与指令的先后顺序有关。
3、用WHEN-ELSE语句进行2选1数据选择器设计,数据长度8位。
ENTITYmux21aIS
PORT
(a,b:
INBIT_vector(7downto0);
s:
INBIT;
y:
OUTBIT_vector(7downto0));
ENDmux21a;
ARCHITECTUREoneOFmux21aIS
BEGIN
y<
=aWHENs=’0’ELSEb;
ENDone;
4、用WHEN-ELSE语句进行4选1数据选择器设计,数据长度1位。
实体略
ARCHITECTUREarchmuxOFmux4IS
BEGIN
y<=a0WHENs=“00”ELSE
a1WHENs=“01”ELSE
a2WHENs=“10”ELSE
a3;
ENDarchmux;
5、用SELECT-WHEN语句进行4选1数据选择器设计,数据长度1位。
WITHsSELECT
y<=a0WHENs=“00”,
a1WHENs=“01”,
a2WHENs=“10”,
a3WHENOTHERS;
6、用IF语句进行4选1数据选择器设计,数据长度1位。
PROCESS(a0,a1,a2,a3,s)
IFs=“00”THENy<=a0;
ELSIFs=“01”THENy<
=a1;
ELSIFs=“10”THENy<
=a2;
ELSEy<
=a3;
ENDPROCESS;
7、用CASE语句进行4选1数据选择器设计,数据长度1位。
PROCESS(s,a0,a1,a2,a3)
CASEsIS
WHEN“00”=>
y<=a0;
WHEN“01”=>
y<=a1;
WHEN“10”=>
y<=a2;
WHENOTHERS=>
y<=a3;
ENDCASE;
ENDPROCESS;
8、8位数字比较器设计。
ENTITYCOMPIS
PORT
(a,b:
ININTEGERRANGE0T0255;
aequalb,agreatb,alessb:
OUTSTD_LOGIC);
ENDCOMP;
ARCHITECTUREbehaveOFCOMPIS
aequalb<=‘1’WHENa=bELSE‘0’;
agreatb<=‘1’WHENa>bELSE‘0’;
alessb<=‘1’WHENa<bELSE‘0’;
ENDbehave;
9、奇偶测试电路设计。
LIBRARYieee;
USEieee.std_logic_1164.ALL;
ENTITYtest_oddIS
GENERIC(bussize:
integer:
=8);
(databus:
INstd_logic_vector(bussize-1DOWNTO0);
even_num,odd_num:
OUTstd_logic);
ENDtest_odd;
ARCHITECTUREbehaveOFtest_oddIS
PROCESS(databus)
VARIABLEtmp:
std_logic;
tmp:
=‘0’;
FORIINdatabus’lowTOdatabus’highLOOP--循环变量i是一个临时变量,
tmp:
=tmpXORdatabus(i);
--属LOOP语句的局部变量,不必事先定义。
ENDLOOP;
odd_num<=tmp;
--odd_flag奇标志
even_num<=NOTtmp;
--even_flag偶标志
10、一位BCD码的加法器设计。
LIBRARYieee;
USEieee.std_logic_unsigned.ALL;
ENTITYbcdadderIS
PORT(op1,op2:
INintergerRANGE0TO9;
result:
OUTintegerRANGE0TO31);
ENDbcdadder;
ARCHITECTUREbehaveOFbcdadderIS
CONSTANTadjustnum:
=6;
--定义一常量:
整数型,值为6
SIGNALbinadd:
integerRANGE0TO18;
--定义一个信号,以保存两个二进制数的和BEGIN
binadd<=op1+op2;
--信号赋值
PROCESS(binadd)
=0;
--定义一变量,并赋初值为0
IFbinadd>9THEN
=adjuxtnum;
--变量赋值,立即起作用。
ELSE
ENDIF;
result<=binadd+tmp;
11、8位二进制全加器设计
ENTITYadder8IS
PORT(data1,data2:
INstd_logic_vector(7DOWNTO0);
ci:
INstd_logic;
result:
OUTstd_logic_vector(7DOWNTO0)
co:
ENDadder8;
ARCHITECTUREbehaveOFadder8IS
SIGNALhalfadd,fulladd:
std_logic_vector(8DOWNTO0);
halfadd<=data1+data2;
fulladd<=halfaddWHENci=‘0’ELSEhalfadd+1;
result<=fulladd(7DOWNTO0);
co<=fulladd;
12、HEX-七段LED码译码器设计。
ENTITYHEXLEDIS
(HEX:
INstd_logic_vector(3DOWNTO0);
LED:
OUTstd_logic_vector(6DOWNTO0));
ENDHEXLED;
ARCHITECTUREBODYOFHEXLEDIS
PROCESS(HEX)
CASEHEXIS
WHEN"
0000"
=>
led<
="
0111111"
;
0001"
0000110"
0010"
1011011"
0011"
1001111"
0100"
1100110"
0101"
1101101"
0110"
1111101"
0111"
0000111"
1000"
1111111"
1001"
1101111"
1010"
1110111"
1011"
1111100"
1100"
0111001"
1101"
1011110"
1110"
1111001"
1111"
1110001"
WHENOTHERS=>
NULL;
ENDCASE;
ENDIF;
ENDPROCESS;
ENDBODY;
输入
输出
d7~d0
q2q1q0
1xxxxxxx
01xxxxxx
001xxxxx
0001xxxx
00001xxx
000001xx
0000001x
00000001
00000000
111
110
101
100
011
010
001
000
13、8-3优先编码器设计。
ARCHITECTUREbehaveOFencoderIS
q<
=“111”WHENd(7)=‘1’ELSE
“110”WHENd(6)=‘1’ELSE
“101”WHENd(5)=‘1’ELSE
“100”WHENd(4)=‘1’ELSE
“011”WHENd(3)=‘1’ELSE
“010”WHENd
(2)=‘1’ELSE
“001”WHENd
(1)=‘1’ELSE
“000”WHENd(0)=‘1’ELSE
“000”;
用IF语句。
实体略。
PROCESS(d)
IFd(7)=‘1’THENq<
=“111”;
ELSIFd(6)=‘1’THENq<
=“110”;
ELSIFd(5)=‘1’THENq<
=“101”;
ELSIFd(4)=‘1’THENq<
=“100”;
ELSIFd(3)=‘1’THENq<
=“011”;
ELSIFd
(2)=‘1’THENq<
=“010”;
ELSIFd
(1)=‘1’THENq<
=“001”;
ELSEq<
=“00”;
14、三态输出电路设计。
ENTITYtrioutIS
(data_in:
oe_en:
data_out:
OUTstd_logic_vector(bussize-1DOWNTO0));
ENDtriout;
ARCHITECTUREbehaveOFtrioutIS
data_out<=data_inWHENoe_en=‘1’ELSE(OTHERS=>
‘Z’;
--注意此处的“Z”要大写;
ENTITYencoderIS
PORT(d:
INstd_logic_vector(7DOWNTO0);
q:
OUTstd_logic_vector(2DOWNTO0)
);
ENDencoder;
15、设计一个16个字节的堆栈,有复位信号、压栈/弹栈信号、堆栈满信号、数据输入/输出口。
USEieee.std_logic_signed.ALL;
ENTITYstackIS
PORT
(datain:
push,pop,reset,clk:
stackfull:
OUTstd_logic;
dataout:
BUFFERstd_logic_vector(7DOWNTO0));
ENDstack;
ARCHITECTUREaOFstackIS
TYPEarraylogicISARRAY(15DOWTO0)OFstd_logic_vector(7DOWNTO0);
--定义一个16字节数据类型
SIGNALdata:
arraylogic;
--此处定义了data为一个数组16×
8
SIGNALstackflag:
std_logic_vector(15DOWNTO0);
--定义堆栈标志,每一字节有数据为1,无数据为0
stackfull<=stackflag(0);
--字节0为栈底
PROCESS(clk,nreset,pop,push)
IFreset=‘1’THEN
stackflag<=(OTHERS=>
‘0’);
dataout<=(OTHERS=>
FORiIN0TO15LOOP
data(i)<=“00000000”;
ELSIFclk’eventANDclk=‘1’THEN
IFpush=‘1’ANDpop=‘0’THEN--push
FORiIN0TO14LOOP
data(i)<=data(i+1);
ENDLOOP;
data(15)<=datain;
stackflag<=‘1’&
stackflag(15DOWNTO1);
ELSIFpush=‘0’ANDpop=‘1’THEN--pop
dataout<=data(15);
FORiIN15DOWNTO1LOOP
data(i)<=data(i-1);
ENDLOOP;
stackflag<=stackflag(14DOWNTO0)&
‘0’;
ENDIF;
ENDIF;
ENDa;
16、移位寄存器,具有同步清零(RES=1),同步置数(MODE=11),可左移(MODE=10),右移(MODE=00)。
ENTITYshifterIS
(data:
sl_in,sr_in,reset,clk:
--sl_in左移数据输入,sr_in右移数据输入
mode:
INstd_logic_vector(1DOWNTO0);
qout:
ENDshifter;
ARCHITECTUREbehaveOFshifterIS
PROCESS(clk)
IF(clk’eventANDclk=‘1’)THEN
IF(reset=‘1’)THEN
qout<=(OTHERS=>‘0’);
--同步清零
CASEmodeIS
WHEN“01”=>
qout<=sr_in&
qout(7DOWNTO1);
--右移
WHEN“10”=>
qout<=qout(6DOWNTO0)&
sr_in;
--左移
WHEN“11”=>
qout<=data;
--置数
WHENOTHERS=>NULL--“NULL”表示无操作
ENDCASE
ENDIF
17、模为60的计数器,异步清0,进位输入/输出,同步置数
ENTITYcntm60IS
(ci:
--进位输入
nreset:
--复位信号
load:
--置数使能端
d:
INstd_logic_v
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 习题 答案