【数电实验】移位寄存器与计数器

实验四 移位寄存器与计数器

一 实验目的

1 掌握任意进制计数器的构成方法;

2 熟悉双向移位寄存器的使用方法。

二 实验内容

1 任意进制计数器的构成方法:

用中规模集成计数器74HC161和与非门74LS00,构成十进制计数器。要求分别使用同步预置、异步清零两种功能来设计。用数码管显示。

实验验证分别用同步预置、异步清零两种方法设计的计数器。

(1)同步预置和异步清零的区别与实验设计思路

“同步”和“异步”是对于时钟而言的。“同步”输入信号和时钟信号有关,实际上输入信号和时钟信号进行了与运算或者与非运算,输入信号和时钟信号的运算结果是有效的,器件的状态才会改变。“异步”输入信号和时钟信号无关,是指输入信号变为有效状态,器件的状态就改变。

因此,同步预置需要下一个时钟的有效沿和预设条件达成才能完成置数;异步清零只需要预设条件达成就能完成置数。

由于本实验需要设计十进制计数器,所以与非门的输入需要对应的是计数器1010或1001输出信号。当与非门的输出接在Clear端的时候,产生低电平的状态是无效的,计数器马上就复位,对应的是异步清零电路,此时与非门的输对应的是计数器1010输出信号;当与非门的输出接在Load端的时候,产生低电平的状态是有效的,计数器需要等到下一个CLK信号才复位,对应的是同步预置电路,此时与非门的输对应的是计数器1001输出信号。

(2)Multisim电路图

    根据上述分析,可以得到两种方法设计的计数器电路。最终电路结果如下面两个电路图所示。

同步预置:

异步清零:

(3)仿真模拟过程

在软件中连接成以上电路图后,点击运行即可开始仿真。下面将依次展示两种设计方法实现的电路的每个步骤过程及电路对应的输出状态。

同步预置:

当前计数器输出信号

电路对应的输出状态

0000

0001

0010

0011

0100

0101

0110

0111

1000

1001

    实验验证情况与预期情况完全拟合。另,同步预置电路的运行过程视频可见附件4-1-1.mkv。

异步清零:

当前计数器输出信号

电路对应的输出状态

0000

0001

0010

0011

0100

0101

0110

0111

1000

1001

1010

不存在该状态,瞬间消失

实验验证情况与预期情况完全拟合。另,异步清零电路的运行过程视频可见附件4-1-2.mkv。

2 设计4位环形计数器:

    用4位双向移位寄存器74HC194,设计一个能够自启动的4位环形计数器,并测试其输入CP和输出QA、QB、QC、QD的逻辑关系。

(1)双向移位寄存器的使用与实验设计思路

双向移位寄存器的结构如下图所示。

其工作原理为:S1=S0=1,Q1被选中;S1=S0=1,D1被选中,处于并行输入状态;S1=0,S0=1,Q0被选中,处于右移状态;S1=1,S0=0,Q2被选中,处于左移状态;RD’=0,触发器将被同时置0,处于复位状态。将五种状态总结成表格后,结果如下表所示。

RD’

S1

S0

工作状态

0

X

X

置零

1

0

0

保持

1

0

1

右移

1

1

0

左移

1

1

1

并行输入

由于本实验需要设计一个能够自启动的环形计数器,因此可以采用双向移位寄存器的右移功能来循环信号。通过分析,可以将QD接在右移的输入端。同时,在电路启动前,因为第一个与非门有一个输入端为0,因此第一个与非门的输出为1,致使S0=S1=1,此时执行并行输入的功能,读取A、B、C、D各端的信号(0111)并输入。之后Q端并行输出对应的A、B、C、D信号,且Q端经过第二个与非门。在启动电路启动后,第一个与非门的两个输入均为1,因此第一个与非门的输出为0,致使S0=0且S1=1,此时双向移位寄存器执行右移的功能,并每来一个时钟就右移一位数字,同时把末位的数字移到首位。

理论移位情况为:0111->1011->1101->1110->0111。

(2)理论电路图和Multisim电路图

理论电路图:

Multisim电路图:

