文档库 最新最全的文档下载
当前位置:文档库 › MMU工作原理以及S3C2440的MMU

MMU工作原理以及S3C2440的MMU

MMU工作原理以及S3C2440的MMU
MMU工作原理以及S3C2440的MMU

【转】MMU工作原理以及S3C2440的MMU

ARM 2011-01-16 19:53:53 阅读120 评论0 字号:大中小订阅

MMU,全称Memory Manage Unit, 中文名——存储器管理单元。许多年以前,当人们还在使用DOS或是更古老的操作系统的时候,计算机的内存还非常小,一般都是以K为单位进行计算,相应的,当时的程序规模也不大,所以内存容量虽然小,但还是可以容纳当时的程序。但随着图形界面的兴起还用用户需求的不断增大,应用程序的规模也随之膨胀起来,终于一个难题出现在程序员的面前,那就是应用程序太大以至于内存容纳不下该程序,通常解决的办法是把程序分割成许多称为覆盖块(overlay)的片段。覆盖块0首先运行,结束时他将调用另一个覆盖块。虽然覆盖块的交换是由OS完成的,但是必须先由程序员把程序先进行分割,这是一个费时费力的工作,而且相当枯燥。人们必须找到更好的办法从根本上解决这个问题。不久人们找到了一个办法,这就是虚拟存储器(virtual memory).虚拟存储器的基本思想是程序,数据,堆栈的总的大小可以超过物理存储器的大小,操作系统把当前使用的部分保留在内存中,而把其他未被使用的部分保存在磁盘上。比如对一个16MB的程序和一个内存只有4MB的机器,OS通过选择,可以决定各个时刻将哪4M的内容保留在内存中,并在需要时在内存和磁盘间交换程序片段,这样就可以把这个16M的程序运行在一个只具有4M内存机器上了。而

这个16M的程序在运行前不必由程序员进行分割。

任何时候,计算机上都存在一个程序能够产生的地址集合,我们称之为地址范围。这个范围的大小由CPU的位数决定,例如一个32位的CPU,它的地址范围是0~0xFFFFFFFF (4G),而对于一个64位的CPU,它的地址范围为0~0xFFFFFFFFFFFFFFFF (64T).这个范围就是我们的程序能够产生的地址范围,我们把这个地址范围称为虚拟地址空间,该空间中的某一个地址我们称之为虚拟地址。与虚拟地址空间和虚拟地址相对应的则是物理地址空间和物理地址,大多数时候我们的系统所具备的物理地址空间只是虚拟地址空间的一个子集,这里举一个最简单的例子直观地说明这两者,对于一台内存为256MB的32bit x86主机来说,它的虚拟地址空间范围是0~0xFFFFFFFF(4G),而物理地址空间范围是

0x000000000~0x0FFFFFFF (256MB)。

在没有使用虚拟存储器的机器上,虚拟地址被直接送到内存总线上,使具有相同地址的物理存储器被读写。而在使用了虚拟存储器的情况下,虚拟地址不是被直接送到内存地址总线上,而是送到内存管理单元——MMU(主角终于出现了:])。他由一个或一组芯片组成,一般存在与协处理器中,其功能是把虚拟地址映射为物理地址。大多数使用虚拟存储器的系统都使用一种称为分页(paging)。虚拟地址空间划分成称为页(page)的单位,而相应的物理地址空间也被进行划分,单位是页框(frame).页和页框的大小必须相同。接下来配

合图片我以一个例子说明页与页框之间在MMU的调度下是如何进行

映射的

在这个例子中我们有一台可以生成16位地址的机器,它的虚拟地址范围从0x0000~0xFFFF(64K),而这台机器只有32K的物理地址,因此他可以运行64K的程序,但该程序不能一次性调入内存运行。这台机器必须有一个达到可以存放64K程序的外部存储器(例如磁盘或是FLASH),以保证程序片段在需要时可以被调用。在这个例子中,页的大小为4K,页框大小与页相同(这点是必须保证的,内存和外围存储器之间的传输总是以页为单位的),对应64K 的虚拟地址和32K的物理存储器,他们分别包含了16个页和8个页框。我们先根据上图解释一下分页后要用到的几个术语,在上面我们已经

接触了页和页框,上图中绿色部分是物理空间,其中每一格表示一个物理页框。橘黄色部分是虚拟空间,每一格表示一个页,它由两部分组成,分别是Frame Index(页框索引)和位p(present 存在位),Frame Index的意义很明显,它指出本页是往哪个物理页框进行映射的,位p的意义则是指出本页的映射是否有效,如上图,当某个页并没有被映射时(或称“映射无效”,Frame Index部分为X),该位为

0,映射有效则该位为1。

我们执行下面这些指令(本例子的指令不针对任何特定机型,都是伪

指令)

例1:

MOVE REG,0 //将0号地址的值传递进寄存器REG.

虚拟地址0将被送往MMU,MMU看到该虚地址落在页0范围内(页0范围是0到4095),从上图我们看到页0所对应(映射)的页框为2(页框2的地址范围是8192到12287),因此MMU将该虚拟地址转化为物理地址8192,并把地址8192送到地址总线上。内存对MMU的映射一无所知,它只看到一个对地址8192的读请求并执行它。MMU从而把0到4096的虚拟地址映射到8192到12287的

