61阅读

移位寄存器设计-实验六移位寄存器的设计

发布时间:2017-12-30 所属栏目:移位寄存器的应用

一 : 实验六移位寄存器的设计

实验六 移位寄存器的设计

一、实验目的

1、掌握中规模4位双向移位寄存器逻辑功能及使用方法。[www.61k.com]

2、熟悉移位寄存器的应用 — 实现数据的串行、并行转换和构成环形计数器。

二、实验预习要求

1、复习有关寄存器及串行、并行转换器有关内容。

2、查阅CC40194、CC4011及CC4068 逻辑线路。熟悉其逻辑功能及引脚排列。

3、在对CC40194进行送数后,若要使输出端改成另外的数码,是否一定要使寄存器清零?

4、使寄存器清零,除采用CR输入低电平外,可否采用右移或左移的方法?可否使用并行送数法?若可行,如何进行操作?

5、若进行循环左移,图6-4接线应如何改接?

6、画出用两片CC40194构成的七位左移串 / 并行转换器线路。

7、画出用两片CC40194构成的七位左移并 / 串行转换器线路。

三、实验设备及器件

1、 +5V直流电源 2、 单次脉冲源

3、 逻辑电平开关 4、 逻辑电平显示器

5、 CC40194×2(74LS194) CC4011(74LS00) CC4068(74LS30)

四、设计方法与参考资料

1、移位寄存器是一个具有移位功能的寄存器,是指寄存器中所存的代码能够在移位脉冲的作用下依次左移或右移。既能左移又能右移的称为双向移位寄存器,只需要改变左、右移的控制信号便可实现双向移位要求。根据移位寄存器存取信息的方式不同分为:串入串出、串入并出、并入串出、并入并出四种形式。

本实验选用的4位双向通用移位寄存器,型号为CC40194或74LS194,两者功能相同,可互换使用,其逻辑符号及引脚排列如图6-1所示。

其中 D0、D1 、D2 、D3为并行输入端;Q0、Q1、Q2、Q3为并行输出端;SR 为右移串行输入端,SL 为左移串行输入端;S1、S0 为操作模式控制端;CR为直接无条件清零端;

移位寄存器设计 实验六移位寄存器的设计

移位寄存器设计 实验六移位寄存器的设计

图6-1 CC40194的逻辑符号及引脚功能

CP为时钟脉冲输入端。(www.61k.com)

CC40194有5种不同操作模式:即并行送数寄存,右移(方向由Q0→Q3),左移(方向由Q3→Q0),保持及清零。

S1、S0和CR端的控制作用如表6-1。

2、移位寄存器应用很广,可构成移位寄存器型计数器;顺序脉冲发生器;串行累

移位寄存器设计 实验六移位寄存器的设计

移位寄存器设计 实验六移位寄存器的设计

移位寄存器设计 实验六移位寄存器的设计

加器;可用作数据转换,即把串行数据转换为并行数据,或把并行数据转换为串行数据等。本实验研究移位寄存器用作环形计数器和数据的串、并行转换。

(1) 环形计数器

把移位寄存器的输出反馈到它的串行输入端,就可以进行循环移位,

如图6-2所示,把输出端 Q3 和右移串行输入端SR 相连接,设初始状态Q0Q1Q2Q3=1000,则在时钟脉冲作用下Q0Q1Q2Q3将依次变为0100→0010→0001→1000→??,如表6-2所示,可见它是一个具有四个有效状态的计数器,这种类型的计数器通常称为环形计数器。图6-2 电路可以由各个输出端输出在时间上有先后顺序的脉冲,因此也可作为顺序脉冲发生器。 表6-2

移位寄存器设计 实验六移位寄存器的设计

图 6-2 环形计数器

如果将输出QO与左移串行输入端SL相连接,即可达左移循环移位。(www.61k.com)

(2)实现数据串、并行转换

① 串行/并行转换器

串行/并行转换是指串行输入的数码,经转换电路之后变换成并行输出。

