搜档网
当前位置:搜档网 › 32位PowerPC构架通用寄存器分析及总结二

32位PowerPC构架通用寄存器分析及总结二

32位PowerPC构架通用寄存器分析及总结二
32位PowerPC构架通用寄存器分析及总结二

32位PowerPC构架通用寄存器分析及总结二

第四部分操作系统环境(OEA-Operating Environment Architecture)寄存器寄存器集OEA寄存器集包含四类寄存器:

1:配置寄存器(Configuration Registers)

MSR寄存器:

定义处理器的状态,它可以被mtmsr, sc, rfi指令修改;可以被mfmsr读取;

PVR寄存处:

定义寄存器模型的版本和处理器的版本

2:内存管理寄存器(Memory Management Registers)

BA T寄存器:

OEA定义了四组BA T指令寄存器(IBAT0U-IBAT3U和IBAT0L-IBAT3L),也定义了四组BAT数据寄存器(DBA T0U-DBAT3U和DBAT0U-DBAT3U)

SDR1寄存器:

该寄存器定义了用于虚拟地址转换为物理地址所需要的页表基地址

SR寄存器:

OEA定义了16个32位的SR寄存器(SR0-SR15)

3:中断处理寄存器(Interrupt Handing Register)

DAR(Data Address Register)寄存器:

在DSI(Data Storage Interrupt)和对齐中断发生之后,DAR寄存器被设置成异常指令产生的有效地址;

SPRG0-SPG3寄存器:提供给操作系统使用

DSISR寄存器:定义产生DSI(Data Storage Interrupt)和对齐中断的原因

SPR0(Machine status save/restore register 0)寄存器:

在中断中用来保存MSR寄存器,当rfi指令执行时,用来恢复MSR寄存器

SPR1(Machine status save/restore register 1)寄存器:在中断中用来保存MSR寄存器,当rfi指令执行时,用来恢复MSR寄存器

4:多功能寄存器(Miscellaneous Registers)

TB(time base)寄存器:

具体参考第三部分VEA

DEC寄存器:这是一个32位的递减计数器

EAR(External Access Register)寄存器:用于访问外部设备

DABR(Data address breakpoint register):用来控制数据地址断点功能

PIR(Processor identification register):在多处理器的芯片上用来标识一个核,例如在MPC8641d芯片上有两个E600的core,就用PIR来定位其中的core。

OEA寄存器集的示意图如下:

4.1 MSR寄存器

MSR寄存器定义了处理器的状态,在初始化PowerPC 核心时,MSR是第一个被配置的处理器。当一个中断发生时MSR寄存器的相关位将会发生改变。它也可以被mtmsr, sc, rfi指令所修改,被mfmsr读取。

格式如下:

各个字段说明:

MSR[0:12]:保留位

备注:在E600内核中使用了保留位中第6位来表示是否使用VltiVec指令

MSR[13]-POW位:能源管理机制(Power management enable)是否开启

MSR[14]:保留位

MSR[15]-ILE:(Interrupt little-endian)采用小端格式的中断模式是否开启,当中断发生时该位被拷贝到MSR[31]-LE来确定中断上下文的端模式

MSR[16]-EE:外部中断(External interrupt)是否开启,

MSR[17]-PR:指令特权级1-用户级0-系统级

MSR[18]-FR:浮点运算是否开启

MSR[19]-ME:机器检测是否开启

MSR[20]-FE0和MSR[23]-FE1:用来确定浮点数的异常模式,示意图如下:

MSR[21]-SE:单步调试追踪是否开启

MSR[22]-BE:分支预测追踪是否开启

MSR[24]:保留位

MSR[25]-IP:(Interrupt prefix.)中断向量号地址前缀

MSR[26]-IR:指令地址转换是否开启

MSR[27]-DR:数据地址转换是否开启

MSR[28:29]:保留位

备注:E600使用了MSR[29]位来表示是否开启性能监视标识模式(PMM-Performance Monitor Marked mode)

MSR[30]-RI:机器重启或者机器检查中断恢复是否开启

MSR[31]-LE:小段模式是否开启

备注:开启相应位置1,关闭置0

4.2 PVR寄存器

PVR寄存器是32位的只读寄存器,它存放是PowerPC内核版本号,可以用mtspr指令把PVR的值拷贝到一个通用寄存器GPRs中,它包含两个字段,示意图如下:

Version:指出内核的版本号

Revision:指出同一个内核版本的不同修订版本。

例如对于MPC8641D开发班:

PVR的值为:0x8004 0010

4.3 PIR(Processor Identification Register)寄存器

32位的PIR寄存器是一个只读寄存器,它的值用来定位PowerPC多核芯片中的核,我们可以用mtspr指令把PIR的值拷贝到一个通用寄存器GPRs中。

PIR的字段示意图如下:

4.4 BA T寄存器

BA T和TLB属于MMU,是用来进行逻辑地址(有时候被称为虚拟地址)和物理地址之间的地址转换,处理的是地址映射关系,PowerPC构架,共提供三种地址转换地模式:

第一种:页地址转换,通过TLB实现;

第二种:BAT(块地址转换),将逻辑地址映射到一连续的物理地址;

第三种:实地址转换,禁止地址转换(MSR[IR] =0,MSR[DR]=0),逻辑地址与物理地址相等,直接将逻辑地址送往地址总线,如果物理内存较小,高位的逻辑地址可能被忽略。BA T机制可以将一连续的大于一页地址的逻辑地址映射到物理内存中。如果有效地址与相应的BAT寄存器匹配,将使用BA T寄存器中的信息来转换有效地址为物理地址。BA T是一种简单有效的映射机制,映射关系比较简单,转换效率上比页转换快,但功能不如页转换强大,最大的缺点就是不能提供虚拟映射机制。但是如果BAT和页转换相互结合能组成一更为强大高效的转换机制。

特别需要注意的是在做地址映射的时候,TLB匹配和BAT匹配会并行进行。但如果BAT命中,那么会用BAT中的映射关系去转换地址,TLB会被忽略;如果BAT未命中,那么会尝试用TLB机制去映射地址。

注意:缓存是CPU和内存空间之间的中继设施,和MMU不一样,它处理的是数据,包括CPU读取的数据和指令。

关于BAT寄存器实现地址转换的机制,PowerPC构架实现的非常精致,我会在PowerPC的MMU部分详细的讲述,这里主要介绍寄存器,就不在讲述MMU啦,O(∩_∩)O~。

4.5 SDR1寄存器

为了说清楚SDR1寄存器的在作用,我在这里不得不详述一下PowerPC的页面地址转换的机制,O(∩_∩)O~

PowerPC的MMU从访存指令中获取的32位有效地址EA(Effective Address)分成三个部分:

第一部分EA[0:3]:存放的是SR寄存器的索引(范围在0到15),用于选择SR寄存器。目的是从SR寄存器读取24位的虚拟段号(VSID-virtual segment ID);

