数学电路与电子工程2(MEE)—— 时序电路的寄存器和工作频率

news2024/9/23 17:16:27

1. 基本的数字逻辑存储元件:D锁存器和D触发器

        D锁存器(Verrou ou D latch),它是一个简单的存储设备,可以在使能信号(E)处于活动状态时存储一位数据。当E为高电平时,D锁存器的输出Q会跟随输入D的变化。当E为低电平时,输出Q会保持最后的状态,即使输入D变化了也不会影响输出Q。这种类型的锁存器被称为“透明”的,因为当它被使能时,数据可以从D端“透明地”看到Q端 。“水平锁存”。

        D触发器(Bascule ou D flip-flop),它是一个边沿触发的存储设备,只有在时钟信号(H)的上升沿或下降沿时才会更新它的输出状态。D触发器通常用于同步操作,因为它们在特定的时刻捕获输入信号,并在下一个时钟周期保持该状态。它不是透明的,输入的变化只有在时钟信号的触发边沿到来时才会被捕获到输出。"边沿同步”。

2. 寄存器

        在数字电子和计算机工程中,一个寄存器是一组用来存储数字数据的触发器(例如,D触发器)。每个触发器能够存储一个比特,因此一个寄存器可以存储一个多比特的二进制数。寄存器在计算机架构中扮演着临时存储和处理数据的重要角色。

2.1 寄存器的主要功能

        存储二进制信息:寄存器可以存储一个固定大小的字,例如8位、16位、32位或64位等。
        数据操作:某些类型的寄存器可以进行简单的数据操作,如位移(向左或向右移动),这对于执行数学运算或数据格式转换非常有用。

2.2 存在两种基本类型的寄存器

        存储寄存器:这类寄存器主要用于存储数据。例如,它们可以临时保存来自内存的数据,或者保存算术逻辑单元(ALU)的中间结果,直到需要进一步处理。
        移位寄存器:这类寄存器不仅能存储数据,还能进行数据的位移操作。移位操作包括将寄存器中的数据整体向左或向右移动一位或多位,这常用于序列数据处理、数据编码和解码,以及算术运算中。

        寄存器通常由锁存器或触发器(例如D触发器)构成,并能够通过控制信号执行基本的位操作。在现代微处理器中,寄存器是非常重要的组件,因为它们提供了执行计算和控制计算机操作所需的快速存储。

2.3 寄存器在数字电路架构中应用

        本图展示了寄存器在数字电路架构中应用的几个例子。

        四个主要部分分别介绍了不同类型的寄存器应用:

        a.串行到并行转换(Serial to Parallel Converter)
        这部分展示了如何使用寄存器将串行数据(一次传输一个比特)转换成并行数据(同时传输多个比特)。这对于数据通信非常重要,因为它允许在不同速率或格式的系统间传输数据。

        b.伪随机数生成器(Pseudo-Random Number Generator)
        在这里,寄存器用于生成伪随机数序列。这通常在加密或模拟随机过程时使用。

        c.并行到串行转换(Parallel to Serial Converter)
        与串并转换相反,这里的寄存器将并行数据转换为串行数据,以便可以通过单一通信线路发送。

        d.移位寄存器(Shift Register)
        移位寄存器可以在寄存器内部移动数据位,这对于执行序列逻辑操作、数据编码、解码以及算法操作等非常有用。

        每个应用部分都有相应的代码文件(例如,*.vhd),表明这些是使用硬件描述语言(如VHDL)描述的数字电路设计。

2.4 存储寄存器或缓冲寄存器的结构

        最基本的寄存器类型是存储寄存器或缓冲寄存器。
        这实际上是一系列由相同时钟信号控制的触发器,用于存储n位的二进制字,等待进一步处理。存储的字在触发器的输出端可用(而非输入端)。
        这些缓冲寄存器可以使用边沿触发或电平触发的触发器来实现(这里在图上使用的是边沿触发的触发器,即D flip-flops)。

        图示中,每个D触发器都有一个数据输入(D),一个时钟输入(H)和一个输出(Q)。所有触发器的时钟输入都连接到同一个时钟信号,这意味着所有的数据位(E1到En)都将在时钟信号的同一个边沿上被捕获并存储。

        这种类型的寄存器非常适合用作数据缓冲区,它可以在一系列的数据操作中暂时存储数据,或者在不同部分的电路之间同步数据传输。

