精华内容
下载资源
问答
  • 什么是寄存器 寄存器集成电路中非常重要的一种存储单元,通常由触发器组成。在集成电路设计中,寄存器可分为电路内部使用的寄存器和充当内外部接口的寄存器这两类。内部寄存器不能被外部电路或软件访问,只是为...
  • Alogic是一种用于数字逻辑的中级综合语言,可Swift编译为标准Verilog-2005,以在ASIC或FPGA中实现。 动机 传统上,寄存器传送级别(RTL)数字设计是使用Verilog或VHDL硬件描述语言(HDL)指定的。 这些标准的HDL几乎...
  • 深入了解CPU结构——寄存器

    千次阅读 2013-02-27 16:51:02
    其实寄存器就是一种常用的时序逻辑电路,但这种时序逻辑电路只包含存储电路。寄存器的存储电路由锁存器或触发器构成的,因为一个锁存器或触发器能存储1位二进制数,所以由N个锁存器或触发器可以构成N位寄存器
    1.什么是寄存器
    
     
        所谓寄存器(register),它是CPU内部用来存放数据的一些小型存储区域,用来暂时存放参与运算的数据和运算结果。其实寄存器就是一种常用的时序逻辑电路,但这种时序逻辑电路只包含存储电路。寄存器的存储电路是由锁存器或触发器构成的,因为一个锁存器或触发器能存储1位二进制数,所以由N个锁存器或触发器可以构成N位寄存器。
     
     
                              
            2.寄存器与CPU指令
     
        在讲CPU的寄存器之前,我们先了解一下CPU指令系统。指令系统指的是一个CPU所能够处理的全部指令的集合,Athlon XP和P4都是基于x86指令集,这是CPU的根本属性,决定CPU运行什么样的程序。
     
        指令一般分为:算术逻辑运算指令、浮点运算指令、位操作指令及其他的一些非运算指令,其中整数、地址、指令指针和浮点数据是按照数据形式来划分的。通常我们把需要CPU进行不同处理的单个数据称为标量数据(Scala Data)。标量数据既可以是整数数据,也可以是浮点数据。其中整数标量数据的存放区一般为通用寄存器(GPR),浮点标量数据的存放区一般为浮点寄存器(FPR)。与标量数据相对的是矢量数据(Vector Data),所谓矢量数据就是指一列需要由处理器作相同处理的数据集合。比如处理器在做MP3编码的过程中,需要对内存中的音频文件里的各字节数据作相同的MP3编码操作。那么通常使用MMX或SSE这类单指令多数据流(SIMD)指令,将数个字节打包为一组矢量数据,存放在MMX或SSE寄存器中,再送往相应的功能单元进行统一操作。
     
        其中通用寄存器是处理器中最快的存储器,用来保存参加运算的操作数和中间结果。在通用寄存器的设计上,RISC与CISC(也就是我们常说的x86架构)有着很大的不同。CISC的寄存器通常很少——只有8个通用寄存器。由于CPU在执行指令过程中,存在指令依赖性,在一定程度上使得x86 CPU不能在每个时钟周期中立即发布大量的指令。所谓“依赖性”就是指令的执行需要前个指令的运算结果。比如程序员经常使用的分支程序,请看下面这个例子:
     
            A=C*1
            B=A+2
     
        只要变量A的值还不知道,B=A+2就不能进行运算。也就是说,只要指令1的结果没有写进寄存器,CPU调度器就不能把指令2发布到执行单元。由于程序分支会造成具有较长流水线CPU运行停滞的,目前常用的解决方法是采用分支预测。
     
        不过,分支预测同样存在一个问题:流水线越长,指令潜伏期也越长,等待前一指令运算结果的时间也越长,同样会造成CPU运行停滞。我们知道,程序指令通常都有各类型的条件分支语句,通过验证条件决定执行路线。但CPU执行单元内是通过一项特殊的预测机制选择一条路线直接执行(这样可以避免验证语句条件而处于等待情况),然后在后面进行验证。如果预测正确则继续往下执行,如果发现以前的预测错误,那么就必须返回原地重新开始,以前的指令就会作废。
     
        因此,管线越长,意味着出现分支预测错误的机会就越多,越多在管线内的指令会被清除掉,而且重新让管道填满指令的时间也会越长。对于普通处理器来说,如果出现分支预测错误,CPU就不得不将整条流水线清空后从错误的地方重新装满数据、重新执行。毫无疑问这将花更多的时间,整体性能就会下降。因此,针对通用寄存器少的问题,在x86架构中比较完美的解决方法就是增加寄存器的数量和采用“乱序执行”。
     
    3.为什么寄存器不够用 
     
        在上面我们已经提到,寄存器只是用来暂时存放指令值的,如果CPU需要把两个值加起来,它需要用1个寄存器来存放运算结果,用2个寄存器来存放相加的数值。例如,在以下的方程式中:A = 2 + 4
     
            * 在寄存器1储存“2”;
            * 在寄存器2储存“4”;
            * 在寄存器3储存“寄存器1 + 寄存器 2”;
        因为在微处理器里面有超过3个寄存器,因此这个运算能够轻易地执行,不会造成用光寄存器的情况。
    在这些运算被执行之后,所有的3个数值都能够被保留并重新使用,因此如果我们再想在结果加上2的话,处理器只需要执行:寄存器 1 + 寄存器 3 就可以了。如果微处理器仅有2个剩余的寄存器,而我们又需要再次使用2和4的值,那么这些值在覆盖结果A之前,必须储存在主内存之中 。运算执行的过程则会变成如下所示:
     
            * 在寄存器1储存 “2”;
     
            * 在寄存器2储存“4”;
     
            * 在主内存的某个空间储存“寄存器1 + 寄存器2”;
     
        我们可以看到这里使用了其它的内存访问过程,而在这期间其实还有我们没有提到的其它处理过程,比如主内存的定位也需要占据寄存器,以便让CPU 告诉装载/储存单元该往哪里发送数据 。如果我们需要使用到这些结果的话,那么CPU将不得不首先到主内存中找回这些结果,把目前满载的寄存器驱逐一些数据,把它们写入主内存,然后再把寻找到的数据储存在寄存器里。
     
                            
     
        这里大家应该能够明白吧,对内存的访问次数将会可怕地增加;你需要访问内存的时间越多,那么处理器等待工作完成的时间就越长——因而造成性能的下降。因此面对超标量CPU在并行处理大量运算,x86体系仅有的8个通用寄存器远远不能满足需要,在同一时钟周期中,如果有3个指令发布,你就需要3个输出寄存器和6个输入寄存器。我们该怎么办呢?聪明的工程师们发现了突破这个限制的方法:“寄存器重命名”。
     
            4.寄存器重命名技术
     
        寄存器重命名,是CPU在解码过程中对寄存器进行重命名,解码器把“其它”的寄存器名字变为“通用”的寄存器名字,本质上是通过一个表格把x86寄存器重新映射到其它寄存器,这样可以让实际使用到的寄存器远大于8个。这样做的好处除了便于前面指令发生意外或分支预测出错时取消外,还避免了由于两条指令写同一个寄存器时的等待。
     
                             
     
            下面我们以一个超标量CPU执行8个算术指令为例:假设它在每个时钟周期中能对2个指令解码,引出计算结果是在指令发布后3个时钟周期发生的:
     
            (1)在第1个时钟周期,两个指令发布:它们互不关联,因此,它们将在3个时钟周期后(第4个时钟周期)引出;
     
            (2)在第2个时钟周期,我们首次遇到了“指令依赖”,指令3需要指令2的结果,此时指令3不能开始发布;
     
            (3)如果是按序执行,指令4、5、6就不能在指令3前发布。只有在第5个时钟周期时(指令2的结果已得到)才能发布指令3;
     
            (4)在第6个时钟周期有个大问题:我们想把结果写到寄存器R1,但这将改变指令5的结果。因此,我们只有在R1空闲时(第10个时钟周期)才能发布指令6。
     
        按照正常情况处理的话,尽管这个CPU每个时钟周期可以对2个指令解码,但它每个时钟周期的指令执行数只有0.53。如果每次程序所需的寄存器正被使用,我们可以把数据放到其它的寄存器中,在第6个时钟周期将寄存器R1重命名,指令6和指令8不再耽误CPU的工作。结果是我们能够将每个时钟周期的指令执行数提高50%。寄存器重命名技术可以使x86 CPU的寄存器可以突破8个的限制,达到32个甚至更多。寄存器重命名技术现在已经深深地扎根于超标量CPU中了。

     5.乱序执行技术 
     
        除此之外,处理器工程师还引入了乱序执行技术,从一定程度上来缓解通用寄存器不足的问题。采用乱序执行技术的目的是为了使CPU内部电路满负荷运转并相应提高了CPU运行程序的速度。
     
        这好比请A、B、C三个名人为春节联欢晚会题写横幅“春节联欢晚会”六个大字,每人各写两个字,如果这时在一张大纸上按顺序由A写好“春节”后再交给B写“联欢”,然后再由C写“晚会”,那么这样在A写的时候,B和C必须等待,而在B写的时候C仍然要等待而A已经没事了。但如果采用三个人分别用三张纸同时写的做法,那么B和C都不必等待就可以同时各写各的了,甚至C和B还可以比A先写好也没关系(就像乱序执行),但当他们都写完后就必须重新在横幅上按“春节联欢晚会”的顺序排好(自然可以由别人做,就象CPU中乱序执行后的重新排列单元)才能挂出去。
     
        不过,虽然采用寄存器重命名技术、乱序执行技术,但仍不能从根本上解决x86处理器通用寄存器不足的问题。以寄存器重命名技术来说,这种技术的寄存器操作相对于RISC来说,要花费一个时钟周期来对寄存器进行重命名,这无形中降低了处理器性能以及流水线工作效率,也增加了程序和编译器的优化难度。针对这个问题,最新的x86-64架构中(K8处理器),AMD在x86架构基础上将通用寄存器和SIMD寄存器的数量增加了1倍:其中新增了8个通用寄存器以及8个SIMD寄存器作为原有x86处理器寄存器的扩充。
     
        这些通用寄存器都工作在64位模式下,经过64位编码的程序就可以使用到它们。这些64位寄存器称为RAX、RBX、RCX、RDX、RDI、RSI、RBP、RSP、RIP以及EFLAGS,在32位环境下并不完全使用到这些寄存器,同时AMD也将原有的EAX等寄存器扩展至64位的RAX,这样可以增强通用寄存器对字节的操作能力。从扩充方式上看,EAX等寄存器可以看做是RAX的一个子集,系统仍然可以完整地执行以往的32位编码程序。增加通用寄存器除了可高效存储数据外,还可作为寻址时的地址指针,从而缩短指令长度和指令执行时间,加快CPU的运算处理速度,同时也给编程带来方便。
     
        此外,为了保证K8的分支预测更有效率,K8的分支预测寄存器增加到64个。分支指令可以被设为真或假,而每个指令中的6位被分配到单独一个预测寄存器中,只有预测寄存器被设定为“真”时,那些指向预测寄存器为“真”的指令结果才会被执行。其次由于所有的分支都能并行执行,CPU所花的时间同只执行单个分支的时间是相同的,降低了预测出错的风险。第三由于CPU不再跳跃执行,它不会把程序代码分成小块。也就是说,稍前和稍后的程序代码可以打包。这样CPU能够一并将它们发布,增大并行工作量。从而使性能提高10%~15%,特别是在整数代码部分。
     
        不过在x86-64中,寄存器的扩展部分似乎仅对于整数、地址数据有效。对浮点和向量数据则仍然保持原样。我们能从K8向64位的扩展所获得的好处,只不过是可以在同样一条指令中,处理更大数值的整数数值以及管理空间更大的内存区域而已。而在32位的情况下,由于通用寄存器只能容纳最大32位的数据,因此显然要花费更多条指令对尺寸超过32位的数据进行处理。这种改进对服务器、科学计算这样的领域具有一定的意义,但显然并不是普通家用环境急需的改进。
     
       可以说,处理器的寄存器对处理器的性能有着巨大的影响。但是无论怎么发展,通用型CPU目前还没有脱离x86架构的限制,也许有一天,新的寄存器技术能让我们的CPU变得更加功能强大!
    展开全文
  • Alogic是一种用于数字逻辑的中级综合语言,可Swift编译为标准Verilog-2005,以在ASIC或FPGA中实现。 动机 传统上,寄存器传送级别(RTL)数字设计是使用Verilog或VHDL硬件描述语言(HDL)指定的。 这些标准的HDL几乎...
  • 51单片机的IO口和寄存器

    千次阅读 2020-07-10 16:21:34
    这就是涉及到51单片机的内部结构了,学过数字电子技术的同学知道,集成电路的结构太复杂了,简单的逻辑与或非还行,什么锁存器、时序电路、组合电路简直让人头疼。请先不要害怕,51单片机虽然也个很复杂

    当我们拿到一块单片机时,我们首先看到的是他的外观,就像下边这样的:
    在这里插入图片描述
    在这里插入图片描述
    当然对于51单片机来说,最常用的还是第一种样式的,这种叫做PDIP封装。在单片机上有很多小针(管脚),这些就是单片机用来输出数据,控制其他设备的工具。那么这些管脚是怎么工作的呢?当然是用程序!可是程序是软件,而这些管脚是硬件,它们之间有啥关系啊?这就是涉及到51单片机的内部结构了,学过数字电子技术的同学知道,集成电路的结构太复杂了,简单的逻辑与或非还行,什么锁存器、时序电路、组合电路简直让人头疼。请先不要害怕,51单片机虽然也是个很复杂的集成电路,但是你要记住,你是用单片机的,不是造单片机的,更不是设计单片机的,所以你只要知道它怎么用就可以了。关于51单片机怎么用,个人觉得分两部分,第一部分就是外部的引脚功能,每个引脚是干嘛的,怎么用?第二个部分就是刚才说的,软件程序怎么去控制这些引脚呢?这就要用到寄存器,其实单片机所有功能都是通过配置寄存器实现的。所以不要害怕了,学好51的单片机就两点:对外,知道怎么将引脚和电路连接;对内,知道怎么通过设置寄存器得到期望的功能。这篇文章就先带大家粗略看一下各个引脚和寄存器的功能,详细的使用方法会陆续在之后的文章讲述。

    一、 从外观认识51单片机

    在这里插入图片描述
    上图是典型的PDIP封装的51单片机引脚图,一共有四十个引脚,下面开始枯燥的叙述各个引脚的功能,我本来想用一些随便的语言去叙述,一是怕讲述的不够清楚,影响理解,二是我希望如果大家觉得这篇文章有用,可以收藏一下,方便查阅,当作一个手册来看而不是看我这里的废话,好了不说了上干货。
    51单片机引脚功能介绍:
    1-8号引脚:P1口8位双向口线。
    9号引脚:复位端
    10-17号引脚:P3口8位双向口线。
    18-19号引脚:XTAL1和XTAL2 外接晶振引脚。当使用芯片内部时钟时,此二引脚用于外接石英晶体和微调电容;当使用外部时钟时,用于接外部时钟脉冲信号。
    20号引脚:接地
    21-28号引脚:P2口8位双向口线。
    29号引脚:PSEN 外部程序存储器读选通信号
    30号引脚:ALE/PROG 地址锁存控制信号
    31号引脚:EA/VPP 访问和序存储器控制信号
    32-39号引脚:P0口8位双向口线.
    40号引脚:电源。
    下面进行详细的介绍:
    P0口有三个功能:
    (1)外部扩展存储器时,当做数据总线
    (2)外部扩展存储器时,当作地址总线
    (3)不扩展时,可做一般的I/O使用,但内部无上拉电阻,作为输入或输出时应在外部接上拉电阻。
    P1口只做I/O口使用:其内部有上拉电阻。
    P2口有两个功能:
    (1)扩展外部存储器时,当作地址总线使用
    (2)做一般I/O口使用,其内部有上拉电阻;
    P3口有两个功能:
    除了作为I/O使用外,还有一些特殊功能,由特殊寄存器来设置。
    ALE/PROG:
    在系统扩展时,ALE用于控制把P0口的输出低8位地址送锁存器锁存起来,以实现低位地址和数据的隔离。将P0口上低8位地址信号送入锁存器。当ALE是低电平时,P0口上的内容和锁存器输出一致。
    PORG
    我们知道,在8051单片机内部有一个4KB或8KB的程序存储器(ROM),ROM的作用就是用来存放用户需要执行的程序的,那么我们是怎样把编写好的程序存入进这个ROM中的呢?实际上是通过编程脉冲输入才能写进去的,这个脉冲的输入端口就是PROG。
    PSEN 外部程序存储器读选通信号:在读外部ROM时PSEN低电平有效,以实现外部ROM单元的读操作。
    (1)内部ROM读取时,PSEN不动作;
    (2)外部ROM读取时,在每个机器周期会动作两次;
    (3)外部RAM读取时,两个PSEN脉冲被跳过不会输出;
    (4)外接ROM时,与ROM的OE脚相接。
    EA/VPP 访问和序存储器控制信号
    (1)接高电平时:
    CPU读取内部程序存储器(ROM)扩展外部ROM:当读取内部程序存储器超过0FFFH(8051)1FFFH(8052)时自动读取外部ROM。
    (2)接低电平时:CPU读取外部程序存储器(ROM)。 在前面的学习中我们已知道,8031单片机内部是没有ROM的,那么在应用8031单片机时,这个脚是一直接低电平的。
    (3)8751烧写内部EPROM时,利用此脚输入21V的烧写电压。RST 复位信号:当输入的信号连续2个机器周期以上高电平时即为有效,用以完成单片机的复位初始化操作,当复位后程序计数器PC=0000H,即复位后将从程序存储器的0000H单元读取第一条指令码。

    二、51单片机的寄存器

    然后就来看看神秘的寄存器吧?51单片机一共有21个特殊功能寄存器,不连续的分布在地址为80H-FFH的SFR空间中,在这片SFR空间中包含128个位地址空间,地址也是80H-FFH,但是只有83个有效位,可对11个特殊功能寄存器进行位寻址操作。
    在这里插入图片描述
    下面对这些寄存器一一讲解:
    1、ACC累加器
    首先说明他是个寄存器而不是一个运算器,运算类指令都离不开它。自身带有全零标志Z,若A=0则Z=1;若A≠0则z=0。该标志常用作程序分枝转移的判断条件。
    2、B
    具体的名字不太清楚,说一下功能吧,在做乘、除法时放乘数或除数,不做乘除法时,随你怎么用。
    3、PSW——程序状态字。
    这是一个很重要的寄存器,里面放了CPU工作时的很多状态。
    在这里插入图片描述
    CY:进位标志
    51单片机拥有8位的运算器,可以表示0-255,在运算过程中可能会超出这个范围,为了不让最高位丢失,就用到了进位标志CY。有进、借位时CY=1;无进、借位时CY=0。
    AC:辅助进、借位(高半字节与低半字节间的进、借位)。
    F0:用户标志位
    由编程人员决定什么时候用,怎么用。
    S1、RS0:工作寄存器组选择位
    通过修改PSW中的RS1、RS0两位的状态,就能任选一个工作寄存器区。这个特点提高了MCS-51现场保护和现场恢复的速度。对于提高CPU的工作效率和响应中断的速度是很有利的。
    在这里插入图片描述
    OV:溢出标志位
    运算结果按补码运算理解。有溢出,OV=1;无溢出,OV=0。什么是溢出我们后面的章节会讲到。
    P:奇偶校验位
    它用来表示ALU运算结果中二进制数位“1”的个数的奇偶性。若为奇数,则P=1,否则为0。运算结果有奇数个1,P=1;运算结果有偶数个1,P=0。
    4、DPTR(DPH、DPL):数据指针
    可以用它来访问外部数据存储器中的任一单元,如果不用,也可以作为通用寄存器来用,由用户决定如何使用。
    5、P0、P1、P2、P3:输入输出口(I/O)寄存器
    这个我们已经知道,是四个并行输入/输出口(I/O)的寄存器。它里面的内容对应着管脚的输出。
    6、IE:中断充许寄存器
    可按位寻址。
    在这里插入图片描述
    EA:EA=0时,所有中断禁止(即不产生中断);EA=1时,各中断的产生由个别的允许位决定
    ES :串行口中断充许(ES=1充许,ES=0禁止)
    ET1:定时1中断充许
    EX1:外中断INT1中断充许
    ET0:定时器0中断充许
    EX0:外部中断INT0的中断允许
    7、IP:中断优先级控制寄存器
    可按位寻址,地址位B8H。
    在这里插入图片描述
    PS:串行口中断优先
    PT1:定时1中断优先
    PX1:外中断INT1中断优先
    PT0:定时器0中断优先
    PX0:外部中断INT0的中断优先
    以上寄存器,1表示高优先级,0表示低优先级,51单片机只有高低两个优先级。
    8、TMOD:定时器控制寄存器
    不按位寻址,地址89H。
    在这里插入图片描述
    GATE :定时操作开关控制位,当GATE=1时,INT0或INT1引脚为高电平,同时TCON中的TR0或TR1控制位为1时,计时/计数器0或1才开始工作。若GATE=0,则只要将TR0或TR1控制位设为1,计时/计数器0或1就开始工作。
    C/T :定时器或计数器功能的选择位。C/T=1为计数器,通过外部引脚T0或T1输入计数脉冲。C/T=0时为定时器,由内部系统时钟提供计时工作脉冲。
    M1 、M0:T0、T1工作模式选择位
    在这里插入图片描述
    9、TCON——定时器控制寄存器
    可按位寻址,地址位88H
    在这里插入图片描述
    F1:定时器T1溢出标志,可由程序查询和清零,TF1也是中断请求源,当CPU响应T1中断时由硬件清零。
    TF0:定时器T0溢出标志,可由程序查询和清零,TF0也是中断请求源,当CPU响应T0中断时由硬件清零。
    TR1:T1充许计数控制位,为1时充许T1计数。
    TR0:T0充许计数控制位,为1时充许T0计数。
    IE1:外部中断1请示源(INT1,P3.3)标志。IE1=1,外部中断1正在向CPU请求中断,当CPU响应该中断时由硬件清“0”IE1(边沿触发方式)。
    IT1:外部中断源1触发方式控制位。IT1=0,外部中断1程控为电平触发方式,当INT1(P3.3)输入低电平时,置位IE1。
    IE0:外部中断0请示源(INT0,P3.2)标志。IE0=1,外部中断1正在向CPU请求中断,当CPU响应该中断时由硬件清“0”IE0(边沿触发方式)。
    IT0:外部中断源0触发方式控制位。IT0=0,外部中断1程控为电平触发方式,当INT0(P3.2)输入低电平时,置位IE0。
    10、SCON:串行通信控制寄存器
    它是一个可寻址的专用寄存器,用于串行数据的通信控制,单元地址是98H,其结构格式如下
    在这里插入图片描述
    SM0、SM1:串行口工作方式控制位。

    SM0,SM1 工作方式

    00 方式0-波特率由振荡器频率所定:振荡器频率/12

    01 方式1-波特率由定时器T1或T2的溢出率和SMOD所定:2SMOD ×(T1溢出率)/32

    10 方式2-波特率由振荡器频率和SMOD所定:2SMOD ×振荡器频率/64

    11 方式3-波特率由定时器T1或T2的溢出率和SMOD所定:2SMOD ×(T1溢出率)/32

    SM2:多机通信控制位。多机通信是工作于方式2和方式3,SM2位主要用于方式2和方式3。接收状态,当串行口工作于方式2或3,以及SM2=1时,只有当接收到第9位数据(RB8)为1时,才把接收到的前8位数据送入SBUF,且置位RI发出中断申请,否则会将接受到的数据放弃。当SM2=0时,就不管第位数据是0还是1,都难得数据送入SBUF,并发出中断申请。工作于方式0时,SM2必须为0。
    REN:允许接收位。< br> REN用于控制数据接收的允许和禁止,REN=1时,允许接收,REN=0时,禁止接收。
    TB8:发送接收数据位8。< br> 在方式2和方式3中,TB8是要发送的——即第9位数据位。在多机通信中同样亦要传输这一位,并且它代表传输的地址还是数据,TB8=0为数据,TB8=1时为地址。
    RB8:接收数据位8。
    在方式2和方式3中,RB8存放接收到的第9位数据,用以识别接收到的数据特征。
    TI:发送中断标志位。
    可寻址标志位。方式0时,发送完第8位数据后,由硬件置位,其它方式下,在发送或停止位之前由硬件置位,因此,TI=1表示帧发送结束,TI可由软件清“0”。
    RI:接收中断标志位。
    可寻址标志位。接收完第8位数据后,该位由硬件置位,在其他工作方式下,该位由硬件置位,RI=1表示帧接收完成。
    11、PCON:电源管理寄存器
    PCON主要是为CHMOS型单片机的电源控制而设置的专用寄存器,单元地址是87H,其结构格式如下:
    在这里插入图片描述
    在CHMOS型单片机中,除SMOD位外,其他位均为虚设的,SMOD是串行口波特率倍增位,当SMOD=1时,串行口波特率加倍。系统复位默认为SMOD=0。

    展开全文
  • 1、用户模块电路 主要完成BORSCHT七功能,它由下列电路组成: A、 用户线接口电路 B、 二\四线变换器 C、 PCM编译码电路 用户线接口电路 二/ 四线变换器 二/四线变换器 用户线接口电路 用户1 PCM CODEC电路 ...
  • (注:源码中的VGA画图段和oled画图段看上去很复杂,其实画点的方式比较奇怪,两画法都先将132x64的点阵水平划分为8条,每条8行,再以每列为1个byte的方式画出来。。。那么为什么要这么复杂呢?因为oled的...
  • 什么是“门级网表”(Gate-level netlist)文件?

    千次阅读 多人点赞 2019-04-25 14:47:46
    首先,RTL是寄存器传输层的缩写,RTL既是一个抽象层级概念,又是一种HDL代码编写风格[1]。 RTL是一个抽象层级概念 认识和理解IC集成电路可以从多种不同的角度,其中最好最普遍的一种是:抽象层级,即,将IC做不同...

    首先,RTL是寄存器传输层的缩写,RTL既是一个抽象层级概念,又是一种HDL代码编写风格[1]。

    RTL是一个抽象层级概念

    认识和理解IC集成电路可以从多种不同的角度,其中最好最普遍的一种是:抽象层级,即,将IC做不同程度的抽象,按照抽象程度从高到底,分别为[2]:

    • 系统层
    • 算法层
    • 寄存器传输层
    • 逻辑层
    • 电路层

    而上述的每一抽象层级,均可以用三种不同的方式去描述,分别为[2]:

    • 行为描述
    • 物理描述 
    • 结构描述

    我们常说的综合其实就是指从高抽象层级转换到低抽象层级的过程,各层级间综合过程如下[3]: 

    • 算法层--(高层次综合 HLS)-->寄存器传输层
    • 寄存器传输层--(逻辑综合 LS)-->逻辑层
    • 逻辑层--(版图综合即布局布线Place & Route)-->电路层

    2. RTL是一种HDL代码编写风格

    HDL描述电路,有三种方式:

    • 数据流
    • 行为结构
    • 门级连接

    RTL作为一种HDL代码编写风格是指代码主要采用数据流和行为结构相结合的方式编写[1]。

    你所说的RTL文件指的就是用这种风格编写的Verilog或VHDL代码文件。

    从图1中可以看出,RTL代码实际对应的结构描述是众多算术运算单元(ALU)、多路选择器(MUX)、寄存器等等,而这些模块实际上都是由各种逻辑门(与非门,或非门等等)和基本触发器(D触发器、JK触发器等等)搭成的,逻辑综合的过程,就是要把RTL文件描述的电路进一步展开,转换成用逻辑门和触发器搭成的电路,而用来描述这些逻辑门和触发器的连接关系的文件就是门级网表文件

    因此,逻辑综合包含两个主要步骤[1]:

    • 选择工艺库(标准单元库)
    • 设计约束(时序约束、面积约束和功耗约束)

    选择的工艺库中就包含了基本的逻辑门和触发器。

    不同的综合工具生成的网表文件的文件格式也不太一样,如*.v(Design Compiler, Synopsys)、*.vh(PKS, Cadence)和*.edf(Synplify, Synplicity)。

    对于*.v格式的门级网表文件,可以看成代码风格是采用门级连接方式编写的Verilog代码文件。

    一个示例[1]:

    • 简单组合逻辑块的RTL代码:

    module example(
    input wire a,
    input wire b,
    input wire c,
    output reg out
    );

    always @*
    out = (a & b) | c;

    endmodule

    • 选择工艺库

    选择某公司名为abc_100的xx纳米的CMOS工艺,该公司提供的工艺库中包含了以下标准单元:

    VNAND//两输入与非门
    VAND//两输入与门
    VNOR//两输入或非门
    VOR//两输入或门
    VNOT//反相器
    VBUF//缓冲器
    NDFF//下降沿触发的DFF
    PDFF//上升沿触发的DFF

    • 设计约束

    无面积和功耗约束,只要求优化得到最快的时序

    • 逻辑综合得到的门级网表:

    module example_after_LS(
    input wire a,
    input wire b,
    input wire c,
    output reg out
    );

    wire net0;

    VAND U1 (.in0(a), .in1(b), .out(net0));
    VOR U2 (.in0(net0), .in1(c), .out(out));

    endmodule

     

    逻辑综合得到的门级电路

    参考文献

    [1] SamirPalnitkar. Verilog HDL数字设计与综合[M]. 电子工业出版社, 2004。

    [2] 金西. 数字集成电路设计 : Digital integrated circuit design[M]. 中国科学技术大学出版社, 2013。

    [3] 林敏, 方颖立. VHDL数字系统设计与高层次综合[M]. 电子工业出版社, 2002

    展开全文
  • 2021.3.10学习内容 继电器概念:低电流...逻辑电路一种是组合逻辑,有输入就有输出,没有输入就没有输出 另一种是时序逻辑,它的输出不但和现在的输入有关,还和过去的状态有关,构成了触发器,寄存器,存储器 ...

    2021.3.10学习内容
    继电器概念:低电流控制大电流
    智能插排里面怎么控制开关通断,靠的就是它!
    1.电子管:已经被淘汰,但是高档HiFi音响还有用,叫胆机
    2. 数字逻辑电路
    什么是逻辑,比如我用高电平5V代表逻辑1低电平0代表逻辑0
    半加器 全加器
    逻辑电路,一种是组合逻辑,有输入就有输出,没有输入就没有输出
    另一种是时序逻辑,它的输出不但和现在的输入有关,还和过去的状态有关,构成了触发器,寄存器,存储器

    展开全文
  • 第二周周三上课内容

    2021-03-18 18:10:19
    2021.3.10学习内容 ...逻辑电路一种是组合逻辑,有输入就有输出,没有输入就没有输出 另一种是时序逻辑,它的输出不但和现在的输入有关,还和过去的状态有关,构成了触发器,寄存器,存储器 ...
  • 图搞定CPU内存管理

    2021-03-16 14:59:35
    先总结,图在???? 1、作为OS的基础,CPU能支持什么内存访问模型,OS就必须跟随;...分段模型负责将CPU拿到的逻辑地址(主要几个寄存器的值,GDTR,CD,DS,SS)转成一个线性地址(线性地址由OS生成
  • 今天看《从算法设计到硬件逻辑的实现》这本电子书时,遇到了个问题,就是有限状态机的编写中,...有限状态机寄存器组和组合逻辑构成的硬件时序电路,其状态(即由寄存器组的1和0的组合状态所构成的有限个状...
  • 亚稳态是一种介于逻辑1和逻辑0之间的状态,可能引起电路解析的歧义。 3、处理器在中断处理器过程中,必须由硬件来实现的功能是什么? 保存将被中断服务程序破坏的通用寄存器中的内容。 4、为什么基于SRAM的FPGA器件...
  • 解决FPGA时序问题的八大忠告

    千次阅读 2017-07-06 09:49:18
    忠告二、看下时序报告,挑个时序最紧的路径,仔细看看是什么原因导致,先看逻辑级数是多少?是哪种电路有问题,乘法器 或者还是RAM接口数据 先弄清楚哪儿的问题   忠告三、搞时序优化的话 插入寄存器是王道 ...
  • 3. 在8086中,逻辑地址、偏移地址、物理地址分别指的是什么?具体说明。 4. 什么是硬件中断和软件中断?在PC机中两者的处理过程有什么不同? 六、综合应用题(每题10分,共20 分) 现有16K×1位的动态...
  • FPGA时序优化八大忠告

    千次阅读 2017-05-02 11:09:43
    忠告二、看下时序报告,挑个时序最紧的路径,仔细看看是什么原因导致,先看逻辑级数是多少?是哪种电路有问题,乘法器 或者还是RAM接口数据 先弄清楚哪儿的问题   忠告三、搞时序优化的话 插入寄存器是王道...
  • 实践最好的老师,通过...Mealy型有限状态机:由寄存器组和组合逻辑构成的硬件时序电路,其状态(即由寄存器组的1和0的组合状态所构成的有限个状态)只可能在同一时钟跳变沿的情况下才能从个状态转向另个状态,究竟
  • 状态机与序列检测器的实现 1. 什么是状态机 状态机(State Machine)/有限状态机(Finite State Machine,...三段式可以在组合逻辑后再增加寄存器来实现时序逻辑输出: 1、可以有效地滤去组合逻辑输出的毛刺; 2、
  • LUT

    2019-02-28 16:48:00
    寄存器很好理解,存储器的一种,用于存储指令和数据,多位于CPU内。拿什么是LUT呢? LUT:即Look up table,查找表,其本质是一个RAM;查找表顾名思义可以知道就是输入一个信息就等同于查找一个地址,将查找到的地址...
  • FPGA 提高 时序的方法

    2017-08-03 14:08:03
    忠告二、看下时序报告,挑个时序最紧的路径,仔细看看是什么原因导致,先看逻辑级数是多少?是哪种电路有问题,乘法器 或者还是RAM接口数据 先弄清楚哪儿的问题   忠告三、搞时序优化的话 插入寄存器是王道...
  • 答:逻辑地址是在程序中对存储器地址的一种表示方法,由段地址和段内偏移地址两部分组成,如1234H:0088H。偏移地址是指段内某个存储单元相对该段首地址的差值,是一个16位的二进制代码。物理地址是8086芯片引线送出...
  • MIPS——Million Instruction Per Second,每秒执行百万条指令数,为计算机运算速度指标的一种计量单位; 10. 指令和数据都存于存储器中,计算机如何区分它们? 解:计算机硬件主要通过不同的时间段来区分指令和数据...
  • 唐朔飞计算机组成原理答案完整版

    热门讨论 2011-12-11 21:51:19
    MIPS:Million Instruction Per Second,每秒执行百万条指令数,为计算机运算速度指标的一种计量单位。 9. 画出主机框图,分别以存数指令“STA M”和加法指令“ADD M”(M均为主存地址)为例,在图中按序标出完成...
  • 其次是一个部件只要符合总线标准,就可以连接到采用这种总线标准的系统中,使系统功能得到扩充。 1.6 数据总线和地址总线在结构上有什么不同之处?如果一个系统的数据和地址合用一套总线或者合用部分总线,那么,要...
  • 因此,数字频率计是一种应用很广泛的仪器 电子系统非常广泛的应用领域内,到处可见到处理离散信息的数字电路。 数字电路制造工业的进步,使得系统设计人员能在更小的空间内实现更多的功 能,从而提高系统可靠性和...
  • 6.计算机操作系统是一种 (1) ,用于 (2) ,是 (3) 的接口。 (1) A. 系统程序 B. 应用程序 C. 用户程序 D. 中间程序 (2) A.编码转换 B. 操作计算机 C. 控制和管理计算机系统的资源 D. 把高级语言程序翻译成机器...
  • 单片机期末考试题目及答案详解

    热门讨论 2009-06-23 10:30:30
    专用寄存器“串行发送数据缓冲寄存器”,实际上 寄存器寄存器的总称。 28.在串行通讯中,若发送方的波特率为1200bps,则接收方的波特率为 。 29.D/A转换电路之前必须设置数据锁存器,这因为 。 30....
  • c语言编写单片机技巧

    2009-04-19 12:15:17
    答:汇编语言是一种用文字助记符来表示机器指令的符号语言,是最接近机器码的一种语言。其主要优点是占用资源少、程序执行效率高。但是不同的CPU,其汇编语言可能有所差异,所以不易移植。 C语言是一种结构化的...

空空如也

空空如也

1 2 3
收藏数 44
精华内容 17
关键字:

寄存器是一种什么逻辑电路