第二部分EA[4:19]:存放的是页表索引,用于在页表(Page Table)中定位页表项PTE(Page Table Entry)。EA[4:19]和从SR寄存器中读取的24位VSID,拼接52位虚拟地址(Virtual Address)的前40位,这40位我们称之为虚拟页号(VPN-Virtual Page Number)

第三部分EA[20:31]:页内偏移地址,它和VPN构成52位虚拟地址。

这样我们就可以得到52位的虚拟地址,然后有虚拟地址的VPN位,我们在TBL或者页表中找到20位的物理页号(RPN-Physical page number),它和EA[20:31]构成32位的物理地址。

示意图如下:

备注:从图中我们可以看出有效地址到物理地址,PowerPC构架需要先把有效地址(EA)转化虚拟地址(VA),然后从V A中获得VPN之后,就会在TLB或者页表(Page Table)中检索页表项PTE(Page Table Entry)。然后从PTE中获取RPN,然后从Byte Offset拼接成物理地址(RPA-Physical Address )。

这一过程PowerPC构架实现的非常精致,虽然也是MMU部分的内容,我实在是忍不住想在这里把它描述清楚。

这一过程主要分成三个步骤:

4.5.1 第一个步骤:由32位的有效地址EA转换成52位的虚拟地址V A

这一步骤如上图所示,非常的清晰,这里就不在赘述了。

这一过程主要分成两个步骤:

4.5.1 第一个步骤:由32位的有效地址EA转换成52位的虚拟地址V A

这一步骤如上图所示,非常的清晰,这里就不在赘述了。

4.5.2 第二个步骤:由52位的虚拟地址V A转化成32位的物理地址

这一步骤比较复杂,听我慢慢道来。

这一步骤里面也分为三个小步:

第一个小步:先由52位的虚拟地址(V A)找到页表项组(PTEGs)的地址;

第二个小步:再从页表项组(PTEGs)中逐个查找,从而找到页表项(PTE)的地址;

第三个小步:最后从PTE中取出RPN和和字节偏移地址(Byte Offset)连接,构成32位的物理地址。

具体过程如下:

4.5.2.1由52位的虚拟地址V A找到页表项组(PTEGs)的地址

解释一下,PowerPC构架中的页表由页表项组(PTEGs)构成的,而每个PTEGs又是有PTE 构成的,每个PTE有8个字节。

MMU为了找到目标页表项PTE,它使用两个hash函数(我们称之为主hash函数和次函数函数),我们首先用主hash函数找到一个PTEGs,在PTEGs中逐个需找目标PTE,如果里面不存在目标PTE,我们在用次hash函数再找一组PTEGs,再在其中需找目标PTE,如果还不在的话,此时就会发生缺页中断,交由操作系统来处理了。

备注:

为了描述清楚问题,我们来解释一下主hash函数和次hash函数。

主hash函数:

输入参数:

虚拟地址V A[5:23]

有效地址EA[4:19](即Page Index,也是V A[24:39])

处理:将这两个地址继续或操作,由于两个位段长度不同,我们第二个位段的高位补3个0,这样都形成了19位的长度,便于进行OR操作。

输出:上述两个位段的或操作的结果

次hash函数:

出入参数:

上述主hash函数的输出结果

输出:

上述主hash函数输出结果的反码

两个hash函数处理过程如下:

解释完两个函数之后,我们继续上面的话题:由52位的虚拟地址(V A)找到页表项组(PTEGs)的地址的机制。

由52的虚拟地址提供两个字段V A[5:23]和V A[4:19](即也是有效地址EA[4:19])提供给主hash 函数,主hash函数经过运算之后给我们提供了19位计算结果。

我们怎么来使用这个hash函数呢?这就牵涉到我们这一节将的主题SDR1寄存器(实在抱歉,现在才说到本节的主题哈,O(∩_∩)O~)

32位的SDR1寄存器的格式如下所示:

SDR1[0:15]位:称为HTABORG位,它保存的是32位页表(Page Table)物理地址的高16位;

SDR1[23:31]位:称为HTABMASK位,页表地址的掩码;

需要注意的是SDR[0:15]的16位数值是内存中页表数目的上限,也可以理解为页表的基址一部分,这一部分到底有多少位,是由HTABMASK决定的。

为了更详细的说明这种机制,我们举一个例子来说明:

比如说页表基址为0xA600 0000,即二进制:0b1010 0110 0000 0000 0000 0000 0000 0000

而SDR1寄存器的值为0b1010 0110 0000 0000 0000 0000 0000 0011,

其中SDR1[0:15](即HTABORG):1010 0110 0000 0000

SDR1[23:31](HTABMASK):0 0000 0011

因为HTABMASK的后两位是连续的两个1,所以HTABORG中的后两位将参与计算PTEGs 在页表中的偏移地址,HTABORG中的高14位1010 0110 0000 00将作为页表的基址的高地址部分,剩下的32-14位补0就是页表的基地址。

备注:至于为什么HTABMASK的后端有多少个连续的1,HTABORG的后端就是相同数目个连续的0,我们在后面的运算中可以清晰的看出来(其实就是不让这些数据位有效,来使得hash函数的相同数目的位参与计算PTEGs在页表中的偏移地址)

由于通过主hash函数计算出来的PTEGs可能不一定含有目标PTE,所以我们又根据次hash 函数函数计算一个PTEGs地址,如果两个PTEGs都没有目标PTE,就是让操作系统产生缺页中断。

示意图如下:

为了更清楚的说明hash函数计算页表(Page Table)内PTEGs地址的过程,我们再看下面的例子:

在上面的4.5.2.1中,我们找到了页表项组(PTEGs)的地址,现在我们只要从从页表项组(PTEGs)中逐个查找,我们的目标PTE地址。

我们需要先从通过主hash计算出来的PTEGs组中逐个查找目标PTE,如果不存在的话,我们再在通过次hash表计算出来的PTEGs组中逐个查找,如果还找不到的话,就让OS产生缺页中断把包含目标PTEGs的页表调入主存,我们再次重复上述过程。

4.5.2.3 得到物理地址

我们从在2.5.2.2中获取到的PTE中取出RPN和和字节偏移地址(Byte Offset)连接,构成32位的物理地址。

这个示意图如下:

待续。。。

寄存器实验报告

寄存器实验报告