2.5 右移寄存器

        本节展示了一个基本的移位寄存器的结构,用于实现数据的右移功能。

        

        移位寄存器是一种用于在电路内部按位序列存储和移动数据的数字存储设备。它包含一系列的触发器,每个触发器能存储一位数据。在这个特定的例子中,每个触发器(标识为“bascule”)都通过一个公共的时钟信号(H)来控制,允许数据(E1到En)同步地在触发器之间移动。

        这个移位寄存器具有向右移动数据的功能。每当时钟信号发生一个上升沿时,每个触发器的输入(D)会被传送到下一个触发器的输出(Q)。这个过程会导致整个寄存器中的数据集体向右移动一位。移位寄存器的这种操作在数字电路中用于数据传输、数据处理、信号编码和解码以及作为计数器等应用。

        移位寄存器通过串联连接多个触发器来实现数据的逐位移动。这里使用的是边沿触发的触发器(flip-flop)。每当时钟信号H的有效边沿发生时,每个触发器的D端的数据就会被复制到它的Q端,但不会直接传播到下一个触发器,因为在D和Q之间总有一个开关(表示数据不会立即从一个触发器传输到下一个触发器)。

        在此配置中,每个触发器的输出Q连接到下一个触发器的输入D,这样就实现了数据的右移操作。输入E被应用到寄存器的第一个触发器,在经过n个时钟信号H的有效边沿后,它将出现在寄存器的第n个输出上。

        这种移位寄存器的功能在数字电路设计中非常重要,例如在串行通信、数据加密、数字信号处理等领域。此外,这种结构也可以用于创建更复杂的算法和逻辑结构,如计数器、延时线和数据缓冲器等。

2.6 为什么使用触发器而不是锁存器

        锁存器在控制信号有效时会连续地响应输入信号的变化,这可能会导致在非预期的时刻捕获数据,从而造成设计上的问题。

        移位寄存器是由翻转触发器(flip-flops)组成,而不是锁存器(latches)。移位寄存器的作用是在时钟信号的控制下,将输入的二进制信息按位顺序地逐个传递到下一个触发器。

        寄存器→专用翻转触发器。这意味着在构建此类寄存器时,应该只使用翻转触发器,而不是锁存器,因为翻转触发器在每个时钟信号的边沿触发时才会改变状态,这对于同步操作非常重要。

        本图表明了一个翻转触发器是由两个锁存器级联组成,其中第一个锁存器(L1)在时钟信号的上升沿准备数据,第二个锁存器(L2)在时钟信号的下降沿锁定数据。

2.7 左移寄存器

        在这个移位寄存器中,每个触发器的输出Q被连接到下一个触发器的输入D,这样当时钟信号H的有效边沿到来时,数据就会向左移动一位。

        有公式“Di = Qi+1”表示每个触发器的输入D等于它右侧相邻触发器的输出Q。意味着如果我们将每个触发器的输入连接到下一个触发器的输出,我们就实现了向左移动寄存器。最右侧的输入E在n个时钟信号H的有效边沿后将出现在最左侧的输出Q1上。

        这种类型的移位寄存器在需要按顺序处理数据或者对数据进行位移操作的数字电路中非常有用。左移寄存器可以用在算法操作中,比如乘法或除法运算,或者在需要将数据串行化发送到其他系统的通信接口中。

2.8 并行加载功能的移位寄存器

        下图展示了一种具有并行加载功能的移位寄存器的电路图。在数字逻辑设计中,移位寄存器是一种顺序逻辑电路,通常用于存储数据、转换数据格式(例如串转并或并转串)以及时序调整。

这里解释一下图中的几个关键点:

        并行加载功能:这意味着可以同时将多个位(一个n位的字)直接加载到寄存器中,而不是一个一个位地顺序进入。

        电路设计:在每个D触发器(也就是基本存储单元)的输入端,通过一个多路选择器(也就是图中的"multiplexeur")来实现并行加载。多路选择器可以根据控制信号选择数据源。

        LOAD信号:当LOAD=1时,输入端的数据(EP1至EP4)会被直接加载到寄存器中,此时寄存器像一个数据存储器一样工作,不会发生数据的移位。在这个状态下,寄存器的输出和输入是一致的,即所谓的“并行输出”。

        寄存器的两种模式:
        当LOAD=1时,寄存器处于“存储模式”,此时不会发生数据移位。
        当LOAD返回到0时,寄存器又恢复为一个正常的移位寄存器。

        在实际应用中,这样的设计允许寄存器在必要时快速地更新其全部数据,这对于某些需要快速数据处理的场合非常有用。例如,在处理器的设计中,这可以用于快速加载指令或数据,或者在进行数据转移时同步多个数据通道。

