文档库 最新最全的文档下载
当前位置:文档库 › 单片机数据存储空间分配

单片机数据存储空间分配

单片机数据存储空间分配
单片机数据存储空间分配

单片机数据存储空间分配日期: 2007-03-20 10:39

1、 data区空间小,所以只有频繁用到或对运算速度要求很高的变量才放到data区内,比如for循环中的计数值。

2、 data区内最好放局部变量。

因为局部变量的空间是可以覆盖的(某个函数的局部变量空间在退出该函数是就释放,由别的函数的局部变量覆盖),可以提高内存利用率。当然静态局部变量除外,其内存使用方式与全局变量相同;

3、确保你的程序中没有未调用的函数。

在Keil C里遇到未调用函数,编译器就将其认为可能是中断函数。函数里用的局部变量的空间是不释放,也就是同全局变量一样处理。这一点Keil C做得很愚蠢,但也没办法。

4、程序中遇到的逻辑标志变量可以定义到bdata中,可以大大降低内存占用空间。

在51系列芯片中有16个字节位寻址区bdata,其中可以定义8*16=128个逻辑变量。定义方法是: bdata bit LedState;但位类型不能用在数组和结构体中。

5、其他不频繁用到和对运算速度要求不高的变量都放到xdata区。

6、如果想节省data空间就必须用large模式,将未定义内存位置的变量全放到xdata 区。当然最好对所有变量都要指定内存类型。

7、当使用到指针时,要指定指针指向的内存类型。在C51中未定义指向内存类型的通用指针占用3个字节;而指定指向data区的指针只占1个字节;指定指向xdata区的指针占2个字节。如指针p是指向data区,则应定义为: char data *p;。还可指定指针本身的存放内存类型,如:char data * xdata p;。其含义是指针p指向data区变量,而其本身存放在xdata区。

查看全文 | (已有0条评论) 查看评论发表评论

鲜花:0朵送鲜花便便:0坨扔便便

单片机原理日期: 2007-03-20 10:37

单片机原理

随着大规模集成电路的出现及其发展,将计算的 CPU 、 RAM 、 ROM 、定时 / 计数器和多种 I/O接口集成在一片芯片上,形成芯片级的计算机,因此单片机早期的含义称为单片微型计算机,直译为单片机。

一、单片机的特点:

1 、具有优异的性能价格比

2 、集成度高、体积小、可靠性高

3 、控制功能强

4 、低电压、低功耗

二、单片机的应用:

1 、在智能仪器仪表中的应用:在各类仪器仪表中引入单片机,使仪器仪表智能化,提高测试的自动化程度和精度,简化仪器仪表的硬件结构,提高其性能价格比。

2 、在机电一体化中的应用:机电一体化产品是指集机械、微电子技术、计算机技术于一本,具有智能化特征的电子产品。

3 、在实时过程控制中的应用:用单片机实时进行数据处理和控制,使系统保持最佳工作状态,提高系统的工作效率和产品的质量。

4 、在人类生活中的应用:目前国外各种家用电器已普通采用单片机代替传统的控制电路。

5 、在其它方面的应用:单片机除以上各方面的应用,它还广泛应用于办公自动化领域、商业营销领域、汽车及通信、计算机外部设备、模糊控制等各领域中。

三、单片机的基本组成:

它由 CPU 、存储器(包括 RAM 和 ROM )、 I/O 接口、定时 / 计数器、中断控制功能等均集成在一块芯片上,片内各功能通过内部总线相互连接起来。

1.输入 / 输出引脚 P0 、 P1 、 P2 、 P3 的功能:

P0.0~P0 。 7 : P0 口是一个 8 位漏极开路型双向 I/O 端口。在访问片外存储器时,它分时作低 8 位地址和 8 位双向数据总线用。在 EPROM 编程时,由 P0 输入指令字节,而在验证程序时,则输出指令字节。验证程序时,要求外接上拉电阻。 P0 能以吸收电流的方式驱动 8 个 LSTTL 负载。

P1. 0 ~P1. 7 ( 1~8 脚): P1 是一上带内部上拉电阻的 8 位双向 I/O 口。在EPROM 编程和验证程序时,由它输入低 8 位地址。 P1 能驱动 4 个 LSTTL 负载。在8032/8052 中, P1. 0 还相当于专用功能端 T2 ,即定时器的计数触发输入端; P1. 1 还相当于专用功能端 T2EX ,即定时器 T2 的外部控制端。

P2.0~P2.7 ( 21~28 脚): P2 也是一上带内部上拉电阻的 8 位双向 I/O 口。在访问外部存储器时,由它输出高 8 位地址。在对 EPROM 编程和程序验证时,由它输入高 8 位地址。 P2 可以驱动 4 个 LSTTL 负载。

P3. 0 ~P3. 7 ( 10~17 脚): P3 也是一上带内部上拉电阻的双向 I/O 口。在MCS-51 中,这 8 个引脚还用于专门的第二功能。 P3 能驱动 4 个 LSTTL 负载。

P3. 0 RXD (串行口输入)

P3. 1 TXD (串行口输出)

P3. 2 INT0 (外部中断 0 输入)

P3. 3 INT1 (外部中断 1 输入)

P3. 4 T0 (定时器 0 的外部输入)

P3. 5 T1 (定时器 1 的外部输入)

P3. 6 WR (片外数据存储器写选通)

P3. 7 RD (片外数据存储器读选通)

四.MCS-51 的寻址方式:

1 、立即寻址如: MOV A , #40H

2 、直接寻址如: MOV A , 3AH

3 、寄存器寻址如: MOV A , Rn

4 、寄存器间接寻址如: MOV A , @Rn

5 、基址加变址寻址如: MOVC A , @A+DPTR

6 、相对寻址如: SJMP 08H

7 、位寻址 MOV 20H , C

五.指令:

MOV :片内 RAM 传送

MOVX :片外 RAM 传送

MOVC : ROM 传送

XCH :交换(和 A 交换)

SWAP : A 内半字节交换

ADD :不带进位加

ADDC :带进位加

SUBB :带进位减

INC :加 1

DEC :减 1

MUL :乘法

DIV :除法

DAA :调整

六.计数初值的计算

定时或计数方式下计数初值如何确定,定时器选择不同的工作方式,不同的操作模式其计数值均不相同。若设最大计数值为 M ,各操作模式下的 M 值为:

模式 0 : M=2 13 =8192

模式 1 : M=2 16 =65536

模式 2 : M=2 8 =256

模式 3 : M=256 ,定时器 T0 分成 2 个独立的 8 位计数器,所以

TH0 、 TL0 的M 均为 256 。

因为 MCS-51 的两个定时器均为加 1 计数器,当初到最大值( 00H 或0000H )时产生溢出,将 TF 位置 1 ,可发出溢出中断,因此计数器初值 X 的计算式为:X=M- 计数值式中的 M 由操作模式确定,不同的操作模式计数器的长不相同,故 M值也不相同。而式中的计数值与定时器的工作方式有关。

1 、计数工作方式时

计数工作方式时,计数脉冲由外部引入,是对外部冲进行计数,因此计数值根据要求确定。其计数初值: X=M- 计数值

例如:某工序要求对外部脉冲信号计 100 次, X=M-100

2 、定时工作方式时

定时工作方式时,因为计数脉冲由内部供给,是对机器周期进行计数,故计数脉冲频率为f cont =f osc ×

1/12 、计数周期 T=1/f cont =12/f osc 定时工作方式的计数初值 X 等于:X=M- 计数值 =M-t/T=M- ( f osc × t ) /12 式中: f osc 为振荡器的振荡频率, t 为要求定时的时间。

定时器有两种工作方式:即定时和计数工作方式。由 TMOD 的 D6 位和 D2 位选择,其中 D6 位选择

T1 的工作方式, D2 位选择 T0 的工作方式。 =0 工作在定时方式, =1工作在计数方式。并有四种操作模式:

1 、模式 0 : 13 位计数器, TLi 只用低 5 位。

2 、模式 1 : 16 位计数器。

3 、模式 2 : 8 位自动重装计数器, THi 的值在计数中不变, TLi 溢出时, THi 中的值自动装入

TLi 中。

4 、模式 3 : T0 分成 2 个独立的 8 位计数器, T1 停止计数。

七.MCS-51 有 5 个中断源,可分为 2 个中断优先级,即高优先级和低优先级,

中断自然优先级:

外部中断 0

定时器 0 中断

外部中断 1

定时器 1 中断

串行口中断

定时器 2 中断

( 1 )同级或高优先级的中断正在进行中;

( 2 )现在的机器周期还不是执行指令的最后一上机器周期,即正在执行的指令还没完成前不响应任何中断;

( 3 )正在执行的是中断返回指令 RET1 或是访问专用寄存器 IE 或 IP 的指令,换而言之,在 RETI

或者读写 IE 或 IP 之后,不会马上响应中断请求,至少要在执行其它一要指令之扣才会响应。

(一)CPU 响应中断的条件有:

( 1 )有中断源发出中断请求;

( 2 )中断总允许位 EA=1 ,即 CPU 开中断;

( 3 )申请中断的中断源的中断允许位为 1 ,即没有被屏蔽。

(二)串行口工作方式及帧格式:

MCS-51 单片机串行口可以通过软件设置四种工作方式:

方式 0:这种工作方式比较特殊,与常见的微型计算机的串行口不同,它又叫同步移位寄存器输出方式。在这种方式下,数据从RXD 端串行输出或输入,同步信号从 TXD 端输出,波特率固定不变,为振荡率的 1/12 。该方式是以 8位数据为一帧,没有起始位和停止位,先发送或接收最低位。

方式 2 :采用这种方式可接收或发送 11 位数据,以 11 位为一帧,比方式 1增加了一个数据位,其余相同。第 9 个数据即 D8 位具有特别的用途,可以通过软件搂控制它,再加特殊功能寄存器SCON 中的 SM2 位的配合,可使 MCS-51 单

片机串行口适用于多机通信。方式 2 的波特率固定,只有两种选择,为振荡率的 1/64 或1/32 ,可由 PCON 的最高位选择。