物理地址。

例2:

MOVE REG,8192

被转换为

MOVE REG,24576

因为虚拟地址8192在页2中,而页2被映射到页框6(物理地址从

24576到28671)

例3:

MOVE REG,20500

被转换为

MOVE REG,12308

虚拟地址20500在虚页5(虚拟地址范围是20480到24575)距开头20个字节处,虚页5映射到页框3(页框3的地址范围是12288到16383),于是被映射到物理地址12288+20=12308。

通过适当的设置MMU,可以把16个虚页隐射到8个页框中的任何一个,但是这个方法并没有有效的解决虚拟地址空间比物理地址空间大的问题。从上图中我们可以看到,我们只有8个页框(物理地址),但我们有16个页(虚拟地址),所以我们只能把16个页中的8个进行有效的映射。我们看看例4会发生什么情况

MOV REG,32780

虚拟地址32780落在页8的范围内,从上图总我们看到页8没有被有效的进行映射(该页被打上X),这是又会发生什么?MMU注意到这个页没有被映射,于是通知CPU发生一个缺页故障(page fault).这种情况下操作系统必须处理这个页故障,它必须从8个物理页框中找到1个当前很少被使用的页框并把该页框的内容写入外围存储器(这个动作被称为page copy),随后把需要引用的页(例4中是页8)映射到刚才释放的页框中(这个动作称为修改映射关

系),然后从新执行产生故障的指令(MOV REG,32780)。假设操作系统决定释放页框1,那么它将把虚页8装入物理地址的4-8K,并做两处修改:首先把标记虚页1未被映射(原来虚页1是被影射到页框1的),以使以后任何对虚拟地址4K到8K的访问都引起页故障而使操作系统做出适当的动作(这个动作正是我们现在在讨论的),其次他把虚页8对应的页框号由X变为1,因此重新执行MOV REG,32780时,MMU将把32780映射为4108。

我们大致了解了MMU在我们的机器中扮演了什么角色以及它基本的工作内容是什么,下面我们将举例子说明它究竟是如何工作的(注意,本例中的MMU并无针对某种特定的机型,它是所有MMU工作

的一个抽象)。

首先明确一点,MMU的主要工作只有一个,就是把虚拟地址映射到

物理地址。

我们已经知道,大多数使用虚拟存储器的系统都使用一种称为分页(paging)的技术,就象我们刚才所举的例子,虚拟地址空间被分成大小相同的一组页,每个页有一个用来标示它的页号(这个页号一般是它在该组中的索引,这点和C/C++中的数组相似)。在上面的例子中0~4K的页号为0,4~8K的页号为1,8~12K的页号为2,以此类推。而虚拟地址(注意:是一个确定的地址,不是一个空间)被MMU分为2个部分,第一部分是页号索引(page Index),第二部分则是相对该页首地址的偏移量(offset). 。我们还是以刚才那个16位机器结合下图进行一个实例说明,该实例中,虚拟地址8196

被送进MMU,MMU把它映射成物理地址。16位的CPU总共能产生的地址范围是0~64K,按每页4K的大小计算,该空间必须被分成16个页。而我们的虚拟地址第一部分所能够表达的范围也必须等于16(这样才能索引到该页组中的每一个页),也就是说这个部分至少需要4个bit。一个页的大小是4K(4096),也就是说偏移部分必须使用12个bit来表示(2^12= 4096,这样才能访问到一个页中的所有地

址),8196的二进制码如下图所示:

该地址的页号索引为0010(二进制码),既索引的页为页2,第二部分为000000000100(二进制),偏移量为4。页2中的页框号为6(页2映射在页框6,见上图),我们看到页框6的物理地址是24~28K。于是MMU计算出虚拟地址8196应该被映射成物理地址24580(页框首地址+偏移量= 24576+4=24580)。同样的,若我们对虚拟地址1026进行读取,1026的二进制码为

0000010000000010,page

index=0000=0,offset=010*********=1026。页号为0,该页映射的页框号为2,页框2的物理地址范围是8192~12287,故MMU将虚

拟地址1026映射为物理地址9218(页框首地址+偏移量

=8192+1026=9218)

以上就是MMU的工作过程。

下面我们针对s3c2410的MMU(注1)进行讲解。

S3c2410总共有4种内存映射方式,分别是:

1.Fault (无映射)

2.Coarse Page (粗表)

3.Section (段)

4.Fine Page (细表)

我们以Section(段)进行说明。

ARM920T是一个32bit的CPU,它的虚拟地址空间为2^32=4G。而在Section模式,这4G的虚拟空间被分成一个一个称为段(Section)的单位(与我们上面讲的页在本质上其实是一致的),每个段的长度是1M (而我们之前所使用的页的长度是4K)。4G的虚拟内存总共可以被分成4096个段(1M*4096=4G),因此我们必须用4096个描述符来对这组段进行描述,每个描述符占用4个Byte,故这组描述符的大小为16KB (4Byte*4096),这4096个描述符构为一个表格,我们称其