图6-3是用二片CC40194(74LS194)四位双向移位寄存器组成的七位串/并行数据转换电路。

图6-3 七位串行 / 并行转换器

电路中S0端接高电平1,S1受Q7控制,二片寄存器连接成串行输入右移工作模式。Q7是转换结束标志。当Q7=1时,S1为0,使之成为S1S0=01的串入右移工作方式,当Q7=0时,S1=1,有S1S0=10,则串行送数结束,标志着串行输入的数据已转换成并行输出了。

串行/并行转换的具体过程如下: 转换前,CR端加低电平,使1、2两片寄存器的内容清0,此时S1S0=11,寄存器执行并行输入工作方式。当第一个CP脉冲到来后,寄存器的输出状态Q0~Q7为01111111,与此同时S1S0变为01,转换电路变为执行串入右移工作方式,串行输入数据由1片的SR端加入。随着CP脉冲的依次加入,输出状态的变化可列成表6-3所示。

由表6-3可见,右移操作七次之后,Q7变为0,S1S0又变为11,说明串行输入结束。这时,串行输入的数码已经转换成了并行输出了。

当再来一个CP脉冲时,电路又重新执行一次并行输入,为第二组串行数码转换作好了准备。

② 并行/串行转换器

并行/串行转换器是指并行输入的数码经转换电路之后,换成串行输出。

图6-4是用两片CC40194(74LS194)组成的七位并行/串行转换电路,它比图6-3多了两只与非门G1和G2,电路工作方式同样为右移。

表6-3

移位寄存器设计 实验六移位寄存器的设计

移位寄存器设计 实验六移位寄存器的设计

移位寄存器设计 实验六移位寄存器的设计

图6-4 七位并行 / 串行转换器

寄存器清“0”后,加一个转换起动信号(负脉冲或低电平)。(www.61k.com]此时,由于方式控制S1S0

为11,转换电路执行并行输入操作。当第一个CP脉冲到来后,Q0Q1Q2Q3Q4Q5Q6Q7 的状态为0D1D2D3D4D5D6D7,并行输入数码存入寄存器。从而使得G1输出为1,G2输出为0,结果,S1S2变为01,转换电路随着CP脉冲的加入,开始执行右移串行输出,随着CP脉冲的依次加入,输出状态依次右移,待右移操作七次后,Q0~Q6的状态都为高电平1,与非门G1输出为低电平,G2门输出为高电平,S1S2又变为11,表示并/串行转换结束,且为第二次并行输入创造了条件。转换过程如表6-4所示。

中规模集成移位寄存器,其位数往往以4位居多,当需要的位数多于4位时,可把几片移位寄存器用级连的方法来扩展位数。

移位寄存器设计 实验六移位寄存器的设计

移位寄存器设计 实验六移位寄存器的设计

移位寄存器设计 实验六移位寄存器的设计

移位寄存器设计 实验六移位寄存器的设计

移位寄存器设计 实验六移位寄存器的设计

1、环形计数器

自拟实验线路用并行送数法予置寄存器为某二进制数码(如0100),然后进行右移循环,观察寄存器输出端状态的变化,记入表6-5中。[www.61k.com] 2、数据的串、并行转换 (1)串行输入、并行输出

按参考图6-3接线,进行右移串入、并出实验,串入数码自定;改接线路用左移方式实现并行输出。自拟表格,记录之。

(2)并行输入、串行输出

参考图6-4接线,进行右移并入、串出实验,并入数码自定。再改接线路用左移方式实现串行输出。自拟表格,记录之。 六、实验报告

1、分析表6-4的实验结果,总结移位寄存器CC40194的逻辑功能并写入表格功能总结一栏中。

1、 根据实验内容2 的结果,画出4位环形计数器的状态转换图及波形图。 2、 分析串 / 并、并 / 串转换器所得结果的正确性。

二 : 实验七 8位移位寄存器的设计

数字电路与逻辑设计实验报告

实验七 8位移位寄存器的设计

一、实验目的