一、实验目的 1. 了解寄存器的分类方法,掌握各种寄存器的工作原理; 2. 学习使用V erilog HDL 语言设计两种类型的寄存器。 二、实验设备 PC 微机一台,TD-EDA 实验箱一台,SOPC 开发板一块。 三、实验内容 寄存器中二进制数的位可以用两种方式移入或移出寄存器。第一种方法是以串行的方式将数据每次移动一位,这种方法称之为串行移位(Serial Shifting),线路较少,但耗费时间较多。第二种方法是以并行的方式将数据同时移动,这种方法称之为并行移位(Parallel Shifting),线路较为复杂,但是数据传送的速度较快。因此,按照数据进出移位寄存器的方式,可以将移位寄存器分为四种类型:串行输入串行输出移位寄存器(Serial In- Serial Out)、串行输入并行输出移位寄存器(Serial In- Parallel Out)、并行输入串行输出移位寄存器(Parallel In- Serial Out)、并行输入并行输出移位寄存器(Parallel In-Parallel Out)。 本实验使用V erilog HDL 语言设计一个八位并行输入串行输出右移移位寄存器(Parallel In- Serial Out)和一个八位串行输入并行输出寄存器(Serial In- Parallel Out),分别进行仿真、引脚分配并下载到电路板进行功能验证。 四、实验步骤 1.并行输入串行输出移位寄存器实验步骤 1). 运行Quartus II 软件,选择File New Project Wizard 菜单,工程名称及顶层文件名称为SHIFT8R,器件设置对话框中选择Cyclone 系列EP1C6Q240C8 芯片,建立新工程。 2.) 选择File New 菜单,创建V erilog HDL 描述语言设计文件,打开文本编辑器界面。 3.) 在文本编辑器界面中编写V erilog HDL 程序,源程序如下: module SHFIT8R(din,r_st,clk,load,dout); input [7:0]din; input clk,r_st,load; output dout; reg dout; reg [7:0]tmp; always @(posedge clk) if(!r_st) begin dout<=0; end else begin if(load) begin tmp=din; end else

32位并进并出移位寄存器设计

《EDA课程设计》 32位并进并出移位寄存器设计 学院:物理电气信息学院 专业:通信工程 姓名:杨小花 学号:12010245315 指导老师:杨泽林 完成日期:2012.12.11

32位并进并出移位寄存器设计 (杨小花12010245315 通信工程专业) 摘要:EDA技术作为现代电子设计技术的核心,它依赖强大的计算机,在EDA工具软件平台上,对以硬件描述语言VHDL为系统逻辑描述手段完成的设计文件,自动地完成逻辑编译、逻辑简化、逻辑分割、逻辑综合,以及逻辑优化和仿真测试,直至实现既定的电子线路系统功能。随着基于EDA技术的发展和应用领域的扩大与深入,EDA技术在电子信息、通信、自动控制及计算机应用等领域的重要性日益突出。关键字:EDA技术;VHDL语言;移位寄存器 一、实验原理 用一个8位移位寄存器,再增加一些电路,如4个8位锁存器等,设计成为一个能为32位二进制数进行不同方式移位的移位寄存器。8位是CPU设计中常用的移位寄存器模块,是用CASE语句设计的并行输入输出的移位寄存器模块。设计中有四种循环:带进位循环左移,带进位循环右移,自循环左移和自循环右移。其中带进位循环左移的原理是,每一次最高位移出进入输出进位,而最低位是设置的进位输入,带进位循环右移原理是,每一次最低位移出进入输出进位,而最高位是设置的进位输入,子循环左移的原理是,每一次循环,最高位进入到最低位,依次循环,自循环右移原理是,每一次最低位进入到最高位,依次循环。 二、实验步骤 1、建立一个工程项目,设置路径,项目名和顶层实体名一致; 2、设计一个8位移位寄存器电路;

3、设计一个8位锁存器电路; 4、运用元件调用声明语句和元件例化语句完成顶层设计。 三、实验程序 1、八位移位寄存器程序 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY SHIFTIS PORT ( CLK,CO: IN STD_LOGIC; --时钟和进位输入 MD : IN STD_LOGIC_VECTOR(2 DOWNTO 0); --移位模式控制字 D : IN STD_LOGIC_VECTOR(7 DOWNTO 0); -- 待加载移位的数据 QB : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); --移位数据输出 CN : OUT STD_LOGIC); --- 进位输出 END SHIFT; ARCHITECTURE behav OF SHIFT IS SIGNAL REG : STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL CY : STD_LOGIC; BEGIN PROCESS(CLK,CO,MD) BEGIN IF CLK'EVENT AND CLK='1' THEN CASE MD IS

MCS-51系列特殊功能寄存器

MCS-51系列特殊功能寄存器(80H~FFH) 1.P0 (80H) 2.SP 栈指针(81H) 3.DPTR 数据指针(由DPH和DPL组成) DPL 数据指针低八位(82H) DPH 数据指针高八位(83H) 4.PCON 电源管理寄存器(87H) SMOD :波特率倍增位。SMOD=0时,不变;SMOD=1时,倍增。 GF1,GF0 :通用标志位。 PD :掉电方式位。PD=1时,进入掉电方式。 IDL :待机方式位。IDL=1时,进入待机方式。 5.TMOD 定时/记数方式寄存器(89H) GATE :门控位。GATE=0时,直接由TR启动定时器;GATE=1时,须外部INT为1时,且TR启动定时器。 C/T :功能选择位。C/T=0时,为定时器;C/T=1时,为计数器。 M1,M0 :方式选择位。

6.T CON 定时/记数控制寄存器(88H) TF1 :定时器1溢出标志。由硬件置1,并且进入中断;进入中断服务程序后,由硬件清0,查询方式下由软件清0。 TR1 :定时器运行控制位。TR1=0时,关闭T1;TR1=1时,启动T1。 TF0 :定时器0溢出标志。由硬件置1,并且进入中断;进入中断服务程序后,由硬件清0,查询方式下由软件清0。 TR0 :定时器运行控制位。TR0=0时,关闭T0;TR0=1时,启动T0。 IE1 :外部中断1请求标志。 IT1 :外部中断1触发方式。IT1=0时,为低电平触发方式;IT1=1时,为负跳变触发方式(边沿触发)。 IE0 :外部中断0请求标志。 IT0 :外部中断0触发方式。IT0=0时,为低电平触发方式;IT0=1时,为负跳变触发方式(边沿触发)。 7.P1 (90H) SM0,SM1 :串行方式控制。 SM2 :多机通讯控制位。SM2=0时,禁止多机通讯;SM2=1时,允许多机通讯。

移位寄存器及其应用(精)

移位寄存器及其应用 一、实验目的 1、掌握中规模4位双向移位寄存器逻辑功能及使用方法。 2、熟悉移位寄存器的应用—实现数据的串行、并行转换和构成环形计数器。 二、原理说明 1、移位寄存器是一个具有移位功能的寄存器,是指寄存器中所存的代码能够在移位脉冲的作用下依次左移或右移。按代码的移位方向可分为左移、右移和可逆移位寄存器,只需要改变左、右移的控制信号便可实现双向移位要求。根据移位寄存器存取信息的方式不同又可分为:串入串出、串入并出、并入串出、并入并出四种形式。 本实验选用的4位双向通用移位寄存器,型号为CC40194或74LS194,两者功能相同,可互换使用,其逻辑符号及引脚排列如图8-3-3-1所示。 其中 D0、D1、D2、D3为并行输入端;Q0、Q1、Q2、Q3为并行输出端;S R为右移串行输入 C为直接无条件清零端; 端,S L为左移串行输入端;S1、S0为操作模式控制端;R CP为时钟脉冲输入端。 CC40194有5种不同操作模式:即并行送数寄存,右移(方向由Q0→Q3),左移(方向由Q3→Q0),保持及清零。 S1、S0和R C端的控制作用如表8-3-3-1。 图8-3-3-1 CC40194的逻辑符号及引脚功能 表8-3-3-1 CC40194功能表