2.9 初始化功能的移位寄存器

        这幅图展示了一个带有初始化功能的移位寄存器的电路图。在数字逻辑设计中,初始化是一个重要的概念,它允许设计者在电路上电或者在特定条件下将寄存器的内容设置到一个已知的状态。下面是这个概念的中文解释:

        初始化命令:寄存器通常有一个初始化命令,用于在电路通电时强制寄存器内容到一个特定状态。这个命令作用于触发器的异步优先级输入,可以是清零(RAZ)或置位(RAU)。

        RAZ和RAU:
        RAZ(或CLEAR或RESET):这个输入被激活时,触发器的输出Q会被强制设置为0。
        RAU(或SET或PRESET):这个输入被激活时,触发器的输出Q会被强制设置为1。

        INIT命令的作用:在这个示例中,INIT命令可以将寄存器初始化为0101状态。这意味着,根据INIT输入的设计,寄存器可以被设置成除了全0或全1之外的任何特定的二进制值。

        初始化的限制:非常重要的是,初始化命令不应该在电路正常工作时被激活。这是因为异步输入会干扰电路的同步操作,可能导致不可预测的行为。初始化主要用于电路上电后,或者在电路出现故障后重启时使用,而不是在电路正常运行时。

        正常运行时的值加载:如果需要在电路正常运行时加载一个值,应使用之前提到的并行加载模式。这允许在不干扰电路正常时序的情况下,安全地改变寄存器的内容。

这样的设计允许电路在遇到故障时快速重置,或者在特定的操作阶段设定初始条件,是数字电路设计中的一个常用功能。

2.10 通用寄存器

        下图描述的是一种多功能数字逻辑设备,被称为“通用寄存器”(REGISTRE "UNIVERSEL")。通用寄存器是一种灵活的数字电路,它能够执行多种数据处理操作,包括数据的并行或串行输入,以及并行或串行输出。

2.10.1 通用寄存器的功能

        初始化(INIT):设置寄存器内容到初始状态,例如清零或设定一个特定的二进制值。
        并行或串行加载(MODE):决定是通过并行输入(Ei)还是串行输入(ESD或ESG)来加载数据。
        数据移位方向(SENS):控制数据在寄存器中的移动是向左还是向右。
        串行读取(SSD, SSG)或并行读取(Qi):可以选择通过串行输出端(SSD或SSG)或并行输出端(Qi)来读取寄存器内容。

2.10.2 寄存器的不同输入类型

        数据输入:ESD(右侧串行输入),ESG(左侧串行输入),Ei(并行输入)。
        控制或命令输入:MODE(选择并行或串行加载模式),SENS(选择移位方向),H(时钟输入,用于同步操作),INIT(初始化命令)。

2.10.3 输入的活动类型

        静态输入:这些输入的状态一旦被设定,除非改变它们,否则会保持不变。包括ESD, ESG, Ei, MODE, SENS。
        动态输入:这些输入需要在电路工作期间周期性地改变状态,以驱动电路的操作。主要包括H(时钟信号)和INIT(初始化信号)。

        在实际应用中,通用寄存器因其功能的多样性而非常有用,可以在数字系统中用作数据缓存、暂存器、数据格式转换器等。

2.10.4 通用寄存器单元的基本结构

        这张图展示了一个通用寄存器单元的基本结构。这个单元可以通过控制信号来决定是并行加载数据还是进行数据的移位操作。在数字电路设计中,此类单元的集成允许寄存器在不同的操作模式间切换。下面是对这个单元如何工作的中文解释:

2.10.4.1 MODE控制信号:决定寄存器的工作模式

        当MODE = 0时,寄存器处于并行加载模式,此时数据通过并行数据输入\( E_i \)直接加载到寄存器。
        当MODE = 1时,寄存器进行数据移位操作。

2.10.4.2 SENS控制信号:决定数据移位的方向

        当SENS = 1时,数据向右移位。
        当SENS = 0时,数据向左移位。

2.10.4.3 数据输入

        E_i是并行数据输入,ESG(左侧串行输入)和ESD(右侧串行输入)分别用于串行数据加载。

2.10.4.4 多路选择器

        根据MODE和SENS的值,选择合适的数据信号输入到D触发器的D端。
        在并行加载模式下,选择E_i作为D端的输入。
        在数据移位模式下,根据移位方向,选择相邻触发器的输出作为下一个触发器D端的输入,形成一个链式结构。

2.10.4.5 D触发器

        在时钟信号H的驱动下,D触发器会在每个时钟周期捕捉D端的输入,并将其传递到Q输出。

        通过这样的设计,通用寄存器可以灵活地用于各种数据处理任务,如数据缓存、暂存、移位操作等。这种灵活性使其在复杂的数字系统设计中成为一个非常有用的组件。