熟悉QuartusⅡ仿真软件的基本操作,并用VHDL语言设计一个8位移位寄存器

二、实验内容

1.用VHDL语言设计由边沿触发式D触发器构成的8位移位寄存器,并进行仿真与分析;

三、实验原理

1.(1)8位移位寄存器逻辑电路的原理:

可以实现串行输出、并行输入,串行输出的功能。(www.61k.com)是能暂时存放二进制码的电路,被广泛的应用于各类数字系统和数字计算机中。寄存器的特点是存数方便。

abcdefgh为8个并行输入端,qa~qh为并行输出端,srsi为右移串行输入

端,slsi为左移串行输入端,s1,s0为模式控制端,clrn为异步清零端,clk为时钟脉冲输入端 (2)

8位移位寄存器 实验七 8位移位寄存器的设计

通过实验实现逻辑的原理:

输入信号 输出信

clk clrn S1 S0 sl sr abcdefQ_abcde

gh fgh

1 1 1 0 0 00001100001111 ↑ 11

第 1 页 共 8 页

8位移位寄存器 实验七 8位移位寄存器的设计

8位移位寄存器 实验七 8位移位寄存器的设计

8位移位寄存器 实验七 8位移位寄存器的设计

数字电路与逻辑设计实验报告

↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑

1 1 1 1 1 1 1 1 1 0

1 1 1 1 0 0 0 0 0 0

0 0 0 0 0 1 1 1 1 0

1 1 0 0 0 0 0 0 0 0

0 0 0 0 0 1 1 0 0 0

00001111 00011111 00111111 01111110 11111100 11111100 11111110 11111111 01111111 00111111

00011111 00111111 01111110 11111100 11111100 11111110 11111111 01111111 00111111 00000000

四、实验方法与步骤 实验方法:

采用基于FPGA进行数字逻辑电路设计的方法。[www.61k.com) 采用的软件工具是QuartusII软件仿真平台,采用的硬件平台是Altera EPF10K20TI144_4的FPGA试验箱。

实验步骤:

1、 编写源代码。打开QuartusⅡ软件平台,点击File中得New建立一个文件。编写的文件名与实体名一致,点击File/Save as以“.vhd”为扩展名存盘文件。VHDL设计源代码如下:

第 2 页 共 8 页

8位移位寄存器 实验七 8位移位寄存器的设计

8位移位寄存器 实验七 8位移位寄存器的设计

数字电路与逻辑设计实验报告

第 3 页 共 8 页

8位移位寄存器 实验七 8位移位寄存器的设计

8位移位寄存器 实验七 8位移位寄存器的设计

8位移位寄存器 实验七 8位移位寄存器的设计

8位移位寄存器 实验七 8位移位寄存器的设计

数字电路与逻辑设计实验报告

2、按照实验箱上FPGA的芯片名更改编程芯片的设臵。(www.61k.com]操作是点击

Assign/Device,选取芯片的类型“Altera的EPF10K20TI144_4”

3、编译与调试。

确定源代码文件为当前工程文件,点击Complier进行文件编译。编译结果有错误或警告,则将要调试修改直至文件编译成功。

4、波形仿真及验证。

在编译成功后,点击Waveform开始设计波形。点击“insert the node”,按照程序所述插入clrn,clk,s0,s1,sl,sr,a,b,c,d,e,f,g,h,qa,qb,qc,qd,qe,qf,qg,qh共22个节点(clrn,clk,s0,s1,sl,sr, a,b,c,d,e,f,g,h为输入节点,qa,qb,qc,qd,qe,qf,qg,qh为输出节点)。设臵s0,s1,sl,sr以不同的信号输入,abcdefgh输入初始数据,clk为时钟信号,点击保存按钮保存。然后进行功能仿真,选择菜单Processing->Generate Functional Netlist命令产生功能仿真网表,选择菜单Assignments-->Setting下拉列表中选择Simulator input ,在右侧的Simulation mode下拉列表中选择Functional,完成设臵;选择菜单中的 Processing->Start Simulation启动功能仿真,然后查看波形报告中的结果