2、移位寄存器应用很广,可构成移位寄存器型计数器;顺序脉冲发生器;串行累加器;可用作数据转换,即把串行数据转换为并行数据,或把并行数据转换为串行数据等。本实验研究移位寄存器用作环形计数器和数据的串、并行转换。 (1)环形计数器 把移位寄存器的输出反馈到它的串行输入端,就可以进行循环移位, 如图8-3-3-2所示,把输出端 Q3和右移串行输入端S R 相连接,设初始状态Q0Q1Q2Q3=1000,则在时钟脉冲作用下Q0Q1Q2Q3将依次变为0100→0010→0001→1000→……,如表10-2所示,可见它是一个具有四个有效状态的计数器,这种类型的计数器通常称为环形计数器。图8-3-3-2 电路可以由各个输出端输出在时间上有先后顺序的脉冲,因此也可作为顺序脉冲发生器。其状态表如表8-3-3-2所示。 表8-3-3-2 环形计数器状态表 图 8-3-3-2 环形计数器 如果将输出Q O与左移串行输入端S L相连接,即可达左移循环移位。 (2)实现数据串、并行转换 ①串行/并行转换器 串行/并行转换是指串行输入的数码,经转换电路之后变换成并行输出。 图8-3-3-3是用二片CC40194(74LS194)四位双向移位寄存器组成的七位串/并行数据转换电路。

计数器和移位寄存器设计仿真实验报告.

实验四典型时序电路的功能测试与综合仿真报告 15291204张智博一.74LS290构成的24位计数器 方法:第一片74290的Q3与第二片的INB相连,R01,R02相连,INA,R91,R92悬空构成24位计数器。50Hz,5v方波电压源提供时钟信号,用白炽灯显示输出信号。 实验电路: 实验现象:

输出由000000变为000001,000010,000011,000100,001000,001001,001010,001011,001100,010001,010000,010010,010011,010100,011000,011001,011010,011011,011100,100000,100001,100010,100011,100100,最终又回到000000,实现一次进位。 二.74LS161构成的24位计数器 方法:运用多次置零法 用两片74LS161构成了24位计数器,两片计数器的时钟信号都由方波电压源提供,第一片芯片的Q3和第二片芯片的Q0通过与非门,构成两个74LS161的LOAD信号,第一片的CO接第二片的ENT,其他ENT和ENP接Vcc(5v)。输出接白炽灯。 电路图: 实验现象:以下为1—24的计数过程

三.74LS194构成的8位双向移位寄存器 方法:通过两片194级联,控制MA,MB的值,来控制左右移动 实验电路由两片74LS194芯片构成。两个Ma接在一起,两个Mb接在一起,第一片的Dr,第二片的Dl,分别通过开关接到Vcc(5v)上。第一片的Q3接到第二片的Dr,第二片的Q0接到第一片的Dl。8个输出端分别接白炽灯。 实验电路:

32位移位寄存器

实验四 一、实验名称 32位并进/并出移位寄存器设计 二、实验原理 用一个8位移位寄存器,再增加一些电路,如4个8位锁存器等,设计成为一个能为32位二进制数进行不同方式移位的移位寄存器。 三、实验步骤 1、建立一个工程项目,设置路径,项目名和顶层实体名一致; 2、设计一个8位移位寄存器电路; 3、设计一个8位锁存器电路; 4、运用元件调用声明语句和元件例化语句完成顶层设计。 四、实验程序 1、八位移位寄存器程序 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY jicun IS PORT ( CLK,CO: IN STD_LOGIC; --时钟和进位输入 MD : IN STD_LOGIC_VECTOR(2 DOWNTO 0); --移位模式控制字 D : IN STD_LOGIC_VECTOR(7 DOWNTO 0); -- 待加载移位的数据 QB : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); --移位数据输出 CN : OUT STD_LOGIC); --- 进位输出 END jicun; ARCHITECTURE behav OF jicun IS SIGNAL REG : STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL CY : STD_LOGIC; BEGIN

PROCESS(CLK,CO,MD) BEGIN IF CLK'EVENT AND CLK='1' THEN CASE MD IS WHEN "001"=> REG(0)<=CO; ---带进位循环左移 REG(7 DOWNTO 1)<= REG(6 DOWNTO 0);CY<=REG(7); WHEN "010" => REG(0)<=REG(7); ---自循环左移 REG(7 DOWNTO 1)<= REG(6 DOWNTO 0); WHEN "011"=>REG(7)<=REG(0); ---自循环右移 REG(6 DOWNTO 0)<=REG(7 DOWNTO 1); WHEN "100" =>REG(7)<=CO; ---带进位循环右移 REG(6 DOWNTO 0)<=REG(7 DOWNTO 1);CY<=REG(0); WHEN "101" =>REG(7 DOWNTO 0)<=D(7 DOWNTO 0); --加载待移数 WHEN OTHERS=>REG<=REG;CY<=CY;--保持 END CASE; END IF; END PROCESS; QB(7 DOWNTO 0)<=REG(7 DOWNTO 0);CN<=CY; END behav; 2、锁存器程序 library ieee ; use ieee.std_logic_1164.all ; entity suocun is port(d : in std_logic_vector(7 downto 0) ; q: out std_logic_vector(7 downto 0); clk : in std_logic ); end suocun ; architecture one of suocun is signal q1: std_logic_vector(7 downto 0);

复合材料结构分析总结