3. 寄存器的应用

本节讲述了寄存器在临时存储信息和并行-串行转换中的应用。

3.1 临时存储信息


        寄存器作为缓冲器(Mémorisation):寄存器可以在并行加载模式下作为临时存储器,即缓冲器使用。在这个模式下,数据通过并行输入E_1, E_2, ..., E_{n-1}, E_n同时加载到寄存器中,并通过并行输出S_1, S_2, ..., S_{n-1}, S_n读出。

3.2 并行-串行转换

3.2.1 基本概念


        在这个过程中,我们首先将一个二进制字通过寄存器的并行输入端口加载进去。
        然后,将寄存器配置为在一个时钟周期H内的加载模式,以接受并行数据。
        完成加载后,寄存器切换到移位模式,在该模式下,数据开始向串行输出端口移动,实现并行到串行的转换。

        例如,如果我们有一个并行数据总线,并希望将并行传输的数据转换为串行形式,可以使用这种方法。

        正确转换的条件:为了确保数据正确地从并行转换为串行,需要按照时钟频率f与数据位数n的比率f/n来输入要转换的二进制字。这意味着数据应该以与时钟频率成比例的速度来加载,以便于同步串行输出。

3.2.2 步骤拆分

        我们将通过一系列图片演示步骤:

3.2.3 时序图

        这个过程的时序图如下

        这张图表示了数字电路的时序图。下面是对这个时序图的解释:

        H:这是时钟信号,是整个电路同步操作的基础。时钟信号通常是一个周期性的方波信号,它的上升沿或下降沿用于触发电路中的事件,比如数据的加载或者移位。

        E (E1-E4):这表示并行输入端口,E1到E4是数据位,它们会在特定的时钟周期内被加载到寄存器中。

        S:这是串行输出,数据会在一个接一个的时钟周期内从这个端口输出。

        MODE:这是一个控制信号,用来选择寄存器的工作模式。通常,模式可以是并行加载(所有数据位同时加载),或者串行移位(数据位逐个移位)。

        A和B:这两个区域表示寄存器在不同的时钟周期内的操作。
        A区域:在这个区间内,数据被加载到寄存器中。由于这个区间有一个对角线图案,它可能表示数据正在被加载的过程。
        B区域:在这个区间内,寄存器切换到了串行输出模式。数据以串行的方式在每个时钟周期的上升沿输出。

        A1, A2, A3, A4和B4:寄存器中各个位置的标识符。A1到A4表示在并行加载模式下每个数据位的位置,而B4表示在串行模式下输出的最后一个数据位。

        f和f/4:这表示时钟频率。"f"是时钟信号的频率,而"f/4"可能表示数据输出的频率,这暗示在串行模式下,数据的输出速率是时钟频率的四分之一。

        在数字电路中,将数据从并行格式转换为串行格式通常涉及到将多个数据位(例如一个字节)同时加载到一个寄存器中,然后再一个接一个地顺序输出这些位。这就是并行到串行的转换。

        为了确保这个转换过程正确进行,输入数据的速率(即将数据位加载到寄存器中的速率)需要与时钟信号的频率相匹配。这是因为时钟信号决定了寄存器读取输入数据和输出数据的时刻。这里的“时钟频率与数据位数的比率”实际上是指:

        时钟频率(f):这是控制寄存器操作的时钟信号的速率,通常以赫兹(Hz)为单位。
        数据位数(n):这是一次性并行加载到寄存器中的数据位的数量。

        如果你有一个时钟频率为f的信号,而你需要将n位数据从并行转换为串行,那么你应该以f/n的速率应用(或加载)数据。这样,每个数据位都会在n个时钟周期内正确地串行输出一次。

        换句话说,如果你的时钟频率是100MHz,你想要转换一个8位的二进制字,那么你应该以12.5MHz的频率加载这个字,以确保每个时钟周期只输出一个位。

        综上所述,这个时序图描述了一个寄存器如何在不同的时钟周期内完成并行数据的加载和串行数据的输出。在MODE信号的控制下,寄存器的工作模式从并行加载切换到串行输出。

3.4 串行到并行寄存器

        数字寄存器在串行到并行数据转换中的应用,以及如何从寄存器中检索并行数据字。下面是对这个过程的详细解释:

3.4.1 串行到并行转换

        这是指将串行数据(一次一个位)转换为并行数据(同时多个位)。寄存器被设置为移位模式,串行数据在时钟信号H的控制下一位一位地输入到寄存器。

