eda考试题Word文档格式.docx
《eda考试题Word文档格式.docx》由会员分享,可在线阅读,更多相关《eda考试题Word文档格式.docx(54页珍藏版)》请在冰豆网上搜索。
火力控制有三档:
煮汤、火锅、煎炒;
每种操作都可以设定时间,当时间到自动停火。
22.设计三位BCD码(8421码)到十六进制数的转换器。
23.用结构的描述方法设计一个跑表,计时范围为59.99秒,有计时开始和停止计时控制,复位控制可以对所有计时进行异步复位。
计时结果由四位七段数码管显示。
24.一个电子系统中需要三种时钟,分别是:
1600HZ、800Hz、50Hz,系统输入时钟为160KHz。
试用VHDL描述该时钟发生器。
其中50Hz时钟为正负脉宽相等的时钟信号,其他不限。
25.某医院1到8号病房共8间,每室设有呼叫按钮,同时护士值班室内有一个七段数码管显示病房号;
当多个病房同时有按钮按下时,病房号小的先显示。
26.亲自判定器:
根据亲子血型关系规则,当输入的亲、子血型符合时,指示灯亮。
27.模为的计数器,计数步长由控制信号A、B、C进行控制:
ABC=001时,步长为1,计数规律为:
0-1-2-3-4-5-6-7-8-9-0顺序计数;
ABC=010时,步长为3,计数规律为:
0-3-6-9-0顺序计数;
ABC=100时,步长为1,计数规律为:
0-9-8-7-6-5-4-3-2-1-0顺序计数;
28.模为16的计数器,控制信号为MA和MB。
MA和MB为“00”时不计数,“01”时加法计数器,“10”时减法计数器,“11”时预置数功能,加碱计数步长均为1。
(计数结果由数码管显示)
29.8位多功能寄存器:
由选择信号和控制信号进行控制。
当选择信号S=‘0’时:
C=‘0’为加计数器,C=‘1’为减计数器;
当选择信号S=‘1’时,将计数值移位输出:
C=1时右移串行输出,C=0时左移串行输出。
(发光二极管显示)
30.一个电子系统中需要三种时钟,分别是:
1000Hz、500Hz、50Hz,系统输入时钟为100KHz。
第一题
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYcounterIS
GENERIC(count_value:
INTEGER:
=9);
PORT(clk,clr,en,load,dir:
INSTD_LOGIC;
data_in:
ININTEGERRANGE0TOcount_value;
ledout:
OUTSTD_LOGIC_VECTOR(6DOWNTO0));
ENDcounter;
ARCHITECTUREaOFcounterIS
SIGNALcnt:
INTEGERRANGE0TOcount_value;
SIGNALled:
STD_LOGIC_VECTOR(6DOWNTO0);
BEGIN
PROCESS(load,clk)
BEGIN
IFload='
1'
THEN
cnt<
=data_in;
elsifclr='
=0;
ELSIF(clk'
EVENTANDclk='
)THEN
IFen='
IFdir='
IFcnt=count_valueTHEN
ELSE
=cnt+1;
endif;
else
IFcnt=0THEN
=count_value;
=cnt-1;
ENDPROCESS;
ledout<
=NOTled;
WITHcntSELECT
led<
="
1111001"
WHEN1,
"
0100100"
WHEN2,
0110000"
WHEN3,
0011001"
WHEN4,
0010010"
WHEN5,
0000010"
WHEN6,
1111000"
WHEN7,
0000000"
WHEN8,
0010000"
WHEN9,
1000000"
WHEN0,
1111111"
WHENothers;
ENDa;
第二题分频器
ENTITYdiv4IS
PORT(clk:
din:
INSTD_LOGIC_VECTOR(3DOWNTO0);
fout:
OUTstd_LOGIC);
ENDdiv4;
ARCHITECTUREaOFdiv4IS
begin
process(clk)
variablecnt:
std_logic_vector(3downto0);
begin
if(clk'
eventandclk='
)then
ifcnt="
1111"
then
cnt:
0000"
;
=cnt+'
ifdin="
fout<
=cnt(3);
elsifdin="
1000"
=cnt
(2);
1100"
=cnt
(1);
1110"
=cnt(0);
='
endprocess;
enda;
第三题
ENTITYdivIS
GENERIC(num:
=2);
PORT
(clk:
co:
OUTSTD_LOGIC);
ENDdiv;
ARCHITECTURErtlOFdivIS
PROCESS(clk)
VARIABLEcnt:
STD_LOGIC_VECTOR(numdownto0);
IF(clk'
ENDIF;
co<
=cnt(num);
ENDrtl;
第四题
COUNT:
SIGNALco:
STD_LOGIC;
count<
=co;
STD_LOGIC_VECTOR(3DOWNTO0);
)then
if(cnt="
=notco;
elsif(cnt=din)then
endrtl;
第五题
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityfenpinis
port(clk:
instd_logic;
en:
instd_logic_vector(1downto0);
cout:
outstd_logic;
outstd_logic_vector(6downto0));
endfenpin;
architecturedgnfenpinoffenpinis
signalled:
std_logic_vector(6downto0);
signalhex:
process(clk)
eventANDclk='
if(en="
00"
if(cnt>
cout<
elsif(en="
01"
1010"
0'
10"
cout<
else
endif;
endprocess;
=notled;
withenselect
when"
0001000"
0001110"
11"
whenothers;
enddgnfenpin;
第六题
PORT(MA,MB:
clk:
OUTSTD_LOGIC_VECTOR(6downto0));
STD_LOGIC_VECTOR(3downto0);
STD_LOGIC_VECTOR(6downto0);
IF(MA='
ANDMB='
IFcnt>
0011"
THEN
ELSIF(MA='
0101"
0111"
1001"
ENDPROCESS;
ledout<
WITHcntSELECT
led<
WHEN"
0001"
0010"
0100"
0110"
WHENothers;
第七题
entitycounteris
port(clk,clk1,en,clr:
co,scanout:
endcounter;
architecturertlofcounteris
signalcnt:
std_logic_vector(7downto0);
signalled:
signalscan:
std_logic;
signalhex:
process(clk,clr)
ifclr='
then
=(others=>
'
);
elsifclk'
ifen='
00001001"
00010000"
elsifcnt="
00011001"
then--注意此处,前面跳过了A到F的计数,所以计数到11001
00000000"
process(clk1)
ifclk1'
eventandclk1='
scan<
=notscan;
scanout<
=scan;
hex<
=cnt(7downto4)whenscan='
elsecnt(3downto0);
withhexselect
第八题序列发生器
entityxulieis
outstd_logic);
endxulie;
architecturefashengqiofxulieis
signalcnt:
std_logic_vector(2downto0);
if(clk'
111"
000"
withcntselect
'
001"
010"
011"
100"
101"
endfashengqi;
第九题
entitycaidengis
port(rl,clk:
ledout:
outstd_logic_vector(15downto0));
endcaideng;
architectureaofcaidengis
std_logic_vector(15downto0);
signalk:
if(k='
=(0=>
1=>
2=>
others=>
k<
elsif(rl='
=led(14downto0)&
led(15);
=led(0)&
led(15downto1);
=led;
第十题
ENTITYshifter1IS
PORT(clk,clr,ser,dir,stld:
din:
INSTD_LOGIC_VECTOR(0TO7);
qh:
ENDshifter1;
ARCHITECTURErt1OFshifter1IS
SIGNALreg:
STD_LOGIC_VECTOR(0TO7);
process(clk,clr)
ifclr='
reg<
elsifclk'
ifstld='
reg<
=din;
if(dir='
=reg(1to7)&
ser;
qh<
=reg(0);
=ser&
reg(0to6);
=reg(7);
endrt1;
第十一题
entityselectoris
port(b:
instd_logic_vector(6downto0);
clr:
red,gree:
endselector;
architecturertlofselectoris
signalcount:
signala:
process(b,clr)
if(clr='