方式 3 :方式 3 与方式 2 完全类似,唯一的区别是方式 3 的小组特率是可变的。而帧格式与方式 2- 为 11 位一帧。所以方式 3 也适合于多机通信

查看全文 | (已有0条评论) 查看评论发表评论

鲜花:0朵送鲜花便便:0坨扔便便

串行接口SPI接口应用设计日期: 2006-09-30 00:00

使用的同步串行三线SPI接口,可以方便的连接采用SPI通信协议的外围或另一片AVR单片机,实现在短距离内的高速同步通信。ATmega128的SPI采用硬件方式实现面向字节的全双工3线同步通信,支持主机、从机和2种不同极性的SPI时序,通信速率有7种选择,主机方式的最高速率为1/2系统时钟,从机方式最高速率为1/4系统时钟。

ATmega128单片机内部的SPI接口也被用于程序存储器和数据E2PROM的编程下载和上传。但特别需要注意的是,此时SPI的MOSI和MISO接口不再对应PB2、PB3引脚,而是转换到PE0、PE1引脚上(PDI、PDO),其详见第二章中关于程序存储器的串行编程和校验部分的内容。

ATmega128的SPI为硬件接口和传输完成中断申请,所以使用SPI传输数据的有效方法是采用中断方式+数据缓存器的设计方法。在对SPI初始化时,应注意以下几点:

.正确选择和设置主机或从机,以及工作模式(极性),数据传输率;

.注意传送字节的顺序,是低位优先(LSB First)还是高位优先(MSB Frist);

.正确设置MOSI和MISO接口的输入输出方向,输入引脚使用上拉电阻,可以节省总线上的吊高电阻。

下面一段是SPI主机方式连续发送(接收)字节的例程:

#define SIZE 100

unsigned char SPI_rx_buff[SIZE];

unsigned char SPI_tx_buff[SIZE];

unsigned char rx_wr_index,rx_rd_index,rx_counter,rx_buffer_overflow;

unsigned char tx_wr_index,tx_rd_index,tx_counter;

#pragma interrupt_handler spi_stc_isr:18

void spi_stc_isr(void)

{

SPI_rx_buff[rx_wr_index] = SPDR; //从ISP口读出收到的字节

if (++rx_wr_index == SIZE) rx_wr_index = 0; //放入接收缓冲区,并调整队列

if (++rx_counter == SIZE)

{

rx_counter = 0;

rx_buffer_overflow = 1;

}

if (tx_counter) //如果发送缓冲区中有待发的数据

{

--tx_counter;

SPDR = SPI_tx_buff[tx_rd_index]; //发送一个字节数据,并调整指针

if (++tx_rd_index == SIZE) tx_rd_index = 0;

}

}

unsigned char getSPIchar(void)

{

unsigned char data;

while (rx_counter == 0); //无接收数据,等待

data = SPI_rx_buff[rx_rd_index]; //从接收缓冲区取出一个SPI收到的数据 if (++rx_rd_index == SIZE) rx_rd_index = 0; //调整指针

CLI();

--rx_counter;

SEI();

return data;

}

void putSPIchar(char c)