为Tralaton Table.

上图是描述符的结构

Section base address:段基地址(相当于页框号首地址)

AP: 访问控制位Access Permission

Domain: 访问控制寄存器的索引。Domain与AP配合使用,对访问

权限进行检查

C:当C被置1时为write-through (WT)模式

B: 当B被置1时为write-back (WB)模式

(C,B两个位在同一时刻只能有一个被置1)

下面是s3c2410内存映射后的一个示意图:

我的s3c2410上配置的SDRSAM大小为64M,该SDRAM的物理地址范围是0x3000 0000~0x33FF FFFF(属于Bank 6),由于1个Section的大小是1M,所以该物理空间可以被分成64个物理段(页框). 在Section模式下,送进MMU的虚拟地址(注1)被分为两部分(这

点和我们上面举的例子是一样的),这两部分为Descriptor Index(相当于上面例子的Page Index)和Offset,descript index长度为

12bit(2^12=4096,从这个关系式你能看出什么?:) ),Offset长度为20bit(2^20=1M,你又能看出什么?:)).观察一下一个描述符(Descriptor)中的Section Base Address部分,它长度为12 bit,里面的值是该虚拟段(页)映射成的物理段(页框)的物理地址前12bit,由于每一个物理段的长度都是1M,所以物理段首地址的后20bit总是为0x00000(每个Section都是以1M对齐),确定一个物理地址的方法是物理页框基地址+虚拟地址中的偏移部分=Section Base Address<<20+Offset ,呵呵,可能你有点糊涂了,还是举一个实际例子说明吧。假设现在执行指令

MOV REG, 0x30000012

虚拟地址的二进制码为00110000 00000000 00000000 00010010 前12位是Descriptor Index= 00110000 0000=768,故在Translation Table里面找到第768号描述符,该描述的Section Base Address=0x0300,也就是说描述符所描述的虚拟段(页)所映射的物理段(页框)的首地址为0x3000 0000(物理段(页框)的基地址=Section Base Address左移20bit=0x0300<<20=0x3000 0000),而Offset=000000 00000000 00010010=0x12,故虚拟地址

0x30000012映射成的物理地址=0x3000 0000+0x12=0x3000 0012(物理页框基地址+虚拟地址中的偏移)。你可能会问怎么这个虚拟地址和映射后的物理地址一样?这是由我们定义的映射规则所决定

的。在这个例子中我们定义的映射规则是把虚拟地址映射成和他相等的物理地址。我们这样书写映射关系的代码:

void mem_mapping_linear(void)

{

unsigned long descriptor_index, section_base, sdram_base,

sdram_size;

sdram_base=0x30000000;

sdram_size=0x 4000000;

for (section _base= sdram_base,descriptor_index = section

_base>>20;

section _base < sdram_base+ sdram_size;

descriptor_index+=1;section _base +=0x100000)

{

*(mmu_tlb_base + (descriptor_index)) = (section _base>>20)

| MMU_OTHER_SECDESC;

}

}

上面的这段段代码把虚拟空间0x3000 0000~0x33FF FFFF映射到物理空间0x3000 0000~0x33FF FFFF,由于虚拟空间与物理空间空间相吻合,所以虚拟地址与他们各自对应的物理地址在值上是一致的。当初始完Translation Table之后,记得要把Translation Table 的首地址(第0号描述符的地址)加载进协处理器CP15的Control

Register2(2号控制寄存器)中,该控制寄存器的名称叫做Translation

table base (TTB) register。

以上讨论的是descriptor中的Section Base Address以及虚拟地址和物理地址的映射关系,然而MMU还有一个重要的功能,那就是访

问控制机制(Access Permission )。

简单说访问控制机制就是CPU通过某种方法判断当前程序对内存的访问是否合法(是否有权限对该内存进行访问),如果当前的程序并没有权限对即将访问的内存区域进行操作,则CPU将引发一个异常,s3c2410称该异常为Permission fault,x86架构则把这种异常称之为通用保护异常(General Protection),什么情况会引起Permission fault呢?比如处于User级别的程序要对一个System级别的内存区域进行写操作,这种操作是越权的,应该引起一个Permission fault,搞过x86架构的朋友应该听过保护模式(Protection Mode),保护模式就是基于这种思想进行工作的,于是我们也可以这么说:s3c2410的访问控制机制其实就是一种保护机制。那s3c2410的访问控制机制到底是由什么元素去参与完成的呢?它们间是怎么

协调工作的呢?这些元素总共有:

1.协处理器CP15中Control Register3:DOMAIN ACCESS

CONTROL REGISTER

2.段描述符中的AP位和Domain位

3.协处理器CP15中Control Register1(控制寄存器1)中的S bit和

R bit

4.协处理器CP15中Control Register5(控制寄存器5)

5.协处理器CP15中Control Register6(控制寄存器6) DOMAIN ACCESS CONTROL REGISTER 是访问控制寄存器,该寄存器有效位为32,被分成16个区域,每个区域由两个位组成,他们说明了当前内存的访问权限检查的级别,如下图所示

