VHDL数字系统设计复习材料_第1页
VHDL数字系统设计复习材料_第2页
VHDL数字系统设计复习材料_第3页
VHDL数字系统设计复习材料_第4页
VHDL数字系统设计复习材料_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

考试题型

一、填空题(每空1分,共10分)

二、单项选择题(每小题2分,共20分)

三、分析题(3小题,共40分)

四、程序设计题(3题,共30分)

各章主要知识要点

第2章VHDL简介

1.进程中的信号与变量赋值

信号与变量赋值语句的比较

信号SIGNAL变量VARIABLE

基本用法用于作为电路中的信号连线用于作为进程中局部数据存

储单.元

适用范围在整个结构体内的任何地方只能在所定义的进程中使用

注:①信号可以殛稀薄的敏感列表,而变量不能。

行为雅后,霍娜触博弟对髓箴第迟△。立即赋值

2、wait语句

1.Waiton敏感信号参数表;

2.Waitfor时间表达式;

3.Waituntil布尔表达式;

【例】

PROCESS(CLK)

BEGIN

IFCLK=T

THENQ<=I);..利用进程的启动特性

ENDIF;

ENDPROCESS;

【例】

•••

PROCESS

BEGIN

waituntilCLK=T;一利用wait语句

Q<=D;

ENDPROCESS;

【例】

・♦♦

PROCESS

BEGIN

waitonCLK;--利用wait语句

Q<=D;

ENDPROCESS;

3、惯性延迟和传输延迟的时序图

一、惯性延迟

♦AFTER语句表示惯性延迟。

♦理想的惯性延迟T:把输入信号延迟T时间,还对任何宽度小于T的脉冲进行拦截。

♦格式:

信号名2<=[reject延时1]信号名1after延时2;

B<=AAFTER20ns;

C<=REJECT5nsAAFTER20ns:_________________________________

二、传输延迟

♦传输延迟T:只是把输入信号延迟T时间。

♦格式:信号名2<=transport信号名1after延时;

【例1】

B<=/\AFTER20ns;

B<=TRANSPORTAAFTER20ns;

A------------------------------------A

B-------------------------------------B--------------------------J

010203040ns010203040ns

惯性延迟馨人学出波形传单延迟岁入岁出波形

【例2】图2.23(P56)上课补充的例子

Zl<=transportxafter10ns;

Z2<=xafter10ns;

Z3<=reject4nsxafter10ns;

[例3]下面的VHDL代码中,信号A、B、C、D均为整数,且初值赋为0。若在10ns时D

从0变为L则A、B、C发生变化的时间和取值分别为

process(D)

begin

A<=1after5ns;

B<=A+1;

C<=Bafter10ns;

endprocess;

A在15ns时变为1,B在(10+A)ns时变为1,C在20ns时变为0

三、仿真延迟

■在VHDL语句中,如果没有指明延迟类型和延迟量,VHDL仿真器和综合器将自

动为系统中的信号赋值配置一足够小而又能满足逻辑排序的延迟量,这个延迟量就

称为仿真延迟(△延迟或6延迟

■仿真延迟的引入由EDA工具自动完成。

■一个仿真周期产生一个仿真延迟。

■仿真命令:force信号名VItl,V212,...

【例】forceA00.12,03,I9.016

当执行下列并发语句时,试画出描述A、B、C和D的时序图。

D<=transportAafter5ns;

B<=Aafter5ns;

C<=reject2nsAafter5ns;

第3章VHDL语言的高级议题

1、过程和函数的特点

子程序

♦VHDL中的子程序有两种类型:过程和函数。

♦子程序可以在程序包、结构体和进程中定义,只有定义后才能被调用。子程序内部

的语句都是顺序语句。

♦子程序调用时,过程能返回多个变量,而函数只能返回一个变量。

♦函数的参数都是输入参数,而过程的参数有输入、输出和双向参数。

♦函数有顺序函数和并行函数,过程有顺序过程和并行过程。其中,顺序函数、顺序

过程存在于进程或另一个子程序中;并行函数、并行过程存在于进程或另一个子程

序外。

2、属性语句

一、信号属性语句

♦利用信号的属性来获取信号的行为信息和功能信息。

1、返回单一值的信号属性(P298:表8.2)

(1)s,EVENT

(2)s'ACTIVE

(3)s'LAST_EVENT

(4)s【AST_VALUE

(5)s^AST-ACTIVE

2、生成信号的信号属性(P299:表8.3)

(1)s'DELAYEDKtime)]

(2)s'STABLE|(time)|

(3)s'QUIET|(timc)|

(4)s'TRANSACTION

二、数组属性语句(P300:表8.4)

ATEFTfN)A'RIGHT(N)

VHIGHCN)A'LOW(N)