3.4.2 数据输入和输出频率

        串行数据以频率f输入到寄存器的串行输入端。
        并行数据可以在每n个时钟周期读取一次,也就是说,并行输出的频率是\( f/n \)。

3.4.3 例子(n = 4)

        这个特定的例子展示了当n = 4时,即寄存器有4位时,如何实现串行到并行的转换。
        串行数据通过输入端ESG按时钟频率f输入。
        每四个时钟周期,一组完整的4位数据(从Q1到Q4)就可以同时从寄存器的并行输出端口读取。

3.4.4 时序图

        H表示时钟信号。
        E表示串行输入。
        Q1到Q4表示寄存器的并行输出。
        A1到B2表示数据的移位和输出过程。每个灰色带代表一个数据位的移位过程,直到它到达指定的输出位。
        f表示输入数据的时钟频率,而f/4表示并行输出数据的频率。

        所以,如果你有一个频率为f的时钟,你会在每个时钟周期输入一个位,然后每4个时钟周期,你可以从寄存器的并行输出端口读取一个完整的4位字。这是在数字系统中,如微处理器和通信系统中,进行数据格式转换的常用方法。

4. 数字寄存器在数字信号处理中的应用

        本节介绍了数字寄存器在数字信号处理中的两个应用:数字延迟线和算术运算中的位移操作。下面是对幻灯片内容的解释:

4.1 数字延迟线

        这是一种使用寄存器延迟二进制数据流的技术。通过将数据一次一个比特地从寄存器串行输入到串行输出,可以实现对信号的延迟。延迟的时间长度由寄存器的数目和时钟周期决定。

4.2 位移运算

4.2.1 基本原理

        位移运算是算术运算的一种形式,在数字电路中常用于快速的乘法和除法。
        向右移位**操作相当于除以2的幂次(例如,向右移1位相当于除以2,向右移2位相当于除以4,以此类推)。这是因为二进制中每向右移动一位,就将数字除以2。
        向左移位**操作相当于乘以2的幂次(例如,向左移1位相当于乘以2,向左移2位相当于乘以4,以此类推)。这是因为二进制中每向左移动一位,就将数字乘以2。

4.2.2 向右移位

        下方的图示展示了一个二进制数(22的二进制表示为 010110)通过右移操作进行除法运算。经过1个时钟周期的右移(除以2),得到结果11(二进制表示为 01011);经过2个时钟周期的右移(再次除以2),得到结果5(二进制表示为 00101)。

4.2.3 向左移位

        向左移位通过位移操作在二进制数中执行乘法。具体来说,通过向左移位来实现乘以2^n的操作。这里是对幻灯片内容的详细解释:

        在给出的例子中,我们有一个初始状态的二进制数000111,它等于十进制中的7:

        当这个二进制数向左移动一位后,最右边补充一个0,变成了001110,等于十进制中的14。这是因为7乘以2等于14。

        如果再向左移动一位,再次在最右边补充一个0,数变成了011100,等于十进制中的28。这是因为14乘以2等于28。

        这个过程演示了如何通过连续两次向左移位,将数字7依次乘以2得到14,再乘以2得到28。

        但我们要注意容量溢出的问题。在这个例子中,假设寄存器是6位的,最大可以存储的十进制数是63(二进制为111111),因为\(2^6-1 = 63\)。在自然二进制编码中,一旦超过这个值,就会发生溢出;而在补码(CA2)编码中,6位寄存器能表示的范围是-32到+31。

        因此,在执行这些位移操作时,必须确保结果不会超过寄存器的最大容量,否则会丢失高位的数据,从而导致计算错误。

4.2.4 注意事项

        在进行这类位移运算时,对于自然二进制数(没有符号的),你需要确保在进行右移操作时序列的左端补零。
        对于使用补码(CA2)表示的有符号二进制数,如果是正数,同样需要在左端补零;如果是负数,则需要在左端补一。这是因为在补码系统中,最高位是符号位,正数的符号位是0,负数的符号位是1。

5. 随机数序列生成器

        本节展示了如何利用寄存器创建一个伪随机数序列生成器,这是数字寄存器的一种常见应用。

5.1 伪随机序列生成器

        这种类型的生成器通常由一个移位寄存器和一个或多个异或门(OU exclusifs)组成。
        移位寄存器中的某些特定输出会通过异或门反馈到输入,这个过程由一个生成多项式决定。

5.1.1 生成多项式

        多项式P(X) = 1 + h_1X + h_2X^2 + ... + h_{n-1}X^{n-1} + h_nX^n中,h_i的值决定了是否有反馈(rebouclage)。
        如果h_i为1,则对应的触发器的输出会通过异或门反馈;如果h_i为0,则不会反馈。
        多项式的选择至关重要,因为它决定了输出序列的随机性质。