每区域可以填写的值有4个,分别为00,01,10,11(二进制),他们

的意义如下所示:

00:当前级别下,该内存区域不允许被访问,任何的访问都会引

起一个domain fault

01:当前级别下,该内存区域的访问必须配合该内存区域的段描述符

中AP位进行权检查

10:保留状态(我们最好不要填写该值,以免引起不能确定的问题)

11:当前级别下,对该内存区域的访问都不进行权限检查。

我们再来看看discriptor中的Domain区域,该区域总共有4个bit,里面的值是对DOMAIN ACCESS CONTROL REGISTER中16个区域的索引.而AP位配合S bit和A bit对当前描述符描述的内存区域被访问权限的说明,他们的配合关系如下图所示:

AP位也是有四个值,我结合实例对其进行说明.

在下面的例子中,我们的DOMAIN ACCESS CONTROL REGISTER 都被初始化成0xFFFF BDCF,如下图所示:

例1:

Discriptor 中的domain=4,AP=10(这种情况下S bit ,A bit 被忽略) 假设现在我要对该描述符描述的内存区域进行访问:

由于domain=4,而DOMAIN ACCESS CONTROL REGISTER中field 4的值是01,系统会对该访问进行访问权限的检查。

假设当前CPU处于Supervisor模式下,则程序可以对该描述符描述

的内存区域进行读写操作。

假设当前CPU处于User模式下,则程序可以对该描述符描述的内存进行读访问,若对其进行写操作则引起一个permission fault.

例2:

Discriptor 中的domain=0,AP=10(这种情况下S bit ,A bit 被忽略) domain=0,而DOMAIN ACCESS CONTROL REGISTER中field 0的值是11,系统对任何内存区域的访问都不进行访问权限的检查。由于统对任何内存区域的访问都不进行访问权限的检查,所以无论CPU处于合种模式下(Supervisor模式或是User模式),程序对该描述符描述的内存都可以顺利地进行读写操作例3:Discriptor 中的domain=4,AP=11(这种情况下S bit ,A bit

被忽略)

由于domain=4,而DOMAIN ACCESS CONTROL REGISTER中field 4的值是01,系统会对该访问进行访问权限的检查。

由于AP=11,所以无论CPU处于合种模式下(Supervisor模式或是User模式),程序对该描述符描述的内存都可以顺利地进行读写操

例4:

Discriptor 中的domain=4,AP=00, S bit=0,A bit=0

由于domain=4,而DOMAIN ACCESS CONTROL REGISTER中field 4的值是01,系统会对该访问进行访问权限的检查。

由于AP=00,S bit=0,A bit=0,所以无论CPU处于合种模式下(Supervisor模式或是User模式),程序对该描述符描述的内存都只能进行读操作,否则引起permission fault.

通过以上4个例子我们得出两个结论:

1.对某个内存区域的访问是否需要进行权限检查是由该内存区域的

描述符中的Domain域决定的。

2.某个内存区域的访问权限是由该内存区域的描述符中的AP位和协处理器CP15中Control Register1(控制寄存器1)中的S bit和R bit

所决定的。

关于访问控制机制我们就讲到这里.

注1:对于s3c2410来说,MMU是以Modify Visual Address(MVA)进行寻址的,这个地址是Virtual Address的一个变换

mini2440裸机开启MMU实验

.text

.global _start

_start:

ldr sp, =4096 @ 设置栈指针,以下都是C函数,调用前需要设好栈

bl disable_watch_dog @ 关闭WATCHDOG,否则CPU 会不断重启

bl memsetup @ 设置存储控制器以使用SDRAM bl copy_2th_to_sdram @ 将第二部分代码复制到SDRAM

bl create_page_table @ 设置页表

bl mmu_init @ 启动MMU

ldr sp, =0xB4000000 @ 重设栈指针,指向SDRAM顶端(使用虚拟地址)

ldr pc, =0xB0004000 @ 跳到SDRAM中继续执行第二部分代码

halt_loop:

b halt_loop

这段汇编,可以看出,整一个设置流程,其中,设置页表和启动MMU 是重点

设置页表

/*

* 设置页表

*/

void create_page_table(void)

{

/*

* 用于段描述符的一些宏定义

*/

#define MMU_FULL_ACCESS (3 << 10) /* 访问权限*/

#define MMU_DOMAIN (0 << 5) /* 属于哪个域*/

#define MMU_SPECIAL (1 << 4) /* 必须是1 */

#define MMU_CACHEABLE (1 << 3) /* cacheable */

#define MMU_BUFFERABLE (1 << 2) /* bufferable */

#define MMU_SECTION (2) /* 表示这是段描述符*/

#define MMU_SECDESC (MMU_FULL_ACCESS | MMU_DOMAIN | MMU_SPECIAL | \

MMU_SECTION)

#define MMU_SECDESC_WB (MMU_FULL_ACCESS | MMU_DOMAIN | MMU_SPECIAL | \

MMU_CACHEABLE | MMU_BUFFERABLE |

MMU_SECTION)

#define MMU_SECTION_SIZE 0x00100000

unsigned long virtuladdr, physicaladdr;

