微操作和寄存器传送语言课件_第1页
微操作和寄存器传送语言课件_第2页
微操作和寄存器传送语言课件_第3页
微操作和寄存器传送语言课件_第4页
微操作和寄存器传送语言课件_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

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

文档简介

5.1微操作和寄存器传送语言5.2用RTL表示数字系统5.3复杂数字系统和RTL5.4实例:VHDL-VHSIC硬件描述语言第五章寄存器传送语言微操作:大部分时序数字系统的基础。是更简单的行为。◆数据从一个寄存器、存储器单元或者I/O设

备到另一个的传送◆修改存储的值◆执行算术或逻辑功能◆修改已存储的值确定时序数字系统:确定正确的微操作传送及其条件。(这些条件保证微操作按正确的顺序执行)设计时序数字系统:◆首先用微操作表述系统的行为◆设计硬件来匹配这些表述

X二、传送发生的条件1.假定传送应发生在输入控制α为高时,则传送过程可以写为IFαTHENX←Y2.表示微操作和它们发生的条件:条件:微操作当所有冒号左边的条件满足时,执行微操作(可以是多个)规定的数据传送。3.上面的传送可以写为α:X←Y4.具有控制信号的数据传送α:X←Y的实现(a)用直接通路(b)用总线X2.同时拷贝相同的数据到多个目的地。考虑α:X←Y,Z←Y

3.数字系统不能同时往同一寄存器中写入两个不同的值。

例如:表示α:X←Y,X←Z无效

四、传送常量的有效条件和微操作α:X←0β:X←1实现这两个传送的三种不同方法:

◆通过两个传送通路装载数据来设置X的值

(用一个多路选择器来选择输入的数据)

◆装载数据与第一个完全相同,但它的数据直接由信号β产生。(用β作为数据输入)◆为简化硬件可使用寄存器的清除输入功能

(用CLR信号)五.寄存器之间的多位数据传送1.同样大小寄存器对应位之间传送数据

例如:当α=1时,从4位寄存器Y传送数据到4位寄存器X。用符号表示:α:X←Y

(a)用直接连接(b)用总线2.访问一个寄存器的某一位或位组。表示每一位:如X3或Y2。3.表示位组(用一个域表示)

如:X3、X2和X1可以写成:X(3-1)或X(3:1)

α:X(3-1)←Y(2-0)β:X3←X2γ:X(3-0)←X(2-0),X3(X(2-0,3)或X3←X2,X2←X1,X1←X0,X0←X3)2.移位微操作

线性移位:每一位的值依次向左(或右)移位。 最后1位被丢弃,空位补入0值。

例如:X=1011左移一位:0110右移一位:0101

循环移位:将在线性移位中被丢弃的位循环回来 替代补入的0值。

例如:X=1011循环左移:0111循环右移:1101◆

算术移位:用于带符号数的移位。算术左移:各位按位左移,最高位向左移出,最低位产生的空位填“0”。算术右移:连同符号位一起向右移一位,符号位保持不变。例如:X=1011算术左移:0110算术右移:1101◆

十进制移位:专门用于BCD表示。十进制移位与线性移位很相似,但它移动1个数字或4位,而不是移动1位。

例如:X=10010111十进制左移:01110000十进制右移:00001001

例如:X←shl(X)和shl(X)是等价的。Y←shl(X)两个寄存器均需指定七、寄存器与存储器之间的数据传送

例如:

M[55]←AC和AC←M[55]寄存器AC与存储器中55号单元之间的数据传送更好的方法:把地址存入寄存器中,然后由寄存器提供存储器的访问地址。(地址寄存器,标示为AR)

AR←55M[AR]←AC或者AC←M[AR](M←AC和AC←M)5.2.1数字元件表示

一、第一个例子(D触发器)

1.用RTL描述LD:Q←DD触发器:(a)无清0输入端(b)有清0输入端5.2用RTL表示数字系统2.有一同步清0输入端的D触发器

LD:Q←DCLR:Q←0

当D、LD和CLR都等于1时,系统会失败。

解决方法:改变条件使得两者互斥。

CLR’LD:Q←DLD:Q←DCLR:Q←0LD’CLR:Q←05.2.2简单系统的表示与实现

例如:一个有4个1位触发器的系统

用RTL代码表示传送(假设条件j,o,h和n是互斥的)

j:M←Ao:A←Yh:R←Mn:Y←R,M←R

几种不同的方法实现1.用直接连接实现系统的数据通路

(1)

用直接连接实现的该RTL代码的系统的数据通路

(2)

用直接连接实现该RTL代码的系统的完整设计在合适的时间激励触发器的LD信号来装载数据,从而完成传送。◆当j=1(M←A)或n=1(M←R)时,触发器M 装载数据。◆在满足单个条件o、h和n时,触发器A、R和Y 装载数据。

2.用总线和三态门实现

j:M←Ao:A←Yh:R←Mn:Y←R,M←R

3.用总线和多路选择器实现j:M←Ao:A←Yh:R←Mn:Y←R,M←R5.3.1模6计数器目的:设计一个模6计数器步骤:

◆用RTL表示计数器的功能 ◆用数字逻辑实现RTL的代码模6计数器:000→001→010→011→100→101→000→…(0→1→2→3→4→5→0…)5.3更复杂数字系统和RTL假设:

输入端U:控制计数

◆当U=1时,计数器在时钟的上升沿增加它的值。

◆当U=0时,不管时钟的值如何,它都保持当前 值不变。输出V2V1V0:计数器的值进位输出:C状态:S0→S1→S2→S3→S4→S5→S0→…(两个另外状态S6和S7)模6计数器的状态表和状态图

