虫虫首页| 资源下载| 资源专辑| 精品软件
登录| 注册

或门

  • PL2303或PV8651USB转串口原理图

    PL2303或PV8651USB转串口原理图:由PV8651芯片组成。

    标签: 2303 8651 USB PL

    上传时间: 2013-11-01

    上传用户:CHENKAI

  • 汇编+保护模式+教程

    九.输入/输出保护为了支持多任务,80386不仅要有效地实现任务隔离,而且还要有效地控制各任务的输入/输出,避免输入/输出冲突。本文将介绍输入输出保护。 这里下载本文源代码。 <一>输入/输出保护80386采用I/O特权级IPOL和I/O许可位图的方法来控制输入/输出,实现输入/输出保护。 1.I/O敏感指令输入输出特权级(I/O Privilege Level)规定了可以执行所有与I/O相关的指令和访问I/O空间中所有地址的最外层特权级。IOPL的值在如下图所示的标志寄存器中。 标  志寄存器 BIT31—BIT18 BIT17 BIT16 BIT15 BIT14 BIT13—BIT12 BIT11 BIT10 BIT9 BIT8 BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0 00000000000000 VM RF 0 NT IOPL OF DF IF TF SF ZF 0 AF 0 PF 1 CF I/O许可位图规定了I/O空间中的哪些地址可以由在任何特权级执行的程序所访问。I/O许可位图在任务状态段TSS中。 I/O敏感指令 指令 功能 保护方式下的执行条件 CLI 清除EFLAGS中的IF位 CPL<=IOPL STI 设置EFLAGS中的IF位 CPL<=IOPL IN 从I/O地址读出数据 CPL<=IOPL或I/O位图许可 INS 从I/O地址读出字符串 CPL<=IOPL或I/O位图许可 OUT 向I/O地址写数据 CPL<=IOPL或I/O位图许可 OUTS 向I/O地址写字符串 CPL<=IOPL或I/O位图许可 上表所列指令称为I/O敏感指令,由于这些指令与I/O有关,并且只有在满足所列条件时才可以执行,所以把它们称为I/O敏感指令。从表中可见,当前特权级不在I/O特权级外层时,可以正常执行所列的全部I/O敏感指令;当特权级在I/O特权级外层时,执行CLI和STI指令将引起通用保护异常,而其它四条指令是否能够被执行要根据访问的I/O地址及I/O许可位图情况而定(在下面论述),如果条件不满足而执行,那么将引起出错码为0的通用保护异常。 由于每个任务使用各自的EFLAGS值和拥有自己的TSS,所以每个任务可以有不同的IOPL,并且可以定义不同的I/O许可位图。注意,这些I/O敏感指令在实模式下总是可执行的。 2.I/O许可位图如果只用IOPL限制I/O指令的执行是很不方便的,不能满足实际要求需要。因为这样做会使得在特权级3执行的应用程序要么可访问所有I/O地址,要么不可访问所有I/O地址。实际需要与此刚好相反,只允许任务甲的应用程序访问部分I/O地址,只允许任务乙的应用程序访问另一部分I/O地址,以避免任务甲和任务乙在访问I/O地址时发生冲突,从而避免任务甲和任务乙使用使用独享设备时发生冲突。 因此,在IOPL的基础上又采用了I/O许可位图。I/O许可位图由二进制位串组成。位串中的每一位依次对应一个I/O地址,位串的第0位对应I/O地址0,位串的第n位对应I/O地址n。如果位串中的第位为0,那么对应的I/O地址m可以由在任何特权级执行的程序访问;否则对应的I/O地址m只能由在IOPL特权级或更内层特权级执行的程序访问。如果在I/O外层特权级执行的程序访问位串中位值为1的位所对应的I/O地址,那么将引起通用保护异常。 I/O地址空间按字节进行编址。一条I/O指令最多可涉及四个I/O地址。在需要根据I/O位图决定是否可访问I/O地址的情况下,当一条I/O指令涉及多个I/O地址时,只有这多个I/O地址所对应的I/O许可位图中的位都为0时,该I/O指令才能被正常执行,如果对应位中任一位为1,就会引起通用保护异常。 80386支持的I/O地址空间大小是64K,所以构成I/O许可位图的二进制位串最大长度是64K个位,即位图的有效部分最大为8K字节。一个任务实际需要使用的I/O许可位图大小通常要远小于这个数目。 当前任务使用的I/O许可位图存储在当前任务TSS中低端的64K字节内。I/O许可位图总以字节为单位存储,所以位串所含的位数总被认为是8的倍数。从前文中所述的TSS格式可见,TSS内偏移66H的字确定I/O许可位图的开始偏移。由于I/O许可位图最长可达8K字节,所以开始偏移应小于56K,但必须大于等于104,因为TSS中前104字节为TSS的固定格式,用于保存任务的状态。 1.I/O访问许可检查细节保护模式下处理器在执行I/O指令时进行许可检查的细节如下所示。 (1)若CPL<=IOPL,则直接转步骤(8);(2)取得I/O位图开始偏移;(3)计算I/O地址对应位所在字节在I/O许可位图内的偏移;(4)计算位偏移以形成屏蔽码值,即计算I/O地址对应位在字节中的第几位;(5)把字节偏移加上位图开始偏移,再加1,所得值与TSS界限比较,若越界,则产生出错码为0的通用保护故障;(6)若不越界,则从位图中读对应字节及下一个字节;(7)把读出的两个字节与屏蔽码进行与运算,若结果不为0表示检查未通过,则产生出错码为0的通用保护故障;(8)进行I/O访问。设某一任务的TSS段如下: TSSSEG                  SEGMENT PARA USE16                        TSS     <>             ;TSS低端固定格式部分                        DB      8 DUP(0)       ;对应I/O端口00H—3FH                        DB      10000000B      ;对应I/O端口40H—47H                        DB      01100000B      ;对用I/O端口48H—4FH                        DB      8182 DUP(0ffH) ;对应I/O端口50H—0FFFFH                        DB      0FFH           ;位图结束字节TSSLen                  =       $TSSSEG                  ENDS 再假设IOPL=1,CPL=3。那么如下I/O指令有些能正常执行,有些会引起通用保护异常:                         in      al,21h  ;(1)正常执行                        in      al,47h  ;(2)引起异常                        out     20h,al  ;(3)正常实行                        out     4eh,al  ;(4)引起异常                        in      al,20h  ;(5)正常执行                        out     20h,eax ;(6)正常执行                        out     4ch,ax  ;(7)引起异常                        in      ax,46h  ;(8)引起异常                        in      eax,42h ;(9)正常执行 由上述I/O许可检查的细节可见,不论是否必要,当进行许可位检查时,80386总是从I/O许可位图中读取两个字节。目的是为了尽快地执行I/O许可检查。一方面,常常要读取I/O许可位图的两个字节。例如,上面的第(8)条指令要对I/O位图中的两个位进行检查,其低位是某个字节的最高位,高位是下一个字节的最低位。可见即使只要检查两个位,也可能需要读取两个字节。另一方面,最多检查四个连续的位,即最多也只需读取两个字节。所以每次要读取两个字节。这也是在判别是否越界时再加1的原因。为此,为了避免在读取I/O许可位图的最高字节时产生越界,必须在I/O许可位图的最后填加一个全1的字节,即0FFH。此全1的字节应填加在最后一个位图字节之后,TSS界限范围之前,即让填加的全1字节在TSS界限之内。 I/O许可位图开始偏移加8K所得的值与TSS界限值二者中较小的值决定I/O许可位图的末端。当TSS的界限大于I/O许可位图开始偏移加8K时,I/O许可位图的有效部分就有8K字节,I/O许可检查全部根据全部根据该位图进行。当TSS的界限不大于I/O许可位图开始偏移加8K时,I/O许可位图有效部分就不到8K字节,于是对较小I/O地址访问的许可检查根据位图进行,而对较大I/O地址访问的许可检查总被认为不可访问而引起通用保护故障。因为这时会发生字节越界而引起通用保护异常,所以在这种情况下,可认为不足的I/O许可位图的高端部分全为1。利用这个特点,可大大节约TSS中I/O许可位图占用的存储单元,也就大大减小了TSS段的长度。 <二>重要标志保护输入输出的保护与存储在标志寄存器EFLAGS中的IOPL密切相关,显然不能允许随便地改变IOPL,否则就不能有效地实现输入输出保护。类似地,对EFLAGS中的IF位也必须加以保护,否则CLI和STI作为敏感指令对待是无意义的。此外,EFLAGS中的VM位决定着处理器是否按虚拟8086方式工作。 80386对EFLAGS中的这三个字段的处理比较特殊,只有在较高特权级执行的程序才能执行IRET、POPF、CLI和STI等指令改变它们。下表列出了不同特权级下对这三个字段的处理情况。 不同特权级对标志寄存器特殊字段的处理 特权级 VM标志字段 IOPL标志字段 IF标志字段 CPL=0 可变(初POPF指令外) 可变 可变 0  不变 不变 可变 CPL>IOPL 不变 不变 不变 从表中可见,只有在特权级0执行的程序才可以修改IOPL位及VM位;只能由相对于IOPL同级或更内层特权级执行的程序才可以修改IF位。与CLI和STI指令不同,在特权级不满足上述条件的情况下,当执行POPF指令和IRET指令时,如果试图修改这些字段中的任何一个字段,并不引起异常,但试图要修改的字段也未被修改,也不给出任何特别的信息。此外,指令POPF总不能改变VM位,而PUSHF指令所压入的标志中的VM位总为0。 <三>演示输入输出保护的实例(实例九)下面给出一个用于演示输入输出保护的实例。演示内容包括:I/O许可位图的作用、I/O敏感指令引起的异常和特权指令引起的异常;使用段间调用指令CALL通过任务门调用任务,实现任务嵌套。 1.演示步骤实例演示的内容比较丰富,具体演示步骤如下:(1)在实模式下做必要准备后,切换到保护模式;(2)进入保护模式的临时代码段后,把演示任务的TSS段描述符装入TR,并设置演示任务的堆栈;(3)进入演示代码段,演示代码段的特权级是0;(4)通过任务门调用测试任务1。测试任务1能够顺利进行;(5)通过任务门调用测试任务2。测试任务2演示由于违反I/O许可位图规定而导致通用保护异常;(6)通过任务门调用测试任务3。测试任务3演示I/O敏感指令如何引起通用保护异常;(7)通过任务门调用测试任务4。测试任务4演示特权指令如何引起通用保护异常;(8)从演示代码转临时代码,准备返回实模式;(9)返回实模式,并作结束处理。

    标签: 汇编 保护模式 教程

    上传时间: 2013-12-11

    上传用户:nunnzhy

  • MCS-51 单片机的系统扩展问题

    本章主要介绍51系列单片机系统扩展问题,在本章中要研究较多的硬件方面及硬软结合方面的问题,本章与第一章关系密切,在学习本章内容之前,要先明确51系列单片机本身的系统资源,可先复习一下前面几章的有关单片机硬件组成方面的内容。 本章将介绍以下具体内容:    系统扩展的含义、单片机的地址总线和数据总线、常见系统扩展电路举例。§7.0  前言         1.系统扩展的含义    单片机中虽然已经集成了CPU、I/O口、定时器、中断系统、存储器等计算机的基本部件(即系统资源),但是对一些较复杂应用系统来说有时感到以上资源中的一种或几种不够用,这就需要在单片机芯片外加相应的芯片、电路,使得有关功能得以扩充,我们称为系统扩展(即系统资源的扩充)。    2.系统扩展分类----单一功能的扩展                  综合功能的扩展3.系统扩展需要解决的问题----    单片机与相应芯片的接口电路连接(即地址总线、数据总线、控制总线的连接)与编程。4.单片机的地址总线和数据总线    51系列单片机没有专用的对外地址总线和数据总线,其P0口和P2口既是通用I/O口,同时P0口还是分时复用的双向数据总线和低8位地址总线(一般需要加一级锁存器),而P2口则是高8位地址总线5.常见系统扩展电路(1)单一功能的系统扩展     存储器的扩展(程序存储器、数据存储器、E2PROM )     外部中断源的扩展(简单门电路)     并行口的扩展(8155)(2)综合功能的扩展     外部RAM、定时器、并行口扩展(8155)     存储器、并行口、定时器扩展(多芯片)7.1.1 程序存储器的扩展.程序存储器的作用----存放程序代码或常数表格  .扩展时所用芯片----一般用只读型存储器芯片(可以是EPROM、E2PROM、 FLASH芯片等)。  .扩展电路连接 ---- 用EPROM 2764扩展程序存储器。  .存储器地址分析----究竟单片机输出什么地址值时,可以指向存储器中的某一单元。

    标签: MCS 51 单片机 系统扩展

    上传时间: 2013-10-19

    上传用户:zhaoq123

  • Verilog_HDL的基本语法详解(夏宇闻版)

            Verilog_HDL的基本语法详解(夏宇闻版):Verilog HDL是一种用于数字逻辑电路设计的语言。用Verilog HDL描述的电路设计就是该电路的Verilog HDL模型。Verilog HDL既是一种行为描述的语言也是一种结构描述的语言。这也就是说,既可以用电路的功能描述也可以用元器件和它们之间的连接来建立所设计电路的Verilog HDL模型。Verilog模型可以是实际电路的不同级别的抽象。这些抽象的级别和它们对应的模型类型共有以下五种:   系统级(system):用高级语言结构实现设计模块的外部性能的模型。   算法级(algorithm):用高级语言结构实现设计算法的模型。   RTL级(Register Transfer Level):描述数据在寄存器之间流动和如何处理这些数据的模型。   门级(gate-level):描述逻辑门以及逻辑门之间的连接的模型。   开关级(switch-level):描述器件中三极管和储存节点以及它们之间连接的模型。   一个复杂电路系统的完整Verilog HDL模型是由若干个Verilog HDL模块构成的,每一个模块又可以由若干个子模块构成。其中有些模块需要综合成具体电路,而有些模块只是与用户所设计的模块交互的现存电路或激励信号源。利用Verilog HDL语言结构所提供的这种功能就可以构造一个模块间的清晰层次结构来描述极其复杂的大型设计,并对所作设计的逻辑电路进行严格的验证。   Verilog HDL行为描述语言作为一种结构化和过程性的语言,其语法结构非常适合于算法级和RTL级的模型设计。这种行为描述语言具有以下功能:   · 可描述顺序执行或并行执行的程序结构。   · 用延迟表达式或事件表达式来明确地控制过程的启动时间。   · 通过命名的事件来触发其它过程里的激活行为或停止行为。   · 提供了条件、if-else、case、循环程序结构。   · 提供了可带参数且非零延续时间的任务(task)程序结构。   · 提供了可定义新的操作符的函数结构(function)。   · 提供了用于建立表达式的算术运算符、逻辑运算符、位运算符。   · Verilog HDL语言作为一种结构化的语言也非常适合于门级和开关级的模型设计。因其结构化的特点又使它具有以下功能:   - 提供了完整的一套组合型原语(primitive);   - 提供了双向通路和电阻器件的原语;   - 可建立MOS器件的电荷分享和电荷衰减动态模型。   Verilog HDL的构造性语句可以精确地建立信号的模型。这是因为在Verilog HDL中,提供了延迟和输出强度的原语来建立精确程度很高的信号模型。信号值可以有不同的的强度,可以通过设定宽范围的模糊值来降低不确定条件的影响。   Verilog HDL作为一种高级的硬件描述编程语言,有着类似C语言的风格。其中有许多语句如:if语句、case语句等和C语言中的对应语句十分相似。如果读者已经掌握C语言编程的基础,那么学习Verilog HDL并不困难,我们只要对Verilog HDL某些语句的特殊方面着重理解,并加强上机练习就能很好地掌握它,利用它的强大功能来设计复杂的数字逻辑电路。下面我们将对Verilog HDL中的基本语法逐一加以介绍。

    标签: Verilog_HDL

    上传时间: 2013-11-23

    上传用户:青春给了作业95

  • FPGA实验指导书(5万门).doc+2007-08-14

    FPGA实验指导书(5万门).doc+2007-08-14

    标签: FPGA 2007 08

    上传时间: 2013-10-13

    上传用户:zycidjl

  • 电子工程师创新设计必备宝典之FPGA开发全攻略

    2008年,我参加了几次可编程器件供应商举办的技术研讨会,让我留下深刻印象的是参加这些研讨会的工程师人数之多,简直可以用爆满来形容,很多工程师聚精会神地全天听讲,很少出现吃完午饭就闪人的现象,而且工程师们对研讨会上展出的基于可编程器件的通信、消费电子、医疗电子、工业等解决方案也有浓厚的兴趣,这和其他器件研讨会形成了鲜明的对比。 Garnter和iSuppli公布的数据显示:2008年,全球半导体整体销售出现25年以来首次萎缩现象,但是,可编程器件却还在保持了增长,预计2008年可编程逻辑器件(PLD)市场销售额增长7.6%,可编程器件的领头羊美国供应商赛灵思公司2008年营业收入预计升6.5%!在全球经济危机的背景下,这是非常骄人的业绩!也足见可编程器件在应用领域的热度没有受到经济危机的影响!这可能也解释了为什么那么多工程师对可编程器件感兴趣吧。 在与工程师的交流中,我发现,很多工程师非常需要普及以FPGA为代表的可编程器件的应用开发知识,也有很多工程师苦于进阶无门,缺乏专业、权威性的指导,在Google上搜索后,我发现很少有帮助工程师设计的FPGA电子书,即使有也只是介绍一些概念性的基础知识,缺乏实用性和系统性,于是,我萌生了出版一本指导工程师FPGA应用开发电子书的想法,而且这个电子书要突出实用性,让大家都可以免费下载,并提供许多技巧和资源信息,很高兴美国赛灵思公司对这个想法给予了大力支持,赛灵思公司亚太区市场经理张俊伟小姐和高级产品经理梁晓明先生对电子书提出了宝贵的意见,并提供了大量FPGA设计资源,也介绍了一些FPGA设计高手参与了电子书的编撰,很短的时间内,一个电子书项目团队组建起来,北京邮电大学的研究生田耘先生和赛灵思公司上海办事处的苏同麒先生等人都参与了电子书的编写,他们是有丰富设计经验的高手,在大家的共同努力下,这本凝结着智慧的FPGA电子书终于和大家见面了!我希望这本电子书可以成为对FPGA有兴趣或正在使用FPGA进行开发的工程师的手头设计宝典之一,也希望这个电子书可以对工程师们学习FPGA开发和进阶有实用的帮助!如果可能,未来我们还将出版后续版本!

    标签: FPGA 电子工程师 创新设计 宝典

    上传时间: 2013-10-21

    上传用户:copu

  • 基于FPGA的手持设备MPU功耗解决方案

    在基于ASIC或FPGA的设计中,设计人员必须认真考虑某些性能标准,他们面临的挑战主要体现在面积、速度和功耗方面。  与ASIC一样,供应商在FPGA设计中也需要应对面积和速度的挑战。随着门数不断增加,FPGA需要更大的面积和尺寸来适应更多的应用,设计工具需要采用更好的算法以便更有效地利用面积。不断演进的FPGA技术也给设计人员带来一系列新的挑战,电源利用率就是其中之一,这对于为手持或便携式设备设计基于FPGA的嵌入式系统来说是急需解决的问题。

    标签: FPGA MPU 手持设备 功耗

    上传时间: 2013-11-14

    上传用户:wkchong

  • 基于FPGA的PAL-VGA转换器的实现

    介绍了基于Xilinx Spartan- 3E FPGA XC3S250E 来完成分辨率为738×575 的PAL 制数字视频信号到800×600 的VGA 格式转换的实现方法。关键词: 图像放大; PAL; VGA; FPGA 目前, 绝大多数监控系统中采用的高解析度摄像机均由47 万像素的CCD 图像传感器采集图像, 经DSP 处理后输出的PAL 制数字视频信号不能直接在VGA 显示器上显示, 而在许多场合需要在VGA 显示器上实时监视, 这就需要将隔行PAL 制数字视频转换为逐行视频并提高帧频, 再将每帧图像放大到800×600 或1 024×768。常用的图像放大的方法有很多种, 如最临近赋值法、双线性插值法、样条插值法等[ 1] 。由于要对图像进行实时显示, 本文采用一种近似的双线性插值方法对图像进行放大。随着微电子技术及其制造工艺的发展, 可编程逻辑器件的逻辑门密度有了很大提高, 现场可编程逻辑门阵列( FPGA) 有着逻辑资源丰富和可重复以及系统配置的灵活性, 同时随着微处理器、专用逻辑器件以及DSP 算法以IP Core 的形式嵌入到FPGA 中[ 2] , FPGA 的功能越来越强, 因此FPGA 在现代电子系统设计中发挥着越来越重要的作用。本课题的设计就是采用VHDL 描述, 基于FPGA 来实现的。

    标签: PAL-VGA FPGA 转换器

    上传时间: 2013-12-03

    上传用户:aa54

  • 韦根协议在门禁系统中的应用

    门禁系统

    标签: 韦根协议 门禁系统 中的应用

    上传时间: 2014-12-29

    上传用户:meiguiweishi

  • 基于国密算法CPU卡的门禁系统方案的设计

    为了提高门禁系统的安全便利性,提出了一种基于国密算法的CPU卡的门禁系统的解决方案。首先对门禁系统的组成进行了介绍,接着论述了非接触CPU卡的相对于非接触逻辑加密卡的特点及优势;基于国密算法SM1的特点以及配合落实住建部重要门禁系统密码应用安全管理工作要求,提出了一种基于国密SM1算法CPU卡的门禁系统解决方案。基于国密算法CPU卡的门禁系统解决方案能够满足最新门禁系统市场需求,具有安全、灵活多样等多种的特点。

    标签: CPU 国密算法 门禁系统 方案

    上传时间: 2013-11-01

    上传用户:xiaoyunyun