精华内容
下载资源
问答
  • 8位寄存器

    2009-04-08 20:28:00
    • LIBRARY IEEE;• USE ieee.std_logic_1164.ALL;• USE ieee.std_logic_unsigned.ALL;• ENTITY test34 IS• PORT(clk,oe: IN std_logic; • d: IN 

            LIBRARY IEEE;

            USE ieee.std_logic_1164.ALL;

            USE ieee.std_logic_unsigned.ALL;

            ENTITY test34 IS

             PORT(clk,oe: IN  std_logic;

                       d: IN  std_logic_VECTOR(7 DOWNTO 0);

                       q: OUT std_logic_VECTOR(7 DOWNTO 0));

            END test34;

            ARCHITECTURE one OF test34 IS

             SIGNAL q_temp : STD_LOGIC_VECTOR(7 DOWNTO 0) ;

            BEGIN

             PROCESS(clk,oe)

              BEGIN

               if oe='0' then

                if clk'event and clk='1' then q_temp<=d;

                end if;

               else q_temp<="ZZZZZZZZ";

               end if;

            END PROCESS;

            q<=q_temp;

            END ARCHITECTURE one ;

    展开全文
  • 一个自制的8位寄存器的封装(reg8_new2) 一个数据选择器 在quaturs上实现如下:???? 用与门+非门作一个四选一的选择器,对待写入的寄存器进行片选 其中,w表示写操作,如果w=1,则说明可以写,反之亦然。e[0],e[1]...

    已有条件:
    一个自制的8位寄存器的封装(reg8_new2)
    一个数据选择器
    在quaturs上实现如下:👀

    1. 用与门+非门作一个四选一的选择器,对待写入的寄存器进行片选
      在这里插入图片描述
      其中,w表示写操作,如果w=1,则说明可以写,反之亦然。e[0],e[1]是片选的两根地址线,因为是四选一,所以一共需要2根地址线。总线q[7…0]是输入8位数据的总线,这里要注意:这是总线的标准写法,中间只有两个点点
      在这里插入图片描述
      红色部分是数据选择功能,由上图可知,我们现在会输出4个8位数据出来。接下来,我们选用软件自备的数据选择器:
      在这里插入图片描述
      2.现在,四个寄存器都会输出数据,我们要来选择要哪个寄存器来输出:
      在这里插入图片描述
      这个4 ×\times 8位选择寄存器就做好了,很简单,主要由上图两部分完成。
      接下来,我们来看看仿真结果:
      在这里插入图片描述
      出现了问题,我们看到第二个周期中,输出选择是00(前面已经在第00个寄存器中存储了11100000),但是输出来却依旧是00000000?

    如果把上述的仿真图放大(因图太大,所以不放上来了),其实造成这样的结果原因就在于时延,并且我们这个做法也会造成不确定的时延(因为我把写入的片选信号放在了clik中,准确点应该在使能端上),改成如下样子:
    在这里插入图片描述

    展开全文
  • 声明:用于个人学习计算机组成原理时复习数字电路用。采用 Logisim 软件平台进行寄存器组的电路设计。 寄存器是运算器中通用寄存器的主要...关于多路选择器,一个 8 位寄存器组需要两个多路选择器。多路选择器(Mu...

     声明:用于个人学习计算机组成原理时复习数字电路用。采用 Logisim 软件平台进行寄存器组的电路设计。

    寄存器是运算器中通用寄存器的主要组成部分,它的主要功能是为运算单元提供源操作数,并且暂存运算的中间结果。寄存器组一般由4个、8个及以上寄存器组成,为了对这些寄存器进行写入和读出操作,一般需要配置译码器和多路选择器。

    关于多路选择器,一个 8 位寄存器组需要两个多路选择器。多路选择器(Multiplexer)又称为数据选择器或多路开关,常用 MUXb表示。它是一种多路输入、单路输出的组合逻辑电路,其逻辑功能是从多路输入数据中选中一路送至数据输出端。输出对输入的选择受选择控制变量控制。

    通常,对于一个具有 2^n 路输入和 1 路输出的 MUX 有 n 个选择控制变量,对应控制变量的每种取值组合选中相应的一路输入送至输出。

    这里选择典型的 双 4 路MUX 74153 芯片进行介绍,双四路 MUX 74153 的逻辑符号分别如图

                             

    功能表:

            

    由功能表可知,在工作状态下(G= 0),当 A1A= 00 时,Y= D0;当A1A0 = 01 时,Y = D1;当 A1A0 = 10 时,Y =D2;当 A1A0=11时,Y= D3。即在 A1A0 的控制下,依次选中 D0~D3 端的数据送至输出端。 

    而D0~D3 端分别连接着四个8位寄存器,表明通过 控制 A1A0,可以输出 4 个寄存器中的任意一个寄存器存储的数据。

    展开全文
  • 现在我们在 32 位的系统下工作, 当然主要使用的是 32 位寄存器; 那它和 8 位、16 位的寄存器又有什么关系呢? 从网上找到一个简洁明了的图片: EAX 是 32 位的, 也就是 4 个字节大小; 它的低两位就是 AX; AX...
    王爽老师书上说, CPU 内部主要就是寄存器.
    现在我们在 32 位的系统下工作, 当然主要使用的是 32 位寄存器; 那它和 8 位、16 位的寄存器又有什么关系呢?
    从网上找到一个简洁明了的图片:

    26153525_odbP.gif


    EAX 是 32 位的, 也就是 4 个字节大小; 它的低两位就是 AX;
    AX 是 16 位的, 又分 2 个字节; 它的高字节是 AH、低字节是 AL;
    AH 与 AL 是 8 位的.
    这样就兼容了以前的 16 位与 8 位.

    同理,
    EBX 就包含着 BX BH BL;
    ECX 就包含着 CX CH CL;
    EDX 就包含着 DX DH DL;

    好啊, 一下子认识了那么多寄存器!


    按照这个道理, 如果给 EAX 赋了值, 那么 AX AH AL 也就都有了值;
    如果给 AL 赋了值, 那么 AX EAX 也就有了值.
    //测试1
    var
      i: integer;  {4 字节、32 位}
      w: word;     {2 字节、16 位}
      b1,b2: byte; {1 字节、 4 位}
    begin
      i  := maxint;
      w  := 0;
      b1 := 0;
      b2 := 0;
    
      asm
        mov ecx, i
        mov w, cx
        mov b1, ch
        mov b2, cl
      end;
    
      ShowMessage(Format('w=%d; b1=%d; b2=%d',[w,b1,b2]));
    
    {结果显示: w=65535; b1=255; b2=255
    
      果然没错, 给 ecx 赋值后, cx ch cl 都有值了!
    }
    end;
    
     
     
     
     
     
    
     
    
     
    
      
    
    //测试2
    var
      i: integer;  {4 字节、32 位}
      w: word;     {2 字节、16 位}
      b: byte;     {1 字节、 4 位}
    begin
      b := 255;
      i := 0;
      w := 0;
    
      asm
        mov cl, b
        mov w, cx
        mov i, ecx
      end;
    
      ShowMessage(Format('i=%d; w=%d',[i,w]));
    
    {结果显示: i=255; w=255
    
      这好像是没有问题的, 我用 al ax eax 三个寄存器测试也是如此;
      但用 dl dx edx 测试, 就会有意外的结果, 奇怪呀!
    }
    end;
    
     
     
     
     
     
    
     
    
     
    
      

    转载于:https://my.oschina.net/hermer/blog/320118

    展开全文
  • 【VHDL】带使能端的同步复位的8位寄存器设计 程序: library ieee; use ieee.std_logic_1164.all; entity reg8 is port(clk,OE,RES:in std_logic; A:in std_logic_vector(7 downto 0); Q:out std_logic_...
  • 寄存器A的第四进行置位操作,1<<4, A=A|(1<<4). 对寄存器A的第四进行清零操作,1<<4,A=A&~(1<<4)。 置位与清零寄存器某一操作,不影响其他
  • Xilinx FPGA的IIC程序中的XIicPs_MasterSendPolled和XIicPs_MasterRecvPolled函数的使用,8位寄存器地址写入24位数据 硬件平台:黑金AX7010开发板 vivado版本:Vivado 2017.4 SDK平台:SDK 2017.4 目的:利用FPGA...
  • 8086CPU的8位寄存器数据存储情况 转载于:https://www.cnblogs.com/LoveFishC/archive/2012/07/25/3846572.html
  • 编码 32位 16位 8位 0 EAX 累加寄存器 AX AL 1 ECX 计数寄存器 CX CL 2 EDX 数据 | 基址 DX
  • 八位寄存器里的部分有一个功能,但是不能寻址,如下图,应该怎么把这个寄存器对影成结构体,然后结构体的值直接赋给寄存器呢? 使用位域,将八位寄存器对影成一个结构体,考虑大小端的问题,PC机把第七放到高位,MCU...
  • 这个例子定义了一个名为mema的存储器,该存储器有256个8位的存储器。该存储器的地址范围是0到255。注意:对存储器进行地址索引的表达式必须是常数表达式。 另外,在同一个数据类型声明语句里,可以同时定义存储器型...
  • 最近正在调试一个芯片的评估板,其中配置寄存器使用的是SPI通信协议。其实很多芯片寄存器的配置都用到了SPI通信协议,我们今天就需要实现这个SPI通信协议。首先,我们需要了解SPI协议的基本内容,SPI主要有四根传输...
  • 复习汇编的时候顺便复习下寄存器这东西具体的物理结构是怎么样的,可以简单的理解成连续的八个锁存器构成了一个8位寄存器             我们知道,我们可以通过给定
  • 这让我回想起团队已经量产的某款芯片,也是因为某个寄存器位宽设置过小的原因,导致组播组设置的时候不能超过31,否则就会溢出,只能想办法通过软件来解决这个问题。这次出现问题的交换机是基于共享缓存的架构,希望...
  • 之前打算看着老师给的视频和同学给的ppt熟悉在实例中... 权当电子笔记本,方便查阅一、基础 1、逻辑 四值电平逻辑:0(假)、1(真)、x(不确定)、z(高阻/浮动) x和z代表的位数:十六进制-4、八进制-3、二进制-1 ...
  • 【Verilog必做题】9. 序列产生 产生序列...1. 状态机:不考虑状态简化的情况下,要输出的序列多少,就用多少个状态,每次状态跳转后输出对应的1/0,实现序列的循环输出,当序列位数较多时,需要的状态也多,...
  • 接下来我们探讨一下第一步中的算法如何在简单CPU上运行,如图2所示,CPU中最基本的硬件资源包括:取指令、寄存器、ALU、存储器等,CPU内部的架构是固定和通用的,它可以涵盖所有情况的通用数据路径,数据宽固定,...
  • 这让我回想起团队已经量产的某款芯片,也是因为某个寄存器位宽设置过小的原因,导致组播组设置的时候不能超过31,否则就会溢出,只能想办法通过软件来解决这个问题。这次出现问题的交换机是基于共享缓存的架构,希望...
  • 因为是八位寄存器,所以我们需要创建8个D触发器来构成一个寄存器,也就是需要调用我们写好的D触发器8次…… 模块调用的细节 这样我们就只需要一个顶层模块将整体穿起来,就实现了我们的功能。 module reg8( input ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,710
精华内容 2,284
关键字:

8位寄存器