A,RANGE(N)A'REVERSE_RANGE(N)

A'LENGTH(N)

三、数据类型属性语句

(1)TTOS(X)返回输入X的位置序号

(2)T,VAL(X)返回输入位置序号X的值

(3)TSUCC(X)返回输入X的下一个值

(4)TTRED(X)返回输入X的前一个值

(5)T,LEFTOF(X)返回输入X左边的值

(6)FRIGHTOF(X)返回输入X右边的值

3、生成语句的特点

♦生成语句是一种循环语句,具有复制电路的功能。

♦当设计一个由多个相同单元模块组成的电路时,可利用生成语句复制一组完全相同

的并行组件或设计单元电路结构,避免多段相同结构的重复书写,以简化设计。

一、FOR循环模式

[生成标号:]FOR循环变量IN取值范围GENERATE

IBKGINI

并行语句

ENDGENERATE[生成标号]:

【例】

••♦

FAO:FullAdderportmap(A(0),B(0),c(0),c(1),s(0));

FAI:FullAdderportmap(A(1),B(1),c(1),c(2),s(1));

FA2:FullAdderportmap(A⑵,B(2),c(2),c(3),s(2));

FA3:FullAdderportmap(A(3),B(3),c(3),c(4),s(3));

FullAdd4:foriin0to3generate

Begin

FAX:FullAdderportmap(A(i),B(i)»c(i),c(i+l),s(i));

EndgenerateEullAdd4;

••♦

二、IF模式

[生成标号:JIF条件GENERATE

[BEGIN]

并行语句

ENI)GENERATE[生成标号];

【例】

•••

genLS:ifLshiftgenerate

shifter<=Q(N-1downto1)&shiftin;

EndgenerategenLS;

genRS:ifnotLshiftgenerate

shifter<=shiftin&Q(Ndownto2);

EndgenerategenRS;

••♦

第4章浮点数算数

KIEEE754标准(规定了浮点数的表示格式,运算规则等)

□规则规定了单精度(32)和双精度(64)的基本格式.

□规则中,尾数用原码,指数用移码(便于对阶和比较)

□基数R=2,基数固定,采用隐含方式来表示它。

□32位的浮点数:

■S数的符号位,1位,在最高位,“0”表示正数,力”表示负数。

■M是尾数,23位,在低位部分,采用纯小数表示

■E是阶码,8位,采用移码表示。移码比较大小方便。

■规格化:若不对浮点数的表示作出明确规定,同一个浮点数的表示

就不是惟一的。

□尾数域最左位(最高有效位)总是1,故这一位经常不予存储,

而认为隐藏在小数点的左边。

□采用这种方式时,将浮点数的指数真值e变成阶码E时,应

将指数e加上一个固定的偏移值127(01111111),即E=e+127o

2、数据格式转换

■64位的浮点数中符号位1位,阶码域11位,尾数域52位,指数偏移值是1023。

因此规格化的64位浮点数x的真值为:

x=(-l)SX(l.M)X2E-1023

e=E-1023

■一个规格化的32位浮点数x的真值表示为

x=(-l)SX(l.M)X2E-127

e=E-127

例1若浮点数x的754标准存储格式为(41360000)16,求其浮点数的十进制数值。

解:将16进制数展开后,可得二制数格式为

01000001001101100000000000000000

S阶码(8位)尾数(23位)

指数"阶码-127=10000010-01111111=0()000011=(3)10

包括隐藏位1的尾数

l.M=1.011011000000000COOO0000=1.011011

于是有

x=(-1)SX1.MX2e=+(1.011011)X23=4-1011.011=(11.375)10

例2将数(20.59375)10转换成754标准的32位浮点数的二进制存储格式。

解:首先分别将整数和小数部分转换成二进制数:

20.59375=10100.10011

然后移动小数点,使其在第1,2位之间

10100.10011=1.010010011X24

e二4十是得到:

S=0,E=4+127=131,M=010010011

最后得到32位浮点数的二进制存储格式为:

01000001101001001100000000000000=(41A4co00)16

第5章SM图与微程序

1.数字系统的设计:

1,数据单元包含保存运算数据和运算结果的数据寄存器,也包括完成数据运算的组合逻辑。

2.控制单元用来产生状态信号序列,以决定何时进行何种数据运算。

3.几乎所有的大型数字系统都包含某些状态概念,即系统的输出由输入的以前值和当前值

决定。

4同步时序系统有两种通用的模型:Mealy机和Moore机(都称为状态机)。

5.状态图:用圆圈把各个状态圈起来,在圆圈上用圆弧表示转换条件。

与状态图相比,状态机流程图(SM图或ASM图)具有的优点:

(1)观察SM图会比观察等价的状态图更容易理解数字系统的执行过程;

(2)SM图可以直接同硬件实现联系起来。