当前状态U下一状态CV2V1V0S00S01000S01S10001S10S10001S11S20010S20S20010S21S30011S30S30011S31S40100S40S40100S41S50101S50S50101S51S01000S6XS01111S7XS01111110一、用RTL表示系统

(S0+S1+S2+S3+S4)U:V←V+1,C←0S5U:V←0,C←1S6+S7:V←0,C←1

在条件(S0+S1+S2+S3+S4+S5)U’下,计数器保持当前值与C值不变。可以用两条RTL语句表示:(S5U和S6+S7触发相同的微操作)

(S0+S1+S2+S3+S4)U:V←V+1,C←0S5U+S6+S7:V←0,C←1二、模6计数器RTL代码的两种实现

用一个寄存器(S0+S1+S2+S3+S4)US5U+S6+S7◆

用一个计数器(简单)U(V2’

+

V1’

V0’)V2V1+V2V0U5.3.2收费站控制器1.两个外部传感器

C显示车辆是否在收费站中当车在时,C=1,否则C=0。

显示硬币是否已经投到收费站的收集篮中以及硬币的面值。

没有硬币投入I1I0=00

投入五分硬币I1I0=01

投入一角硬币I1I0=10

投入25分硬币I1I0=112.两个输出指示灯和一个警报灯

当一辆汽车驶入收费站时,红灯(R)亮,直到司机投入35分硬币,此时红灯熄灭,绿灯(G)亮,绿灯保持亮着直到汽车离开收费站;

当绿灯灭时,红灯又亮了。

如果没有付足够的通行费,汽车离开,红灯一直保持亮着且警报(A)响。

警报维持到另一辆汽车驶入收费站;然后停止。一、控制器的状态表和状态图状态条件RGASNOCAR车站中无车100S0站中有车,未付费100S5站中有车,已付费5分100S10站中有车,已付费10分100S15站中有车,已付费15分100S20站中有车,已付费20分100S25站中有车,已付费25分100S30站中有车,已付费30分100SPAID站中有车,已付足过路费010SCHEAT未付足过路费就离开车站101当前状态CI1I0下一状态RGA

当前状态CI1I0下一状态RGASNOCAR1XXS0100

S150XXSCHEAT101SPAID0XXSNOCAR100

S15101S20100SCHEAT1XXS0100

S15110S25100S00XXSCHEAT101

S15111SPAID010S0101S5100

S200XXSCHEAT101S0110S10100

S20101S25100S0111S25100

S20110S30100S50XXSCHEAT101

S20111SPAID010S5101S10100

S250XXSCHEAT101S5110S15100

S25101S30100S5111S30100

S25110SPAID010S100XXSCHEAT101

S25111SPAID010S10101S15100

S300XXSCHEAT101S10110S20100

S30101SPAID010S10111SPAID010

S30110SPAID010

S30111SPAID010

状态T

RG

ASNOCAR0000100S00001100S50010100S100011100S150100100S200101100S250110100S300111100SPAID1000010SCHEAT1001101Unused1010-1111100收费站控制器状态赋值二、将状态表转换成RTL语句1.当控制器状态为SNOCAR且C=1,它转换到状态S0,此状态值为0001。(假设状态值存于4位寄存器T中)

SNOCARC:T←0001如果我们想在每次传送后设置输出值,此状态不得不包含微操作R←1,G←0和A←0。2.状态SPAID和SCHEAT各仅有一个转移情况。

SPAIDC’:T←0000SCHEATC:T←00013.状态S0在状态表中有四种可能的转移情况。

S0C’:T←1001S0CI1’I0:T←0010S0CI1I0’:T←0011S0CI1I0:T←01104.对于其他状态,可以用同样的方法得到其RTL代码。5.最终的入口是所有的无用状态均无条件转移到状态0000。6.整个控制器除输出之外的代码SNOCARC:T←0001 S15CI1’I0:T←0101SPAIDC’:T←0000S15CI1I0’:T←0110SCHEATC:T←0001 S15CI1I0:T←1000S0C’:T←1001 S20C’:T←1001S0CI1’I0:T←0010 S20CI1’I0:T←0110S0CI1I0’:T←0011 S20CI1I0’:T←0111S10CI1I0:T←1000 S30CI1I0:T←1000S15C’:T←1001 T3(T2+T1):←0000S0CI1I0:T←0110 S20CI1I0:T←1000S5C’:T←1001 S25C’:T←1001S5CI1’I0:T←0011 S25CI1’I0:T←0111S5CI1I0’:T←0100 S25CI1I0’:T←1000S5CI1I0:←0111 S25CI1I0:T←1000S10C’:T←1001 S30C’:T←1001S10CI1’I0:T←0100 S30CI1’I0:T←1000S10CI1I0’:T←0101 S30CI1I0’:T←1000三、扩展RTL代码产生输出

SPAIDC’:R←1,G←0SCHEATC’:R←1,G←0,A←0SNOCARC:R←1,G←0,A←0S0C’:A←1S5C’:A←1S10C’:A←1S10CI1I0:R←0,G←1S15C’:A←1S15CI1I0:R←0,G←1

S20C’:A←1S20CI1I0:R←0,G←1S25C’:A←1S25CI1I0’:R←0,G←1S25CI1I0:R←0,G←1S30C’:A←1S30CI1’I0:R←0,G←1S30CI1I0’:R←0,G←1S30CI1I0:R←0,G←1T3(T2+T1):R←1,G←0,A←0四、收费站控制器的完整RTL代码

(S0+S5+S10+S15+S20+S25+S30)C’:T←1001SPAIDC’:T←0000(SNOCAR+SCHEAT)C:T←0001S0CI1’I0:T←0010S0CI1IO’:T←0011S0CI1I0:T←0110S5CI1’I0:T←0011S5CI1IO’:T←0100S5CI1I0:T←0111

温馨提示

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

评论

0/150

提交评论