{

while (tx_counter == SIZE);//发送缓冲区满,等待

CLI();

if (tx_counter || ((SPSR & 0x80) == 0))//发送缓冲区已中有待发数据

{ //或SPI正在发送数据时

SPI_tx_buffer[tx_wr_index] = c; //将数据放入发送缓冲区排队

if (++tx_wr_index == SIZE) tx_wr_index = 0; //调整指针

++tx_counter;

else

SPDR = c; //发送缓冲区中空且SPI口空闲,直接放入SPDR由SIP口发送 SEI();

}

void spi_init(void)

{

unsigned chat temp;

DDRB |= 0x080; //MISO=input and MOSI,SCK,SS = output

PORTB |= 0x80; //MISO上拉电阻有效

SPCR = 0xD5; //SPI允许,主机模式,MSB,允许SPI中断,极性方式01,1/16系统时钟速率

SPSR = 0x00;

temp = SPSR;

temp = SPDR; //清空SPI,和中断标志,使SPI空闲

}

void main(void)

{

unsigned char I;

CLI(); //关中断

spi_init(); //初始化SPI接口

SEI(); //开中断

while()

{

putSPIchat(i); //发送一个字节

i++;

getSPIchar(); //接收一个字节(第一个字节为空字节)

………

}

}

这个典型的SPI例程比较简单,主程序中首先对ATmega128的硬件SPI进行初始化。在初始化过程中,将PORTB的MOSI、SCLK和SS引脚作为输出,同时将MISO作为输入引

脚,并打开上拉电阻。接着对SPI的寄存器进行初始化设置,并空读一次SPSR、SPDR寄存器(读SPSR后再对SPDR操作将自动清零SPI中断标志自动清零),使ISP空闲等待发送数据。

AVR的SPI由一个16位的循环移位寄存器构成,当数据从主机方移出时,从机的数据同时也被移入,因此SPI的发送和接收在一个中断服务中完成。在SPI中断服务程序中,先从SPDR中读一个接收的字节存入接收数据缓冲器中,再从发送数据缓冲器取出一个字节写入SPDR中,由ISP发送到从机。数据一旦写入SPDR,ISP硬件开始发送数据。下一次ISP中断时,表示发送完成,并同时收到一个数据。类似本章介绍的USART接口的使用,程序中putSPIchar()和getSPIchar()为应用程序的底层接口函数(SPI驱动程序是SPI 中断服务程序),同时也使用了两个数据缓冲器,分别构成循环队列。这种程序设计的思路,不但程序的结构性完整,同时也适当的解决了高速MCU和低速串口之间的矛盾,实现程序中任务的并行运行,提高了MCU的运行效率。

本例程是通过SPI批量输出、输入数据的示例,用户可以使用一片ATmega128,将其MOSI和MISO两个引脚连接起来,构成一个ISP接口自发自收的系统,对程序进行演示验证。需要注意,实际接收到的字节为上一次中断时发出的数据,即第一个收到的字节是空字节。

读懂和了解程序的处理思想,读者可以根据需要对程序进行改动,适合实际系统的使用。如在实际应用中外接的从机是一片SPI接口的温度芯片,协议规程为:主机先要连续发送3个字节的命令,然后从机才返回一个字节的数据。那么用户程序可以先循环调用putSPIchar()函数4次,将3个字节的命令和一个字节的空数据发送到从机,然后等待一段时间,或处理一些其它的操作后,再循环调用getSPIchar()函数4次,从接收数据缓冲器中连续读取4个字节,放弃前3个空字节,第4个字节即为从机的返回数据了。

查看全文 | (已有0条评论) 查看评论发表评论

鲜花:0朵送鲜花便便:0坨扔便便

AT24c256读写日期: 2006-06-10 00:00

/* 以下为AT24C01~AT24C256的读写程序,各人可根据自己的需要应用。

在buf1中填入需要写入的内容,buf2的大小可根据需要定义。

addr可根据使用的芯片选择,可从任何位置读写,只要在该芯片的范围内。

enumer=ATxxx,根据使用的芯片赋值。各函数中的形式参数不需改变。

本程序只要在调用的程序中定义实际参数即可,下述各子程序不必改动。*/

#include

#include

#include \"UART.H\"

#define ERROR 10 //允许ERROR的最大次数

sbit SDA=P2^0;

sbit SCL=P2^1;

enum eepromtype

{AT2401,AT2402,AT2404,AT2408,AT2416,AT2432,AT2464,AT24128,AT24256};/*器件的型号*/

enum eepromtype enumer; //定义一个枚举变量

unsigned char code buf1

[]={\'A\',\'B\',\'C\',\'D\',\'E\',\'F\',\'G\',\'H\',\'I\',\'J\'}; /* 发送缓冲区 */

unsigned char buf2 [10]; /* 接收缓冲区 */

/* 一个通用的24C01-24C256共9种EEPROM的字节读写操作程序,

此程序有五个入口条件,分别为读写数据缓冲区指针,

进行读写的字节数,EEPROM首址,EEPROM控制字节,

以及EEPROM类型。此程序结构性良好,具有极好的容错性,程序机器码也不多: DataBuff为读写数据输入/输出缓冲区的首址

Length 为要读写数据的字节数量

Addr 为EEPROM的片内地址 AT24256为0~32767

Control 为EEPROM的控制字节,具体形式为(1)(0)(1)(0)(A2)(A1)(A0)(R/W),其中R/W=1, 表示读操作,R/W=0为写操作,A2,A1,A0为EEPROM的页选或片选地址;

enumer为枚举变量,需为AT2401至AT24256中的一种,分别对应AT24C01至AT24C256;

函数返回值为一个位变量,若返回1表示此次操作失效,0表示操作成功;

ERROR为允许最大次数,若出现ERRORCOUNT次操作失效后,则函数中止操作,并返回1 SDA和SCL由用户自定义,这里暂定义为P3^0和P3^1; */

/*对于1K位,2K位,4K位,8K位,16K位芯片采用一个8位长的字节地址码,对于32K 位以上

的采用2个8位长的字节地址码直接寻址,而4K位,8K位,16K位配合页面地址来寻址*/

/* ----- AT24C01~AT24C256 的读写程序------ */

bit RW24xx(unsigned char *DataBuff,unsigned char Length,unsigned int Addr,

unsigned char Control,enum eepromtype enumer)

{ void Delay(unsigned char DelayCount); /* 延时 */

void Start(void); /* 启动总线 */

void Stop(void); /* 停止IIC总线 */

bit RecAck(void); /* 检查应答位 */

void NoAck(void); /* 不对IIC总线产生应答 */

void Ack(void); /* 对IIC总线产生应答 */

unsigned char Receive(void); /* 从IIC总线上读数据子程序 */

void Send(unsigned char sendbyte); /* 向IIC总线写数据 */

unsigned char data j,i=ERROR;

bit errorflag=1; /* 出错标志 */

while(i--)

{ Start(); /* 启动总线 */

Send(Control & 0xfe); /* 向IIC总线写数据,器件地址 */

if(RecAck()) continue; /* 如写不正确结束本次循环 */

if(enumer > AT2416)

{ Send((unsigned char)(Addr >> 8));//把整型数据转换为字符型数据:弃高取低,只取低8位.如果容量大于32K位,使用16位地址寻址,写入高八位地址

if(RecAck()) continue;

}

Send((unsigned char)Addr); /* 向IIC总线写数据 */

if(RecAck()) continue; /* 如写正确结束本次循环 */

if(!(Control & 0x01)) //判断是读器件还是写器件

{ j=Length;

errorflag=0; /* 清错误特征位 */

while(j--)

{ Send(*DataBuff++); /* 向IIC总线写数据 */

if(!RecAck()) continue; /* 如写正确结束本次循环 */

errorflag=1;

break;

}

if(errorflag==1) continue;

break;

}

else

{ Start(); /* 启动总线 */

Send(Control); /* 向IIC总线写数据 */

if(RecAck()) continue;//器件没应答结束本次本层循环

while(--Length) /* 字节长为0结束 */

{ *DataBuff ++= Receive();

send_data(*(DataBuff-1));

Ack(); /* 对IIC总线产生应答 */

}

*DataBuff=Receive(); /* 读最后一个字节 */

send_data(*DataBuff);

NoAck(); /* 不对IIC总线产生应答 */

errorflag=0;

break;

}

}

Stop(); /* 停止IIC总线 */

if(!(Control & 0x01))

{ Delay(255); Delay(255); Delay(255); Delay(255);

}

return(errorflag);

}

/* * * * * 以下是对IIC总线的操作子程序 * * * * */

/* * * * * * 启动总线 * * * * */

void Start(void)

{ SCL=0; /* SCL处于高电平时,SDA从高电平转向低电平表示 */

SDA=1; /* 一个\"开始\"状态,该状态必须在其他命令之前执行 */ SCL=1;

_nop_(); _nop_(); _nop_();

SDA=0;

_nop_(); _nop_(); _nop_(); _nop_();

SCL=0;

SDA=1;

}

/* * * * * 停止IIC总线 * * * * */

void Stop(void)

{ SCL=0; /*SCL处于高电平时,SDA从低电平转向高电平 */

SDA=0; /*表示一个\"停止\"状态,该状态终止所有通讯 */

SCL=1;

_nop_(); _nop_(); _nop_(); /* 空操作 */

SDA=1;

_nop_(); _nop_(); _nop_();

SCL=0;

}

/* * * * * 检查应答位 * * * * */

bit RecAck(void)

{ SCL=0;

SDA=1;

SCL=1;

_nop_(); _nop_(); _nop_(); _nop_();

CY=SDA; /* 因为返回值总是放在CY中的 */

SCL=0;

return(CY);

}

/* * * * *对IIC总线产生应答 * * * * */

void Ack(void)

{ SDA=0; /* EEPROM通过在收到每个地址或数据之后, */

SCL=1; /* 置SDA低电平的方式确认表示收到读SDA口状态 */ _nop_(); _nop_(); _nop_(); _nop_();

SCL=0;

_nop_();

SDA=1;

}

/* * * * * * * * * 不对IIC总线产生应答 * * * * */

void NoAck(void)

{ SDA=1;

SCL=1;

_nop_(); _nop_(); _nop_(); _nop_();

SCL=0;

}

/* * * * * * * * * 向IIC总线写数据 * * * * */

void Send(unsigned char sendbyte)

{ unsigned char data j=8;

for(;j>0;j--)

{ SCL=0;

sendbyte <<= 1; /* 使CY=sendbyte^7; */

SDA=CY; /* CY 进位标志位 */

SCL=1;

}

SCL=0;

}

/* * * * * * * * * 从IIC总线上读数据子程序 * * * * */ unsigned char Receive(void)

{ register receivebyte,i=8;

SCL=0;

while(i--)

{ SCL=1;

receivebyte = (receivebyte <<1 ) | SDA;

SCL=0;

}

return(receivebyte);

}

/* * * * * * * * 一个简单延时程序 * * * * * * * * * * * * */ void Delay(unsigned char DelayCount)

{ while(DelayCount--);

}

/* ----- AT24C01~AT24C256 的读写程序------ */

void main()

{ unsigned char Control,*p1,*p2;

unsigned char Length;

unsigned int addr ; /* 24Cxx片内地址 */

p1=buf1;p2=buf2;

UART_init();

addr=0; /* 片内地址 AT24C256为0~32767 */

Length=8; /* 读写长度 */

enumer=AT24256; /* 读写AT24C256 */

Control=0xa0; /* 写操作 */

RW24xx(p1,Length,addr,Control,enumer); /* 写 */

Control=0xa1; /* 读操作 */

RW24xx(p2,Length-2,addr+2,Control,enumer); /* 读 */

}

查看全文 | (已有0条评论) 查看评论发表评论

鲜花:0朵送鲜花便便:0坨扔便便

串口通讯日期: 2006-05-29 00:00

#include\"reg52.h\"

//12m-------------0xe6 2400 smod=1

//11.0592--------0xe8 2400 smod=1

//12m-------4800------0xf3 smod=1

//11.0592---4800-----0xf4 smod=1

void send_data(unsigned char dat);

void UART_init()

{

TMOD=0x20; //记数方式2

TL1=0xf3;

TH1=0xf3; //9600波特率

SCON=0x50; //方式3,TB8为1

PCON=0x80;

TR1=1; //启动定时器T1

TI=1;

}

void printf(char *p)

{

while(*p!=\'\\n\')

{

send_data(*p++);

}

send_data(0x0a);

send_data(0x0d);

}

void send_data(unsigned char dat)

{

SBUF=dat;

TI=0;

while(TI==0);

}

void main(void)

{

unsigned int i;

UART_init();

while (1) {

P1 ^= 0x01; /* Toggle P1.0 each time we print */ for(i=0;i<40000;i++);

printf (\"Hello World \\n\"); /* Print \"Hello World\" */

printf (\"you are my best friend \\n\");

}

}

查看全文 | (已有0条评论) 查看评论发表评论

鲜花:0朵送鲜花便便:0坨扔便便

华方卓越日期: 2006-04-01 00:00

http://218.106.165.186/Circuit/2080.html

查看全文 | (已有0条评论) 查看评论发表评论

鲜花:0朵送鲜花便便:0坨扔便便

FPGA设计的四种常用思想与技巧日期: 2006-04-01 00:00

FPGA设计的四种常用思想与技巧

[日期:2005-11-14] 来源:《电子工程专辑》作者:王诚吴蕾 [字体:大中小]

本文讨论的四种常用FPGA/CPLD设计思想与技巧:乒乓操作、串并转换、流水线操作、数据接口同步化,都是FPGA/CPLD逻辑设计的内在规律的体现,合理地采用这些设计思想能在FPGA/CPLD设计工作种取得事半功倍的效果。

FPGA/CPLD的设计思想与技巧是一个非常大的话题,由于篇幅所限,本文仅介绍一些常用的设计思想与技巧,包括乒乓球操作、串并转换、流水线操作和数据接口的同步方法。希望本文能引起工程师们的注意,如果能有意识地利用这些原则指导日后的设计工作,将取得事半功倍的效果!

乒乓操作

“乒乓操作”是一个常常应用于数据流控制的处理技巧,典型的乒乓操作方法如图1所示。

乒乓操作的处理流程为:输入数据流通过“输入数据选择单元”将数据流等时分配到两个数据缓冲区,数据缓冲模块可以为任何存储模块,比较常用的存储单元为双口

RAM(DPRAM)、单口RAM(SPRAM)、FIFO等。在第一个缓冲周期,将输入的数据流缓存到“数据缓冲模块1”;在第2个缓冲周期,通过“输入数据选择单元”的切换,将输入的数据流缓存到“数据缓冲模块2”,同时将“数据缓冲模块1”缓存的第1个周期数据通过“输

入数据选择单元”的选择,送到“数据流运算处理模块”进行运算处理;在第3个缓冲周期通过“输入数据选择单元”的再次切换,将输入的数据流缓存到“数据缓冲模块1”,同时将“数据缓冲模块2”缓存的第2个周期的数据通过“输入数据选择单元”切换,送到“数据流运算处理模块”进行运算处理。如此循环。

乒乓操作的最大特点是通过“输入数据选择单元”和“输出数据选择单元”按节拍、相互配合的切换,将经过缓冲的数据流没有停顿地送到“数据流运算处理模块”进行运算与处理。把乒乓操作模块当做一个整体,站在这个模块的两端看数据,输入数据流和输出数据流都是连续不断的,没有任何停顿,因此非常适合对数据流进行流水线式处理。所以乒乓操作常常应用于流水线式算法,完成数据的无缝缓冲与处理。

乒乓操作的第二个优点是可以节约缓冲区空间。比如在WCDMA基带应用中,1个帧是由15个时隙组成的,有时需要将1整帧的数据延时一个时隙后处理,比较直接的办法是将这帧数据缓存起来,然后延时1个时隙进行处理。这时缓冲区的长度是1整帧数据长,假设数据速率是3.84Mbps,1帧长10ms,则此时需要缓冲区长度是38400位。如果采用乒乓操作,只需定义两个能缓冲1个时隙数据的RAM(单口RAM即可)。当向一块RAM写数据的时候,从另一块RAM读数据,然后送到处理单元处理,此时每块RAM的容量仅需2560

位即可,2块RAM加起来也只有5120位的容量。

另外,巧妙运用乒乓操作还可以达到用低速模块处理高速数据流的效果。如图2所示,数据缓冲模块采用了双口RAM,并在DPRAM后引入了一级数据预处理模块,这个数据预处理可以根据需要的各种数据运算,比如在WCDMA设计中,对输入数据流的解扩、解扰、去旋转等。假设端口A的输入数据流的速率为100Mbps,乒乓操作的缓冲周期是10ms。以下分析各个节点端口的数据速率。

A端口处输入数据流速率为100Mbps,在第1个缓冲周期10ms内,通过“输入数据选择单元”,从B1到达DPRAM1。B1的数据速率也是100Mbps,DPRAM1要在10ms内写入1Mb 数据。同理,在第2个10ms,数据流被切换到DPRAM2,端口B2的数据速率也是100Mbps,DPRAM2在第2个10ms被写入1Mb数据。在第3个10ms,数据流又切换到DPRAM1,DPRAM1被写入1Mb数据。

仔细分析就会发现到第3个缓冲周期时,留给DPRAM1读取数据并送到“数据预处理模块1”的时间一共是20ms。有的工程师困惑于DPRAM1的读数时间为什么是20ms,这个时间是这样得来的:首先,在在第2个缓冲周期向DPRAM2写数据的10ms内,DPRAM1可以进行读操作;另外,在第1个缓冲周期的第5ms起(绝对时间为5ms时刻),DPRAM1就可以

一边向500K以后的地址写数据,一边从地址0读数,到达10ms时,DPRAM1刚好写完了

1Mb数据,并且读了500K数据,这个缓冲时间内DPRAM1读了5ms;在第3个缓冲周期的第5ms起(绝对时间为35ms时刻),同理可以一边向500K以后的地址写数据一边从地址0读数,又读取了5个ms,所以截止DPRAM1第一个周期存入的数据被完全覆盖以前,DPRAM1最多可以读取20ms时间,而所需读取的数据为1Mb,所以端口C1的数据速率为:

1Mb/20ms=50Mbps。因此,“数据预处理模块1”的最低数据吞吐能力也仅仅要求为50Mbps。同理,“数据预处理模块2”的最低数据吞吐能力也仅仅要求为50Mbps。换言之,通过乒乓操作,“数据预处理模块”的时序压力减轻了,所要求的数据处理速率仅仅为输入数据速率的1/2。

通过乒乓操作实现低速模块处理高速数据的实质是:通过DPRAM这种缓存单元实现了数据流的串并转换,并行用“数据预处理模块1”和“数据预处理模块2”处理分流的数据,是面积与速度互换原则的体现!

串并转换设计技巧

串并转换是FPGA设计的一个重要技巧,它是数据流处理的常用手段,也是面积与速度互换思想的直接体现。串并转换的实现方法多种多样,根据数据的排序和数量的要求,可以选用寄存器、RAM等实现。前面在乒乓操作的图例中,就是通过DPRAM实现了数据流的串并转换,而且由于使用了DPRAM,数据的缓冲区可以开得很大,对于数量比较小的设计可以采用寄存器完成串并转换。如无特殊需求,应该用同步时序设计完成串并之间的转换。比如数据从串行到并行,数据排列顺序是高位在前,可以用下面的编码实现:

prl_temp<={prl_temp,srl_in};

其中,prl_temp是并行输出缓存寄存器,srl_in是串行数据输入。对于排列顺序有规定的串并转换,可以用case语句判断实现。对于复杂的串并转换,还可以用状态机实现。串并转换的方法比较简单,在此不必赘述。

流水线操作设计思想

首先需要声明的是,这里所讲述的流水线是指一种处理流程和顺序操作的设计思想,并非FPGA、ASIC设计中优化时序所用的“Pipelining”。

流水线处理是高速设计中的一个常用设计手段。如果某个设计的处理流程分为若干步骤,而且整个数据处理是“单流向”的,即没有反馈或者迭代运算,前一个步骤的输出是

下一个步骤的输入,则可以考虑采用流水线设计方法来提高系统的工作频率。

流水线设计的结构示意图如图3所示。其基本结构为:将适当划分的n个操作步骤单流向串联起来。流水线操作的最大特点和要求是,数据流在各个步骤的处理从时间上看是连续的,如果将每个操作步骤简化假设为通过一个D触发器(就是用寄存器打一个节拍),那么流水线操作就类似一个移位寄存器组,数据流依次流经D触发器,完成每个步骤的操作。流水线设计时序如图4所示。

流水线设计的一个关键在于整个设计时序的合理安排,要求每个操作步骤的划分合理。如果前级操作时间恰好等于后级的操作时间,设计最为简单,前级的输出直接汇入后级的输入即可;如果前级操作时间大于后级的操作时间,则需要对前级的输出数据适当缓存才能汇入到后级输入端;如果前级操作时间恰好小于后级的操作时间,则必须通过复制逻辑,将数据流分流,或者在前级对数据采用存储、后处理方式,否则会造成后级数据溢出。

在WCDMA设计中经常使用到流水线处理的方法,如RAKE接收机、搜索器、前导捕获等。流水线处理方式之所以频率较高,是因为复制了处理模块,它是面积换取速度思想的又一种具体体现。

数据接口的同步方法

数据接口的同步是FPGA/CPLD设计的一个常见问题,也是一个重点和难点,很多设计不稳定都是源于数据接口的同步有问题。

在电路图设计阶段,一些工程师手工加入BUFT或者非门调整数据延迟,从而保证本级模块的时钟对上级模块数据的建立、保持时间要求。还有一些工程师为了有稳定的采样,生成了很多相差90度的时钟信号,时而用正沿打一下数据,时而用负沿打一下数据,用以调整数据的采样位置。这两种做法都十分不可取,因为一旦芯片更新换代或者移植到其它芯片组的芯片上,采样实现必须从新设计。而且,这两种做法造成电路实现的余量不够,一旦外界条件变换(比如温度升高),采样时序就有可能完全紊乱,造成电路瘫痪。

下面简单介绍几种不同情况下数据接口的同步方法: 1. 输入、输出的延时(芯片间、PCB布线、一些驱动接口元件的延时等)不可测,或者有可能变动的条件下,如何完成数据同步?

单片机程序存储空间和数据存储空间详解

创作编号: GB8878185555334563BT9125XW 创作者:凤呜大王* 单片机程序程序存储空间(ROM)和数据存储空间(RAM)详解 问题:STC89C52RC单片机:8K字节程序存储空间,512字节数据存储空间,内带2K 字节EEPROM存储空间;它们分别存的是什么? 8K的程序存储空间是存储代码,也就是你写的程序生成的HEX文件的,相当于电脑系统的C盘。 512字节相当于内存,存储空间存储变量,像u8 x,y,z,u32 a之类的临时变量掉电后数据丢失。 2K eeprom相当于电脑系统的硬盘,数据写入后掉电不丢失。主要是单片机在运行的过程中写入数据或者读取数据。像设置的闹铃值,设置好了就不用每次都去设置了,保存在单片机里面,即使掉电了,设置的数据也不会丢失,只需单片机上电再读取就好了。 单片机原理及系统结构 在此先详细分析51单片的存储器结构和寻址方法,再分析片外存储器的扩展,最后给出设计原理并分析系统结构。

图一:存储空间分布 51单片机存储器结构分析 8051单片机的存储器在物理结构上分为程序存储器空间和数据存储器空间,共有4个存储空间:片内程序存储器、片外程序存储器以及片内数据存储器、片外数据存储器空间。 这种程序存储和数据存储分开的结构形式被称为哈佛结构。MCS-51使用哈弗结构,它的程序空间和数据空间是分开编址的,即各自有各自的地址空间,互不重叠。所以即使地址一样,但因为分开编址,所以依然要说哪一个空间内的某地址。而ARM (甚至是x86)这种冯诺依曼结构的MCU/CPU,它的地址空间是统一并且连续的,代码存储器/RAM/CPU寄存器,甚至PC机的显存,都是统一编址的,只是不同功能的存储器占据不同的地址块,各自为政。 MCS-51单片机存储器的配置特点 ①内部集成了4K的程序存储器ROM; ②内部具有256B的数据存储器RAM(用户空间+SFR空间); ③可以外接64K的程序存储器ROM和数据存储器RAM。 从物理结构的角度讲,51单片机的存储系统可以分为四个存储空间:既片内ROM,RAM和片外ROM、RAM。 从逻辑结构上看(既编程的角度),可以分为三个不同的空间: (1)片内、片外统一编址的64KB的程序存储器地址空间:0000H~FFFFH(用16位地址);,其中0000H~0FFFH为片内4KB的ROM地址空间,1000H~FFFFH为

单片机存储器

单片机存储器 1. MCS-51单片机的存贮器有程序存贮器ROM和数据存贮器RAM 之分。由于外部程序存贮器和外部数据存贮器的地址可以重迭,所以我们说MCS-51单片机的寻址空间为2×64KB=128KB ,不过要注意:“片外程序存贮器和片外数据存贮器,根据实际需要也可以合并成一个统一的地址空间,此时最大寻址空间为64KB而不是128KB了。” 对外部程序存贮器的写操作是由编程器完成,而对其读操作则是由读选通控制信号/PSEN( Program Store Enable)再配以读操作指令MOVC来完成。也就是由MOVC指令产生信号/PSEN,从而对片外程序存储器进行读操作。 对外部数据存贮器的写操作是由写选通控制信号/WR再配以指令MOVX来完成,而对其读操作则是由读选通控制信号/RD再配以MOVX 来完成。也就是由指令MOVX指令产生/WR或/RD信号,从而对片外RAM进行写或读操作。 2. 程序存贮器ROM MCS-51单片机中设有一个片内、片外程序存贮器选择控制信号/EA(External Access)。 MCS-51单片 机程序存储器 示意图

如果使/EA=1,则片内、片外程序存贮器ROM统一编址为64KB。系统复位后,将先执行片内存贮器ROM中的程序。当PC中内容超过OFFFH或1FFFH时,将自动转到执行片外程序存贮器中的程序。片内程序存储器空间为0000H~0FFFH或0000H~1FFFH,片外程序存储器空间的地址不能与片内程序存储器空间地址相重迭。至于具体执行哪里的程序完全取决于PC值。 如果使/EA=0,则只执行片外程序存贮器的程序,其地址空间为0000H~FFFFH 。换言之,如果片内无程序存贮器ROM或不想访问片内程序存贮器ROM,则必须使/EA=0 。 注意:当系统复位时PC内容为0000H ,这意味着程序的执行总要从0000H单元开始,但用户程序又不能从0000H开始存放。这是因为在程序存储器中有7个非常特殊的、固定的单元,这些单元所存放的内容是有特定要求的。 0000H单元:存放一条跳转指令,从而使用户程序自跳转地址处开始存放。 0003H单元:存放外部中断0的中断服务程序的入口地址。(/INT0)000BH单元:存放定时器/计数器0溢出的中断服务程序的入口地址。(T0) 0013H单元:存放外部中断1的中断服务程序的入口地址。(/INT1)001BH单元:存放定时器/计数器1溢出的中断服务程序的入口地址。(T1) 0023H单元:存放串行口中断服务程序的入口地址。(串口) 002BH单元:存放定时器/ 计数器2溢出的中断服务程序的入口地

大数据存储方式概述

大数据存储方式概述 随着信息社会的发展,越来越多的信息被数据化,尤其是伴随着Internet的发展,数据呈爆炸式增长。从存储服务的发展趋势来看,一方面,是对数据的存储量的需求越来越大,另一方面,是对数据的有效管理提出了更高的要求。首先是存储容量的急剧膨胀,从而对于存储服务器提出了更大的需求;其次是数据持续时间的增加。最后,对数据存储的管理提出了更高的要求。数据的多样化、地理上的分散性、对重要数据的保护等等都对数据管理提出了更高的要求。随着数字图书馆、电子商务、多媒体传输等用的不断发展,数据从GB、TB 到PB量级海量急速增长。存储产品已不再是附属于服务器的辅助设备,而成为互联网中最主要的花费所在。海量存储技术已成为继计算机浪潮和互联网浪潮之后的第三次浪潮,磁盘阵列与网络存储成为先锋。 一、海量数据存储简介 海量存储的含义在于,其在数据存储中的容量增长是没有止境的。因此,用户需要不断地扩张存储空间。但是,存储容量的增长往往同存储性能并不成正比。这也就造成了数据存储上的误区和障碍。海量存储技术的概念已经不仅仅是单台的存储设备。而多个存储设备的连接使得数据管理成为一大难题。因此,统一平台的数据管理产品近年来受到了广大用户的欢迎。这一类型产品能够整合不同平台的存储设备在一个单一的控制界面上,结合虚拟化软件对存储资源进行管理。这样的产品无疑简化了用户的管理。 数据容量的增长是无限的,如果只是一味的添加存储设备,那么无疑会大幅增加存储成本。因此,海量存储对于数据的精简也提出了要求。同时,不同应用对于存储容量的需求也有所不同,而应用所要求的存储空间往往并不能得到充分利用,这也造成了浪费。 针对以上的问题,重复数据删除和自动精简配置两项技术在近年来受到了广泛的关注和追捧。重复数据删除通过文件块级的比对,将重复的数据块删除而只留下单一实例。这一做法使得冗余的存储空间得到释放,从客观上增加了存储容量。 二、企业在处理海量数据存储中存在的问题 目前企业存储面临几个问题,一是存储数据的成本在不断地增加,如何削减开支节约成本以保证高可用性;二是数据存储容量爆炸性增长且难以预估;三是越来越复杂的环境使得存储的数据无法管理。企业信息架构如何适应现状去提供一个较为理想的解决方案,目前业界有几个发展方向。 1.存储虚拟化 对于存储面临的难题,业界采用的解决手段之一就是存储虚拟化。虚拟存储的概念实际上在早期的计算机虚拟存储器中就已经很好地得以体现,常说的网络存储虚拟化只不过是在更大规模范围内体现存储虚拟化的思想。该技术通过聚合多个存储设备的空间,灵活部署存储空间的分配,从而实现现有存储空间高利用率,避免了不必要的设备开支。 存储虚拟化的好处显而易见,可实现存储系统的整合,提高存储空间的利用率,简化系统的管理,保护原有投资等。越来越多的厂商正积极投身于存储虚拟化领域,比如数据复制、自动精简配置等技术也用到了虚拟化技术。虚拟化并不是一个单独的产品,而是存储系统的一项基本功能。它对于整合异构存储环境、降低系统整体拥有成本是十分有效的。在存储系统的各个层面和不同应用领域都广泛使用虚拟化这个概念。考虑整个存储层次大体分为应用、文件和块设备三个层次,相应的虚拟化技术也大致可以按这三个层次分类。 目前大部分设备提供商和服务提供商都在自己的产品中包含存储虚拟化技术,使得用户能够方便地使用。 2.容量扩展 目前而言,在发展趋势上,存储管理的重点已经从对存储资源的管理转变到对数据资源

常见单片机及性能比较

MCS51、C8051F、A VR、PIC、MSP430单片机性能比较 引言: 单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能集成到一块硅片上构成的一个小而完善的计算机系统。 八位单片机由于内部构造简单,体积小,成本低廉,在一些较简单的控制器中应用很广。即便到了本世纪,在单片机应用中,仍占有相当的份额。由于八位单片机种类繁多,本文仅将常用的几种在性能上作一个简单的比较。 正文: 一、MCS51 应用最广泛的八位单片机首推Intel的51系列,由于产品硬件结构合理,指令系统规范,加之生产历史“悠久”,有先入为主的优势。世界有许多著名的芯片公司都购买了51芯片的核心专利技术,并在其基础上进行性能上的扩充,使得芯片得到进一步的完善,形成了一个庞大的体系,直到现在仍在不断翻新,把单片机世界炒得沸沸扬扬。有人推测,51芯片可能最终形成事实上的标准MCU芯片。 MCS-51系列单片机主要包括8031、8051和8751等通用产品,其主要功能如下: ?8位CPU ?4kbytes 程序存储器(ROM) ?128bytes的数据存储器(RAM) ?32条I/O口线 ?111条指令,大部分为单字节指令 ?21个专用寄存器 ?2个可编程定时/计数器 ?5个中断源,2个优先级 ?一个全双工串行通信口 ?外部数据存储器寻址空间为64kB ?外部程序存储器寻址空间为64kB ?逻辑操作位寻址功能 ?双列直插40PinDIP封装 ?单一+5V电源供电 MCS-51以其典型的结构和完善的总线专用寄存器的集中管理,众多的逻辑位操作功能及面向控制的丰富的指令系统,堪称为一代“名机”,为以后的其它单片机的发展奠定了基础。正因为其优越的性能和完善的结构,导致后来的许多厂商多沿用或参考了其体系结构,有许多世界大的电气商丰富和发展了MCS-51单片机,象PHILIPS、Dallas、A TMEL等著名的半导体公司都推出了兼容MCS-51的单片机产品,就连我国的台湾WINBOND公司也发展了兼容C51(人们习惯将MCS-51简称C51,如果没有特别声明,二者同指MCS-51系列单片机)的单片机品种。 51系列优点之一是它从内部的硬件到软件有一套完整的按位操作系统,称作位处理器,或布尔处理器。它的处理对象不是字或字节而是位。它不光能对片内某些特殊功能寄存器的某位进行处理,如传送、置位、清零、测试等,还能进行位的逻辑运算,其功能十分完备,使用起来得心应手。虽然其他种类的单片机也具有位处理功能,但能进行位逻辑运算的实属少见。51系列在片内RAM区间还特别开辟了一个双重功能的地址区间,十六个字节,单元地

存储器的发展史

1.存储器设备发展之汞延迟线是基于汞在室温时是液体,同时又是导体,每比特数据用机械波的波峰(1)和波谷(0)表示。 机械波从汞柱的一端开始,一定厚度的熔融态金属汞通过一振动膜片沿着纵向从一端传到另一端,这样就得名“汞延迟线”。 在管的另一端,一传感器得到每一比特的信息,并反馈到起点。 设想是汞获取并延迟这些数据,这样它们便能存储了。 这个过程是机械和电子的奇妙结合。 缺点是由于环境条件的限制,这种存储器方式会受各种环境因素影响而不精确。 1950年,世界上第一台具有存储程序功能的计算机EDVAC由冯.诺依曼博士领导设计。 它的主要特点是采用二进制,使用汞延迟线作存储器,指令和程序可存入计算机中。 1951年3月,由ENIAC的主要设计者莫克利和埃克特设计的第一台通用自动计算机UNIVAC-I交付使用。 它不仅能作科学计算,而且能作数据处理。 2.存储器设备发展之磁带UNIVAC-I第一次采用磁带机作外存储器,首先用奇偶校验方法和双重运算线路来提高系统的可靠性,并最先进行了自动编程的试验。 磁带是所有存储器设备发展中单位存储信息成本最低、容量最大、标准化程度最高的常用存储介质之 一。 它互换性好、易于保存,近年来,由于采用了具有高纠错能力的编码技术和即写即读的通道技术,大大提高了磁带存储的可靠性和读写速度。

根据读写磁带的工作原理可分为螺旋扫描技术、线性记录(数据流)技术、DLT技术以及比较先进的LTO技术。 根据读写磁带的工作原理,磁带机可以分为六种规格。 其中两种采用螺旋扫描读写方式的是面向工作组级的DAT(4mm)磁带机和面向部门级的8mm磁带机,另外四种则是选用数据流存储技术设计的设备,它们分别是采用单磁头读写方式、磁带宽度为1/4英寸、面向低端应用的Travan和DC系列,以及采用多磁头读写方式、磁带宽度均为1/2英寸、面向高端应用的DLT和IBM的3480/3490/3590系列等。 磁带库是基于磁带的备份系统,它能够提供同样的基本自动备份和数据恢复功能,但同时具有更先进的技术特点。 它的存储容量可达到数百PB,可以实现连续备份、自动搜索磁带,也可以在驱动管理软件控制下实现智能恢复、实时监控和统计,整个数据存储备份过程完全摆脱了人工干涉。 磁带库不仅数据存储量大得多,而且在备份效率和人工占用方面拥有无可比拟的优势。 在网络系统中,磁带库通过SAN(Storage Area Network,存储区域网络)系统可形成网络存储系统,为企业存储提供有力保障,很容易完成远程数据访问、数据存储备份或通过磁带镜像技术实现多磁带库备份,无疑是数据仓库、ERP等大型网络应用的良好存储设备。 3.存储器设备发展之磁鼓1953年,随着存储器设备发展,第一台磁鼓应用于IBM 701,它是作为内存储器使用的。 磁鼓是利用铝鼓筒表面涂覆的磁性材料来存储数据的。 鼓筒旋转速度很高,因此存取速度快。 它采用饱和磁记录,从固定式磁头发展到浮动式磁头,从采用磁胶发展到采用电镀的连续磁介质。 这些都为后来的磁盘存储器打下了基础。

海量空间数据存储技术研究.

海量空间数据存储技术研究作者:作者单位:唐立文,宇文静波唐立文(装备指挥技术学院试验指挥系北京 101416,宇文静波(装备指挥技术学院装备指挥系北京 101416 相似文献(10条 1.期刊论文戴海滨.秦勇.于剑.刘峰.周慧娟铁路地理信息系统中海量空间数据组织及分布式解决方案 -中国铁道科学2004,25(5 铁路地理信息系统采用分布式空间数据库系统和技术实现海量空间数据的组织、管理和共享.提出中心、分中心、子中心三层空间数据库分布存储模式,实现空间数据的全局一致和本地存放.铁路基础图库主要包括不同比例尺下的矢量和栅格数据.空间数据库的访问和同步采用复制和持久缓存.复制形成主从数据库结构,从数据库逻辑上是主数据库全部或部分的镜象.持久缓存是在本地形成对远程空间数据的部分缓存,本地所有的请求都通过持久缓存来访问. 2.学位论文骆炎民基于XML的WebGIS及其数据共享的研究 2003 随着计算机技术、网络通信技术、地球空间技术的发展,传统的GIS向着信息共享的WebGIS发展,WebGIS正成为大众化的信息工具,越来越多的 Web站点提供空间数据服务。但我们不得不面对这样的一个现实:数以万计的Web站点之间无法很好地沟通和协作,很难通过浏览器访问、处理这些分布于Web的海量空间数据;而且由于行业政策和数据安全的原因,这些空间资源

大多是存于特定的GIS系统和桌面应用中,各自独立、相对封闭,从而形成空间信息孤岛,难以满足Internet上空间信息决策所需的共享的需要。此外,从地理空间信息处理系统到地理空间信息基础设施和数字地球,地理空间信息共享是它们必须解决的核心问题之一。因此,对地理空间信息共享理论基础及其解决方案的研究迫在眉睫;表达、传输和显示不同格式空间数据,实现空间信息共享是数字地球建设的关键技术之一,GIS技术正在向更适合于Web的方向发展。本文着重于探索新的网络技术及其在地理信息领域中的应用。 3.学位论文马维峰面向Virtual Globe的异构多源空间信息系统体系结构与关键技术 2008 GIS软件技术经过30多年的发展,取得了巨大发展,但是随着GIS应用和集成程度的深入、Internet和高性能个人计算设备的普及,GIS软件技术也面临着诸多新的问题和挑战,主要表现为:GIS封闭式的体系结构与IT主流信息系统体系结构脱节,GIS与其他IT应用功能集成、数据集成困难;基于地图 (二维数据的数据组织和表现方式不适应空间信息应用发展的需求;表现方式单一,三维表现能力不足。现有GIS基础平台软件的设计思想、体系结构和数据组织已经不适应GIS应用发展的要求,尤其不能适应“数字地球”、“数字城市”、“数字区域”建设中对海量多源异构数据组织和管理、数据集成、互操作、应用集成、可视化和三维可视化的需求。 Virtual Globe 是目前“数字地球”最主要的软件实现技术,Vtrtual Globe通过三维可视化引擎,在用户桌面显示一个数字地球的可视化平台,用户可以通过鼠标、键盘操作在三维空间尺度对整个地球进行漫游、缩放等操作。随着Google Earth的普及,Virtual Globe已成为空间数据发布、可视化、表达、集成的一个重要途径和手段。 Virtual Globe技术在空间数据表达、海量空间数据组织、应用集成等方面对GIS软件技术具有重要的参考价值:从空间数据表达和可视化角度,基于Virtual Globe的空间信息可视化方式是GIS软件二维电子地图表达方式的最好替代者,其空间表达方式可以作为基于地图表达方式的数字化天然替代,对于GIS基础平台研究具有重要借鉴意义;从空间数据组织角度,Virtual Globe技术打破了以图层为基础的空间数据组织方式,为解决全球尺度海量数据的分布式存取提供了新的思路;从应用集成和空间数据互操作角度,基于VirtualGlobe的组件化GIS平台可以提供更好的与其他IT系统与应用的集成方式。论文在现有理论和技术基础上,借鉴和引入

单片机存储器类型介绍

单片机存储器类型详解 分为两大类RAM和ROM,每一类下面又有很多子类: RAM:SRAM SSRAM DRAM SDRAM ROM:MASK ROM OTP ROM PROM EPROM EEPROM FLASH Memory RAM:Random Access Memory随机访问存储器 存储单元的内容可按需随意取出或存入,这种存储器在断电时将丢失其存储内容,故主要用于存储短时间使用的程序。它的特点就是是易挥发性(volatile),即掉电失忆。我们常说的电脑内存就是RAM的。 ROM:Read Only Memory只读存储器 ROM 通常指固化存储器(一次写入,反复读取),它的特点与RAM相反。 RAM和ROM的分析对比: 1、我们通常可以这样认为,RAM是单片机的数据存储器,这里的数据包括内部数据存储器(用户RAM区,可位寻址区和工作组寄存器)和特殊功能寄存器SFR,或是电脑的内存和缓存,它们掉电后数据就消失了(非易失性存储器除外,比如某些数字电位器就是非易失性的)。 ROM是单片机的程序存储器,有些单片机可能还包括数据存储器,这里的数据指的是要保存下来的数据,即单片机掉电后仍然存在的数据,比如采集到的最终信号数据等。而RAM 这个数据存储器只是在单片机运行时,起一个暂存数据的作用,比如对采集的数据做一些处理运算,这样就产生中间量,然后通过RAM暂时存取中间量,最终的结果要放到ROM的数据存储器中。如下图所示:

2、ROM在正常工作状态下只能从中读取数据,不能快速的随时修改或重新写入数据。它的优点是电路结构简单,而且在断电以后数据不会丢失。缺点是只适用于存储那些固定数据的场合。 RAM与ROM的根本区别是RAM在正常工作状态下就可以随时向存储器里写入数据或从中读取数据。 SRAM:Static RAM静态随机访问存储器 它是一种具有静止存取功能的内存,不需要刷新电路即能保存它内部存储的数据。不像DRAM内存那样需要刷新电路,每隔一段时间,固定要对DRAM刷新充电一次,否则内部的数据即会消失,因此SRAM具有较高的性能,但是SRAM也有它的缺点,即它的集成度较低,相同容量的DRAM内存可以设计为较小的体积,但是SRAM却需要很大的体积,所以在主板上SRAM存储器要占用一部分面积。 优点:速度快,不必配合内存刷新电路,可提高整体的工作效率。 缺点:集成度低,功耗较大,相同的容量体积较大,而且价格较高,少量用于关键性系统以提高效率。 DRAM:Dynamic RAM动态随机访问存储器 DRAM 只能将数据保持很短的时间。为了保持数据,DRAM使用电容存储,所以必须隔一段时间刷新(refresh)一次,如果存储单元没有被刷新,存储的信息就会丢失。 既然内存是用来存放当前正在使用的(即执行中)的数据和程序,那么它是怎么工作的呢? 我们平常所提到的计算机的内存指的是动态内存(即DRAM),动态内存中所谓的“动态”,

海量空间数据组织及存储方案

本栏目责任编辑:代影数据库与信息管理Computer Knowledge and Technology 电脑知识与技术第6卷第29期(2010年10月)海量空间数据组织及存储方案 李慧玲 (长治学院计算机系,山西长治046011) 摘要:目前信息管理系统中需要存储的数据越来越多,而且数据的结构也变的越来越复杂。那么如何来组织和存储数据就变得很重要。该文以土地档案海量数据为例,从数据的存储方式、空间数据引擎以及利用关系数据库三个方面进行说明MAPGIS 是如何组织和管理海量空间数据的。 关键词:GIS 技术;海量空间数据;图档一体化 中图分类号:TP311文献标识码:A 文章编号:1009-3044(2010)29-8168-02 Organization and Storage Solutions of Massive Spatial Data LI Hui-ling (Computer Science Department,Changzhi University,Changzhi 046011,China) Abstract:The current information management systems need to store more data,and data structure becomes more and more complex.So how to organize and store data becomes very important.This land mass data files,for example,from the data is stored,spatial data and the use of relational database engines are described from three aspects that MAPGIS is how to organize and manage massive spatial data.Key words:GIS technology;massive spatial data;integration of drawing and files 现阶段,档案管理正在从以纸质档案管理为主逐步向以纸质档案管理和电子档案管理并重发展转变。随着信息化程度的提高,档案管理最终将以电子档案管理为主。土地档案的数据越来越多,而且除了海量属性数据之外,还有图形数据等等,那么如何来更好的存储这些海量空间数据才是真正的解决土地档案管理问题。本文利用GIS 技术和采用关系数据库结合的方式从三方面叙述并解决了这个问题,并能实现图档一体化管理。 1数据在GIS 中是如何存储的 目前,数据的存储方式有以下三种:1)GIS 数据是通过文件与关系数据库两者的结合来共同存储和管理的。当前大部分GIS 应用软件都是采用这种方式来对数据进行管理的。2)GIS 应用软件中的所有数据都存储在文件中。所谓的文件存储也就是将所有的数据包括空间数据和非空间数据都存储在一个或者多个文件中。3)采用数据库来存储和管理空间数据和属性数据的方式。通过这种方式来存储数据,包括空间数据和属性数据,即空间数据也可存放在数据库中。利用数据库来存储海量空间数据,这是GIS 应用软件发展的必然趋势。通过数据库来存储空间数据,解决了用文件存储空间数据时,对数据不能进行并发操作的缺点;用C/S (Client/Server)的操作模式,解决了以前空间数据不能进行分布式处理等问题。它从理论上保证了数据的完整性和数据的共享性,实现了属性数据和空间数据的一体化存储。利用关系数据库来存储空间数据将GIS 本身的问题转移到数据库的领域中,给开发GIS 应用软件的开发带来了新的解决方向[1]。就目前的形势,大型数据库厂商越来越重视空间数据的存储,通过研究与摸索,大型数据库厂商各自推出了自己的关于空间数据存储的解决方案,如0racle Satial ,B lade,Informix Satial 。GIS 技术的发展在这些厂商对于空间数据存储的支持下,有了更广阔的应用前景。无论采用哪种模式建立GIS 系统,通过利用0rac1e 的空间数据存储技术,在开发GIS 产品中,都可以跳过传统GIS 平台开发时所需要的一些必要的步骤,解决了大型空间数据不能多人维护数据的问题。另外数据库本身自带的一些特点,可以解决GIS 存在的一些问题:比如说数据库可支持多用户并发操作,克服了文件方式不能多用户同时操作数据的缺点,同时由于数据库的支持克服了以前由于不同GIS 厂商之间数据文件格式不同,导致的空间数据从一个GIS 平台移植到另外一个GIS 平台上数据处理的复杂性,从而保证空间数据能够做到完全意义上的共享,提高了GIS 系统的可用性和实用性[2]。这样GIS 平台的发展加上数据库技术的提高,两者的结合可以很好的解决土地档案海量空间数据的存储问题。 2SDE SDE 中文全称是,空间数据引擎。现在市场上的数据库几乎都是利用关系原理建立的,可是GIS 管理数据强调空间性以及拓扑关系,明显GIS 数据是不能直接存储在这些数据库中的,更不能对其进行查询了。所以要结合两者,并利用各自的优势,就要有一个中间件来联系数据库和GIS 系统。MAPGIS 就是在关系数据库的基础上,增加了联系二者的纽带?—空间数据引擎(SDE),空间数据引擎将客户端接收到的空间数据、属性数据的查询、添加、修改等操作转换成数据库中的关系操作。同时SDE 还优化了对数据库的操作,而且SDE 为系统管理员或客户端提供了GIS 的概念模型,利用SDE ,可以直接以GIS 的概念对数据进行维护和权限管理,使用户脱离了关系数据库中许多繁琐的细节等。空间数据引擎还增加了关系数据库中实现不了一些功能,对数据进行自动检查和维护功能,如拓扑一致性检查等。当然近些年来,关系数据库也在不断的更新和发展,其技术也慢慢地成熟起来,实现了利用关系数据库对空间数据和属性数据进行一体化管理和存储,这种现象已经成为GIS 平台发展的一个趋势。空间数据引擎(Satial Data Engine),收稿日期:2010-08-15 ISSN 1009-3044 Computer Knowledge and Technology 电脑知识与技术Vol.6,No.29,October 2010,pp.8168-8169E-mail:jslt@https://www.wendangku.net/doc/8f782057.html, https://www.wendangku.net/doc/8f782057.html, Tel:+86-551-569096356909648168

51单片机存储器的结构

MCS-51单片机在物理结构上有四个存储空间: 1、片程序存储器 2、片外程序存储器 3、片数据存储器 4、片外数据存储器 但在逻辑上,即从用户的角度上,8051单片机有三个存储空间: 1、片外统一编址的64K的程序存储器地址空间(MOVC) 2、256B的片数据存储器的地址空间(MOV) 3、以及64K片外数据存储器的地址空间(MOVX) 在访问三个不同的逻辑空间时,应采用不同形式的指令(具体我们在后面的指令系统学习时将会讲解),以产生不同的存储器空间的选通信号。 程序存ROM 寻址围:0000H ~ FFFFH 容量64KB EA = 1,寻址部ROM;EA = 0,寻址外部ROM 地址长度:16位 作用:存放程序及程序运行时所需的常数。 七个具有特殊含义的单元是: 0000H ——系统复位,PC指向此处; 0003H ——外部中断0入口 000BH ——T0溢出中断入口 0013H ——外中断1入口 001BH ——T1溢出中断入口 0023H ——串口中断入口 002BH ——T2溢出中断入口 部数据存储器RAM 物理上分为两大区:00H ~ 7FH即128BRAM 和SFR区。 作用:作数据缓冲器用。 下图是8051单片机存储器的空间结构图

程序存储器 一个微处理器能够聪明地执行某种任务,除了它们强大的硬件外,还需要它们运行的软件,其实微处理器并不聪明,它们只是完全按照人们预先编写的程序而执行之。那么设计人员编写的程序就存放在微处理器的程序存储器中,俗称只读程序存储器(ROM)。程序相当于给微处理器处理问题的一系列命令。其实程序和数据一样,都是由机器码组成的代码串。只是程序代码则存放于程序存储器中。 MCS-51具有64kB程序存储器寻址空间,它是用于存放用户程序、数据和表格等信息。对于部无ROM 的8031单片机,它的程序存储器必须外接,空间地址为64kB,此时单片机的端必须接地。强制CPU从外部程序存储器读取程序。对于部有ROM的8051等单片机,正常运行时,则需接高电平,使CPU先从部的程序存储中读取程序,当PC值超过部ROM的容量时,才会转向外部的程序存储器读取程序。 当=1时,程序从片ROM开始执行,当PC值超过片ROM容量时会自动转向外部ROM空间。 当=0时,程序从外部存储器开始执行,例如前面提到的片无ROM的8031单片机,在实际应用中就要把8031的引脚接为低电平。 8051片有4kB的程序存储单元,其地址为0000H—0FFFH,单片机启动复位后,程序计数器的容为000 0H,所以系统将从0000H单元开始执行程序。但在程序存储中有些特殊的单元,这在使用中应加以注意:其中一组特殊是0000H—0002H单元,系统复位后,PC为0000H,单片机从0000H单元开始执行程序,如果程序不是从0000H单元开始,则应在这三个单元中存放一条无条件转移指令,让CPU直接去执行用户指定的程序。 另一组特殊单元是0003H—002AH,这40个单元各有用途,它们被均匀地分为五段,它们的定义如下:0003H—000AH 外部中断0中断地址区。 000BH—0012H 定时/计数器0中断地址区。 0013H—001AH 外部中断1中断地址区。 001BH—0022H 定时/计数器1中断地址区。 0023H—002AH 串行中断地址区。

基本单片机算法

算法(Algorithm):计算机解题的基本思想方法和步骤。算法的描述:是对要解决一个问题或要完成一项任务所采取的方法和步骤的描述,包括需要什么数据(输入什么数据、输出什么结果)、采用什么结构、使用什么语句以及如何安排这些语句等。通常使用自然语言、结构化流程图、伪代码等来描述算法。 一、计数、求和、求阶乘等简单算法 此类问题都要使用循环,要注意根据问题确定循环变量的初值、终值或结束条件,更要注意用来表示计数、和、阶乘的变量的初值。 例:用随机函数产生100个[0,99]范围内的随机整数,统计个位上的数字分别为1,2,3,4,5,6,7,8,9,0的数的个数并打印出来。 本题使用数组来处理,用数组a[100]存放产生的确100个随机整数,数组x[10]来存放个位上的数字分别为1,2,3,4,5,6,7,8,9,0的数的个数。即个位是1的个数存放在x[1]中,个位是2的个数存放在x[2]中,……个位是0的个数存放在x[10]。 void main() { int a[101],x[11],i,p; for(i=0;i<=11;i++) x[i]=0; for(i=1;i<=100;i++) { a[i]=rand() % 100; printf("%4d",a[i]); if(i%10==0)printf("\n"); } for(i=1;i<=100;i++) { p=a[i]%10; if(p==0) p=10; x[p]=x[p]+1; } for(i=1;i<=10;i++) { p=i; if(i==10) p=0; printf("%d,%d\n",p,x[i]); } printf("\n"); } 二、求两个整数的最大公约数、最小公倍数 分析:求最大公约数的算法思想:(最小公倍数=两个整数之积/最大公约数) (1)对于已知两数m,n,使得m>n; (2) m除以n得余数r;

空间数据基本理论

1.空间地理数据的基本特征 要完整地描述空间实体或现象的状态,一般需要同时有空间数据和属性数据。如果要描述空间实体或的变化,则还需记录空间实体或现象在某一个时间的状态。所以,一般认为空间数据具有三个基本特征: ⑴空间特征表示现象的空间位置或现在所处的地理位置。空间特征又称为几何特征或定位特征,一般以坐标数据表示。 ⑵属性特征表示现象的特征,例如变量、分类、数量特征和名称等等。 ⑶时间特征指现象或物体随时间的变化。 位置数据和属性数据相对于时间来说,常常呈相互独立的变化,即在不同的时间,空间位置不变,但是属性类型可能已经发生变化,或者相反。因此,空间数据的管理是十分复杂的。 有效的空间数据管理要求位置数据和非位置数据互相作为单独的变量存放,并分别采用不同的软件来处理这两类数据。这种数据组织方法,对于随时间而变化的数据,具有更大的灵活性。 2.如何在计算机内部用数字形式描述客观事物或现象 对地理信息进行数字化描述,就是要使计算机能够识别地理事物的形状,为此,必须精确地指出空间模式如何处理,如何显示等。在计算机内描述空间实体有两种形式:显式描述和隐式描述。在计算机中的显式表示,就是栅格中的一系列像元。隐式表示是由一系列定义了始点和终点的线及某种连接关系来描述。 计算机对地理实体的显式描述也称栅格数据结构,计算机对地理实体的隐式描述也称矢量数据结构。栅格和矢量结构是计算机描述空间实体的两种最基本的方式。 在栅格数据结构中,整个地理空间被规则地分为一个个小块(通常为正方形),地理实体的位置是由占据小块的横排与竖列的位置决定,小块的位置则由其横排竖列的数码决定,每个地理实体的形态是由栅格或网格中的一组点来构成。

磁盘存储器管理习题分析

1、系统中磁头停留在磁道号为100的磁道上,这时先后有4个进程提出了磁盘访问请求,要访问磁盘的磁道号按申请到达的先后顺序依次为:55、120、39、110。移动臂的运动方向:沿磁道号递减的方向移动。若分别采用FCFS磁盘调度算法、SSTF算法、SCAN算法时,所需寻道长度分别为多少? FCFS算法:100-55+ 120-55+ 120-39+ 110-39 = 262 SSTF算法:110-100 +120-110 + 120-55 + 55-39 = 101 SCAN算法: 100-55+ 55-39 +110-39 + 120-110 = 142 2、假设磁盘有200个磁道,磁盘请求队列中是一些随机请求,它们照到达的次序分别处于55、58、39、18、90、160、150、38、184号磁道上,当前磁头在100号磁道上,并向磁道号增加的方向上移动。请给出按FCFS、SSTF、SCAN及CSCAN算法进行磁盘调度时满足请求的次序,并计算它们的平

1、在FAT16文件系统中,且每个盘块的大小是512字节, 1)如果每个簇可以有4个盘块,可以管理的最大分区空间是多少? 2)如果每个簇可以有64个盘块,可以管理的最大分区空间又是多少? 答: 1)216 * 4 * 512 = 128M 2)216 * 64 * 512 = 2G 2、某操作系统的磁盘文件空间共有500块,若用字长为32位的位示图管理盘块空间,试问: 1)位示图需要多少个字? 2)如果b(盘块号), i, j从1开始计数,第i字第j位对应的块号是多少? 3)如果b(盘块号), i, j 从0开始计数,第i字第j位对应的块号是多少? 答: 1)[500/32] =16 2) b = 32* (i-1) +j 3)b= 32*i+j 3、有3200个磁盘块可用来存储信息,如果用字长为16位的字来构造位示图,若位示图部分内容如图所示。 1)位示图共需多少个字? 2)若某文件长度为3200B,每个盘块为512个字节,采用链接结构且盘块从1开始计数,系统将为 其分配哪些磁盘块? 3)试具体说明分配过程。 4)若要释放磁盘的第300块,应如何处理? 1)3200/16=200 2)3200/512 =7 ; 20、24、25、26、27、37和38 3)顺序检索位示图,从中找到第一个值为0的二进制位,得到行号i=2,列号j=4 ;计算出找到的第一个盘块是 B1 = (2-1)*16+4=20 第二个值为0的二进制位,得到行号i=2,列号j=8. ;计算出找到的第一个盘块是 B2=(2-1)*16+8=24 …………. 修改位示图,令Map[2,4]=Map[2,8] = …..=1,并将对应块20、24……. 分配出去。 4)计算出磁盘第300块所对应的二进制位的行号i和列号j : i = (300-1)/16 + 1 = 19 j = (300-1)MOD16 + 1= 12 修改位示图,令Map[19,12]=0,表示对应块为空闲块。