复合材料结构分析总结 说明:整理自Simwe论坛,复合材料版块,原创fea_stud,大家要感谢他呀 目录 1# 复合材料结构分析总结(一)——概述篇 5# 复合材料结构分析总结(二)——建模篇 10# 复合材料结构分析总结(三)——分析篇 13# 复合材料结构分析总结(四)——优化篇 做了一年多的复合材料压力容器的分析工作,也积累了一些分析经验,到了总结的时候了,回想起来,总最初采用I-deas,到MSC.Patran、Nastran,到最后选定Ansys为自己的分析工具,确实有一些东西值得和大家分享,与从事复合材料结构分析的朋友门共同探讨。 (一)概述篇 复合材料是由一种以上具有不同性质的材料构成,其主要优点是具有优异的材料性能,在工程应用中典型的一种复合材料为纤维增强复合材料,这种材料的特性表现为正交各向异性,对于这种材料的模拟,很多的程序都提供了一些处理方法,在I-Deas、Nastran、Ansys中都有相应的处理方法。笔者最初是用I-Deas下建立各项异性材料结合三维实体结构单元来模拟(由于研究对象是厚壁容器,不宜采用壳单元),分析结果还是非常好的,而且I-Deas强大的建模功能,但由于课题要求要进行压力容器的优化分析,而且必须要自己写优化程序,I-Deas的二次开发功能开放性不是很强,所以改为MSC.Patran,Patran 提供了一种非常好的二次开发编程语言PCL(以后在MSC的版中专门给大家贴出这部分内容),采用Patran结合Nastran的分析环境,建立了基于正交各项异性和各项异性两种分析模型,但最终发现,在得到的最后结果中,复合材料层之间的应力结果始终不合理,而模型是没有问题的(因为在I-Deas中,相同的模型结果是合理的),于是最后转向Ansys,刚开始接触Ansys,真有相见恨晚的感觉,丰富的单元库,开放的二次开发环境(APDL 语言),下面就重点写Ansys的内容。 在ANSYS程序中,可以通过各项异性单元(Solid 64)来模拟,另外还专门提供了一类层合单元(Layer Elements)来模拟层合结构(Shell 99, Shell 91, Shell 181, Solid 46 和Solid 191)的复合材料。 采用ANSYS程序对复合材料结构进行处理的主要问题如下: (1)选择单元类型 针对不同的结构和输出结果的要求,选用不同的单元类型。 Shell 99 ——线性结构壳单元,用于较小或中等厚度复合材料板或壳结构,一般长度方向和厚度方向的比值大于10; Shell 91 ——非线性结构壳单元,这种单元支持材料的塑性和大应变行为; Shell 181——有限应变壳单元,这种单元支持几乎所有的包括大应变在内的材料 的非线性行为; Solid 46 ——三维实体结构单元,用于厚度较大的复合材料层合壳或实体结构;

51_52系列单片机特殊功能寄存器及资源映射方式总结

51系列单片机特殊功能寄存器总结 第一节:片内RAM映射: 51:00H_7FH 128B片内(DATA),其中00H-07H: bank0,08H-0FH: bank1, 10H-17H: bank2,18H-1FH:bank3. 20H-2FH: 位寻址区(bdata) 30H-7FH: 堆栈区。 80H-FFH: SFR区 52:增加了80H-FFH间接寻址的片内RAM(IDATA) 第二节:特殊功能寄存器(51) ①TCON,地址:88H,定时器计数器控制,中断控制 IT0/1:外部中断触发方式控制,置0,为低电平触发,置1,为下降沿触发。每个机器周期的S5P2器件多外部触发采样。响应中断需要两个机器 周期。 IE0/1:外部中断请求标志,CPU响应中断后,硬件自动将IE清0 TFx,定时器Tx溢出标志,计数溢出时,硬件将其置位,响应中断后,硬件将其清0,该位可由程序查询。 TRx, 定时器x运行控制,置1则启动定时器,清0则停止定时器。 ②TMOD,地址:89H, 定时器计数器工作方式控制 counter对外部输入外冲计数,计一次数需要两个机器周期。 GATE: 取反后与外部中断输入或运算后再同TCON的TRx位相与控制计数器的启与停,GATE为0时,允许TRx开启或停止计数器,为1时,允许INTx开启或停止计数器。 ③TL0, 地址:8AH, 定时器0低八位 ④TL1, 地址:8BH, 定时器1低八位

⑤TH0, 地址:8CH, 定时器0高八位 ⑥TH1, 地址:8DH, 定时器1高八位1 ⑦SCON, 地址:98H,串行通信控制寄存器 S M2:方式2和方式3的多机通信控制位,在方式0中,SM2应置0。 REN:允许串行接收位,由软件置1时,允许接收,清0时。禁止接收 TB8:方式2和方式3中,发送的第9位数据,需要时由软件置位或复位。 RB8: 方式2和方式3中,接收到的第9位数据,在方式1时,RB是接收到停止位,在方式0时,不使用RB8. TI:接收中断标志,由硬件置1,在方式0时,串行发送到第8位结束时置1;在其他方式,串行口发送停止位时置1。TI必须由软件清0。 RI:接收中断标志,由硬件置1。在方式0时(SM2应置0),接收到第8位结束时置1,当SM2=0的其他方式(方式0,1,3)时,接收到停止位置位“1”,当SM2=1时,若串口工作在方式2和3,接收到的第9位数据(RB8)为1时,才激活RI。在方式1时,只有接收到有效的停止位时才会激活RI。RI必须由软件清0 ⑧SBUF, 地址:99H,串行通信数据缓冲器 ⑨IE, 地址:A8H,中断使能控制寄存器 EA: globle interuption Enable, 1: Enable, 0: Disable ET2: timers2 flowover interuption Enable for52, 1: Enable, 0: Disable ES: serrial port interuption Enable, 1: Enable, 0: Disable ET1/0: timers1/0 flowover interuption Enable, 1: Enable, 0: Disable EX1/0: external interuption Enable, 1: Enable, 0: Disable

51单片机特殊功能寄存器功能一览表

51单片机特殊功能寄存器功能一览表 21个特殊功能寄存器(52系列是26个)不连续地分布在128个字节的SFR存储空间中,地址空间为80H-FFH,在这片SFR空间中,包含有128个位地址空间,地址也是80H-FFH,但只有83个有效位地址,可对11个特殊功能寄存器的某些位作位寻址操作(这里介绍一个技巧:其地址能被8整除的都可以位寻址)。 在51单片机内部有一个CPU用来运算、控制,有四个并行I/O口,分别是P0、P1、P2、P3,有ROM,用来存放程序,有RAM,用来存放中间结果,此外还有定时/计数器,串行I/O口,中断系统,以及一个内部的时钟电路。在单片机中有一些独立的存储单元是用来控制这些器件的,被称之为特殊功能寄存器(SFR)。这样的特殊功能寄存器51单片机共有21个并且都是可寻址的列表如下(其中带*号的为52系列所增加的特殊功能寄存器):

分别说明如下: 1、ACC---是累加器,通常用A表示 这是个什么东西,可不能从名字上理解,它是一个寄存器,而不是一个做加法的东西,为什么给它这么一个名字呢?或许是因为在运算器做运算时其中一个数一定是在ACC中的缘故吧。它的名字特殊,身份也特殊,稍后在中篇中我们将学到指令,可以发现,所有的运算类指令都离不开它。自身带有全零标志Z,若A=0则Z=1;若A≠0则z=0。该标志常用作程序分枝转移的判断条件。 2、B--一个寄存器 在做乘、除法时放乘数或除数,不做乘除法时,随你怎么用。 3、PSW-----程序状态字。 这是一个很重要的东西,里面放了CPU工作时的很多状态,借此,我们可以了解CPU的当前状态,并作出相应的处理。它的各位功能请看下表: 下面我们逐一介绍各位的用途 CY:进位标志。 8051中的运算器是一种8位的运算器,我们知道,8位运算器只能表示到0-255,如果做加法的话,两数相加可能会超过255,这样最高位就会丢失,造成运算的错误,怎么办?最高位就进到这里来。这样就没事了。有进、借位,CY=1;无进、借位,CY =0 例:78H+97H(01111000+10010111) AC:辅助进、借位(高半字节与低半字节间的进、借位)。