unsigned long *mmu_tlb_base = (unsigned long *)0x30000000;

/*

* Steppingstone的起始物理地址为0,第一部分程序的起始运行地址也是0,

* 为了在开启MMU后仍能运行第一部分的程序,

* 将0~1M的虚拟地址映射到同样的物理地址

*/

virtuladdr = 0;

physicaladdr = 0;

*(mmu_tlb_base + (virtuladdr >> 20)) = (physicaladdr & 0xFFF00000) | \

MMU_SECDESC_WB;

/*

* 0x56000000是GPIO寄存器的起始物理地址,

* GPBCON和GPBDAT这两个寄存器的物理地址0x56000010、0x56000014,

* 为了在第二部分程序中能以地址0xA0000010、0xA0000014

来操作GPBCON、GPBDAT,

* 把从0xA0000000开始的1M虚拟地址空间映射到从0x56000000开始的1M物理地址空间

*/

virtuladdr = 0xA0000000;

physicaladdr = 0x56000000;

*(mmu_tlb_base + (virtuladdr >> 20)) = (physicaladdr & 0xFFF00000) | \

MMU_SECDESC;

/*

* SDRAM的物理地址范围是0x30000000~0x33FFFFFF,

* 将虚拟地址0xB0000000~0xB3FFFFFF映射到物理地址0x30000000~0x33FFFFFF上,

* 总共64M,涉及64个段描述符

*/

virtuladdr = 0xB0000000;

physicaladdr = 0x30000000;

while (virtuladdr < 0xB4000000)

{

*(mmu_tlb_base + (virtuladdr >> 20)) = (physicaladdr & 0xFFF00000) | \

MMU_SECDESC_WB;

芯片内部原理及应用

555定时电路内部结构分析及应用 1 绪言 555定时器是电子工程领域中广泛使用的一种中规模集成电路,它将模拟与逻辑功能巧妙地组合在一起,具有结构简单、使用电压范围宽、工作速度快、定时精度高、驱动能力强等优点。555定时器配以外部元件,可以构成多种实际应用电路。广泛应用于产生多种波形的脉冲振荡器、检测电路、自动控制电路、家用电器以及通信产品等电子设备中。 2555定时器功能及结构分析 2.1 555定时器的分类及管脚作用 555定时器又称时基电路。555定时器按照内部元件分有双极型(又称TTL 型)和单极型两种。双极型内部采用的是晶体管;单极型内部采用的则是场效应管,常见的555时基集成电路为塑料双列直插式封装(见图2-1),正面印有555字样,左下角为脚①,管脚号按逆时针方向排列。 2-1 555时基集成电路各管脚排布 555时基集成电路各管脚的作用:脚①是公共地端为负极;脚②为低触发端TR,低于1/3电源电压以下时即导通;脚③是输出端V,电流可达2000mA; 脚④是强制复位端MR,不用可与电源正极相连或悬空;脚⑤是用来调节比较器的基准电压,简称控制端VC,不用时可悬空,或通过0.01μF电容器接地;脚⑥为高触发端TH,也称阈值端,高于2/3电源电压发上时即截止;脚⑦是放电端DIS;脚⑧是电源正极VC。 2.2 555定时器的电路组成 图2-2为555芯片的内部等效电路 2-2 555定时器电路组成 5G555定时器内部电路如图所示,一般由分压器、比较器、触发器和开关。及输出等四部分组成,这里我们主要介绍RS触发器和电压比较器。 2.2.1基本RS触发器原理

如图2-3是由两个“与非”门构成的基本R-S触发器, RD、SD是两个输入端,Q及是两个输出端。 2-3 RS触发器 正常工作时,触发器的Q和应保持相反,因而触发器具有两个稳定状态: 1)Q=1,=0。通常将Q端作为触发器的状态。若Q端处于高电平,就说触发器是1状态; 2)Q=0,=1。Q端处于低电平,就说触发器是0状态;Q端称为触发器的原端或1端,端称为触发器的非端或0端。 由图可看出,如果Q端的初始状态设为1,RD、SD端都作用于高电平(逻辑1),则一定为0。如果RD、SD状态不变,则Q及的状态也不会改变。这是一个稳定状态;同理,若触发器的初始状态Q为0而为1,在RD、SD为1的情况下这种状态也不会改变。这又是一个稳定状态。可见,它具有两个稳定状态。 输入与输出之间的逻辑关系可以用真值表来描述。 首先对该RS触发器Q端状态仿真。如图2-4 2-4 RS触发器Q端仿真电路图 Q端状态变化规律如图2-5 2-5 Q端状态变化规律仿真 此图中A即SD,B即RD.,再对该R—S触发器Q非端状态仿真,如图2-6 2-6 RS触发器Q非端仿真图 Q非端状态变化规律如图2-7 2-7 Q非端状态变化规律 此图中A即SD,B即RD. R-S触发器的逻辑功能,可以用输入、输出之间的逻辑关系构成一个真值表(或叫功能表)来描述,由仿真可得以下结论。当RD =0,SD=1时,不论触发器的初始状态如何,一定为1,由于“与非”门的输入全是1,Q端应为0。称触发器为0状态,RD为置0端。当RD =1,SD=0时,不论触发器的初始状态如何,Q 一定为1,从而使为0。称触发器为1状态,SD置1端。当RD =1,SD =1时,