绝对干货常用单片机优缺点详细剖析

绝对干货!常用单片机优缺点详细剖析 单片机现在可谓是铺天盖地,种类繁多,让开发者们应接不暇,发展也是相当的迅速,从上世纪80年代,由当时的4位8位发展到现在的各种高速单片机…… 各个厂商们也在速度、内存、功能上此起彼伏,参差不齐~~同时涌现出一大批拥有代表性单片机的厂商:Atmel、TI、ST、MicroChip、ARM…国内的宏晶STC单片机也是可圈可点… 下面为大家带来51、MSP430、TMS、STM32、PIC、AVR、STC单片机之间的优缺点比较及功能体现…… 51单片机应用最广泛的8位单片机当然也是初学者们最容易上手学习的单片机,最早由Intel推出,由于其典型的结构和完善的总线专用寄存器的集中管理,众多的逻辑位操作功能及面向控制的丰富的指令系统,堪称为一代“经典”,为以后的其它单片机的发展奠定了基础。 51单片机之所以成为经典,成为易上手的单片机主要有以下特点: 特性1. 从内部的硬件到软件有一套完整的按位操作系统,称作位处理器,处理对象不是字或字节而是位。不但能对片内某些特殊功能寄存器的某位进行处理,如传送、置位、清零、测试等,还能进行位的逻辑运算,其功能十分完备,使