(3)仿真模拟过程

    在软件中连接成以上电路图后,点击运行即可开始仿真。下面将依次展示每个步骤过程及电路对应的输出状态。

启动前:

0:输出信号为0111;

启动后:

1:输出信号为0111;

2:输出信号为1011;

3:输出信号为1101;

4:输出信号为1110;

实验验证情况与预期情况完全拟合。另,4位环形计数器的运行过程视频可见附件4-2.mkv。

(4)输入CP和QA、QB、QC、QD的逻辑关系

根据模拟仿真实验的运行过程中可知,当CP每输入一个上升沿信号时,双向移位寄存器执行一次右移功能,使得Q端的各位输出均右移一位,并把末位的数字移到首位中,即实现一次环形计数功能。

3 设计节日彩灯控制电路:

    用4位双向移位寄存器74HC194和与非门74LS00,设计一个节日彩灯控制电路。要求:当输入连续脉冲时,输出端的4个发光二极管右移逐位亮,继而右移逐位灭。将实现结果绘制成状态转换图。

(1)实验设计思路

根据本实验要求可知,4个发光二极管右移逐位亮,继而右移逐位灭,因此双向移位寄存器需要执行右移功能,则令S0=1,S1=0,同时QD反向之后接在SR上。电路初始时,Q端的输出均为0,此时SR为1。电路刚开始执行时,每来一个CLK上升沿信号,Q端的输出均向右移一位,同时首位为SR=1的输入信号,直到四个彩灯均点亮为止。当QD=1时,经过反向器后SR会变成0,因此当下一个CLK上升沿信号来临时,Q端的输出依然均向右移一位,同时首位为SR=0的输入信号,直到四个彩灯均熄灭为止。所以,通过上述分析我们不难发现,该电路会依次经过8个状态,即四个彩灯依次点亮的过程加上四个彩灯依次熄灭的过程。

由于是设置节日彩灯,因此使用不同颜色的发光二极管probe显示输出,并通过DCD_HEX观察不同输出情况时Q端所对应的信号值。理论的输出probe情况和DCD_HEX情况如下表所示。

CLK

SR

QA

QB

QC

QD

点亮的probe序号

显示器的显示内容

初始状态

1

0

0

0

0

/

0

1

1

0

0

0

1

1

1

1

1

0

0

1、2

3

1

1

1

1

0

1、2、3

7

1(下一个CLK来临前变为0)

1

1

1

1

1、2、3、4

F(15)

0

0

1

1

1

2、3、4

E(14)

0

0

0

1

1

3、4

C(12)

0

0

0

0

1

4

8

0(下一个CLK来临前变为1)

0

0

0

0

/

0

(2)理论电路图和Multisim电路图

理论电路图:

Multisim电路图:

(3)仿真模拟过程

在软件中连接成以上电路图后,点击运行即可开始仿真。下面将依次展示每个步骤过程及电路对应的输出状态。

0:电路初始状态,彩灯均未被点亮。

1:第一个彩灯点亮。

2:第二个彩灯点亮。

3:第三个彩灯点亮。

4:第四个彩灯点亮。

5:第一个彩灯熄灭。

6:第二个彩灯熄灭。

7:第三个彩灯熄灭。

8:第四个彩灯熄灭。彩灯从左往右依次点亮并熄灭的一个过程结束,回到电路原来的初始状态。

实验验证情况与预期情况完全拟合。另,4位环形计数器的运行过程视频可见附件4-3.mkv。

(4)实验结果及状态转换图

    根据模拟仿真实验的运行过程中可知,Q端输出信号依次对应为0000->1000->1100->1110->1111->0111->0011->0001->0000。通过上述变化过程可以得到状态转换图如下图所示。由于输出即为Q端信号,因此不在状态转换图中展示输出变化。

三 实验总结

通过本次实验,我再一次对移位寄存器和计数器的功能进行了巩固。移位寄存器是用来寄存二进制数字信号且能进行信息移动的时序逻辑电路。根据移位寄存器存取信息的方式不同,可以分为串入串出、串入并出、并入串出、并入并处这四种形式。因此,移位寄存器可以构成计数器、顺序脉冲发生器、串行累加器、串并转换器、并串转换器等功能仪器。