IC卡1604的原理与应用如ft1780芯片内部结构和特点

逻辑加密存储卡芯片AT88SC1604卡的应用 摘要:本文介绍了目前应用较为广泛的AT88SC1604逻辑加密卡的特点和工作原理,同时给出了通过单片机控制操作IC卡的的应用实例及程序。 前言 IC卡按结构划分,可分为存储器卡和微处理器卡(CPU card)两大类。逻辑加密卡与普通存储卡相比,部结构较复杂,其存储区可以分成卡片设置区和应用区。卡片设置区存放与卡片厂商及发卡者相关代码和卡片密码;应用区又可以根据需要分为不同的分区。逻辑加密卡的安全性相对较高,体现在:卡片设立主密码、每个应用分区具有各自独立的操作密码。逻辑加密卡主要控制作用是:对数据存储区开放/关闭的控制;对数据存储区读/写的控制;对数据存储区擦除操作的控制以及对密码校验和错误次数计数及锁闭功能控制。 AT88SC1604卡的工作原理 AT88SC1604是由美国ATMEL公司设计的逻辑加密存储卡芯片。它具有15704位的存储容量,是目前逻辑加密存储卡中容量较大的一种产品芯片。 芯片特点 (1) AT88SC1604芯片属于单存储器多逻辑分区结构。主存储器除划分了特定的标志数据区和控制数据区之外,还将应用数据区分成四个完全隔离的子区,并在每个子区中配备了各自的读、写控制标志和写入/擦除密码以及密码输入错误计数器等逻辑控制。 (2) 芯片为串行传输方式,并满足ISO7816-3同步传输协议。 (3)芯片采用低功耗的CMOS工艺制造,每字位的读取时间为s,写周期为5ms。 (4) 芯片部的存储单元具有至少10000次的擦除/改写循环次数。数据保存期为10年。 芯片存储分区结构及定义 AT88SC1604芯片分为制造商代码区、发行商代码区、用户安全密码区、用户密码比较计数区、个人代码区以及四个应用区。每个应用区都由密码区,密码比较计数区,擦除密码区和擦除密码比较计数区、应用数据区和存储器测试区组成。 (1) 制造商代码区(FZ) 该区里记录的卡芯片生产商的特定信息(例如:生产批号、日期、以及特别制定的特征代码),由制造商在芯片出厂前写入。在控制本区的熔丝(FUSHl)没有熔断时,该区的存储单元可以象普通的EEPROM存储单元一样进行擦除和改写。一旦熔丝熔断,所写入的"制造商代码"就不可再更改。 (2) 发行商代码区(IZ)

详细分析半导体芯片内部结构

详细分析半导体芯片内部结构 在我们阐明半导体芯片之前,我们先应该了解两点。其一半导体是什么,其二芯片是什么。 半导体 半导体(semiconductor),指常温下导电性能介于绝缘体(insulator)与导体(conductor)之间的材料。人们通常把导电性差的材料,如煤、人工晶体、琥珀、陶瓷等称为绝缘体。而把导电性比较好的金属如金、银、铜、铁、锡、铝等称为导体。与导体和绝缘体相比,半导体材料的发现是最晚的,直到20世纪30年代,当材料的提纯技术改进以后,半导体才得到工业界的重视。常见的半导体材料有硅、锗、砷化镓等,而硅则是各种半导体材料中,在商业应用上最具有影响力的一种。 芯片 芯片(chip),又称微芯片(microchip)、集成电路(integrated circuit, IC)。是指内含集成电路的硅片,体积很小。一般而言,芯片(IC)泛指所有的半导体元器件,是在硅板上集合多种电子元器件实现某种特定功能的电路模块。它是电子设备中最重要的部分,承担着运算和存储的功能。广泛应用于军工、民用等几乎所有的电子设备。讲到这里你大概对于半导体和芯片有个简单了解了,接下来我们来聊聊半导体芯片。 半导体芯片是什么? 一般情况下,半导体、集成电路、芯片这三个东东是可以划等号的,因为讲的其实是同一个事情。 半导体是一种材料,分为表格中四类,由于集成电路的占比非常高,超过80%,行业习惯把半导体行业称为集成电路行业。 而芯片就是集成电路的载体,广义上我们就将芯片等同于了集成电路。 所以对于小白来说,只需要记住,当芯片、集成电路、半导体出现的时候,别慌,是同一码事儿。 半导体芯片内部结构

DSP芯片的基本结构

