VHDL考试必备大全.docx

上传人:b****7 文档编号:16768253 上传时间:2023-07-17 格式:DOCX 页数:26 大小:20.17KB
下载 相关 举报
VHDL考试必备大全.docx_第1页
第1页 / 共26页
VHDL考试必备大全.docx_第2页
第2页 / 共26页
VHDL考试必备大全.docx_第3页
第3页 / 共26页
VHDL考试必备大全.docx_第4页
第4页 / 共26页
VHDL考试必备大全.docx_第5页
第5页 / 共26页
VHDL考试必备大全.docx_第6页
第6页 / 共26页
VHDL考试必备大全.docx_第7页
第7页 / 共26页
VHDL考试必备大全.docx_第8页
第8页 / 共26页
VHDL考试必备大全.docx_第9页
第9页 / 共26页
VHDL考试必备大全.docx_第10页
第10页 / 共26页
VHDL考试必备大全.docx_第11页
第11页 / 共26页
VHDL考试必备大全.docx_第12页
第12页 / 共26页
VHDL考试必备大全.docx_第13页
第13页 / 共26页
VHDL考试必备大全.docx_第14页
第14页 / 共26页
VHDL考试必备大全.docx_第15页
第15页 / 共26页
VHDL考试必备大全.docx_第16页
第16页 / 共26页
VHDL考试必备大全.docx_第17页
第17页 / 共26页
VHDL考试必备大全.docx_第18页
第18页 / 共26页
VHDL考试必备大全.docx_第19页
第19页 / 共26页
VHDL考试必备大全.docx_第20页
第20页 / 共26页
亲,该文档总共26页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

VHDL考试必备大全.docx

《VHDL考试必备大全.docx》由会员分享,可在线阅读,更多相关《VHDL考试必备大全.docx(26页珍藏版)》请在冰点文库上搜索。

VHDL考试必备大全.docx

VHDL考试必备大全

一、填空题

1、三种可编程逻辑器件:

EEPROM、GAL、FPGA。

2、VHDL程序包含实体、构造体、配置、程序包、和库五部分。

3、结构体的子程序描述语句:

块BLOCK、进程PROCES、和子程序SUBPROGRAMS结构。

4、VHDL的客体包括了常数、变量和信号。

5、VHDL的数据类型:

整数、实数、位、位矢量、字符、布尔量、时间、字符串。

std_logic是决断类型。

7、构造体的描述方式包括三种,分别是结构、数据流、行为描述方式。

8、双向端口是用inout表示,构造体内部可再次使用的输出是缓冲用buffer表示。

9、VHDL的运算符优先级:

逻辑运算符<关系运算符<算术运算符。

10、定义一个信号a,数据类型为4位标准逻辑向量signala:

std_logic_vector(3downto0)定义一个变量b,数据类型为2位位向量variableb:

bit_vector(1downto0)。

11、Moore状态机输出只是当前状态的函数,Mealy为有限状态机当前值和输入值的函数

12、在VHDL的常用对象中,信号、变量可以被多次赋予不同的值,常量只能在定义时赋值。

13、进程必须位于结构体内部,变量必须定义于进程/包/子程序内部。

14、并置运算符&的功能是把多个位或位向量合并为一个位向量。

15、判断CLK信号上升沿到达的语句是ifclk’eventandclk=‘1’then.

16、任何时序电路都以时钟为驱动信号,时序电路只是在时钟信号的边沿到来时,

其状态才发生改变。

17、一个信号处于高阻(三态)时的值在VHDL中描述为Z’。

18、赋值语句是并行执行的,if语句是串行执行的。

知识点

1.信号与变量的区别:

①信号延时赋值,变量立即赋值②信号代入用<=,变量代入用:

=

③信号除当前值外还有许多相关信息,而变量只有当前值④进程对信号敏感而不对变量敏感

⑤信号可以是多个进程的全局信号,而变量只是定义他们的顺序域可见。

信号时硬件中连线的抽象描述,其功能是保存变化的数据值和连接子元件,信号在元件的端口连接元件,变量在硬件中没有类似的对应关系,主要应用于高层次的建模中

2.命名规则:

①由字母、数字、下划线组成②第一个字符必须是字母,最后一个字符不能是下划线③不能连用下划线④不能和关键字或保留字相同。

3.五类常用库:

IEEE库、STD库、WORK库、ASIC矢量库、用户自定义库,其中STD(textio包集合除外)和WORK不同预先说明。

2、编程题

 

下划线

1.设计一个异或门(采用行为描述方式)

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYxor2_v1IS