实验六移位寄存器的设计

实验六移位寄存器的设计 一、实验目的 1、掌握中规模4位双向移位寄存器逻辑功能及使用方法。 2、熟悉移位寄存器的应用—实现数据的串行、并行转换和构成环形计数器。 二、实验预习要求 1、复习有关寄存器及串行、并行转换器有关内容。 2、查阅CC40194、CC4011及CC4068 逻辑线路。熟悉其逻辑功能及引脚排列。 3、在对CC40194进行送数后,若要使输出端改成另外的数码,是否一定要使寄存器清零? 4、使寄存器清零,除采用R C输入低电平外,可否采用右移或左移的方法?可否使用并行送数法?若可行,如何进行操作? 5、若进行循环左移,图6-4接线应如何改接? 6、画出用两片CC40194构成的七位左移串 /并行转换器线路。 7、画出用两片CC40194构成的七位左移并 /串行转换器线路。 三、实验设备及器件 1、+5V直流电源 2、单次脉冲源 3、逻辑电平开关 4、逻辑电平显示器 5、CC40194×2(74LS194)CC4011(74LS00) CC4068(74LS30) 四、设计方法与参考资料 1、移位寄存器是一个具有移位功能的寄存器,是指寄存器中所存的代码能够在移位脉冲的作用下依次左移或右移。既能左移又能右移的称为双向移位寄存器,只需要改变左、右移的控制信号便可实现双向移位要求。根据移位寄存器存取信息的方式不同分为:串入串出、串入并出、并入串出、并入并出四种形式。 本实验选用的4位双向通用移位寄存器,型号为CC40194或74LS194,两者功能相同,可互换使用,其逻辑符号及引脚排列如图6-1所示。 其中D0、D1、D2、D3为并行输入端;Q0、Q1、Q2、Q3为并行输出端;S R为右移串行输 C为直接无条件清零端; 入端,S L为左移串行输入端;S1、S0为操作模式控制端;R

基于Verilog设计的双向32位移位寄存器

双向移位寄存器 摘要:系统使用EDA技术设计了具有移位功能的寄存器,采用硬件描述语言VHDL进行设计,然 后进行编程,时序仿真。软件基于Verilog语言实现了双向32位移位寄存器的控制功能。通过本设 计熟悉QuartusII环境下的硬件描述操作流程,掌握基本的Verilog语法与编写风格。 关键字:EDA;Verilog;32位双向移位寄存器 1.引言 随着社会的发展,科学技术也在不断的进步。特别是计算机产业,可以说是日新月异,移位寄存器作为计算机的一个重要部件,从先前的只能做简单的左移或右移功能的寄存器到现在广泛应用的具有寄存代码、实现数据的串行-并行转换、数据运算和数据处理功能的移位寄存器。近年来,集成电路和计算机应用得到了高速发展,现代电子设计技术已迈入一个崭新的阶段,具体表现在:(1)电子器件及其技术的发展将更多地趋向于为EDA服务; (2)硬件电路与软件设计过程已高度渗透; (3)电子设计技术将归结为更加标准、规范的EDA工具和硬件描述语言HDL的运用; (4)数字系统的芯片化实现手段已成主流。 因此利用计算机和大规模复杂可编程逻辑器件进行现代电子系统设计已成为电子工程类技术人员必不可少的基本技能之一。 移位寄存器正在向着功能强,体积小,重量轻等方向不断发展,本设计主要介绍的是一个基于超高速硬件描述语言VHDL对32位双向移位寄存器进行编程实现。 2.课程设计的目的 在计算机中常要求寄存器有移位功能。如在进行乘法时,要求将部分积右移;在将并行传送的数转换成串行数时也需要移位。因此,移位寄存器的设计是必要的。 本次设计的目的就是利用计算机组成原理中移位寄存器的相关知识,通过课程设计更加深入的了解移位寄存器的功能。了解EDA技术,并掌握VHDL硬件描述语言的设计方法和思想,通过学习的VHDL语言结合计算机组成原理中的相关知识理论联系实际,掌握所学的课程知识。通过对移位寄存器的设计,巩固和综合运用所学知识,提高对计算机组成原理的理解。 3.课程设计的内容 本课程设计是带有32位双向移位寄存器。CLK是移位时钟信号,load是并行数据预置使能信号,QB是串行输出端口。此移位寄存器的工作方式是:当CLK的上升沿到来时过程被启动,如果这时预置使能load为低电平,LEFT_RIGHT为低电平,循环右移;如果预置使能load为低电平,LEFT_RIGHT 为高电平,循环左移。 4 Verilog HDL介绍 4.1Verilog语言的特点

特殊功能寄存器地址与控制位

/************************************************************ * 特殊功能寄存器地址和控制位 ************************************************************/ /*中断使能1*/ #define IE1_ 0x0000 sfrb IE1 = IE1_; #define WDTIE 0x01 /*看门狗中断使能*/ #define OFIE 0x02 /*外部晶振故障中断使能*/ #define NMIIE 0x10 /*非屏蔽中断使能*/ #define ACCVIE 0x20 /*可屏蔽中断使能/flash写中断错误*/ #define URXIE0 0x40 /*串口0接收中断使能*/ #define UTXIE0 0x80 /*串口0发送中断使能*/ /*中断标志1*/ #define IFG1_ 0x0002 sfrb IFG1 = IFG1_; #define WDTIFG 0x01 /*看门狗中断标志*/ #define OFIFG 0x02 /*外部晶振故障中断标志*/ #define NMIIFG 0x10 /*非屏蔽中断标志*/ #define URXIFG0 0x40 /*串口0接收中断标志*/ #define UTXIFG0 0x80 /*串口0发送中断标志*/ /* 中断模式使能1 */ #define ME1_ 0x0004 sfrb ME1 = ME1_; #define URXE0 0x40 /* 串口0接收中断模式使能 */ #define USPIE0 0x40 /* 同步中断模式使能 */ #define UTXE0 0x80 /* 串口0发送中断模式使能 */ /* 中断使能2 */ #define IE2_ 0x0001 sfrb IE2 = IE2_; #define URXIE1 0x10 /* 串口1接收中断使能 */ #define UTXIE1 0x20 /* 串口1发送中断使能 */ /* 中断标志2 */ #define IFG2_ 0x0003 sfrb IFG2 = IFG2_; #define URXIFG1 0x10 /* 串口1接收中断标志 */ #define UTXIFG1 0x20 /* 串口1发送中断标志 */ /* 中断模式使能2 */ #define ME2_ 0x0005 sfrb ME2 = ME2_; #define URXE1 0x10 /* 串口1接收中断模式使能 */ #define USPIE1 0x10 /* 同步中断模式使能 */ #define UTXE1 0x20 /* 串口1发送中断模式使能 */ /************************************************************