DSP芯片的基本结构 DSP芯片的基本结构包括: 1.哈佛结构; 2.流水线操作; 3.专用的硬件乘法器; 4.特殊的DSP指令; 5.快速的指令周期。 哈佛结构 哈佛结构的主要特点是将程序和数据存储在不同的存储空间中,即程序存储器和数据存储器是两个相互独立的存储器,每个存储器独立编址,独立访问。与两个存储器相对应的是系统中设置了程序总线和数据总线,从而使数据的吞吐率提高了一倍。由于程序和存储器在两个分开的空间中,因此取指和执行能完全重叠。 流水线与哈佛结构相关,DSP芯片广泛采用流水线以减少指令执行的时间,从而增强了处理器的处理能力。处理器可以并行处理二到四条指令,每条指令处于流水线的不同阶段。 CLLOUT1,取指N N-1 N-2,译码N-1 N N-2,执行N-2 N-1 N,专用的硬件乘法器,乘法速度越快,DSP处理器的性能越高。由于具有专用的应用乘法器,乘法可在一个指令周期内完成。 特殊的DSP指令DSP芯片是采用特殊的指令。快速的指令周期哈佛结构、流水线操作、专用的硬件乘法器、特殊的DSP指令再加上集成电路的优化设计可使DSP芯片的指令周期在200ns以下。 DSP芯片的选择方法 一般而言,定点DSP芯片的价格较便宜,功耗较低,但运算精度稍低。而浮点DSP芯片的优点是运算精度高,且C语言编程调试方便,但价格稍贵,功耗也较大。例如TI的T MS320C2XX/C54X系列属于定点DSP芯片,低功耗和低成本是其主要的特点。而TMS320C3X/C4X/C67X属于浮点DSP芯片,运算精度高,用C语言编程方便,开发周期短,但同时其价格和功耗也相对较高。DSP应用系统的运算量是确定选用处理能力为多大的DSP芯片的基础。运算量小则可以选用处理能力不是很强的DSP芯片,从而可以降低系统成本。相反,运算量大的DSP系统则必须选用处理能力强的DSP芯片,如果DSP芯片的处理能力达不到系统要求,则必须用多个DSP芯片并行处理。那么如何确定DSP 系统的运算量以选择DSP芯片呢?下面我们来考虑两种情况。 1.按样点处理 所谓按样点处理就是DSP算法对每一个输入样点循环一次。数字滤波就是这种情况。在数字滤波器中,通常需要对每一个输入样点计算一次。例如,一个采用LMS算法的256抽头的自适应FIR滤波器,假定每个抽头的计算需要3个

LED发光二极管内部结构详解

LED发光二极管内部结构详解 LED Lamp(led 灯)主要由支架、银胶、晶片、金线、环氧树脂五种物料所组成。 一、支架: 1)、支架的作用:用来导电和支撑 2)、支架的组成:支架由支架素材经过电镀而形成,由里到外是素材、铜、镍、铜、银这五层所组成。 3)、支架的种类:带杯支架做聚光型,平头支架做大角度散光型的Lamp。 A、2002杯/平头:此种支架一般做对角度、亮度要求不是很高的材料,其Pin长比其他支架要短10mm 左右。Pin间距为2.28mm B、2003杯/平头:一般用来做φ5以上的Lamp,外露pin长为+29mm、-27mm。Pin间距为2.54mm。 C、2004杯/平头:用来做φ3左右的Lamp,Pin长及间距同2003支架。 D、2004LD/DD:用来做蓝、白、纯绿、紫色的Lamp,可焊双线,杯较深。 E、2006:两极均为平头型,用来做闪烁Lamp,固IC,焊多条线。 F、2009:用来做双色的Lamp,杯内可固两颗晶片,三支pin脚控制极性。 G、2009-8/3009:用来做三色的Lamp,杯内可固三颗晶片,四支pin脚。 二、银胶 银胶的作用:固定晶片和导电的作用。 银胶的主要成份:银粉占75-80%、EPOXY(环氧树脂)占10-15%、添加剂占5-10%。 银胶的使用:冷藏,使用前需解冻并充分搅拌均匀,因银胶放置长时间后,银粉会沉淀,如不搅拌均匀将会影响银胶的使用性能。 三、晶片(Chip): 发光二极管和LED芯片的结构组成 1)、晶片的作用:晶片是LED Lamp的主要组成物料,是发光的半导体材料。 2)、晶片的组成:晶片是采用磷化镓(GaP)、镓铝砷(GaAlAs)或砷化镓(GaAs)、氮化镓(GaN)等材料组成,其内部结构具有单向导电性。 3)、晶片的结构:

Alere Triage检测芯片

第二部分:芯片内部结构剖析-Alere Triage 检测芯片 Alere的Triage检测仪和检测芯片已经在国内上市很多年了,各位医疗行业的朋友们对此应该非常熟悉,故而没必要专门对Triage产品进行介绍,此处只是简单引用美艾利尔官网上的一些介绍,作为本部分的开篇之语。 据美艾利尔官方网站公开的信息,Alere Triage?是一种领先的新型快速诊断检测系统,由一个检测仪和各种检测芯片组成,可提高医生诊断危重疾病和症状的能力,包括心脏衰竭和心肌梗死等。Alere Triage? 品牌快速检测芯片包括BNP(脑钠肽)、CK-MB、D-二聚体、肌红蛋白、肌钙蛋白的定量检测,以及毒理药物的定性筛查,目前在美国有大约百分之七十的医院使用该品牌产品,而且产品已打入50个国际市场。如下图为Triage检测仪器和检测芯片的外观图。 图2.1 Alere Triage检测仪器的外观图

