收藏 分销(赏)

湖南大学-计算机系统组成与体系结构-第五章-寄存器传送语言.ppt

上传人:天**** 文档编号:14655929 上传时间:2026-10-26 格式:PPT 页数:76 大小:2.19MB 下载积分:10 金币
下载 相关
湖南大学-计算机系统组成与体系结构-第五章-寄存器传送语言.ppt_第1页
第1页 / 共76页
湖南大学-计算机系统组成与体系结构-第五章-寄存器传送语言.ppt_第2页
第2页 / 共76页


点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,5.1,微操作和寄存器传送语言,5.2,用RTL表示数字系统,5.3,复杂数字系统和RTL,5.4,实例:VHDLVHSIC硬件描述语言,5.5,小结,第五章 寄存器传送语言,微操作:,大部分时序数字系统的基础。,是更简单的行为。,数据从一个寄存器、存储器单元或者,I/O,设备,到另一个的传送,修改存储的值,执行算术或逻辑功能,修改已存储的值,确定时序数字系统:,确定正确的微操作传送及其条件。,(这些条件保证微操作按正确的顺序执行),设计时序数字系统:,首先用微操作表述系统的行为,设计硬件来匹配这些表述,硬件描述语言,(hardware description language,HDL),(说明与系统需求对应的微操作的条件和传送),电路分析和设计,(circuit analysis and design,CAD),软件,(可以在用户规定的各种条件下仿真电路的行为),两种实现:,由直接连接实现,通过总线连接实现,X,二、传送发生的条件,1.,假定传送应发生在输入控制,为高时,,则传送过程可以写为,IF THEN XY,2.,表示微操作和它们发生的条件:,条件:微操作,当所有冒号左边的条件满足时,执行微操作,(可以是多个)规定的数据传送。,3.,上面的传送可以写为,:XY,4.,具有控制信号的数据传送,:XY,的实现,(a)用直接通路,(b)用总线,X,三、提高系统性能的一种方法,同时执行两个或多个微操作。,1.,如果某系统在,=1,时执行,XY,和,YZ,的传,送,则这种情况可以表示成,:XY,YZ,或者,:YZ,XY,2,同时拷贝相同的数据到多个目的地。,考虑,:XY,ZY,实现数据传送,:XY,ZY,数据传送,:X0,与,:X1,的三种实现:,(a)用一个多路选择器来选择输入的数据,(b)用,作为数据输入,(c)用,CLR,信号,4比特,数据传送,:XY,的实现:,(a)用直接连接,(b)用总线,2.,访问一个寄存器的某一位或位组。,表示每一位:如,X,3,或,Y,2,。,3.,表示位组(,用一个域表示,),如,X,3,、X,2,和,X,1,可以写成,X(3-1),或,X(3:1),:X(3-1)Y(2-0),:X,3,X,2,:X(3-0)X(2-0),X,3,(X(2-0,3)或 X,3,X,2,,X,2,X,1,,X,1,X,0,,X,0,X,3,),六、执行数据的算术运算、逻辑运算和移位运算的微操作,1,一些常用的算术运算和逻辑运算的微操作,操 作,示 例,Add,XX+Y,Subtract,XX Y 或 XX+Y+1,Increment,XX+1,Decrement,XX1,And,XX Y 或 XXY,OR,XX Y,XOR,XX Y,NOT,X/X 或 XX,2,移位微操作,线性移位,:每一位的值依次向左(或右)移位。,最后,1,位被丢弃,空位补入,0,值。,例如:,X1011,左移一位:,0110,右移一位:,0101,循环移位,:将在线性移位中被丢弃的位循环回来,替代补入的,0,值。,例如,:,X1011,循环左移:,0111,循环右移:,1101,算术移位,:用于带符号数的移位。,运算规则:,符号位在移位操作中保持不变,工作原理,与线性移位相似。,例如,:,X1011,算术左移:,1110,算术右移:,1101,操 作,示 例,线性左移,shl(X),线性右移,shr(X),循环左移,cil(X),循环右移,cir(X),算术左移,ashl(X),算术右移,ashr(X),十进制左移,dshl(X),十进制右移,dshr(X),移位操作和它们的表示法,例如,:,Xshl(X),和,shl(X),是等价的。,Yshl(X),两个寄存器均需指定,七、寄存器与存储器之间的数据传送,例如,:,M55AC和ACM55,寄存器,AC,与存储器中,55,号单元之间的数据传送,更好的方法:,把地址存入寄存器中,然后由寄存器提供,存储器的访问地址。,(地址寄存器,标示为,AR,),AR55,MARAC或者ACMAR(MAC和ACM),2.,有一同步清,0,输入端的,D,触发器,LD:QD,CLR:Q0,当,D、LD,和,CLR,都等于,1,时,系统会失败。,解决方法:,改变条件使得两者互斥。,CLRLD:QD LD:QD,CLR:Q0 LDCLR:Q0,二,、,JK,触发器,(没有,CLR,输入端),用,RTL,描述:,JK:Q0,JK:Q1,JK:QQ,三、,n,位的移位寄存器,Q,n-1,是最高位,,Q,0,是最低位。,当,SHL,信号为高时,它将其中的数据左移一位。,输入,S,in,移进最低位。,移位寄存器:,SHL:QQ(n-2:0),S,in,5.2.2 简单系统的表示与实现,例如:,有,4,个,1,位触发器的系统,用,RTL,代码表示传送,(假设条件,j,o,h,和,n,是,互斥,的),j:MA,o:AY,h:RM,n:YR,MR,几种不同的方法实现,1用直接连接实现系统的数据通路,用直接连接实现的该,RTL,代码的系统的数据通路,用直接连接实现该,RT,L代码的系统的完整设计,在合适的时间激励触发器的,LD,信号来装载数,据,从而完成传送。,当,j=1(MA),或,n=1(MR),时,触发器,M,装载数据。,在满足单个条件,o、h,和,n,时,触发器,A、R,和,Y,装载数据。,2用总线和三态门实现,j:MA,o:AY,h:RM,n:YR,MR,3.用总线和多路选择器实现,j:MA,o:AY,h:RM,n:YR,MR,531 模6计数器,目的:,设计一个,模6计数器,步骤:,模6计数器:,000001010011100101000,(0123450),53 更复杂数字系统和RTL,用,RTL,表示计数器的功能,用数字逻辑实现,RTL,的代码,假设:,输入端,U,:控制计数,当,U1,时,计数器在时钟的上升沿增加它的值。,当,U0,时,不管时钟的值如何,它都保持当前值不变。,输出,V,2,V,1,V,0,:计数器的值,进位输出:,C,状态:,S,0,S,1,S,2,S,3,S,4,S,5,S,0,(两个另外状态,S,6,和,S,7,),模6计数器,的状态表和状态图,当前状态,U,下一状态,C,V,2,V,1,V,0,S,0,0,S,0,1,000,S,0,1,S,1,0,001,S,1,0,S,1,0,001,S,1,1,S,2,0,010,S,2,0,S,2,0,010,S,2,1,S,3,0,011,S,3,0,S,3,0,011,S,3,1,S,4,0,100,S,4,0,S,4,0,100,S,4,1,S,5,0,101,S,5,0,S,5,0,101,S,5,1,S,0,1,000,S,6,X,S,0,1,111,S,7,X,S,0,1,111,一、用RTL表示系统,(S,0,+S,1,+S,2,+S,3,+S,4,)U:VV+1,C0,S,5,U:V0,C1,S,6,+S,7,:V0,C1,在条件,(S,0,+S,1,+S,2,+S,3,+S,4,+S,5,)U,下,计数器保持当,前值与,C,值不变。,可以用两条,RTL,语句表示:(,S,5,U,和,S,6,+S,7,触发相同,的微操作),(S,0,+S,1,+S,2,+S,3,+S,4,)U:VV+1,C0,S,5,US,6,S,7,:V0,C1,二、模6计数器RTL代码的两种实现,用一个寄存器,(S,0,+S,1,+S,2,+S,3,+S,4,)U,S,5,US,6,S,7,用一个计数器(简单),U(V,2,+,V,1,V,0,),V,2,V,1,+V,2,V,0,U,532 收费站控制器,两个外部传感器,C,显示车辆是否在收费站中,当车在时,,C1,,否则,C0,。,显示硬币是否已经投到收费站的收集篮中以及,硬币的面值。,没有硬币投入,I,1,I,0,00,投入五分硬币,I,1,I,0,01,投入一角硬币,I,1,I,0,10,投入,25,分硬币,I,1,I,0,11,两个输出指示灯和一个警报灯,当一辆汽车驶入收费站时,,红灯,(R),亮,,直到司机投入,35,分硬币,此时,红灯,熄灭,,绿灯,(G),亮,,绿灯,保持亮着直到汽车离开收费站;,当,绿灯,灭时,,红灯,又亮了。,如果没有付足够的通行费,汽车离开,,红灯,一直保,持亮着且警报,(A),响。,警报维持到另一辆汽车驶入收费站;然后停止。,一、控制器的状态表和状态图,状态,条 件,R,G,A,S,NOCAR,车站中无车,1,0,0,S,0,站中有车,未付费,1,0,0,S,5,站中有车,已付费5分,1,0,0,S,10,站中有车,已付费10分,1,0,0,S,15,站中有车,已付费15分,1,0,0,S,20,站中有车,已付费20分,1,0,0,S,25,站中有车,已付费25分,1,0,0,S,30,站中有车,已付费30分,1,0,0,S,PAID,站中有车,已付足过路费,0,1,0,S,CHEAT,未付足过路费就离开车站,1,0,1,当前 状 态,C,I,1,I,0,下一状态,R,G,A,当前状态,C,I,1,I,0,下一状态,R,G,A,S,NOCAR,1,XX,S,0,1,0,0,S,15,0,XX,S,CHEAT,1,0,1,S,PAID,0,XX,S,NOCAR,1,0,0,S,15,1,01,S,20,1,0,0,S,CHEAT,1,XX,S,0,1,0,0,S,15,1,10,S,25,1,0,0,S,0,0,XX,S,CHEAT,1,0,1,S,15,1,11,S,PAID,0,1,0,S,0,1,01,S,5,1,0,0,S,20,0,XX,S,CHEAT,1,0,1,S,0,1,10,S,10,1,0,0,S,20,1,01,S,25,1,0,0,S,0,1,11,S,25,1,0,0,S,20,1,10,S,30,1,0,0,S,5,0,XX,S,CHEAT,1,0,1,S,20,1,11,S,PAID,0,1,0,S,5,1,01,S,10,1,0,0,S,25,0,XX,S,CHEAT,1,0,1,S,5,1,10,S,15,1,0,0,S,25,1,01,S,30,1,0,0,S,5,1,11,S,30,1,0,0,S,25,1,10,S,PAID,0,1,0,S,10,0,XX,S,CHEAT,1,0,1,S,25,1,11,S,PAID,0,1,0,S,10,1,01,S,15,1,0,0,S,30,0,XX,S,CHEAT,1,0,1,S,10,1,10,S,20,1,0,0,S,30,1,01,S,PAID,0,1,0,S,10,1,11,S,PAID,0,1,0,S,30,1,10,S,PAID,0,1,0,S,30,1,11,S,PAID,0,1,0,状 态,T,R,G,A,S,NOCAR,0000,1,0,0,S,0,0001,1,0,0,S,5,0010,1,0,0,S,10,0011,1,0,0,S,15,0100,1,0,0,S,20,0101,1,0,0,S,25,0110,1,0,0,S,30,0111,1,0,0,S,PAID,1000,0,1,0,S,CHEAT,1001,1,0,1,Unused,1010-1111,1,0,0,收费站控制器状态赋值,二、将状态表转换成,RTL,语句,1.,当控制器状态为,S,NOCAR,且,C1,,它转换到状态,S,0,,,此状态值为,0001,。,(假设状态值存于,4,位寄存器,T,中),S,NOCAR,C:T0001,如果我们想在每次传送后设置输出值,此状,态不得不包含微操作,R1,G0,和,A0,。,2.,状态,S,PAID,和,S,CHEAT,各仅有一个转移情况。,S,PAID,C:T0000,S,CHEAT,C:T0001,3.,状态,S,0,在状态表中有四种可能的转移情况。,S,0,C:T1001,S,0,CI,1,I,0,:T0010,S,0,CI,1,I,0,:T0011,S,0,CI,1,I,0,:T0110,4.,对于其他状态,可以用同样的方法得到其,RTL,代码。,5.,最终的入口是所有的无用状态均无条件转移到状态,0000,。,6.,整个控制器除输出之外的代码,S,NOCAR,C:T0001 S,15,CI,1,I,0,:T0101,S,PAID,C:T0000 S,15,CI,1,I,0,:T0110,S,CHEAT,C:T0001 S,15,CI,1,I,0,:T1000,S,0,C:T1001 S,20,C:T1001,S,0,CI,1,I,0,:T0010 S,20,CI,1,I,0,:T0110,S,0,CI,1,I,0,:T0011 S,20,CI,1,I,0,:T0111,S,10,CI,1,I,0,:T1000 S,30,CI,1,I,0,:T1000,S,15,C:T1001 T,3,(T,2,+T,1,):T0000,S,0,CI,1,I,0,:T0110S,20,CI,1,I,0,:T1000,S,5,C:T1001 S,25,C:T1001,S,5,CI,1,I,0,:T0011 S,25,CI,1,I,0,:T0111,S,5,CI,1,I,0,:T0100 S,25,CI,1,I,0,:T1000,S,5,CI,1,I,0,:0111S,25,CI,1,I,0,:T1000,S,10,C:T1001 S,30,C:T1001,S,10,CI,1,I,0,:T0100S,30,CI,1,I,0,:T1000,S,10,CI,1,I,0,:T0101S,30,CI,1,I,0,:T1000,三、扩展,RTL,代码产生输出,S,PAID,C:R1,G0,S,CHEAT,C:R1,G0,A0,S,NOCAR,C:R1,G0,A0,S,0,C:A1,S,5,C:A1,S,10,C:A1,S,10,CI,1,I,0,:R0,G1,S,15,C:A1,S,15,CI,1,I,0,:R0,G1,当进入,S,PAID,状态,输出,R:10,;,当离开,S,PAID,状态时,输出,R:0 1,。,输出,G,正好相反,当进入,S,PAID,状态时变成,1,,离开时变成,0,。,最后,无论何时进入,S,CHEAT,状态,输出,A,变成,1,,离开,S,CHEAT,状态时变成,0,。,S,20,C:A1,S,20,CI,1,I,0,:R0,G1,S,25,C:A1,S,25,CI,1,I,0,:R0,G1,S,25,CI,1,I,0,:R0,G1,S,30,C:A1,S,30,CI,1,I,0,:R0,G1,S,30,CI,1,I,0,:R0,G1,S,30,CI,1,I,0,:R0,G1,T,3,(T,2,+T,1,):R1,G0,A0,四、收费站控制器的完整,RTL,代码,(S,0,+S,5,+S,10,+S,15,+S,20,+S,25,+S,30,)C:T1001,S,PAID,C:T0000,(S,NOCAR,+S,CHEAT,)C:T0001,S,0,CI,1,I,0,:T0010,S,0,CI,1,I,O,:T0011,S,0,CI,1,I,0,:T0110,S,5,CI,1,I,0,:T0011,S,5,CI,1,I,O,:T0100,S,5,CI,1,I,0,:T0111,S,10,CI,1,I,0,:T0100,S,10,CI,1,I,O,:T0101,S,10,CI,1,I,0,:T1000,S,15,CI,1,I,0,:T0101,S,15,CI,1,I,O,:T0110,S,15,CI,1,I,0,:T1000,S,20,CI,1,I,0,:T0110,S,20,CI,1,I,O,:T0111,S,20,CI,1,I,0,:T1000,S,25,CI,1,I,0,:T0111,S,25,CI,1,:T1000,S,30,C(I,1,+I,0,):T100,T,3,(T,2,+T,1,):T0000,S,PAID,C:R1,G0,(S,NOCAR,+S,CHEAT,)C:R1,G0,A0,(S,0,+S,5,+S,10,+S,15,+S,20,+S,25,+S,30,)C:A1,(S,10,+S,15,+S,20,+S,25,+S,30,)CI,1,I,0,:R0,G1,(S,25,+S,30,)CI,1,I,0,:R0,G1,S,30,CI,1,I,0,:R0,G1,T,3,(T,2,+T,1,):R1,G0,A0,541 VHDL语法,超高速集成电路硬件描述语言,(VHSIC hardware description language,VHDL),用途:,5.4 实例:VHDLVHSIC硬件描述语言,设计通用集成电路(,IC,),设计专用集成电路,(,application-specific IC,,,ASIC,),调整设计以适合现有的可编程逻辑电路,(,programmable logic device,,,PLD,),优点:,可移植性,设备独立,允许设计者在程序下载到硬件上之前检验设计,的性能,提供了很好的系统设计的文档支持,允许设计者在不同的层次表示系统,源代码很长且难于调试,对同一系统,不同的工具会产生不同的、但均有,效的设计结果。,缺点:,VHDL,代码主要有三部分:,1库说明,(library declaration),由说明需访问的库和库中要用到模块的语句构成。,最常用到的库:,IEEE,库,最常用的模块:,std_logic_1164,模块,(描述了设计者需用的输入、输出的说明),库、模块说明可写成如下代码:,library IEEE;,use IEEE.std_logic_1164.all;,所有用到的库与模块都列在,VHDL,设计文件中。,2实体部分(entity section),在实体部分,设计者指定,实体的名称,和它的,输,入、输出,。,实体部分的基本格式如下:,entity,module_name,is,port(,input1,input2,input,p,:in std_logic;,output1,output2,output,o,:out std_logic;,inout1,inout2,.inout,n,:inout std_logic;,buffer1,buffer2,buffer,m,:buffer std_logic;,invec1,invec2,invec,l,:in std_logic_vector(,range,);,outvec1,outvec2,.outvec,k,:out std_logic_vector(,range,);,iovec1,iovec2,iovec,j,:inout std_logic_vector(,range,);,bufvec1,bufvec2,bufvec,i,:buffer std_logic_vector(,range,);,);,end,module_name,;,in std_logic,类型:表明设计的输入。,out std_logic,类型:定义设计的输出信号。,inout std_logic,类型:定义双向信号,它既可以输入也,可以输出数据。,buffer std_logic,类型:定义设计中的内部信号。,范围,(range),:(每个范围可用独立的语句定义),invector1:in std_logic_vector(3 downto 0);,invector2:in std_logic_vector(4 downto 2);,invector3:in std_logic_vector(1 to 8);,3.结构体部分,(architecture section),指定系统的行为以及内部逻辑。,基本形式如下:,architecture,arch_name,of,module_name,is,(指定结构体名称及它所属的实体),type and additional signal declarations;,(指定新的类型(,type,)和结构体中的新信号),begin,process1,:process(,signal list,),begin,statements defining behavior/logic,;,end process process1;,.,.,.,processn,:process(,signal list,),begin,statement defining behavior/logic,;,end process process,n,;,end arch_name;,5.4.2 高层抽象的VHDL设计,在不同抽象层次设计时序系统。,高层抽象,:,描述系统的有限状态机。,低层抽象,:,数字逻辑设计。,1,模6计数器,的库说明与实体部分,两个输入端,:,U,端和系统时钟端,clk,1,位输出,C,3,位输出,V,(定义,V,为一个,3,位向量,下标为,2,,,1,,和,0,。),该设计的库说明与实体部分如下:,library IEEE;,use IEEE.std_logic_1164.all;,entity mod6 is,port(,U,clk:in std_logic;,C:out std_logic;,V:out std_logic_vector(2 downto 0),);,end mod6;,2.,扩展,模6计数器,的结构体部分,结构体描述了一个新的枚举类型:,状态,(,state,),这种类型有,8,个可能值,S,0,到,S,7,,对应于计数器,的,6,个有 效状态和两个无效状态。,申明了两个这种类型的信号,present_state,:指示,模6计数器,的当前状态是,S,0,到,S,7,中的哪一个;,next_state,:指示计数器的下一状态。,用下列,VHDL,代码实现,architecture amod6 of mod6 is,type states is(s0,s1,s2,s3,s4,s5,s6,s7);,signal present_state,next_state:states;,两个进程,第一个着眼于计数器的当前状态和它的输入值,,并产生期望的输出和下一状态值。,第二个进程执行从当前状态到下一状态的转移。,过程,state_mod6,的,VHDL,代码,state_mod6:process(present_state,u),begin,case present_state is,when S0=V=”000”;C=1;,if(U=1)then next_state=S1;,else next_state V=”001”;C=0;,if(U=1)then next_state=S2;,else next_state V=”010”;C=0;,if(U=1)then next_state=S3;,else next_state V=”011”;C=0;,if(U=1)then next_state=S4;,else next_state V=”100”;C=0;,if(U=1)then next_state=S5;,else next_state V=”101”;C=0;,if(U=1)then next_state=S0;,else next_state V=”111”;C=0;,next_state V=”111”;C=0;,next_state=S0;,end case;,end process state_mod6;,state_transition,模块的源代码,在时钟的上升沿,它将进程,state_mod6,产生的,next_state,的值拷贝给,present_state。,state_transition:process(clk),begin,if rising_edge(clk)then present_state=next_state;,end if;,end process state_transition;,3.用高层抽象设计的,模6计数器,的完整,VHDL,代码,543 低层抽象的VHDL设计,一、,模6计数器,的数字逻辑设计,二、系统的完,整,VHDL,代码,5.5 小结,微操作,表示简单的操作,微操作形成了实现数字系统的基础。通过按序执行一串微操作,数字系统可以完成更复杂的任务。,数字设计者用,硬件描述语言,设计各种复杂度的数字电路,从简单的元件到微处理器。用非正式的HDLS,如RTL,设计者可以说明系统中需执行的功能及其条件,从而设计电路实现这样的说明。,更正式的HDLS,如VHDL,非常适合于计算机辅助设计工具。这些工具允许用户为不同抽象层次的系统输入HDL说明,从高层的,状态机,到低层的,电路,。设计工具检验设计的语法,并生成用于硬件实现的文件,或用通用IC或用PLD实现。特别是这些工具允许设计者在用硬件实现之前先进行设计仿真。,
展开阅读全文

开通  VIP、SVIP  下载更划算
下载10份以上建议开通 VIP 会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        关注我们

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服