移位寄存器功能测试及应用

实验八移位寄存器功能测试及应用 一、实验目的: 1.掌握中规模4位双向寄存器逻辑功能及使用方法。 2.熟悉移位寄存器的应用,实现数据的串行、并行转换和构成环形计数器 二、实验仪器及材料 a) TDS-4数电实验箱、双踪示波器、数字万用表。 b) 参考元件:74LS194一片。 三、预习要求及思考题 1.预习要求: 1) 复习有关寄存器有关内容。 2)熟悉74LS194逻辑功能及引脚排列。 3)用multisim软件对实验进行仿真并分析实验是否成功。 2.思考题: 1) 使寄存器清零,除采用输入低电平外,可否采用右移或左移的方法?可否使用 并行送数法?若可行,如何进行操作? 2) 环行计数器的最大优点和缺点是什么? 四、实验原理 1.位寄存器是一个具有移位功能的寄存器,是指寄存器中所存的代码能够在移位脉冲的作用下依次左移或右移。既能左移又能右移的称为双向移位寄存器,只需要改变左、右移的控制信号便可实现双向移位要求。根据移位寄存器存取信息的方式不同分为:串入串出、串入并出、并入串出、并入并出四种形式。 本实验选用的4位双向通用移位寄存器,型号为CC40194或74LS194,两者功能相 同,可互换使用,其逻辑符号及引脚图如图8-1所示。 图8-1 74LS194的逻辑符号图及引脚功能图. 其中D0、D1、D2、D3为并行输入端;Q0、Q1、Q2、Q3为并行输出端;S R为右移串行输入端;S L为左移串行输入端;S0、S1为操作模式控制端;C R为直接无条件清零端;CP为时钟脉冲输入端。 74LS194有5种不同操作模式:即并行送数寄存,右移(方向由Q0-->Q3),左移(方向由Q3→Q0),保持及清零。 S1、S0和C R端的控制作用如表8-1

32位移位寄存器

8位数码扫描显示电路设计 一、实验目的 学习硬件扫描显示电路的设计; 二、实验原理 动态数码扫描显示方式是利用了人眼的视觉暂留效应,把八个数码管按一定顺序进行点亮,当点亮的频率不大时,我们看到的是数码管一个个的点亮,然而,当点亮频率足够大时,我们看到的不再是一个一个的点亮,而是全部同时显示,与传统方式得到的视觉效果完全一样。因此我们只要给数码管这样一个扫描频率,那么就可以实现两个以上的数码管同时点亮。而这个频率我们可以通过一个计数器来产生,只要计数频率足够大,就可以实现我们的要求。事实上,因为数码管点亮不是瞬间就可以的,它也需要一定的时间,该时间与数码管的选择有关系。为了折中这一对矛盾,实验中一般可将计数频率选择在100Hz左右。 图示8位数码扫描显示电路,其中每个数码管的8 个段:h、g、f、e、d、c、b、a(h 是小数点)都分别连在一起,8 个数码管分别由8 个选通信号k1、k2、… k8 来选择。被选通的数码管显示数据,其余关闭。如在某一时刻,k3 为高电平,其余选通信号为低电平,这时仅k3 对应的数码管显示来自段信号端的数据,而其它7 个数码管呈现关闭状态。根据这种电路状况,如果希望在8 个数码管显示希望的数据,就必须使得8 个选通信号k1、k2、… k8 分别被单独选通,并在此同时,在段信号输入口加上希望在该对应数码管上显示的数据,于是随着选通信号的扫变,就能实现扫描显示的目的。 实验参考扫描显示程序中clk 是扫描时钟;SG 为7 段控制信号,由高位至低位分别接g、f、e、d、c、b、a 7个段;BT 是位选控制信号,接图5-2 中的8 个选通信号:k1、k2、… k8 。程序中CNT8 是一个3 位计数器,作扫描计数信号,由进程P2 生成;进程P3 是7 段译码查表输出程序,进程P1 是对8 个数码管选通的扫描程序,例如当CNT8 等于

51单片机特殊功能寄存器详细说明

/*-------------------------------------------------------------------------- REG51.H Header file for generic 80C51 and 80C31 microcontroller. Copyright (c 1988-2001 Keil Elektronik GmbH and Keil Software, Inc. All rights reserved. --------------------------------------------------------------------------*/ /* BYTE Register */ sfr P0 = 0x80; sfr P1 = 0x90; sfr P2 = 0xA0; sfr P3 = 0xB0; sfr PSW = 0xD0; 程序状态字 sfr ACC = 0xE0; 累加器 sfr B = 0xF0; B寄存器 sfr SP = 0x81; 堆栈指针 sfr DPL = 0x82; 数据指针低八位 sfr DPH = 0x83; 数据指针高八位 sfr PCON = 0x87; 波特率选择寄存器 sfr TCON = 0x88; 定时器/计数器控制寄存器

sfr TMOD = 0x89; 定时器方式选择寄存器 sfr TL0 = 0x8A; 定时器0低八位 sfr TL1 = 0x8B; 定时器1低八位 sfr TH0 = 0x8C; 定时器0高八位 sfr TH1 = 0x8D; 定时器1高八位 sfr IE = 0xA8; 中断允许寄存器 sfr IP = 0xB8; 中断优先级寄存器 sfr SCON = 0x98; 串行控制寄存器 sfr SBUF = 0x99; 串行数据缓冲器 /* BIT Register */ /* PSW */ 程序状态字 sbit CY = 0xD7; 有无进位或者借位 sbit AC = 0xD6; Auxiliary Carry有无低四位向高四位的进位或借位 sbit F0 = 0xD5; 用户管理的标志位,可根据自己的需求设定 sbit RS1 = 0xD4; 这两位用于选择当前工作寄存器区。8051有8个8位寄存器R0~R7,它 们在RAM中的地址可以根据用户需要来确定。 sbit RS0 = 0xD3; RS1 RS0:R0~R7的地址0 0:00H~07H 0 1:08H~0FH 1 0:10H~17H 1 1:18H~1FH

实验七 移位寄存器及其应用

实验七 移位寄存器及其应用 一、实验目的 1. 掌握中规模4位双向移位寄存器逻辑功能及使用方法。 2. 熟悉移位寄存器的应用——环形计数器。 二、实验原理 1. 移位寄存器是一个具有移位功能的寄存器,是指寄存器中所存的代码能够在移位脉冲的作用下依次左移或右移。既能左移又有右移的称为双向移位寄存器,只需要改变左、右移的控制信号便可实现双向移位要求。根据移位寄存器存取信息的方式不同分为:串入串出、串入并出、并入串出、并入并出四种形式。 本实验选用的4位双向通用移位寄存器,型号为74LS194或CC40194,两者功能相同,可互换使用,其逻辑符号及引脚排列如图 1所示。 图 1 74LS194的逻辑符号及其引脚排列 其中D 3、D 2、D 1、D 0为并行输入端, Q 3、Q 2、Q 1、Q 0为并行输出端;S R 为右移串行输入端,S L 为左移串行输入端,S 1、S 0为操作模式控制端;CR 为直接无条件清零端;CP 为时钟脉冲输入端。74LS194有5种不同操作模式:即并行送数寄存,右移(方向由Q 3→Q 0),左移(方向由Q 0→Q 3),保持及清零。S 1、S 0和CR 端的控制作用如表 1所示。 表 1