图2.2 Alere Triage检测芯片的外观图 根据美艾利尔公司的专利CN201380018250和专利US2015087079中公开的内容,Triage芯片包括有三层结构,从上到下依次为:上层结构,中间过滤层,下层底板结构。下面分别对这几个部分进行介绍。 1 Triage芯片的上层结构 上层结构相对比较简单,主要起到毛细通道密封的作用,在上层结构上还有样品入口,供待测样品的注入;远端开口,用于连接仪器中的注射泵和气压传感器,即仪器与芯片的一个互动接口便是这个远端开口。在上层结构中还有一个非常重要的凹陷结构,里面有多个突起部分。如下图为Triage芯片的上层结构图。

图2.3 Triage芯片上层结构图 该芯片上层结构中的凹陷43处有样品入口通孔,出口和多个突起部分,如下图所示,该突起部分成倒梯形结构,用于支撑中间过滤层,起到隔离上层和过滤层的目的,使得这两层之间具有一定的腔室,便于待检流体样本的流动。气孔是使得入口结构和外部相通,保持气压一致。

Abaxis Piccolo圆盘芯片的内部结构

第二部分:Abaxis Piccolo芯片的内部结构 1芯片的整体结构 从整体结构上来讲,Piccolo圆盘芯片主要分为三层:从上到下分别是,顶层,中间层,基底层。如下图所示。 其中顶层的主要作用是保护中间层,避免中间层上光学检测部位被手指接触或其他情况造成污染,其还提供条形码,用于测试仪器读取本圆盘芯片的基本信息;中间层主要起密封作用,将基底层上各种腔室结构和微通道进行密封;基底层是最主要的结构,里面有各种精巧设计的腔室结构,比如定量池,混合池,废液池等单元。 1

图2.1 圆盘芯片的整体结构 (焜哥注:图中Diluent Container标注有误,此图标注部位是进样池,正确的应该是中间层和基底层之间的位于中心部位的小容器) 2

3 据文献(Centrifugation and capillarity integrated into a multiple analyte whole blood analyser )报道,该三层结构均由注塑成型方法制备,且通过超声焊接的方式封合,其中中间层和基底层的材料为PMMA ,而顶层材料为ABS 塑料。整个圆盘芯片的直径为8cm ,高度为2cm 。如下图为芯片实物图。 目前,Abaxis 已经授权两家制造商(C, Brewer & Co.和Nypro, Inc )为其制造该圆盘芯片,在芯片注塑完成后再将冷冻干燥的试剂球预装到芯片不同部位,最后用超声焊接的方式封合。 图2.2 圆盘芯片的整体实物结构图。 Abaxis Piccolo 测试仪器内部包含有离心部件,光学系统(由氙气闪光灯, 能读取

9种波长的光线分隔器/检测器等组成),一个16位模数转换器,两个微控制器,一个温控组件(控制温度为37±1℃)组成。 2芯片的基底层结构 芯片中最重要的结构是基底层,该层中包含有流体运动,试剂混合等各种功能单元,如下图展示了芯片基底层结构和各个功能单元。 图2.3 圆盘芯片的基底层结构图。 4

芯片内部原理及应用完整版

芯片内部原理及应用 Document serial number【NL89WT-NY98YT-NC8CB-NNUUT-NUT108】

555定时电路内部结构分析及应用 1 绪言 555定时器是电子工程领域中广泛使用的一种中规模集成电路,它将模拟与逻辑功能巧妙地组合在一起,具有结构简单、使用电压范围宽、工作速度快、定时精度高、驱动能力强等优点。555定时器配以外部元件,可以构成多种实际应用电路。广泛应用于产生多种波形的脉冲振荡器、检测电路、自动控制电路、家用电器以及通信产品等电子设备中。 2555定时器功能及结构分析 555定时器的分类及管脚作用 555定时器又称时基电路。555定时器按照内部元件分有双极型(又称TTL 型)和单极型两种。双极型内部采用的是晶体管;单极型内部采用的则是场效应管,常见的555时基集成电路为塑料双列直插式封装(见图2-1),正面印有555字样,左下角为脚①,管脚号按逆时针方向排列。 2-1 555时基集成电路各管脚排布 555时基集成电路各管脚的作用:脚①是公共地端为负极;脚②为低触发端TR,低于1/3电源电压以下时即导通;脚③是输出端V,电流可达2000mA;脚④是强制复位端MR,不用可与电源正极相连或悬空;脚⑤是用来调节比较器的基准电压,简称控制端VC,不用时可悬空,或通过μF电容器接地;脚⑥为高触发端TH,也称阈值端,高于2/3电源电压发上时即截止;脚⑦是放电端DIS;脚⑧是电源正极VC。 555定时器的电路组成 图2-2为555芯片的内部等效电路 2-2 555定时器电路组成 5G555定时器内部电路如图所示,一般由分压器、比较器、触发器和开关。及输出等四部分组成,这里我们主要介绍RS触发器和电压比较器。2.2.1基本RS触发器原理

相关文档