5、时序仿真。首先进行全编译,编译成功后,点击Assignments 的settings的 simulation mode: Timing,仿真成功后即出带延时的波形图。

6、FPGA芯片编程及验证。

(1)分配管脚:assignment—>Pins在Location中选择合适的输入输出管脚并进行编译。

(2)下载验证:Tools->Programmer进入下载窗口Hardware

8位移位寄存器 实验七 8位移位寄存器的设计

Setup

第 4 页 共 8 页

8位移位寄存器 实验七 8位移位寄存器的设计

8位移位寄存器 实验七 8位移位寄存器的设计

8位移位寄存器 实验七 8位移位寄存器的设计

数字电路与逻辑设计实验报告

—>ByteBlaster->Start->OK

(3)初始化电路,根据设臵好的管脚资源擦做实验电路板,完成数据测试。[www.61k.com]

五、实验结果与分析

1、 编译过程

a)编译过程、调试结果

b)结果分析及结论:编译无错误,可进行下一步

2、 功能仿真

a)功能仿真过程及仿真结果

b)结果分析及结论:

最开始是清零;

臵数:当clrn=1时,S=11,输入01010101,输出01010101;

再清零,

右移:当S=01时,slsr=01时补1,因此输出10000000;

slsr=10时补0,因此输出01000000;

左移:当S=10时,slsr=10时补1,输出为10000001;

slsr=01补0,输出为00000010;

8位移位寄存器 实验七 8位移位寄存器的设计

8位移位寄存器 实验七 8位移位寄存器的设计

第 5 页 共 8 页

8位移位寄存器 实验七 8位移位寄存器的设计

8位移位寄存器 实验七 8位移位寄存器的设计

数字电路与逻辑设计实验报告

slsr=10时补1,输出为00000101;

3、 时序仿真

a)时序仿真过程及仿真结果

b)结果分析及结论: 仿真结果与逻辑存在偏差,因为时序仿真存在延迟现象,是正常现象。(www.61k.com)

4、 Programming芯片编程

a)芯片编程过程

b)编程芯片FPGA验证结果 b)结果分析与结论

按图示顺序为

右移补一:

清零:

臵数为01010101:

8位移位寄存器 实验七 8位移位寄存器的设计

8位移位寄存器 实验七 8位移位寄存器的设计

8位移位寄存器 实验七 8位移位寄存器的设计

第 6 页 共 8 页

8位移位寄存器 实验七 8位移位寄存器的设计

8位移位寄存器 实验七 8位移位寄存器的设计

8位移位寄存器 实验七 8位移位寄存器的设计

数字电路与逻辑设计实验报告

8位移位寄存器 实验七 8位移位寄存器的设计

8位移位寄存器 实验七 8位移位寄存器的设计

第 7 页 共 8 页

8位移位寄存器 实验七 8位移位寄存器的设计

8位移位寄存器 实验七 8位移位寄存器的设计

8位移位寄存器 实验七 8位移位寄存器的设计

数字电路与逻辑设计实验报告

由于没有在代码中加入保持的代码,所以不能抓拍到所有的结果,信号变

化的太快。(www.61k.com)

六、实验结论

1.实验结论:成功参照74198芯片,用VHDL语言设计由边沿触发式D触发器构成的8位移位寄存器,并进行仿真与分析;根据功能仿真和时序仿真的波形图显示成功,且下载成功。

2.实验心得:移位寄存器通过对数据的移动来储存数据,存数方便,但是范围较小,要弄懂移位寄存器的原理首先要搞懂它的逻辑功能表,如此才能在仿真过程中了解结果的正确与否,然后有一段缺陷是没有在代码中加入保持的功能,在下载时结果变化的太快,导致不能抓拍到所有的变化结果。下载过程耗费了太多的时间,都是自己不熟悉过程导致的。以后会多加练习下载这一部分。

8位移位寄存器 实验七 8位移位寄存器的设计