5.1.2 数学属性

        如果选定的生成多项式具有特定的数学属性,那么伪随机数生成器产生的序列在统计上将接近于白噪声。白噪声的自相关函数是指其值在零延迟时最大,其它任何延迟时接近零。

5.1.3 应用领域

        这种伪随机数生成器广泛用于数字通信领域,例如信号的加扰(使通信内容更难被拦截或解码)和模拟噪声通信信道(测试通信设备在各种噪声条件下的性能)。
        另一个应用是在电路测试中,生成伪随机信号作为输入,以测试电路在不同输入条件下的行为。

        在电路图中,我们可以看到一个典型的移位寄存器,其输出通过异或门反馈到输入。每当时钟信号H的上升沿到来时,寄存器的内容就会更新。通过这种方式,寄存器内部的位会不断地移动和变化,生成一个伪随机的二进制序列。

5.2 4位伪随机数序列生成器

        本节进一步展示了一个具体的4位伪随机数序列生成器的例子,使用了一个线性反馈移位寄存器(LFSR)的设计。这里是对幻灯片内容的解释:

5.2.1 伪随机数序列生成器

        此电路是一个4位的伪随机数生成器,它利用线性反馈移位寄存器产生除了全0以外的所有可能的4位二进制序列。

5.2.2 生成多项式(P(X))

        生成多项式定义了反馈逻辑,这里的多项式是P(X) = 1 + X + X^4。这意味着第一个位X^1与第四位X^4在一个异或门中相结合,产生反馈给第一个D触发器的信号。

5.2.3 反馈和时钟信号

        每个D触发器的输出(Q1到Q4)在时钟信号H的下一个上升沿被移位到下一个触发器的输入。异或门的输出作为新的序列开始的输入,这样在每个时钟周期都会生成一个新的4位数。

5.2.4 序列循环

        生成的序列会循环所有可能的4位组合,但不包括全0(0000),因为如果出现全0状态,反馈逻辑将不能产生新的1,从而导致生成器停止更新。