PORT(a,b:

INSTD_LOGIC;

y:

OUTSTD_LOGIC);

ENDxor2_v1;

ARCHITECTUREbehaveOFxor2_v1IS

BEGIN

y<=aXORb;

ENDbehave;

2.编写一个8线—3线编码器的VHDL程序(采用行为描述方式)

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYcoder83_v1IS

PORT(I0,I1,I2,I3,I4,I5,I6,I7:

INSTD_LOGIC;

A0,A1,A2:

OUTSTD_LOGIC);

ENDcoder83_v1;

ARCHITECTUREbehaveOFcoder83_v1IS

BEGIN

A2<=I4ORI5ORI6ORI7;

A1<=I2ORI3ORI6ORI7;

A0<=I1ORI3ORI5ORI7;

ENDbehave;

3.以74148逻辑表达式为依据,编写一个8线—3线优先编码器的VHDL程序(行为)

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYprioritycoder83_v1IS

PORT(I7,I6,I5,I4,I3,I2,I1,I0:

INSTD_LOGIC;

EI:

INSTD_LOGIC;

A2,A1,A0:

OUTSTD_LOGIC;

GS,EO:

OUTSTD_LOGIC);

ENDprioritycoder83_v1;

ARCHITECTUREbehaveOFprioritycoder83_v1IS

BEGIN

A2<=EIOR(I7ANDI6ANDI5ANDI4);

A1<=EIOR(I7ANDI6ANDI3ANDI2)

OR(I7ANDI6ANDNOTI5)

OR(I7ANDI6ANDNOTI4);

A0<=EIOR(I7ANDNOTI6)

OR(I7ANDI5ANDNOTI4)

OR(I7ANDI5ANDI3ANDI1)

OR(I7ANDI5ANDI3ANDNOTI2);

GS<=EIOR(I7ANDI6ANDI5ANDI4ANDI3

ANDI2ANDI1ANDI0);

EO<=EIORNOT(I7ANDI6ANDI5

ANDI4ANDI3ANDI2ANDI1ANDI0);

ENDbehave;

4.编写一个3线—8线译码器74138VHDL程序(数据流描述方式)

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYdecoder138_v2IS

PORT(G1,G2A,G2B:

INSTD_LOGIC;

A:

INSTD_LOGIC_VECTOR(2DOWNTO0);

Y:

OUTSTD_LOGIC_VECTOR(7DOWNTO0));

ENDdecoder138_v2;

ARCHITECTUREdataflowOFdecoder138_v2IS

BEGIN

PROCESS(G1,G2A,G2B,A)

BEGIN

IF(G1='1'ANDG2A='0'ANDG2B='0')THEN

CASEAIS

WHEN"000"=>Y<="11111110";

WHEN"001"=>Y<="11111101";

WHEN"010"=>Y<="11111011";

WHEN"011"=>Y<="11110111";

WHEN"100"=>Y<="11101111";

WHEN"101"=>Y<="11011111";

WHEN"110"=>Y<="10111111";

WHENOTHERS=>Y<="01111111";

ENDCASE;

ELSEY<="11111111";

ENDIF;

ENDPROCESS;

ENDdataflow;

5.编写一个8选1数据选择器的VHDL程序(IF语句)

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYmux8_v2IS

PORT(A:

INSTD_LOGIC_VECTOR(2DOWNTO0);

D0,D1,D2,D3,D4,D5,D6,D7:

INSTD_LOGIC;

G:

INSTD_LOGIC;

Y:

OUTSTD_LOGIC;

YB:

OUTSTD_LOGIC);

ENDmux8_v2;

ARCHITECTUREdataflowOFmux8_v2IS

BEGIN

PROCESS(A,D0,D1,D2,D3,D4,D5,D6,D7,G)

BEGIN

IF(G='1')THEN

Y<='0';

YB<='1';

ELSIF(G='0'ANDA="000")THEN

Y<=D0;

YB<=NOTD0;

ELSIF(G='0'ANDA="001")THEN

Y<=D1;

YB<=NOTD1;

ELSIF(G='0'ANDA="010")THEN

Y<=D2;

YB<=NOTD2;

ELSIF(G='0'ANDA="011")THEN

Y<=D3;

YB<=NOTD3;

ELSIF(G='0'ANDA="100")THEN

Y<=D4;

YB<=NOTD4;

ELSIF(G='0'ANDA="101")THEN

Y<=D5;

YB<=NOTD5;

ELSIF(G='0'ANDA="110")THEN

Y<=D6;

YB<=NOTD6;

ELSE

Y<=D7;

YB<=NOTD7;