另外,在第三个实验中,与非门的两个输入端均为同一种输入时,可作为反向器使用。即反相器为与非门的特殊连接情况。

同时,我对实验教材中的《实验七:Vivado工具与Verilog HDL的使用》进行了阅读,了解到Minisys实验板的使用步骤为:创建一个项目->添加源代码->仿真->综合->引脚分配->实现->产生比特流文件并下载,并对实验板的结构进行了粗略的认识。

  • 19
    点赞
  • 141
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
倾情奉献,完全可以照抄。实验一 运算器实验实验二 移位运算实验实验三 存储器读写和总线控制实验附加实验 总线控制实验实验五 微程序设计实验 一、实验目的: 1. 掌握运算器的组成及工作原理; 2. 了解4位函数发生器74LS181的组合功能,熟悉运算器执行算术操作和逻辑操作的具体实现过程; 3. 验证带进位控制的74LS181的功能。 二、预习要求: 1. 复习本次实验所用的各种数字集成电路的性能及工作原理; 2. 预习实验步骤,了解实验中要求的注意之处。 三、实验设备: EL-JY-II型计算机组成原理实验系统一套,排线若干。 ... ... ... 八、行为结果及分析: 实验数据记录如下表: DR1 DR2 S3S2S1S0 M=0(算术运算) M=1 Cn=1无进位 Cn=0有进位 (逻辑运算) 理论值 实验值 理论值 实验值 理论值 实验值 04H 06H 0 0 0 0 F=(04) F=(04) F=(05) F=(05) F=(05) F=(05) 04H 06H 0 0 0 1 F=(0A) F=(0A) F=(0B) F=(0B) F=(FC) F=(FC) 04H 06H 0 0 1 0 F=(FD) F=(FD) F=(FE) F=(FE) F=(00) F=(00) 04H 06H 0 0 1 1 F=(FF) F=(FF) F=(00) F=(00) F=(FD) F=(FD) 04H 06H 0 1 0 0 F=(04) F=(04) F=(05) F=(05) F=(F9) F=(F9) 04H 06H 0 1 0 1 F=(0A) F=(0A) F=(0B) F=(0B) F=(F9) F=(F9) 04H 06H 0 1 1 0 F=(FD) F=(FD) F=(FE) F=(FE) F=(FD) F=(FD) 04H 06H 0 1 1 1 F=(FF) F=(FF) F=(00) F=(00) F=(00) F=(00) 经过比较可知实验值与理论值完全一致。 此次实验的线路图的连接不是很难,关键是要搞清楚运算器的原理,不能只是盲目的去连线。在线路连接完成后,就按照要求置数,然后查看结果,与理论值比较。如果没有错误就说明前面的实验中没有出现问题;否则,就要重新对照原理图检查实验,找出错误,重新验证读数。 九、设计心得、体会: 这次课程设计我获益良多,平时我们能见到的都是计算机的外部结构,在计算机组成原理的学习中,逐步对计算机的内部结构有了一些了解,但始终都停留在理论阶段。而在本次实验,让我们自己设计8位运算器并验证验证运算器功能发生器(74LS181)的组合功能,让我对运算器的内部结构有了更深的了解,并且对计算机组成原理也有了更深层次的理解,同时这次课程设计还锻炼了我的实验动手能力,也培养了我的认真负责的科学态度。 这次课程设计要求连线仔细认真,不能有半点错误,在刚做这个实验的时候,我就由于粗心没有正确的设置手动开关SW-B和ALU-B,导致存入的数据不正确。 我在连线过程中也自己总结出了避免出错的方法,就是在接线图上将已经连接好的部分作上记号,连接完后再检查一遍各个分区的条数是否和实验接线图上的一样,如果一样就可以进行下面的实验步骤,就算出错了,改起来也容易多了。
### 回答1: Verilog 移位寄存器实验是用来演示如何在 Verilog 中设计和模拟移位寄存器实验移位寄存器是一种常用的数字电路元件,它可以将输入的二进制数据移动到寄存器的左侧或右侧,并且可以通过控制位来指定移位方向。 在 Verilog 中,可以使用类似于这样的代码来实现移位寄存器: module shift_register (input clk, input [3:0] din, input [1:0] dir, output reg [3:0] dout); always @ (posedge clk) begin case (dir) 2'b00: dout <= {dout[2:0], din[3]}; 2'b01: dout <= {dout[3], din}; 2'b10: dout <= {din, dout[3:1]}; 2'b11: dout <= {din[0], dout[3:1]}; endcase end endmodule 在这段代码中,"clk" 是时钟信号,"din" 是输入数据,"dir" 是移位方向控制位,"dout" 是输出数据。当时钟信号为上升沿时,移位寄存器会根据 "dir" 的值来确定移位方向,并将输入数据移动到寄存器的左侧或右侧。 移位寄存器实验的目的是帮助你了解如何在 Verilog 中设计和模拟移位寄存器,并且可以通过调整输入数据和移位方向来检验移位寄存器的正确性。 ### 回答2: Verilog移位寄存器实验是一种用于探索和研究寄存器移位操作的实验。Verilog是一种硬件描述语言,用于描述数字电子系统,包括寄存器和移位操作。在这个实验中,我们将使用Verilog语言编写代码来实现移位寄存器的功能。 移位寄存器是一种数字电路元件,用于将输入数据按照规定的方式进行移位操作。移位操作可以是向左移位(左移)或向右移位(右移)。在Verilog中,我们可以使用"<<"操作符表示向左移位,使用">>"操作符表示向右移位。 在实验中,我们可以定义一个移位寄存器,包括输入端、输出端和控制信号端。输入端用于输入待移位的数据,输出端用于输出移位后的数据,控制信号端用于控制移位操作的方向。 在编写Verilog代码时,我们需要声明输入信号、输出信号和控制信号的位宽,并使用reg类型定义它们。然后,我们可以使用内置的移位操作符来实现移位寄存器的功能。在移位寄存器的代码中,我们还可以添加其他逻辑和条件来实现特定的功能,如循环移位、循环左移和循环右移等。 完成Verilog代码编写后,我们可以使用仿真工具来验证移位寄存器的功能。在仿真过程中,我们可以输入不同的测试数据,并观察输出结果是否符合预期。如果仿真结果与预期一致,则说明移位寄存器的功能实现正确。 总的来说,Verilog移位寄存器实验是一种通过编写Verilog代码来实现移位操作的实验。通过这个实验,我们可以更好地理解和掌握移位寄存器的原理和应用,并且熟练使用Verilog语言编写数字电路的描述代码。 ### 回答3: Verilog移位寄存器实验是一种通过使用Verilog语言来设计和实现移位寄存器实验移位寄存器是一种非常常见的数字电路元件,用于在数字系统中实现数据的移位操作。 在这个实验中,我们将使用Verilog语言来描述和实现一个移位寄存器的功能。我们可以使用Verilog的模块化设计方法,将移位寄存器的功能分解为不同的模块,使整个设计更加清晰和可维护。 首先,我们需要定义一个模块来描述移位寄存器的行为。这个模块可以包含一个输入端口用于接收输入数据,并通过移位操作将数据保存在寄存器中。模块还可以包含一个输出端口,用于输出寄存器中存储的数据。此外,我们还可以添加一些控制信号,如时钟信号,用于控制移位寄存器的操作。 接下来,我们需要实例化设计,并将其与测试台连接。测试台可以模拟不同的输入和时钟信号,以验证设计的正确性和功能性。我们可以使用仿真工具,如ModelSim等,来进行仿真和调试。 当我们完成设计和仿真后,我们可以将设计下载到FPGA开发板上进行实验验证。在实验中,我们可以输入不同的数据,并观察输出结果,以确保移位寄存器的功能正常工作。 总的来说,Verilog移位寄存器实验是一种通过使用Verilog语言来设计和实现移位寄存器实验。这个实验可以帮助学生理解和掌握数字电路设计中的移位寄存器的原理和应用。通过这个实验,学生可以提高他们的Verilog编程能力和数字电路设计能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MorleyOlsen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值