SM图和软件流程图相似,但是它包含隐含的时序信息。

SM图表示物理硬件,因此图内所有的转移必须形成封闭的路径。

♦SM图的三个基本组成部分:

()

1状态框:|[状旃

状态名/L揄出列表J

(2)判断框:(3)条件输出框:

条件输出列表

关于SM图的说明:

(1)状态框:状态恰好在一个时钟周期内完成。其输出信号列表在时钟周期内保持所示的

值,在下一时钟周期复位为默认值。

(2)判断枢:必须与一个状态框关联,所以判断在状态的其他动作的同一时钟周期内确定。

(3)条件输出框:必须紧随一个判断框,因此其输出信号与所属的状态框的输出信号在同

一时钟周期内被置位。

二、SM图中隐含的时序信息

状态框的输出与条件输出的区别:

(b)

(a)

(b)的时序图:

时钟

Z

Y(c=l)

W(c=l)

Y(c=O)

W(c=O)

SM模块:仅含有一个状态框,多个判断框以及与状态相关的条件输出框。

(1)一个SM模块仅含有一个输入通路,一个或多个输出通路;

(2)贯空一个SM模块,从入口到出口的路径称为一条链路;

(3)对于输入变量的每一个有效组合,只能有一个输出通路;

(4)在一个SM模块里,不能有内部反馈。

3、二进制无符号数的乘法原理P160-163

libraryieee:

useieee.numeric_bit.all;

entitymy_mult(

elk,st:inbit;

mplier,mcand:inunsigned(3downto0)

done:outbit);

endmymult;

architecturebehave1ofmymultis

signalstate:integerrange0to3;

signalACC:unsigned(8dewnto0);

aliasM:bitisACC(0):

BEGIN

process(elk)

begin

ifelk,eventandclk=,1'then

casestateis

when0=>

ifst=*I*then

Acc(8downto4)<="00000”;

Acc(3dowrto0)<=mplier:

state<=1;

endif;

when1I3|5|7->—“add/shifl"«late

ifM='1'then

Acc(8dewnto4)<='O'&Acc(7downto4)+mcand;

state<=state+1;

else

Acc<='O'&Acc(8downto1);

state<=state+2;

endif;

when2|4|6|8=>—"shift"state

Acc<='O'&Acc(8downto1);

state<=state+1;

when9=>

state<=0;

endcase;

endif:

endprocess;

done<='1'whenstate=9else'O';

endif;

ENDbehave1;

4、由SM图给出下状态和输出表达式

硬线化技术:根据SM图,写出控制器输出和下一状态的逻辑表达式,并用门电路和触发

器实现状态机。控制器输出和下一状态的逻辑表达式,可通过观察SM图

的链路和状态赋值得到,然后再进行化简即可。

【例】二进制乘法器

解答:用门电路和触发器实现

4.3SM图的实现第4章SM图与被程序

状态赋值:AB=00代表S。,AB二”代表与,代表

AB=11代表5马

D控制器输出的逻辑方程:

Load=ABfSt

Sh=A'BM'+AB'

;Ad=°A'BM;

ooo

Done=AB

(2)下一状态的逻辑方程:

A+=AfB(M+K)+ABfK

B+二A'B'St+A'BM'+AB'

5、双地址微程序的实现

微程序:用一个存储器来存储所有的控制信号、每个状态和每一输入条件下的下一

状态信息。仅通过对存储器中的内容“排队”就可以实现控制器,故基于微程

序的控制器称为排序器,存储控制字的存储器称为土制存储器或微程序存储器。

典型硬件框图:如下

实现步骤:

1、针对微程序的SM图变换:

<1)变换SM图为Moore机,去除SM图中所有的条件输出;

(2)每个状态只检测一个输入。可通过增加状态数来实现。

2、检查变换后的SM图,去掉多余的状态(状态最小化)。

【例】二进制乘法器

(a)原SM图(b)变换后SMBB

(b)变换后SM图©状态最小后氐M图

♦4选工MUX:;;二:

:二一

II

TEST

♦双地址微程序:ROM大小:6Xi2

ABCTESTNSFNSTLoadAdShDone

s°000000000010000

Soi001110100101000

Si01001]LOOOil0000

SnOil11]LOO1000100

s.100100101010010

S3101110000000001

6、单地址微程序的实现

♦典型硬件框图:

微程序ROM

i)状态赋值条件:默认的下一状态值为当前状态值加1。

2)可通过添加额外状态(称为X状态)或对一些检测的变量取补,来实现SM图。

♦【例】二进制案法器

(a)双地址SMBS(1>)单地址SMBB

♦4选1MUX:M一

5LoadC'oiuit'

II

TEST

♦单地址微程序:ROM大小:6X9

状态ABCTESTNSTLoadAd驰Done