用起来得心应手。 2. 同时在片内RAM区间还特别开辟了一个双重功能的地址区间,使用极为灵活,这一功能无疑给使用者提供了极大的方便, 3. 乘法和除法指令,这给编程也带来了便利。很多的八位单片机都不具备乘法功能,作乘法时还得编上一段子程序调用,十分不便。 缺点(虽然是经典但是缺点还是很明显的)1. AD、EEPROM 等功能需要靠扩展,增加了硬件和软件负担 2. 虽然I/O脚使用简单,但高电平时无输出能力,这也是 51系列单片机的最大软肋 3. 运行速度过慢,特别是双数据指针,如能改进能给编程带来很大的便利 4. 51保护能力很差,很容易烧坏芯片应用范围目前在教学 场合和对性能要求不高的场合大量被采用 使用最多的器件8051、80C51 MSP430单片机 MSP430系列单片机是德州仪器1996 年开始推向市场的一种16位超低功耗的混合信号处理器,给人们留下的最大的 亮点是低功耗而且速度快,汇编语言用起来很灵活,寻址方式 很多,指令很少,容易上手。主要是由于其针对实际应用需求,把许多模拟电路、数字电路和微处理器集成在一个芯片上,以提供“单片”解决方案。其迅速发展和应用范围的不断扩大,