2.移位寄存器应用很广,可构成移位寄存器型计数器;顺序脉冲发生器;串行累加器;可用作数据转换,即把串行数据转换为并行数据,或把并行数据转换为串行数据等。本实验研究移位寄存器用作环形计致器和串行累加器的线路及其原理。 (1) 环形计数器:把移位寄存器的输出反馈到它的串行输入端,就可以进行循环移位, 如图2所示,把输出端Q 0和右移串行输入端S R 相连接,设初始状态Q 3 Q 2 Q 1 Q =1000, 则在时钟脉冲作用下Q 3Q 2 Q 1 Q 将依次变为0100→0010→0001→1000→……,可见它是具 有四个有效状态的计数器,这种类型的计效器通常称为环形计数器。图2电路可以由各个输出端输出在时间上有先后顺序的脉冲,因此也可作为顺序脉冲发生器。

51单片机的特殊功能寄存器

51单片机的特殊功能寄存器 通过前面课程的学习,我们已知道了单片机的内部有ROM、有RAM、有并行I/O 口,那么,除了这些东西之外,单片机内部究竟还有些什么?这些个零碎的东西怎么连在一起的? 下面就让我们来对单片机内部作一个完整的分析吧! 从图中我们可以看出,在51单片机内部有一个CPU用来运算、控制,有四个并行I/O口,分别是P0、P1、P2、 P3,有ROM,用来存放程序,有RAM,用来存放中间结果,此外还有定时/计数器,串行I/O口,中断系统,以及一个内部的时钟电路。在一个51单片机 的内部包含了这么多的东西。 对图进行进一步的分析,我们已知,对并行I/O口的读写只要将数据送入到相应I/O口的锁存器就可以了,那么对于定时 /计数器,串行I/O口等怎么用呢?在单片机中有一些独立的存储单元是用来控制这些器件的,被称之为特殊功能寄存器(SFR)。事实上,我们已接触过P1 这个特殊功能寄存器了,还有哪些呢?看下表 符号地址功能介绍 B F0H B寄存器 ACC E0H 累加器 PSW D0H 程序状态字 IP B8H 中断优先级控制寄存器 P3 B0H P3口锁存器 IE A8H 中断允许控制寄存器

P2 A0H P2口锁存器 SBUF 99H串行口锁存器 SCON 98H串行口控制寄存器 P1 90H P1口锁存器 TH1 8DH定时器/计数器1(高8位) TH0 8CH 定时器/计数器1(低8位) TL1 8BH 定时器/计数器0(高8位) TL0 8AH 定时器/计数器0(低8位) TMOD 89H定时器/计数器方式控制寄存器 TCON 88H 定时器/计数器控制寄存器 DPH 83H 数据地址指针(高8位) DPL 82H 数据地址指针(低8位) SP 81H 堆栈指针 P0 80H P0口锁存器 PCON 87H电源控制寄存器 下面,我们介绍一下几个常用的SFR。 1、ACC---是累加器,通常用A表示。 这 是个什么东西,可不能从名字上理解,它是一个寄存器,而不是一个做加法的东西,为什么给它这么一个名字呢?或许是因为在运算器做运算时其中一个数一定是在 ACC中的缘故吧。它的名字特殊,身份也特殊,稍后在中篇中我们将学到指令,可以发现,所有的运算类指令都离不开它。自身带有全零标志Z,若A=0则 Z=1;若A≠0则z=0。该标志常用作程序分枝转移的判断条件。 2、B--一个寄存器。 在做乘、除法时放乘数或除数,不做乘除法时,随你怎么用。 3、PSW-----程序状态字。这是一个很重要的东西,里面放了CPU工作时的很多状态,借此,我们可以了解CPU的当前状态,并作出相应的处理。它的各位功能请看下表: 下面我们逐一介绍各位的用途 CY:进位标志。8051中的运算器是一种8位的运算器,我们知道,8位运算器只

实验七移位寄存器及其应用

实验七移位寄存器及其应用 一、实验目的 1、掌握中规模4位双向移位寄存器逻辑功能及使用方法。 2、熟悉移位寄存器的应用—实现数据的串行、并行转换和构成环形计数器。 二、实验原理 1、移位寄存器是一个具有移位功能的寄存器,是指寄存器中所存的代码能够在移位脉冲的作用下依次左移或右移。既能左移又能右移的称为双向移位寄存器,只需要改变左、右移的控制信号便可实现双向移位要求。根据移位寄存器存取信息的方式不同分为:串入串出、串入并出、并入串出、并入并出四种形式。 本实验选用的4位双向通用移位寄存器,型号为CC40194或74LS194,两者功能相同,可互换使用,其逻辑符号及引脚排列如图7-1所示。 图7-1 CC40194的逻辑符号及引脚功能 其中 D0、D1、D2、D3为并行输入端;Q0、Q1、Q2、Q3为并行输出端;S R为右移串行输 C为直接无条件清零端;CP为时入端,S L为左移串行输入端;S1、S0为操作模式控制端;R 钟脉冲输入端。 CC40194有5种不同操作模式:即并行送数寄存,右移(方向由Q0→Q3),左移(方向由Q3→Q0),保持及清零。 S1、S0和R C端的控制作用如表7-1。

2、移位寄存器应用很广,可构成移位寄存器型计数器;顺序脉冲发生器;串行累加器;可用作数据转换,即把串行数据转换为并行数据,或把并行数据转换为串行数据等。本实验研究移位寄存器用作环形计数器和数据的串、并行转换。 (1)环形计数器 把移位寄存器的输出反馈到它的串行输入端,就可以进行循环移位, 如图7-2所示,把输出端 Q3和右移串行输入端S R 相连接,设初始状态Q0Q1Q2Q3=1000,则在时钟脉冲作用下Q0Q1Q2Q3将依次变为0100→0010→0001→1000→……,如表7-2所示,可见它是一个具有四个有效状态的计数器,这种类型的计数器通常称为环形计数器。图7-2 电路可以由各个输出端输出在时间上有先后顺序的脉冲,因此也可作为顺序脉冲发生器。 图 7-2 环形计数器 如果将输出Q O与左移串行输入端S L相连接,即可达左移循环移位。 (2)实现数据串、并行转换 ①串行/并行转换器 串行/并行转换是指串行输入的数码,经转换电路之后变换成并行输出。 图7-3是用二片CC40194(74LS194)四位双向移位寄存器组成的七位串/并行数据转换电路。

相关主题