So000000000000

001110101000

Si010011010000

s.Oil100100010

S3100110000001

Sil10111on0100

第6章存储器设计范例

1、ROM设计

2、RAM设计

1、ROM设计

♦ROM中存储了一组预定义的数据。

♦对ROM,只能读而不能写。

♦设计ROM时,有两个要点:

(1)存储单元的数量

(2)数据宽度

♦16X8ROM的设计:P216-217

Libraryieee;

Useieee.std_logic_unsigned.all;

Useieee.std_logic_1164.all;

Entityroniis

Port(addr:instd_logic_vector(3downto0);

en:instdjogic;

data:outstd_logic_vector(7downto0));

End;

Architectureoneofroniis

IXpememoryisarray(Oto15)ofstd_logic_vector(7downto0);

Signaldatal:memory:=(“10101001”;“10111001”;“10111011”;T1101001”;“00101001”;

“10101111”;“10101001”;“10101001”;“0010()001”;“10101001”;“10101000”;T0010001”;

“10000000”;“10000001”;“10100001”;“10001001”);

Signaladdrl:integerrange0to15;

Begin

Addrl<=conv_integer(addr);

Process(en,addri,addr,data1)

Begin

Ifen=Tthen

data<=datal(addrl);

Else

data<=(others=>,Z,);

Endif;

Endprocess;

End;

2、RAM设计

♦对RAM,可以读也可以写。

♦读时:从RAM的某个单元中读出数据,给数据输出端口。

♦写时:将数据写入端口的数据,写入RAM的某个单元。

♦32X8RAM的设计:P218-219

读、写由片选信号CS控制。

♦2mXnRAM的设计:读、写由时钟信号CLK控制

LIBRARYieee;

USEieee.std_logic_1164.all;

USEieee.std_logic_unsigned.all;

ENTITYsramIS

GENERIC(m:integer:=10;

n:integer:=8);

PORT(addr:instd_logic_vector(m-1downto0);

wr,elk:instd_logic;

datain:instd_logic_vcctor(n-1downto0);

dataout:outstd_logic_vector(n-ldownto0));

ENDsram;

ARCHITECTUREbehvOFsramIS

TYPEmemoryISarray(0to2**m-l)ofstd_logic_vector(n-ldownto0);一定义存储

空间

SIGNALdatal:memory;—RAM中数据的定义

SIGNALaddrl:integerrange0to2**m-l;—RAM的单iiyiH址

BEGIN

addrl<=conv_integer(addr);

PROCESS(clk,wr,addrl,data1,datain)••写操作进程

BEGIN

IFrisingcdge(clk)andwr=,0'THEN

datal(addrl)<=datain;

ENDIF;

ENI)PROCESS;

PROCESS(clk,wr,addri,datal)--读操作进程

BEGIN

IFrisingedge(clk)andwr=4TTHEN

dataout<=dadal(addrl);

ELSE

dataout<=(OTHERS=>'z');

ENDIF;

ENDPROCESS;

ENDbehv;

第7章可参数化宏模块及IP核的使用

1、Ahera提供的宏功能模块和LPM函数分类

Altera为用户提供三类IP:

(1)基本宏功能(Megafunctions);包括两类:

①Altera专有的宏功能,以ALT开头进行标注,

②LPM(LibraryofParameterrizcdModules)参数可设置模块库。

(2)MegaCore(宏功能核)

(3)AMPP(AlteraMegafunctionPartnersProgram)程序

第8章硬件测试与可测试性设计

1、组合逻辑电路的陷入故障测试

♦两个常见的故障:短路和开路。

♦故障模拟:陷0故障、陷1故障(陷入故障)。

♦陷入故障的测试:

(1)与门

(a)陷0故障测试(b)陷1故障测试

♦陷入故障的测试:

(2)或门

(a)陷0故障测试

上课的例子

2.边界扫描

边界扫描测试是通过在芯片的每个I/O引脚附加一个边界扫描单元(BSC-BoundrayScan

Cell)以及一些附加的测试控制逻辑实现的。

第9章数字系统设计实例

1、模60,模12,模100的BCD码计数器的设计

模100计数器模块的VHDL代码

LibraryIEEE;

UseIEEE.numeric_bit.all;

EntityCTR_99is

Por((clk.inc,reset:inbit;

dout:outunsigned(7downlo0);

t99:outbit);

endCTR_99:

architecturecount99ofCTR_99is

signaldigLdigO:unsigned(3downto0);

begin

process(clk)

begin

ifclk'evcntandclk='l'then

ifreset=,l5thendig0v=''0000";dig1〈=“0000”;

else

ifinc=1'then

ifdig0=9thendig0<=''0000'';

ifdig1=9thendigl<="0000”;

elsedigl<=dig+l;

endif;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论