存储器的发展史

1.存储器设备发展之汞延迟线 汞延迟线是基于汞在室温时是液体,同时又是导体,每比特数据用机械波的波峰(1)和波谷(0)表示。机械波从汞柱的一端开始,一定厚度的熔融态金属汞通过一振动膜片沿着纵向从一端传到另一端,这样就得名“汞延迟线”。在管的另一端,一传感器得到每一比特的信息,并反馈到起点。设想是汞获取并延迟这些数据,这样它们便能存储了。这个过程是机械和电子的奇妙结合。缺点是由于环境条件的限制,这种存储器方式会受各种环境因素影响而不精确。 1950年,世界上第一台具有存储程序功能的计算机EDVAC由冯.诺依曼博士领导设计。它的主要特点是采用二进制,使用汞延迟线作存储器,指令和程序可存入计算机中。 1951年3月,由ENIAC的主要设计者莫克利和埃克特设计的第一台通用自动计算机UNIVAC-I交付使用。它不仅能作科学计算,而且能作数据处理。 2.存储器设备发展之磁带 UNIVAC-I第一次采用磁带机作外存储器,首先用奇偶校验方法和双重运算线路来提高系统的可靠性,并最先进行了自动编程的试验。 磁带是所有存储器设备发展中单位存储信息成本最低、容量最大、标准化程度最高的常用存储介质之一。它互换性好、易于保存,近年来,由于采用了具有高纠错能力的编码技术和即写即读的通道技术,大大提高了磁带存储的可靠性和读写速度。根据读写磁带的工作原理可分为螺旋扫描技术、线性记录(数据流)技术、DLT技术以及比较先进的LTO技术。 根据读写磁带的工作原理,磁带机可以分为六种规格。其中两种采用螺旋扫描读写方式的是面向工作组级的DAT(4mm)磁带机和面向部门级的8mm磁带机,另外四种则是选用数据流存储技术设计的设备,它们分别是采用单磁头读写方式、磁带宽度为1/4英寸、面向低端应用的Travan和DC系列,以及采用多磁头读写方式、磁带宽度均为1/2英寸、面向高端应用的DLT和IBM的 3480/3490/3590系列等。 磁带库是基于磁带的备份系统,它能够提供同样的基本自动备份和数据恢复功能,但同时具有更先进的技术特点。它的存储容量可达到数百PB,可以实现连续备份、自动搜索磁带,也可以在驱动管理软件控制下实现智能恢复、实时监控和统计,整个数据存储备份过程完全摆脱了人工干涉。 磁带库不仅数据存储量大得多,而且在备份效率和人工占用方面拥有无可比拟的优势。在网络系统中,磁带库通过SAN(Storage Area Network,存储区域网络)系统可形成网络存储系统,为企业存储提供有力保障,很容易完成远程数据