5.2.5 生成的序列

        本节展示的4位线性反馈移位寄存器(LFSR)生成序列的演变过程如下:

        a.初始状态为1111
        b.时钟信号H的一个上升沿触发寄存器,导致Q1, Q2, Q3的值分别移位到Q2, Q3, Q4的位置。
        c.同时,Q1和Q4的输出通过异或门产生一个新的值,这个值成为下一个周期Q1的输入。

        由于生成多项式是P(X) = 1 + X + X^4,这表示Q1和Q4的输出被异或(这就是“1”和“X^4"的位),然后该结果被送回到寄存器的输入。这样,每个时钟周期都会根据这个规则生成一个新的4位数。

        下面是寄存器中值的几个周期的演变示例:

        初始状态1111
        第一个周期(Q_1Q_4异或结果为0):Q_1 = 0,Q_2 = 1,Q_3 = 1,Q_4 = 1,所以新状态是0111
        第二个周期(Q_1Q_4异或结果为1):Q_1 = 1,Q_2 = 0,Q_3 = 1,Q_4 = 1,所以新状态是1011
        第三个周期(Q_1Q_4异或结果为0):Q_1 = 0,Q_2 = 1,Q_3 = 0,Q_4 = 1,所以新状态是0101

        如此继续,LFSR将循环通过其状态空间,生成一个伪随机序列。需要注意的是,LFSR会产生一个最大周期(除了全0状态),这个周期的长度取决于寄存器的位数和选择的反馈多项式。一个良好设计的LFSR可以生成一个循环周期为2^n-1的序列,其中n是寄存器的位数。这意味着4位LFSR可以生成最多15个不同的状态,构成一个伪随机序列,然后重复这个序列。

        这样的生成器在数字通信中用于生成伪随机序列,例如为了加扰信号以提高传输安全性,或者在数字测试中用于生成随机输入测试信号。由于LFSR的周期性,它们生成的不是真正的随机数,而是伪随机数,因为最终这些序列会重复。然而,选择一个好的生成多项式可以使得序列在重复之前有一个很长的非重复周期,这在很多应用中是足够的。

5.3 补充知识——逻辑符号

6. 数字寄存器的多种应用

        这段文本是关于数字寄存器的多种应用的简要概述。下面是每个应用的详细解释:

6.1 临时存储信息        

        寄存器可以暂时存储信息,使得数据可以在计算过程中保持不变,或者在数据处理的不同阶段之间进行传递。

6.2 并行-串行转换

        这涉及将并行数据加载到寄存器中,然后将数据以串行格式输出,即一位接一位地传输出去。这对于数据通信和串行接口非常重要。

6.3 串行-并行转换

        这个过程与并行-串行转换相反,它允许将串行数据流转换回并行格式。这在串行数据需要被处理为更大的数据单元时非常有用。

6.4 位移运算

        通过将寄存器中的数据向右移动n位,可以实现除以\(2^n\)的操作,因为在二进制数中,每向右移动一位相当于除以2。
        同样地,将数据向左移动n位可以实现乘以\(2^n\)的操作,因为在二进制数中,每向左移动一位相当于乘以2。

6.5 数字延迟线

        寄存器可以被用来创建数字延迟线,这种设备能够将二进制信号延迟n个时钟周期。这在需要同步不同信号或在数字信号处理中非常有用。

6.6 伪随机序列生成器

        使用移位寄存器和一系列异或门(OU exclusifs),可以创建一个伪随机数生成器,该生成器可以产生一个看起来随机的二进制序列,通常用于加密、模拟和测试应用中。

        每个应用都展示了数字寄存器在现代电子和计算系统中的多功能性,以及它们如何在存储、转换和数据处理中发挥关键作用。

7. 总结

7.1 缓冲寄存器

        D触发器(D Flip-Flop)和D锁存器(D Latch)都是基本的存储设备,用于临时保存一个数据位。它们在电子电路中作为基本的存储元件广泛使用。

7.2 移位寄存器

        使用D触发器可以构建移位寄存器,它允许数据在寄存器的各个位之间逐位移动,实现串行数据的输入或输出。

7.3 通用寄存器的基本单元结构

        通用寄存器允许并行或串行的数据加载(Chargement parallèle ou série)以及可设置的数据移位方向(Sens de décalage)。

7.4 可能的应用

        存储数据:寄存器可以在计算过程中暂存数据,或在不同处理阶段传递数据。
        串行/并行转换:数据可以从并行转换为串行,或从串行转换为并行,这对于处理不同类型的数据通信协议至关重要。
        通过位移操作进行除法/乘法:通过向左或向右移位,可以快速实现数字的乘除运算。
        数据延迟:使用寄存器可以实现数据信号的时间延迟,这在需要数据同步时非常有用。
        伪随机数生成器:利用特定的移位寄存器配置,可以生成伪随机数序列,用于测试、加密或模拟。

        这些寄存器的应用在数字系统设计、计算机架构、通信和许多其他电子领域中都非常关键。它们是现代电子设备和系统的基础组成部分,对于存储、信号处理和数据管理至关重要。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1430752.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

React | Center 组件

在 Flutter 中有 Center 组件,效果就是让子组件整体居中,挺好用。 React 中虽然没有对应的组件,但是可以简单封装一个: index.less .container {display: flex;justify-content: center;align-items: center;align-content: ce…

java设计模式:策略模式

在平常的开发工作中,经常会用到不同的设计模式,合理的使用设计模式,可以提高开发效率,提高代码质量,提高代码的可拓展性和维护性。今天来聊聊策略模式。 策略模式是一种行为型设计模式,运行时可以根据需求动…

Stable diffusion使用和操作流程

Stable Diffusion是一个文本到图像的潜在扩散模型,由CompVis、Stability AI和LAION的研究人员和工程师创建。它使用来自LAION-5B数据库子集的512x512图像进行训练。使用这个模型,可以生成包括人脸在内的任何图像,因为有开源的预训练模型,所以我们也可以在自己的机器上运行它…

Windows下MySQL的界面安装

华子目录 下载MySQL安装MySQL配置MySQL配置环境变量检验MySQL是否安装成功 下载MySQL 首先我们在MySQL的官方下载MySQL https://www.mysql.com 点击download,开始下载 安装MySQL 下载完成后,我们双击msi文件 再点击next 之后我们先勾选I acc…

leetcode 1.两数之和(C++)DAY1(待补充哈希表法)

文章目录 1.题目描述示例提示 2.解答思路3.实现代码结果4.总结 1.题目描述 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是&…

堪称灾难级攻击的 UDP FLOOD洪水攻击,应该如何防护?

DDOS又称为分布式拒绝服务,全称是Distributed Denial of Service。DDOS本是利用合理的请求造成资源过载,导致服务不可用,从而造成服务器拒绝正常流量服务。就如酒店里的房间是有固定的数量的,比如一个酒店有50个房间,当…

Java语法学习线程基础

Java语法学习线程基础 大纲 概念创建线程线程终止常用方法用户线程和守护线程线程的七大状态线程的同步互斥锁线程死锁释放锁 具体案例 1.概念 2. 创建线程 第一种: class Cat extends Thread {int time 0;Overridepublic void run() {while (true) {System.o…

计算机网络_1.5 计算机网络的性能指标

1.5 计算机网络的性能指标 一、总览二、常用的八个计算机网络性能指标1、速率(1)数据量(2)速率(3)数据量与速率中K、M、G、T的数值辨析(4)【练习1】计算发送数据块的所需时间 2、带宽…

C++ OpenGL绘制三维立体skybox场景obj模型AABB碰撞检测旋转动画界面

程序示例精选 C OpenGL绘制三维立体skybox场景obj模型AABB碰撞检测旋转动画界面 如需安装运行环境或远程调试,见文章底部个人QQ名片,由专业技术人员远程协助! 前言 这篇博客针对《C OpenGL绘制三维立体skybox场景obj模型AABB碰撞检测旋转动…

使用Ettus USRP X440对雷达和EW系统进行原型验证

概览 无论是保障己方平台的生存能力,还是扰乱敌方频谱使用,以电磁(EM)频谱为主导都是任务成功的主要因素。电磁频谱操作(Electromagnetic Spectrum Operation, EMSO)需要使用战术系统来监测敌方的频谱活动、定位其发射器并帮助己方制定行动计划。软件无…

存算一体:架构创新,打破算力极限

1 需求背景 在全球数据量呈指数级暴涨,算力相对于AI运算供不应求的现状下,存算一体技术主要解决了高算力带来的高能耗成本矛盾问题,有望实现降低一个数量级的单位算力能耗,在功耗敏感的百亿级AIoT设备上、高能耗的数据中心、自动驾…

VSCode 安装LLDB调试器(OS X)并启动调试

插件:(LLDB插件安装) 安装这个版本不好弄错了,CodeLLDB(名字) 配置:(LLDB启动调试) {// 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。// 欲了解更…

阻塞队列(超详细易懂)

目录 一、阻塞队列 1.阻塞队列概述 2.生产者消费者模型 3.阻塞队列的作用 4.标准库中的阻塞队列类 5.例子:简单生产者消费者模型 二、阻塞队列模拟实现 1.实现循环队列(可跳过) 1.1简述环形队列 1.2代码实现 2.实现阻塞队列 2.1实…

CMake生成osg的FFMPEG插件及Windows下不生成VS工程问题解决

在Windows下,如何利用CMake生成osg的FFMPEG插件,请参考如下博文,同生成jpeg插件类似: osg第三方插件的编译方法(以jpeg插件来讲解)。 如下为生成FFMPEG时必要的设置: 注意: 一定要…

开发智能化企业培训平台:教育系统源码的创新方法

在传统的企业培训模式中,往往面临着效率低下、内容过时以及难以个性化的问题。为了解决这些挑战,采用智能化技术成为了企业培训领域的热门趋势。通过开发智能化企业培训平台,可以提高培训效果、降低成本,并更好地满足员工多样化的…

海量数据处理商用短链接生成器平台 - 2

第二章 短链平台项目创建git代码管理开发分层规范 第1集 短链平台实战-Maven聚合工程创建微服务项目 **简介:Maven聚合工程创建微服务项目实战 ** Maven聚合工程拆分 dcloud-common 公共依赖包 dcloud-app FlinkKafka实时计算 dcloud-account 账号流量包微服务 dc…

Oracle 面试题 | 10.精选Oracle高频面试题

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

【深度测试】看到技术方案后,该怎么进行分析和测试

测试左移的思想,讲究尽早测试,测试是一系列的行为,并不一定要等代码运行起来才能测,下面会分享一些经验,提供大家参考。 一、静态分析 1.1 分析方法调用链 目标:梳理结构,化繁为简 原理&#…

Quppy wise 注册教程,轻松通过欧洲银行同名转账绑定个人IBAN账号

Quppy 注册教程,轻松通过欧洲银行同名转账绑定个人IBAN账号 官网下载APP或者去香港区下载APP使用, 按照官方APP里的邮箱注册就行,成功后添加电话和个人信息;需要说明的是:网站所填内容请全部用真实身份填写;名在前,姓…

华为机考入门python3--(7)牛客7-取近似值

分类:数字 知识点: str转float float(str) 向上取整 math.ceil(float_num) 向下取整 math.floor(float_num) 题目来自【牛客】 import math def round_to_int(float_num): # 如果小数点后的数值大于等于0.5,则向上取整&#xf…