第 8 页 共 8 页

8位移位寄存器 实验七 8位移位寄存器的设计

8位移位寄存器 实验七 8位移位寄存器的设计

三 : 8位移位寄存器的设计

数字电路与逻辑设计实验报告

实验七8位移位寄存器的设计

班级 信息安全2班 姓名 张亮 学号20110806228

一、实验目的

熟悉QuartusⅡ仿真软件的基本操作,并用VHDL语言设计8位移位寄存器。并且掌握组合逻辑电路的功能测试和时序仿真;学会运用逻辑图设计电路。

二、实验内容

用VHDL语言设计由边沿触发式D触发器构成的8位串入并出移位寄存器,并进行仿真与分析; (查找相应资料)

三、实验原理

? 逻辑电路的原理

8位移位寄存器的设计

在数字电路中,用来存放二进制数据或代码的电路称为寄存器。寄存器是由具有存储功能的触发器组合起来构成的。一个触发器可以存储一位二进制代码,存放N位二进制代码的寄存器,需用n个触发器来构成。按功能可分为:基本寄存器和移位寄存器。移位寄存器中的数据可以在移位脉冲作用下一次逐位右移或左移,数据既可以并行输入、并行输出,也可以串行输入、串行输出,还可以并行输入、串行输出,串行输入、并行输出,十分灵活,用途也很广。

目前常用的集成移位寄存器种类很多,如74164、74165、74166、74595均为八位单向移位寄存器,74195为四位单向移存器,74194为四位双向移存器,74198为八位双向移存器。

8位移位寄存器 8位移位寄存器的设计

逻辑图如图所示:

逻辑功能表

8位移位寄存器 8位移位寄存器的设计

? 通过实验实现逻辑的原理

8位移位寄存器的设计

在CMOS移位寄存器中,有的品种只具有串行或并行中的一种输入方式,但也有些品种同时兼有串行和并行两种输入方式。串行输入的数据加到第一个寄存单元的D端,在时钟脉冲的作用下输入,数据传送速度较慢;并行输入的数据一般由寄存单元的R、S端送入,传送速度较快。移位

第 1 页 共 7 页

8位移位寄存器 8位移位寄存器的设计

8位移位寄存器 8位移位寄存器的设计

数字电路与逻辑设计实验报告

寄存器的移位方向有右移和左移之分。右移是指数据由左边最低位输入,依次由右边的最高位输出;左移时,右边的第一位为最低位,最左边的则为最高位,数据由低位的右边输入,由高位的左边输出。

四、实验方法与步骤

实验方法:

采用基于FPGA进行数字逻辑电路设计的方法。

采用的软件工具是QuartusII 软件仿真平台。

实验步骤:

1、编写源代码。打开QuartusII软件平台,点击File中得New建立一个文件。编写的文件名与实体名一致,点击File/Save as以“.vhd”为扩展名存盘文件。

2、编译与调试。确定源代码文件为当前工程文件,点击Complier进行文件编译。编译结果有错误或警告,则将要调试修改直至文件编译成功。

3、波形仿真及验证。在编译成功后,点击Waveform开始设计波形。点击“insert the node”,按照程序所述插入节点(具体节点根据不同实验的变量而定)。任意设臵输入节点的输入波形…点击保存按钮保存。

五、实验结果与分析

A. 编译过程

8位移位寄存器的设计

a)源代码(VHDL设计)

LIBRARY ieee;

USE ieee.std_logic_1164.all;

ENTITY shifter IS PORT

(

data_in : IN STD_LOGIC_VECTOR(7 DOWNTO 0); --输入的数据

n : IN STD_LOGIC_VECTOR(2 DOWNTO 0); --移位的数量

dir : IN STD_LOGIC; --移动的方向 0:左 1:右

kind : IN STD_LOGIC_VECTOR(1 DOWNTO 0); --移动类型 00:算术移 01:逻辑移 10:循环移

clock : IN BIT; --手动时钟PULSE

data_out : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) --移位的结果

);