利用单片机进行复杂函数计算的一种高精度算法

利用单片机进行复杂函数计算的一种高精度算法 作者:逯伟 来源:《现代电子技术》2013年第17期 摘要:单片机在移动设备中的应用越来越广泛,要求单片机具备的数据处理能力越来越强。但单片机的资源有限,如何让其能够解算复杂函数变得非常具有实际意义,也成为困扰许多专家的难题之一。介绍了一种在汇编环境下如何利用插值法与查表法相结合进行复杂三角函数运算的方法。利用这种算法可使三角函数的解算精度达到0.000 1,存储空间减小了97%,对有关内容进行了比较全面的阐述。此方法计算精度高、应用范围广、易掌握。 关键词:单片机;复杂函数计算;插值法;查表法 中图分类号: TN710?34 文献标识码: A 文章编号: 1004?373X(2013)17?0163?02 0 引言 在各种测量及控制中,通常都要求仪器体积小、便携,所以单片机在测量仪器中的应用日益广泛。现代工业仪器智能化要求越来越高,对复杂三角函数的计算量越来越大,以目前单片机所具有的资源和技术能力,要想达到上述要求,对技术人员的编程技巧要求是非常高的,工作量也非常庞大。基于以上原因,目前特别需要研究出一种对单片机资源要求低,易编程,又能保证很高计算精度要求的算法。 1 单片机处理数据的常见方法 单片机处理数据的方法有两种:浮点数和定点数。浮点数数据运算在汇编环境下编程复杂、运算量大,对内存容量要求高,且对单片机的运算速度有很高要求,这样普通51系列单片机无法满足复杂函数的计算。定点数在数据运算中运算量较小,编程简单,速度快,但是精度低,如何做到既不降低计算精度又能保证数据处理速度,成为复杂函数在51单片机使用技术中的一个难点。 2 基本原理 求解三角函数采用的是综合运用数学中的插值法和查表法。 单纯使用查表法求解三角函数值时,如果把0~90°每隔0.01°的函数值都存储在列表中,需要存9 000个函数值,一个函数值占两个字节,9 000个函数值就是18 000 B,如果精度要求更高所需的字节更大,程序非常庞大,还要占用很大的内存空间,一般51系列单片机的内存

相关文档