ENDIF;

ENDPROCESS;

ENDdataflow;

6.编写一个对两个4位二进制数进行比较的程序(IF语句)

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYcomp4_v1IS

PORT(A:

INSTD_LOGIC_VECTOR(3DOWNTO0);

B:

INSTD_LOGIC_VECTOR(3DOWNTO0);

YA,YB,YC:

OUTSTD_LOGIC);

ENDcomp4_v1;

ARCHITECTUREbehaveOFcomp4_v1IS

BEGIN

PROCESS(A,B)

BEGIN

IF(A>B)THEN

YA<='1';

YB<='0';

YC<='0';

ELSIF(A

YA<='0';

YB<='1';

YC<='0';

ELSE

YA<='0';

YB<='0';

YC<='1';

ENDIF;

ENDPROCESS;

ENDbehave;

7.编写一个用“+”实现加法运算的8位加法器的程序

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYadder8_vIS

PORT(A:

INSTD_LOGIC_VECTOR(7DOWNTO0);

B:

INSTD_LOGIC_VECTOR(7DOWNTO0);

Cin:

INSTD_LOGIC;

Co:

OUTSTD_LOGIC;

S:

OUTSTD_LOGIC_VECTOR(7DOWNTO0));

ENDadder8_v;

ARCHITECTUREbehaveOFadder8_vIS

SIGNALSint:

STD_LOGIC_VECTOR(8DOWNTO0);

SIGNALAA,BB:

STD_LOGIC_VECTOR(8DOWNTO0);

BEGIN

AA<='0'&A(7DOWNTO0);

BB<='0'&B(7DOWNTO0);

Sint<=AA+BB+Cin;

S(7DOWNTO0)<=Sint(7DOWNTO0);

Co<=Sint(8);

ENDbehave;

8.编写一个8求补器的程序。

libraryieee;

useieee.std_logic_1164.all;

entityhosuuis

port(a:

instd_logic_vector(7downto0);

b:

outstd_logic_vector(7downto0));

endhosuu;

architecturertlofhosuuis

begin

b<=nota+‘1’;

endrtl;

 

9.编写一个三态门程序

libraryieee;

useieee.std_logic_1164.all;

entitytri_gateis

port(din,en:

instd_logic;

dout:

outstd_logic);

endtri_gate;

 

architecturezasoftri_gateis

begin

tri_gate:

process(din,en)

Begin

if(en=’1’)then

dout<=din;

else

dout<=’Z’;

endif;

endprocess;

endzas;

10.D触发器(带有异步置位复位功能)

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYd_ffyIS

PORT(clk,d,set,reset:

INSTD_LOGIC;

q,qd:

OUTSTD_LOGIC);

ENDd_ffy;

ARCHITECTUREaOFd_ffyIS

BEGIN

PROCESS(clk,set,reset)

BEGIN

IF(set='0'ANDreset='1')THEN

q<='1';

qd<='0';

ELSIF(set='1'ANDreset='0')THEN

q<='0';

qd<='1';

ELSIF(clk'EVENTANDclk='1')THEN

q<=d;

qd<=NOTd;

ENDIF;

ENDPROCESS;

ENDa;

11.jk触发器(带有异步置位复位功能)

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYjk_asr_ffIS

PORT(j,k,clk,set,res:

INSTD_LOGIC;

q,qb:

OUTSTD_LOGIC);

ENDjk_asr_ff;

ARCHITECTUREbehaveOFjk_asr_ffIS

SIGNALq_temp:

STD_LOGIC;

signaljk_temp:

STD_LOGIC_VECTOR(1DOWNTO0);

BEGIN

jk_temp<=j&k;

PROCESS(clk,set,res)

BEGIN

IFset='0'THENq_temp<='0';

ELSIFres='0'THENq_temp<='1';

ELSEIF(clk'EVENTANDclk='0')THEN

CASEjk_tempIS

WHEN"01"=>q_temp<='0';

WHEN"10"=>q_temp<='1';

WHEN"00"=>q_temp<=q_temp;

WHEN"11"=>q_temp<=NOTq_temp;

WHENothers=>q_temp<='X';

ENDCASE;

ENDIF;

ENDIF;

ENDPROCESS;

q<=q_temp;

qb<=NOTq_temp;

ENDbehave;

12.带有使能端的RS触发器

ENTITYRSlatchIS

PORT(r,s,en:

INBIT;

q,qb:

BUFFERBIT);

ENDRSlatch;

ARCHITECTURErs_archiOFRSlatchIS

SIGNALs1,r1:

BIT;

BEGIN

s1<=sNANDen;

r1<=rNANDen;

qb<=r1NANDq;

q<=s1NANDqb;

ENDrs_archi;

13.带异步置位/复位的通用寄存器

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYregisternIS

GENERIC(n:

INTEGER:

=1);

PORT(d:

INSTD_LOGIC_VECTOR(nDOWNTO0);

clk,en,set,reset:

INSTD_LOGIC;

q:

BUFFERSTD_LOGIC_VECTOR(nDOWNTO0));

ENDregistern;

ARCHITECTUREaOFregisternIS

BEGIN

PROCESS(clk,set,reset)

BEGIN

IF(set='0'ANDreset='1')THEN

q<=(OTHERS=>'1');

ELSIF(set='1'ANDreset='0')THEN

q<=(OTHERS=>'0');

ELSIF(clk'EVENTANDclk='1')THEN

IF(en='1')THEN

q<=d;

ELSEq<=q;

ENDIF;

ENDIF;

ENDPROCESS;

ENDa;

 

14.通用串入/并出移位寄存器

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYshiftbIS

GENERIC(n:

INTEGER:

=2);

PORT(d,clk:

INSTD_LOGIC;

q:

BUFFERSTD_LOGIC_VECTOR(0TOn));

ENDshiftb; 

ARCHITECTUREaOFshiftbIS

COMPONENTd_ff

PORT(clk,d:

INSTD_LOGIC;

q:

OUTSTD_LOGIC);

ENDCOMPONENT;

BEGIN

label1:

FORiIN0TOnGENERATE

g1:

IF(i=0)GENERATE

dffx:

d_ffPORTMAP(clk=>clk,d=>d,q=>q(i));

ENDGENERATE;

g2:

IF(i/=0)GENERATE

dffx:

d_ffPORTMAP(clk=>clk,d=>q(i-1),q=>q(i));

ENDGENERATE;

ENDGENERATE;

ENDa;

ARCHITECTUREaaOFshiftbIS

BEGIN

PROCESS(clk)

BEGIN

IF(clk'EVENTANDclk='1')THEN

q(0)<=d;

FORiIN1TOnLOOP

q(i)<=q(i-1);

ENDLOOP;

ENDIF;

ENDPROCESS;

ENDaa;

 

15.循环移位寄存器

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYshiftxIS

PORT(clk,load:

INSTD_LOGIC;

d:

INSTD_LOGIC_VECTOR(3DOWNTO0);

q:

OUTSTD_LOGIC_VECTOR(3DOWNTO0));

ENDshiftx;

ARCHITECTUREaaOFshiftxIS

SIGNALtmp:

STD_LOGIC_VECTOR(3DOWNTO0);

BEGIN

q<=tmp;

PROCESS(clk)

BEGIN

IF(clk'EVENTANDclk='1')THEN

IF(load='0')THEN

tmp<=d;

ELSEtmp(0)<=tmp(3);

tmp(3downto1)<=tmp(2downto0);

ENDIF;

ENDIF;

ENDPROCESS;

ENDaa;

16.60进制递增计数器

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

ENTITYcntm60vIS

PORT(en:

INstd_logic;

clear:

INstd_logic;

load:

INstd_logic;

dl,dh:

INstd_logic_vector(3downto0);

clk:

INstd_logic;

cout:

outstd_logic;

ql:

bufferstd_logic_vector(3downto0);

qh:

bufferstd_logic_vector(3downto0));

ENDcntm60v;

ARCHITECTUREbehaveOFcntm60vIS

signalent2:

std_logic;

BEGIN

PROCESS(clk)

VARIABLEtmpl,tmph:

std_logic_vector(3downto0);

BEGIN

IF(clear='0')THEN

tmpl:

="0000";

tmph:

=“0000”;--异步清零

ELSIF(clk'EVENTANDclk='1')THEN

IFload='0'THEN

tmpl:

=dl;

tmph:

=dh;--同步置数

elsif(en='1')then

if(tmpl="1001")then

tmpl:

=“0000”;--个位计数器9+1=0

if(tmph="0101")then

tmph:

=“0000”;--十位计数器5+1=059+1=0

else

tmph:

=tmph+1;

endif;

else

tmpl:

=tmpl+1;

endif;

endIF;--endlf(load)

ENDIF;--endifclear

ql<=tmpl;

ent2<=tmpl(3)andtmpl(0)anden;

qh<=tmph;

cout<=tmph

(2)andtmph(0)andent2;

--计数器为59时进位信号cout输出‘1’。

ENDPROCESS;

ENDbehave;

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2