END shifter;

ARCHITECTURE behav of shifter IS

BEGIN

PROCESS (data_in, n, dir, kind)

VARIABLE x,y : STD_LOGIC_VECTOR(7 DOWNTO 0);

VARIABLE ctrl0,ctrl1,ctrl2 : STD_LOGIC_VECTOR (3 DOWNTO 0);

BEGIN

IF (clock'EVENT AND clock = '1')

THEN --产生控制向量ctrl

ctrl0 := n(0) & dir & kind(1) & kind(0);

ctrl1 := n(1) & dir & kind(1) & kind(0);

ctrl2 := n(2) & dir & kind(1) & kind(0);

CASE ctrl0 IS

WHEN "0000" | "0001" | "0010" | "0100" | "0101" | "0110" => x := data_in; --n=0时不移动 WHEN "1000" => x := data_in(6 DOWNTO 0) & data_in(0); --算术左移1位

WHEN "1001" => x := data_in(6 DOWNTO 0) & '0'; --逻辑左移1位

WHEN "1010" => x := data_in(6 DOWNTO 0) & data_in(7); --循环左移1位

第 2 页 共 7 页

8位移位寄存器 8位移位寄存器的设计

数字电路与逻辑设计实验报告

WHEN "1100" => x := data_in(7) & data_in(7 DOWNTO 1); --算术右移1

WHEN "1101" => x := '0' & data_in(7 DOWNTO 1); --逻辑右移1

WHEN "1110" => x := data_in(0) & data_in(7 DOWNTO 1); --循环右移1

WHEN others => null;

END CASE;

CASE ctrl1 IS

WHEN "0000" | "0001" | "0010" | "0100" | "0101" | "0110" => y := x; --n=0时不移动 WHEN "1000" => y := x(5 DOWNTO 0) & x(0) & x(0); --算术左移

2位

WHEN "1001" => y := x(5 DOWNTO 0) & "00"; --逻辑左

移2位

WHEN "1010" => y := x(5 DOWNTO 0) & x(7 DOWNTO 6); --循环

左移2位

WHEN "1100" => y := x(7) & x(7) & x(7 DOWNTO 2); --算术右移

2位

WHEN "1101" => y := "00" & x(7 DOWNTO 2); --逻辑右

移2位

WHEN "1110" => y := x(1 DOWNTO 0) & x(7 DOWNTO 2); --循环右

移2位

WHEN others => null;

END CASE;

CASE ctrl2 IS

WHEN "0000" | "0001" | "0010" | "0100" | "0101" | "0110" => data_out <= y; --n=0时不移动

WHEN "1000" => data_out <= y(3 DOWNTO 0) & y(0) & y(0) & y(0) & y(0); --算术左移4位 WHEN "1001" => data_out <= y(3 DOWNTO 0) & "0000"; --逻辑左

移4位

WHEN "1010" | "1110" => data_out <= y(3 DOWNTO 0) & y(7 DOWNTO 4); --循环左

(右)移4位

WHEN "1100" => data_out <= y(7) & y(7) & y(7) & y(7) & y(7 DOWNTO 4); --算术右移4位 WHEN "1101" => data_out <= "0000" & y(7 DOWNTO 4); --逻辑右移

4位

WHEN others => null;

END CASE;

END IF;

END PROCESS;

END behav;

逻辑图(部分):

第 3 页 共 7 页

8位移位寄存器 8位移位寄存器的设计

数字电路与逻辑设计实验报告

b)编译、调试过程

8位移位寄存器 8位移位寄存器的设计

c)结果分析及结论

第 4 页 共 7 页

8位移位寄存器 8位移位寄存器的设计

8位移位寄存器 8位移位寄存器的设计

8位移位寄存器 8位移位寄存器的设计

本文标题:移位寄存器设计-实验六移位寄存器的设计
本文地址: http://www.61k.com/1098022.html

61阅读| 精彩专题| 最新文章| 热门文章| 苏ICP备13036349号-1