当前位置:文档之家› 设计8位双向移位寄存器电路

设计8位双向移位寄存器电路

设计8位双向移位寄存器电路
设计8位双向移位寄存器电路

目录

1多功能双向移位寄存器 (1)

1.1基本工作原理 (1)

1.2 基本实现方案 (1)

2电路图设计 (2)

2.1 电路结构 (2)

2.2真值表 (3)

3移位寄存器的Verilog建模 (3)

3.1Verilog建模基础 (4)

3.2 8位双向移位寄存器Verilog描述 (5)

4程序仿真 (6)

5心得体会 (8)

参考文献 (10)

附录 (11)

摘要

使用硬件描述语言Verilog,在EDA工具QuartussII中,对8位双向移位寄存器进行行为级描述,根据设计语言进行功能时序仿真,验证设计的正确性与可行性。通过本基本设计熟悉QuartusII环境下的硬件描述操作流程,掌握基本的Verilog语法与编写风格。

关键字:Verilog QuartusII 移位寄存器

设计8位双向移位寄存器电路

1多功能双向移位寄存器

1.1基本工作原理

移位寄存器是基本的同步时序电路,基本的移位寄存器可以实现数据的串行/并行或并

行/串行的转换、数值运算以及其他数据处理功能。但有时候需要对移位寄存器的数据流向加以控制,实现数据的双向移动,其中一个方向称为右移,另一个方向称为左移,这种移位寄存器就称为双向移位寄存器。

根据国家标准规定,逻辑图中的最低有效位(LSB)到最高有效位(MSB)的电路排列顺序应

从上到下,从左到右。因此定义移位寄存器中的数据从低位触发器移向高位为右移,移向低位为左移。

为了扩展逻辑功能和增加使用的灵活性,某些双向移位寄存器集成电路产品又附加了

并行输入、并行输出等功能。下图所示是上述几种工作模式的简化示意图。

并行输入 并行输出

右移串行输入(D IR 左移串行输出(D OL 右移串行输出(D OR ) D IL )

0123

图1-1 多功能移位寄存器工作模式简图

1.2 基本实现方案

图1-2所示是实现数据保持、右移、左移、并行置入和并行输出的一种电路方案。图

中的D 触发器m FF 是N 为移位寄存器中的第m 位触发器,在其数据输入端插入了一个4选1数据选择器m MUX ,用2位编码输入10S S 、控制m MUX ,来选择触发器输入信号m D 的来

源。当100S S ==时,选择该触发器本身输出的m Q ,次态为1m n n

m m

Q D Q +==,使触发器保持状态不变;当100,1S S ==时,触发器1m FF -的输出1m Q -被选中,故CP 脉冲上升沿到来时,

m FF 存入1m FF -此前的逻辑值,即1m 1n n m Q Q +-=,而1m+1n n m Q Q +=,从而实现右移功能;类似地,

当101,0S S ==时,m MUX 选择1m Q +,实现左移功能;而当101S S ==时,则选中并行输入

数据m DI ,其次态1

n m m Q DI +=,

从而完成并行数据的置入功能。上述四种操作概述于表1-1,此外,在各触发器的输入端10~N Q Q -,可以得到N 位并行数据的输出。

图1-2 实现多功能双向移位寄存器的一种方案

2电路图设计

2.1 电路结构

根据上一节的移位寄存器的一种基本实现方案,可以设计出8位双向移位寄存器,完

整电路图入图2-1所示。

此电路由8个4选1数据选择器、8个带异步清零的D 触发器组成。所有的数据选择

器编码端10S S 分别对应地接在一起,同时选择D 触发器的信号数据来源。D 触发器时钟端CP 接一起,清零端CR 也同样接在一起,这样可以保证级联D 触发器的同步,和并行输出数据的清零。另,每个D 触发器的输出对应一位并行输入。Dsr 是右移串行数据输入端,Dsl 是左移串行数据输入端,分别接最低有效位对应的数据选择器和最高有效位对应的数据选择器。

图2-1 8位双向移位寄存器

2.2真值表

分析电路图,可得此8位双向移位寄存器的真值表,入下表所示:表2-1 8位双向移位寄存器真值表

3移位寄存器的Verilog建模

3.1Verilog建模基础

硬件描述语言Verilog HDL类似于高级程序设计语言(如C语言等),它是一种以文本形式来描述数字系统硬件的结构和行为的语言,用它可以表示逻辑电路图、逻辑表达式,还可以表示更复杂的数字逻辑系统所完成的逻辑功能(即行为)。人们还可以用HDL编写设计说明文档,这种文档易于存储和修改,适用于不同的设计人员之间进行技术交流,还能被计算机识别和处理,计算机对于HDL的处理包括两个方面:逻辑仿真和逻辑综合。

逻辑仿真是指用计算机仿真软件对数字逻辑电路的结构和行为进行预测,仿真器对HDL 描述进行解释,以文本形式或时序波形图形式给出电路的输出。在电路在实现之前,设计人员可以根据仿真结果初步判断电路的逻辑功能是否正确。在仿真期间,如果发现设计中存在错误,可以对HDL文件进行修改,直至满足设计要求为止。

在Verilog中,行为级描述主要使用由关键词initial或always定义的两种结构类型的语句。一个模块的内部可以包括多个initial或always语句,仿真时这些语句同时并行执行,即与他们在的模块内部排列无关,都从仿真的0时刻开始。

本设计采用always语句对8位双向移位寄存器进行行为级功能描述。Always本身是一个无限循环语句,即不停地循环执行其内部的过程语句,直到仿真过程结束。但用它来描述硬件电路的逻辑功能时,通常在always后面紧跟着循环控制条件,所以always语句的一般用法如下:

always @ (事件控制表达式)

begin

块内局部变量的定义;

过程赋值语句;

end

这里,“事件控制表达式”也称敏感事件表,即等待确定的事件发生或某一特定的条件变为“真”,它是执行后面过程赋值语句的条件。“过程赋值语句”左边的变量必须被定义成寄存器数据类型,右边变量可以是任意数据类型。begin和end将多条过程赋值语句包围起来,组成一个顺序执行语句块,块内的语句按照排列顺序依次执行,最后一条语句执行完后,执行挂起,然后always语句处于等待状态,等待下一个事件的发生。注意,begin 和end之间只有一条语句,且没有定义局部变量时,则关键词begin和end可以被省略。

在Verilog中,将逻辑电路的敏感事件分为两种类型:电平敏感事件和边沿触发事件。在组合电路中,输入信号的变化直接会导致输出信号的变化。时序电路中的锁存器输出在使能信号为高电平时未亦随输入电平变化,这种对输入信号电平变化的响应称为电平敏感事件。而触发器状态的变化仅仅发生在时钟脉冲的上升沿或下降沿。Verilog中分别用关键词posedge(上升沿)和negedge(下降沿)进行说明,这就是边沿敏感事件。

3.2 8位双向移位寄存器Verilog描述

本设计通过行为级描述语句always描述了一个8位双向移位寄存器,它有两个选择输入端、两个串行数据输入端、8个并行数据输入端和8个并行数据输出端,完成的功能与图2-1的电路相同。它有5种功能:异步置零、同步置数、左移、右移和保持状态不变。当清零信号CR跳变到低电平时,寄存器的输出被异步置零;否则,当CR=1时,与时钟信号有关的4种功能由case语句中的两个选择输入信号S1和S0决定(在case后面S1、S0被拼接成2位矢量)。

设计程序如下:

//Behavioral description of Universal shift register

module shift (S1,S0,D,Dsl,Dsr,Q,CP,CR);

input S1,S0; //Select inputs

input Dsl,Dsr; //serial data input

input CP,CR; //Clock and Reset

input [7:0]D; //Parallel Data input

output [7:0]Q; //Register ouput

reg[7:0]Q;

always @(posedge CP or negedge CR)

if(~CR) Q <= 8'b00000000 ;

else

case ({S1,S0})

2'b00:Q<=Q; //No change

2'b01:Q<={Q[6:0],Dsr}; //Shift right

2'b10:Q<={Dsl,Q[7:1]}; //Shift left

2'b11:Q<=D; //Patallel load input

endcase

endmodule

在程序中定义了一个模块(module)shift,在QuartusII中新建工程文件时,定义的顶层模块名需要与工程名保持一致,否则在编译时会出现错误。模块前端为基本输入输出口的设置。

使用了行为级描述语言always,后跟if……else……判断语句,在循环执行过程中来根据输入信号判断做出相应的动作。其中if(~CR) Q<=8’b00000000 ;表示当CR信号为低电平时,(~CR)则为1,此时将8为二进制数b00000000赋给Q,即实现移位寄存器的异步清零。Case语句类似于C语言中的case语句,同样根据判断条件来选择要执行的分支语句。在case中将S1和S0拼接为2位矢量,来共同决定判断结果。同样,移位由串行输入和7个触发器的输入拼接起来进行描述,如Q<={Dsl,Q[7:1]};说明了左移操作,即在时钟信号CP上升沿作用下,将左移输入端Dsl的数据直接传给输出Q[7],而触发器输出端的数据左移一位,Q[7:1]传给Q[6:0](即Q[7]->Q[6],Q[6]->Q[5],……,Q[1]->Q[0]),于是,完成将数据左移一位的操作。但是需要注意,上述程序中所注释的右移和左移方向与图2-1一致,而与Verilog描述语句中的排列和移动方向正好相反。后者与一般技术机程序一致(即高位在左,低位在右)。

4程序仿真

在QuartuaII中建立shift工程,添加Verilog文件,编写源代码后,进行全编译。编译成功后,即可对定义的模块进行功能仿真。仿真步骤查看相关QuartusII书籍。本设计中,将所有定义的引脚添加入仿真环境中,对输入数据进行强制设定,运行后观察输出波形及其时序图。

根据8位双向移位寄存器的真值表,仿真时,首先考察此移位寄存器的左移、右移、保持和并行输入的基本功能,然后再在串行输入端加入信号,观察移位寄存器的书序波形。图4-1为基本功能时序图。

图4-1 基本功能时序图

根据图4-1,观察S1和S0信号,每个基本功能的仿真之前都先强制S1=S0=1,即实现并行输入功能,给输入D[7:0]设置初值,然后再下一个周期对S1、S0进行改变,观察输出Q的变化。

程序中,语句always @(posedge CP or negedge CR)表示当有CP的上升沿或CR的下降沿时触发,因此可以从仿真时序图验证,D和Q的数据改变都发生在CP信号的上升沿。在第一个CP周期上升沿之前,设定的D初值为128,上升沿到来,D是数据移入Q,Q值为128,Q的各位同并行输入D相同。第二个CP周期中,S1=S0=0,移位寄存器功能为保持,从时序图中验证知,Q的初值保持到第三个CP周期上升沿时刻。在第三个CP周期初,设定并行输入D为15,第四个周期为保持,第五个周期,设定S1S0=01,则寄存器实现右移,换算到计算机运算中即为左移一位,数值增大1倍。观察第五个周期CP上升沿之后,Q数值由15增大为30,Q的各位数值与D的各位数值比较,可以看出Q的D移位后的结果,此时串行输入的值为0,仿真验证正确。第六个周期保持数据,第七个周期并行移入数据18,保持一个周期,在第九个周期中,S1S0=10,寄存器功能为左移,换算到计算机运算为右移,及数据变为原来的一半。从仿真时序图知道,第九个CP上升沿到来后,Q数值变为9,功能仿真正确。

完成基本功能的仿真后,设置串行输入Dsl和Dsr,继续仿真然后观察时序图。图4-2为加入串行输入时的仿真结果。

图4-2 加入串行输入时的仿真结果

主要观察第五个周期,Q初值为15,寄存器功能设定为右移,右移串行输入为1,CP 上升沿到来后,Q值增大为31,即增大到2倍后右在低位移入1。同样在第九个周期中,寄存器设定功能为左移,CP上升沿到来后,原有的值18变为9,但是左移串行输入为1,从高位引入1,即为128+9=137,功能仿真结果正确。

5心得体会

通过这次的能力拓展训练的课程设计,使我又学习了很多知识,而且是课堂上不容易学到的知识。俗话说,“实践出真知”,课堂上学习到的理论知识,如果不转化为实践的话,始终都将是一纸空文,没什么大的价值。作为一名电类专业的学生,掌握基本的EDA设计方法是理所当然的事情。虽然我们的课程中,对此次课设使用的硬件描述语言的介绍并不是很多,但是并不代表它不重要,相反,我们需要学好这样一种工具,并熟练掌握。而这次的课设,则给了我学习并使用Verilog和使用QuartusII的机会,和将理论转化为实践的机会,使我获益匪浅。

首先,通过课设中的程序设计,查阅相关的资料,我能熟练地使用Verilog语言编写基本的程序,熟悉各寄存器的使用方法和数据传送与处理,根据Verilog来对这些基本的硬件进行行为级的描述。在Verilog程序编写中,我还学到了使用它强大的实序仿真方法,进而根据仿真结果来来辅助程序设计,直到达到预期的功能。这个方法对以后进行Verilog 程序的编写和硬件开发将起到很大的帮助。

其次,在之前的课程中,我们所学习的编程语言如C、Visual Basic,都是高级语言,在系统下编写,以其自然的语法和结构,和方便的调试工具,使我们很快学习吸收。而此次课设,我们却接触了直接对硬件进行描述的HDL语言,是区别于C之类的。Verilog语言并不像想象中的那么晦涩难懂,其实它也有灵活的结构和处理方式,而且很贴近于C语言的语法习惯和句式,学习起来很容易上手和提升。此外,通过这次课设,明白可以通过Verilog语言和QuartusII来自己定制需要的硬件模块,具有针对性高的特点。如今,我对Verilog语言也有了很浓厚的兴趣,在以后的学习中,我会加大这方面的能力提升,来实现相关电子产品的设计。

再次,因为Verilog语言与硬件联系比较紧密,在ASIC设计中使用广泛,同时在嵌入式SOPC中也有及其重要的地位。这种才新兴20余年的技术手段在未来肯定会得到越来越大的推广和使用。

如今,在电子产品设计中,EDA已经是越来越受欢迎的手段和方法了,掌握一种和多种EDA工具,入QuartusII和Altium Designer等,是当代大学生尤其是电类专业学生必需的任务。只有掌握足够的工具,才能在更深入的学习中,或将来的工作中熟练地运用这些工具进行电子设计开发。

参考文献

[1]康华光, 《电子技术基础数字部分》北京:高等教育出版社, 2006

[2]赵艳华,曹丙霞,张睿, 《基于Quartus II的FPGA/CPLD设计与应用》北京:电子工业出版社, 2009

[3]周润景,苏良碧, 《基于Quartus II的数字系统Verilog HDL设计实例详解》北京:电子工业出版社,2010

[4]乔庐峰,王志功,《Verilog HDL数字系统设计与验证》北京:电子工业出版社,2009

[5]何宾, 《EDA原理及Verilog实现》北京:清华大学出版社,2010

武汉理工大学暑期能力拓展训练

附录

8位移位双向移位寄存器电路

8位移位寄存器的电路设计与版图实现

8位移位寄存器的电路设计与版图实现 摘要 电子设计自动化,缩写为EDA,主要是以计算机为主要工具,而Tanner EDA则是一种在计算机windows平台上完成集成电路设计的一种软件,基本包括S-Edit,T-Spice,W-Edit,L-Edit与LVS等子软件,其S-Edit以及L-Edit为常用软件,前者主要实现电路设计,后者主要针对的是已知电路的版图绘制,而T-Spice主要可实现电路图及版图的仿真,可以用Tanner EDA实现电路的设计布局以及版图实现等一系列完整过程。本文用Tanner EDA工具主要设计的是8位移位寄存器,移位寄存器主要是用来实现数据的并行和串行之间的转换以及对数据进行运算或专业处理的工具,主要结构构成是触发器,触发器是具有储存功能的,可以用来储存多进制代码,一般N 位寄存器就是由N个触发器构成,移位寄存器工作原理主要是数据在其脉冲的作用下实现左移或者右移的效果,输入输出的方式表现为串行及并行自由组合,本设计就是在Tanner EDA的软件平台上进行对8位移位寄存器的电路设计仿真,再根据电路图在专门的L-Edit 平台上完成此电路的版图实现,直至完成的结果和预期结果保持一致。 关键词:Tanner EDA;L-Edit;移位寄存器,S-Edit

8 bits shift register circuit design and layout Abstract Electronic design automation,referred to as EDA,it is based on computers as the main tool,and Tanner EDA is a kind of software that complete the integrated circuit design on Windows platforms.Its Sub-Softwares include S-Edit,T-Spice,W-Edit,L-Edit and LVS and so on.S-Edit and L-Edit are commonly used software,S-Edit is primarily designed to achieve circuit,the latter is aimed primarily known circuit layout drawing,T-Spice can achieve schematic and layout simulation.We can achieve layout of the circuit design and a series of complete process layout used Tanner EDA tools.In this paper, Tanner EDA tools are mainly designed an 8-bit shift register.The shift register is mainly used for data conversion between parallel and serial, and the data processing tool operation or professional,its main structure is the trigger composition,flip-flop is a storage function,it can be used to store more hexadecimal code,In general N-bits register is composed of N trigger.Working principle of the shift register data under the action of the pulse, mainly the effect of the shift to the left or right,input and output of the way of serial and parallel free combination.This design is in Tanner on the EDA software platform to 8 bits shift register circuit design and simulation,then according to the circuit diagram on special L - Edit platform to complete the circuit layout implementation,until the finish is consistent with the results and expected results. Keywords:Tanner EDA;L-Edit;Shift register,S-Edit

32位并进并出移位寄存器设计

《EDA课程设计》 32位并进并出移位寄存器设计 学院:物理电气信息学院 专业:通信工程 姓名:杨小花 学号:12010245315 指导老师:杨泽林 完成日期:2012.12.11

32位并进并出移位寄存器设计 (杨小花12010245315 通信工程专业) 摘要:EDA技术作为现代电子设计技术的核心,它依赖强大的计算机,在EDA工具软件平台上,对以硬件描述语言VHDL为系统逻辑描述手段完成的设计文件,自动地完成逻辑编译、逻辑简化、逻辑分割、逻辑综合,以及逻辑优化和仿真测试,直至实现既定的电子线路系统功能。随着基于EDA技术的发展和应用领域的扩大与深入,EDA技术在电子信息、通信、自动控制及计算机应用等领域的重要性日益突出。关键字:EDA技术;VHDL语言;移位寄存器 一、实验原理 用一个8位移位寄存器,再增加一些电路,如4个8位锁存器等,设计成为一个能为32位二进制数进行不同方式移位的移位寄存器。8位是CPU设计中常用的移位寄存器模块,是用CASE语句设计的并行输入输出的移位寄存器模块。设计中有四种循环:带进位循环左移,带进位循环右移,自循环左移和自循环右移。其中带进位循环左移的原理是,每一次最高位移出进入输出进位,而最低位是设置的进位输入,带进位循环右移原理是,每一次最低位移出进入输出进位,而最高位是设置的进位输入,子循环左移的原理是,每一次循环,最高位进入到最低位,依次循环,自循环右移原理是,每一次最低位进入到最高位,依次循环。 二、实验步骤 1、建立一个工程项目,设置路径,项目名和顶层实体名一致; 2、设计一个8位移位寄存器电路;

3、设计一个8位锁存器电路; 4、运用元件调用声明语句和元件例化语句完成顶层设计。 三、实验程序 1、八位移位寄存器程序 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY SHIFTIS PORT ( CLK,CO: IN STD_LOGIC; --时钟和进位输入 MD : IN STD_LOGIC_VECTOR(2 DOWNTO 0); --移位模式控制字 D : IN STD_LOGIC_VECTOR(7 DOWNTO 0); -- 待加载移位的数据 QB : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); --移位数据输出 CN : OUT STD_LOGIC); --- 进位输出 END SHIFT; ARCHITECTURE behav OF SHIFT IS SIGNAL REG : STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL CY : STD_LOGIC; BEGIN PROCESS(CLK,CO,MD) BEGIN IF CLK'EVENT AND CLK='1' THEN CASE MD IS

移位寄存器

双向移位寄存器的设计 一、实验目的 利用数字电路设计中移位寄存器的相关知识,通过课程设计更加深入的了解移位寄存器的功能。在计算机中常要求寄存器有移位功能。如在进行乘法时 要求将部分积右移在将并行传送的数转换成串行数时也需要移位。因此 移位寄存器的设计是必要的。 二、硬件要求 主芯片Altera EPM7128SLC84-15,时钟信号,拨码开关。 三、实验内容 设计一个双向移位寄存器 四、实验原理 用VHDL语言描述任意分频数的分频器,并实现占空比任意设置.每当系统时钟上升沿到来时,计数器就加计数一位(可任意设置为N位),当计数值到达预定值时就对分频时钟翻转.这样就会得到一个连续的时钟脉冲. 当移位信号到来时,移位寄存器就对存储的二进制进行移位操作.移位寄存方式可自行设置(可左移,右移,一位移,多位移位寄存)。 五、实验源程序 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity tdirreg is port (clk: in std_logic; din: in std_logic; dir : in std_logic; op_l: out std_logic; op_r: out std_logic); end tdirreg; architecture a of tdirreg is signal q: std_logic_vector(7 downto 0); begin process(clk) begin if clk'event and clk= '1'then if dir = '0' then q(0) <= din; for i in 1 to 7 loop q(i) <= q(i-1); end loop ; else q(7) <= din; for i in 7 downto 1 loop q(i-1) <=q(i); end loop ;

移位寄存器及其应用(精)

移位寄存器及其应用 一、实验目的 1、掌握中规模4位双向移位寄存器逻辑功能及使用方法。 2、熟悉移位寄存器的应用—实现数据的串行、并行转换和构成环形计数器。 二、原理说明 1、移位寄存器是一个具有移位功能的寄存器,是指寄存器中所存的代码能够在移位脉冲的作用下依次左移或右移。按代码的移位方向可分为左移、右移和可逆移位寄存器,只需要改变左、右移的控制信号便可实现双向移位要求。根据移位寄存器存取信息的方式不同又可分为:串入串出、串入并出、并入串出、并入并出四种形式。 本实验选用的4位双向通用移位寄存器,型号为CC40194或74LS194,两者功能相同,可互换使用,其逻辑符号及引脚排列如图8-3-3-1所示。 其中 D0、D1、D2、D3为并行输入端;Q0、Q1、Q2、Q3为并行输出端;S R为右移串行输入 C为直接无条件清零端; 端,S L为左移串行输入端;S1、S0为操作模式控制端;R CP为时钟脉冲输入端。 CC40194有5种不同操作模式:即并行送数寄存,右移(方向由Q0→Q3),左移(方向由Q3→Q0),保持及清零。 S1、S0和R C端的控制作用如表8-3-3-1。 图8-3-3-1 CC40194的逻辑符号及引脚功能 表8-3-3-1 CC40194功能表

2、移位寄存器应用很广,可构成移位寄存器型计数器;顺序脉冲发生器;串行累加器;可用作数据转换,即把串行数据转换为并行数据,或把并行数据转换为串行数据等。本实验研究移位寄存器用作环形计数器和数据的串、并行转换。 (1)环形计数器 把移位寄存器的输出反馈到它的串行输入端,就可以进行循环移位, 如图8-3-3-2所示,把输出端 Q3和右移串行输入端S R 相连接,设初始状态Q0Q1Q2Q3=1000,则在时钟脉冲作用下Q0Q1Q2Q3将依次变为0100→0010→0001→1000→……,如表10-2所示,可见它是一个具有四个有效状态的计数器,这种类型的计数器通常称为环形计数器。图8-3-3-2 电路可以由各个输出端输出在时间上有先后顺序的脉冲,因此也可作为顺序脉冲发生器。其状态表如表8-3-3-2所示。 表8-3-3-2 环形计数器状态表 图 8-3-3-2 环形计数器 如果将输出Q O与左移串行输入端S L相连接,即可达左移循环移位。 (2)实现数据串、并行转换 ①串行/并行转换器 串行/并行转换是指串行输入的数码,经转换电路之后变换成并行输出。 图8-3-3-3是用二片CC40194(74LS194)四位双向移位寄存器组成的七位串/并行数据转换电路。

第10章 移位寄存器 (2011)

第10章移位寄存器 本章大纲 10.1 基本移位寄存器功能 10.2 串行进入/串行输出移位寄存器 10.3 串行进入/并行输出移位寄存器 10.4 并行进入/串行输出移位寄存器 10.5 并行进入/ 并行输出移位寄存器 10.6 双向移位寄存器 10.7 移位寄存器计数器 10.8 移位寄存器应用 10.9 故障检测 10.10 关联标注的逻辑符号 10.11 CPLD简介 10.12 数字系统应用 本章学习目标 ?识别移位寄存器中数据运动的基本方式 ?解释串行进入/串行输出、串行进入/并行输出、并行进入/串行输出和并行进入/并 行输出移位寄存器是怎样运行的 ?描述双向移位寄存器怎样运行 ?确定约翰逊计数器的序列 ?设置环形计数器以产生指定序列 ?从移位寄存器中构建环形计数器 ?使用移位寄存器作为时间延迟设备 ?使用移位寄存器来实现串行到并行数据的变换器 ?实现基本移位寄存器控制的键盘译码器 ?通过用已知的测试模式“运行”系统来对数字系统进行故障检测 ?解释关联标注的ANSI/IEEE标准91-1984移位寄存器 ?描述基本的CPLD ?在系统应用中使用移位寄存器 重要术语 ?寄存器 ?级

?移位 ?载入 ?双向 ?CPLD ?逻辑阵列块(LAB) ?宏单元 简介 移位寄存器是紧密关联于数字计数器的序列逻辑电路的一种类型。寄存器主要用来存 储数字数据并且一般不具有特征内部状态序列,而计数器则具有这样的序列。但是也有例外,我们将在10.7节介绍它们。 在本章中,我们将学习移位寄存器的基本类型并展示几个应用。同时,我们还介绍了一种重要的故障检测方法。本章还介绍了复杂可编程逻辑设备(CPLD)。 固定功能逻辑器件 74HC164 74HC165 74HC174 74HC194 74HC195 可编程逻辑器件 MAX 7000 ·数字系统应用概述 数字系统应用阐释了本章中的概念。我们介绍了一个控制建筑物中警报器的安全进入系统。该系统使用两种类型的寄存器以及前几章所介绍的其他类型的设备。该系统同时还含有一个存储器,其将是第12章数字系统应用的重点。 学习本章内容可访问https://www.doczj.com/doc/3a10209298.html,/floyd。 10.1 基本移位寄存器功能 移位寄存器由一组触发器组成,在数字系统中涉及数据存储和移位方面的应用中是很 重要的。寄存器和计数器不同,除了一些特别专业的应用之外,都没有特定的状态序列。一般来说,寄存器主要用来存储和移位外部数据源进入其中的数据(1和0),并且一般不具有特征内部状态序列。 学完本节之后,你应当能够 ?解释触发器怎样存储一个数据位 ?定义移位寄存器的存储容量 ?定义寄存器的移位能力 □寄存器可以由一个或者多个用以存储和移位数据的触发器组成。 寄存器是一种具有两种基本功能的数字电路:数据存储和数据移动。寄存器的存储能

74LS194左右移位寄存器

74LS194左右移位寄存器 一、移位寄存器 在数字电路中,用来存放二进制数据或代码的电路称为寄存器。按功能 可分为:基本寄存器和移位寄存器。 移位寄存器中的数据可以在移位脉冲作用下一次逐位右移或左移,数据既可以并行输入、并行输出,也可以串行输入、串行输出,还可以并行输入、串行输出,串行输入、并行输出,十分灵活,用途也很广。 二、74LS194双向移位寄存器 目前常用的集成移位寄存器种类很多,其中74LS194为四位双向移存器。 图一 74LS194移位寄存器的引脚图 以上为74LS194的引脚图,其中 D 0~D 3 :并行输入端; Q ~Q 3 :并行输出端; S 0、S 1 :操作模式控制端;:为直接无条件清零端; S R :右移串行输入端 S L :左移串行输入端; CP:时钟脉冲输入端;

表一 74LS194的模式控制和状态输出表 三、移位寄存器型计数器 利用移位寄存器可构成环形和扭环形计数器。可先使S 0=S 1 =1,并行输入预 置数值,再改变S 0和S 1 的电平,实现左移或右移状态。若把移位寄存器的输出 以一定方式反馈到串行输入D SR 端或D SL 端,就可以构成移位寄存器型计数器。 例如,将74LS194的Q 3接到D SR 端,可得到模4的环形计数器(不可自启动); 将Q 3端通过一个非门接到D SR 端,则可得到模8的扭环形计数器(不可自启动)。用一片74LS194及门电路构成一个课实现7分频或8分频器。7分频器的分 频信号由Q 2输出,同时将Q 2 、Q 3 输出通过与非门后接入D SR 端,S S 1 =10。8分频 器的分频信号由Q 3取非后输出,同时将该信号送入D SR 端,S S 1 =10。

移位寄存器 第三章答案

第三章习题参考答案 1.画出以1)(2 4 6 +++=x x x x f 为联接多项式的线性移位寄存器逻辑框图,及其对应的状态图。 解:由1)(2 46+++=x x x x f ,得反馈函数为531621),,,(x x x x x x f ++=Λ,故 (1)逻辑框图: (2)状态图: 状态圈-1: 状态圈-2: 状态圈-3: 状态圈-4: 状态圈-5: 状态圈-6: 状态圈-7: 状态圈-8:

状态圈-9: 状态圈-10: 状态圈-11: 状态圈-12: 2.已知图3-2所示的7级线性反馈移位寄存器: 图3-2 (1)绘出该移位寄存器的线性递推式,联接多项式及特征多项式。 (2)给出状态转移矩阵。 (3)设初态为(1 1 1 1 1 1 1),给出输出序列a 。 解:(1)由逻辑框图得,递推式为: k k k k a a a a ++=+++357 ()0≥k 。 联接多项式为:7 4 2 1)(x x x x f +++=。 特征多项式为:7531)(~ x x x x f +++=

(2)状态转移矩阵:? ? ???? ? ?? ? ? ??0100000 101000000010001000100 000001000000011000000。 (3)输出序列:)111111111(ΛΛ=- a 。 3.设5级线性反馈移位寄存器的联接多项式为1)(2 5 ++=x x x f ,初态为(10101)。求输出序列a 。 解:由联接多项式得,反馈函数为:41521),,,(x x x x x f +=Λ。故以)10101(为初态的状态转移图为: 10101 01010001010001000001100000100000100100100100110100110100110100110100111100111100111101111101111001110001110001110000110010110110111110101110101110101110101→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→ 由此可得,输出序列为:=a 44444443444444421一个周期 0110100100000011111001010111011…。 4.证明:n 级线性反馈移位寄存器的状态转移变换是n 维线性空间n F 2上的线性变换。 证明:设f T 为n 级线性移位寄存器的状态转移变换,对n F 2,∈?βα,令),,,(110-=n a a a Λα, ),,,(110-=n b b b Λβ,有: ),,,(),,,()(121110∑=--==n i i n i n f f a c a a a a a T T ΛΛα, ),,,(),,,()(1 21110∑=--==n i i n i n f f b c b b b b b T T ΛΛβ。 ) ()() ,,,(),,,() )(,,,() ,,,()(1 211 2112211111100βαβαf f i n n i i i n n i i n i i n i n i n n f f T T b c b b a c a a b a c b a b a b a b a b a T T +=+=+++=+++=+-=-==----∑∑∑ΛΛΛΛ 对 2F k ∈?, ))((),,,(),,,()(1 21110ααf i n n i i n f f T k a c k ka ka ka ka ka T k T ===-=-∑ΛΛ。 故n 级线性反馈移位寄存器的状态转移变换是n 为线性空间n F 2上的线性变换。

EDA课程设计——移位寄存器的设计与实现

河南科技大学 课程设计说明书 课程名称 EDA技术与应用 题目移位寄存器的设计与实现 学院 班级 学生姓名 指导教师 日期

EDA技术课程设计任务书 班级:姓名:学号: 设计题目:移位寄存器的设计与实现 一、设计目的 进一步巩固理论知识,培养所学理论知识在实际中的应用能力;掌握EDA设计的一般方法;熟悉一种EDA软件,掌握一般EDA系统的调试方法;利用EDA软件设计一个电子技术综合问题,培养VHDL编程、书写技术报告的能力。为以后进行工程实际问题的研究打下设计基础。 二、设计任务 根据计算机组成原理中移位寄存器的相关知识,利用VHDL语言设计了三种不同的寄存器:双向移位寄存器、串入串出(SISO)移位寄存器、串入并出(SIPO)移位寄存器。 三、设计要求 (1)通过对相应文献的收集、分析以及总结,给出相应课题的背景、意义及现状研究分析。 (2)通过课题设计,掌握计算机组成原理的分析方法和设计方法。 (3)学习按要求编写课程设计报告书,能正确阐述设计和实验结果。 (4)学生应抱着严谨认真的态度积极投入到课程设计过程中,认真查阅相应文献以及实现,给出个人分析、设计以及实现。 四、设计时间安排 查找相关资料(1天)、设计并绘制系统原理图(2天)、编写VHDL程序(2天)、调试(2天)、编写设计报告(2天)和答辩(1天)。 五、主要参考文献 [1] 江国强编著. EDA技术与实用(第三版). 北京:电子工业出版社,2011. [2] 曹昕燕,周凤臣.EDA技术实验与课程设计.北京:清华大学出版社,2006.5 [3] 阎石主编.数字电子技术基础.北京:高等教育出版社,2003. [4] Mark Zwolinski. Digital System Design with VHDL.北京:电子工业出版社,2008 [5] Alan B. Marcovitz Introduction to logic Design.北京:电子工业出版社,2003 指导教师签字:年月日

基于Verilog设计的双向32位移位寄存器

双向移位寄存器 摘要:系统使用EDA技术设计了具有移位功能的寄存器,采用硬件描述语言VHDL进行设计,然 后进行编程,时序仿真。软件基于Verilog语言实现了双向32位移位寄存器的控制功能。通过本设 计熟悉QuartusII环境下的硬件描述操作流程,掌握基本的Verilog语法与编写风格。 关键字:EDA;Verilog;32位双向移位寄存器 1.引言 随着社会的发展,科学技术也在不断的进步。特别是计算机产业,可以说是日新月异,移位寄存器作为计算机的一个重要部件,从先前的只能做简单的左移或右移功能的寄存器到现在广泛应用的具有寄存代码、实现数据的串行-并行转换、数据运算和数据处理功能的移位寄存器。近年来,集成电路和计算机应用得到了高速发展,现代电子设计技术已迈入一个崭新的阶段,具体表现在:(1)电子器件及其技术的发展将更多地趋向于为EDA服务; (2)硬件电路与软件设计过程已高度渗透; (3)电子设计技术将归结为更加标准、规范的EDA工具和硬件描述语言HDL的运用; (4)数字系统的芯片化实现手段已成主流。 因此利用计算机和大规模复杂可编程逻辑器件进行现代电子系统设计已成为电子工程类技术人员必不可少的基本技能之一。 移位寄存器正在向着功能强,体积小,重量轻等方向不断发展,本设计主要介绍的是一个基于超高速硬件描述语言VHDL对32位双向移位寄存器进行编程实现。 2.课程设计的目的 在计算机中常要求寄存器有移位功能。如在进行乘法时,要求将部分积右移;在将并行传送的数转换成串行数时也需要移位。因此,移位寄存器的设计是必要的。 本次设计的目的就是利用计算机组成原理中移位寄存器的相关知识,通过课程设计更加深入的了解移位寄存器的功能。了解EDA技术,并掌握VHDL硬件描述语言的设计方法和思想,通过学习的VHDL语言结合计算机组成原理中的相关知识理论联系实际,掌握所学的课程知识。通过对移位寄存器的设计,巩固和综合运用所学知识,提高对计算机组成原理的理解。 3.课程设计的内容 本课程设计是带有32位双向移位寄存器。CLK是移位时钟信号,load是并行数据预置使能信号,QB是串行输出端口。此移位寄存器的工作方式是:当CLK的上升沿到来时过程被启动,如果这时预置使能load为低电平,LEFT_RIGHT为低电平,循环右移;如果预置使能load为低电平,LEFT_RIGHT 为高电平,循环左移。 4 Verilog HDL介绍 4.1Verilog语言的特点

74HC164 串入、并出8 位移位寄存器

8 位串入、并出移位寄存器 1. 概述 74HC164、74HCT164 是高速硅门 CMOS 器件,与低功耗肖特基型 TTL (LSTTL) 器件的引脚兼容。74HC164、74HCT164 是 8 位边沿触发式移位寄存器,串行输入数据,然后并行输出。数据通过两个输入端(DSA 或 DSB)之一串行输入;任一输入端可以用作高电平使能端,控制另一输入端的数据输入。两个输入端或者连接在一起,或者把不用的输入端接高电平,一定不要悬空。 时钟 (CP) 每次由低变高时,数据右移一位,输入到 Q0, Q0 是两个数据输入端(D SA 和 DSB)的逻辑与,它将上升时钟沿之前保持一个建立时间的长度。 主复位 (MR) 输入端上的一个低电平将使其它所有输入端都无效,同时非同步地清除寄存器,强制所有的输出为低电平。 2. 特性 ?门控串行数据输入 ?异步中央复位 ?符合JEDEC 标准no. 7A ?静电放电(ESD) 保护: ·HBM EIA/JESD22-A114-B 超过2000 V ·MM EIA/JESD22-A115-A 超过200 V 。 ?多种封装形式 ?额定从-40 °C 至+85 °C 和-40 °C 至+125 °C 。 3. 功能图 图 1. 逻辑符号

图 2. IEC 逻辑符号 图 3. 逻辑图 图 4. 功能图 4. 引脚信息

图 5. DIP14、SO14、SSOP14 和 TSSOP14 封装的引脚配置 引脚说明 74HC164中文资料(功能,真值表,引脚图及电气参数介绍) SN54HC164,/SN74HC164是8位移位寄存器,当其中一个(或二个)选通串行输入端的低电平禁止进入新数据,并把第一个触发器在下一个时钟脉冲来后复位到低电平时,门控串行输入端(A 和B)可完全控制输入数据。一个高电平输入后就使另一个输入端赋能,这个输入就决定了第一个触发器的状态。虽然不管时钟处于高电平或低电平时,串行输入端的数据都可以被改变,但只有满足建立条件的信息才能被输入。时钟控制发生在时钟输入由低电平到高电平的跃变上。为了减小传输线效应,所有输入端均采用二极管钳位。 https://www.doczj.com/doc/3a10209298.html,/info/cmos/0083928.html H=高电平(稳定态)L=低电平(稳定态)×=不定↑=从低电平转换到高电平 QA0…QH0=在稳定态输入条件建立前QA…QH 的相应电平 QAn…QHn=在最近的时钟输入条件(↑)建立前QA…QH 的相应电平,表示移位一位

8位双向移位寄存器电路设计

目录 摘要 (1) 1 多功能双向移位寄存器 (2) 1.1 基本工作原理 (2) 1.2 基本实现方案 (2) 2 电路图设计 (4) 2.1 电路结构 (4) 2.2 真值表 (4) 3 Verilog描述8位双向移位寄存器 (6) 4 程序仿真 (8) 5 总结 (10) 参考文献 (11)

摘要 移位寄存器是基本的同步时序电路,基本的移位寄存器可以实现数据的串行/并行或并行/串行的转换、数值运算以及其他数据处理功能。在本设计中,使用硬件描述语言Verilog,在EDA工具QuartussII中,设计8位双向移位寄存器硬件电路,根据设计语言进行功能时序仿真,验证设计的正确性与可行性。 关键字:Verilog QuartusII 移位寄存器

8位双向移位寄存器电路设计 1 多功能双向移位寄存器 1.1 基本工作原理 移位寄存器是基本的同步时序电路,基本的移位寄存器可以实现数据的串行/并行或并行/串行的转换、数值运算以及其他数据处理功能。在本设计中定义移位寄存器中的数据从低位触发器移向高位为右移,移向低位为左移。 为了扩展逻辑功能和增加使用的灵活性,某些双向移位寄存器集成电路产品 又附加了并行输入、并行输出等功能。如图1所示是上述几种工作模式的简化示意图。 并行输入 并行输出 右移串行输入(D IR 左移串行输出(D OL 右移串行输出(D OR ) D IL ) 0123 图1 多功能移位寄存器工作模式简图 1.2 基本实现方案 图2所示是实现数据保持、右移、左移、并行置入和并行输出的一种电路方 案。图中的D 触发器m FF 是N 为移位寄存器中的第m 位触发器,在其数据输入端插入了一个4选1数据选择器m MUX ,用2位编码输入10S S 、控制m MUX ,来选择触发器输入信号m D 的来源。当100S S ==时,选择该触发器本身输出的m Q , 次态为1m n n m m Q D Q +==,使触发器保持状态不变;当100,1S S ==时,触发器1m FF -的输出1m Q -被选中,故CP 脉冲上升沿到来时,m FF 存入1m FF -此前的逻辑值,即 1m 1n n m Q Q +-=,而1m +1n n m Q Q +=, 从而实现右移功能;类似地,当101,0S S ==时,m MUX 选择1m Q +,实现左移功能;而当101S S ==时,则选中并行输入数据m DI ,其次 态1 n m m Q DI +=,从而完成并行数据的置入功能。上述四种操作概述于表1,此外,

实验五 移位寄存器

实验五、移位寄存器的设计 一、实验目的 设计并实现一个异步清零同步置数8位并入并出双向移位寄存器电路。 二、实验原理 在数字电路中,用来存放二进制数据或代码的电路成为寄存器。寄存器按功能可分为:基本寄存器和移位寄存器。移位寄存器中的数据可以在移位脉冲作用下一次逐位右移或左移,数据既可以并行输入、并行输出,也可以串行输入、串行输出,还可以并行输入、串行输出,串行输入、并行输出,十分灵活,用途也很广。下面是一个并入串出的8位左移寄存器的VHDL描述: library ieee; use ieee.std_logic_1164.all; port(data_in: in std_logic_vector(7 downto 0); clk: in std_logic; load: in std_logic; data_out:out std_logic); end; architecture one of left8 is signal q: std_logic_vector(7 downto 0); begin process(load,clk) begin if load='1' then q<=data_in; data_out<='Z'; elsif clk'event and clk='1' then for I in 1 to 7 loop 图5-1 q(i)<=q(i-1); end loop; data_out<=q(7); end if; end process; end one; 异步清零同步置数8位并入并出双向移位寄存器电路结构图如图5-1所示。 三、实验要求 输入信号有D[0]~D[7]、DIL、DIR、S、LOAD、CLK和CLR,其中CLK接时钟,其余接拨码开关,输出信号有Q[0]~Q[7],接发光二极管。改变拨码开关的状态,观察实验结果。 实验工程项目命名为rlshift,源程序命名为rlshift8.vhd。 四、实验记录 对比较器实验结果造表,得到其真值表。 五、实验报告要求

实验七 移位寄存器及其应用

实验七 移位寄存器及其应用 一、实验目的 1. 掌握中规模4位双向移位寄存器逻辑功能及使用方法。 2. 熟悉移位寄存器的应用——环形计数器。 二、实验原理 1. 移位寄存器是一个具有移位功能的寄存器,是指寄存器中所存的代码能够在移位脉冲的作用下依次左移或右移。既能左移又有右移的称为双向移位寄存器,只需要改变左、右移的控制信号便可实现双向移位要求。根据移位寄存器存取信息的方式不同分为:串入串出、串入并出、并入串出、并入并出四种形式。 本实验选用的4位双向通用移位寄存器,型号为74LS194或CC40194,两者功能相同,可互换使用,其逻辑符号及引脚排列如图 1所示。 图 1 74LS194的逻辑符号及其引脚排列 其中D 3、D 2、D 1、D 0为并行输入端, Q 3、Q 2、Q 1、Q 0为并行输出端;S R 为右移串行输入端,S L 为左移串行输入端,S 1、S 0为操作模式控制端;CR 为直接无条件清零端;CP 为时钟脉冲输入端。74LS194有5种不同操作模式:即并行送数寄存,右移(方向由Q 3→Q 0),左移(方向由Q 0→Q 3),保持及清零。S 1、S 0和CR 端的控制作用如表 1所示。 表 1

2.移位寄存器应用很广,可构成移位寄存器型计数器;顺序脉冲发生器;串行累加器;可用作数据转换,即把串行数据转换为并行数据,或把并行数据转换为串行数据等。本实验研究移位寄存器用作环形计致器和串行累加器的线路及其原理。 (1) 环形计数器:把移位寄存器的输出反馈到它的串行输入端,就可以进行循环移位, 如图2所示,把输出端Q 0和右移串行输入端S R 相连接,设初始状态Q 3 Q 2 Q 1 Q =1000, 则在时钟脉冲作用下Q 3Q 2 Q 1 Q 将依次变为0100→0010→0001→1000→……,可见它是具 有四个有效状态的计数器,这种类型的计效器通常称为环形计数器。图2电路可以由各个输出端输出在时间上有先后顺序的脉冲,因此也可作为顺序脉冲发生器。

32位移位寄存器

8位数码扫描显示电路设计 一、实验目的 学习硬件扫描显示电路的设计; 二、实验原理 动态数码扫描显示方式是利用了人眼的视觉暂留效应,把八个数码管按一定顺序进行点亮,当点亮的频率不大时,我们看到的是数码管一个个的点亮,然而,当点亮频率足够大时,我们看到的不再是一个一个的点亮,而是全部同时显示,与传统方式得到的视觉效果完全一样。因此我们只要给数码管这样一个扫描频率,那么就可以实现两个以上的数码管同时点亮。而这个频率我们可以通过一个计数器来产生,只要计数频率足够大,就可以实现我们的要求。事实上,因为数码管点亮不是瞬间就可以的,它也需要一定的时间,该时间与数码管的选择有关系。为了折中这一对矛盾,实验中一般可将计数频率选择在100Hz左右。 图示8位数码扫描显示电路,其中每个数码管的8 个段:h、g、f、e、d、c、b、a(h 是小数点)都分别连在一起,8 个数码管分别由8 个选通信号k1、k2、… k8 来选择。被选通的数码管显示数据,其余关闭。如在某一时刻,k3 为高电平,其余选通信号为低电平,这时仅k3 对应的数码管显示来自段信号端的数据,而其它7 个数码管呈现关闭状态。根据这种电路状况,如果希望在8 个数码管显示希望的数据,就必须使得8 个选通信号k1、k2、… k8 分别被单独选通,并在此同时,在段信号输入口加上希望在该对应数码管上显示的数据,于是随着选通信号的扫变,就能实现扫描显示的目的。 实验参考扫描显示程序中clk 是扫描时钟;SG 为7 段控制信号,由高位至低位分别接g、f、e、d、c、b、a 7个段;BT 是位选控制信号,接图5-2 中的8 个选通信号:k1、k2、… k8 。程序中CNT8 是一个3 位计数器,作扫描计数信号,由进程P2 生成;进程P3 是7 段译码查表输出程序,进程P1 是对8 个数码管选通的扫描程序,例如当CNT8 等于

实验六移位寄存器的设计

实验六移位寄存器的设计 一、实验目的 1、掌握中规模4位双向移位寄存器逻辑功能及使用方法。 2、熟悉移位寄存器的应用—实现数据的串行、并行转换和构成环形计数器。 二、实验预习要求 1、复习有关寄存器及串行、并行转换器有关内容。 2、查阅CC40194、CC4011及CC4068 逻辑线路。熟悉其逻辑功能及引脚排列。 3、在对CC40194进行送数后,若要使输出端改成另外的数码,是否一定要使寄存器清零? 4、使寄存器清零,除采用R C输入低电平外,可否采用右移或左移的方法?可否使用并行送数法?若可行,如何进行操作? 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为并行输出端;S R为右移串行输 C为直接无条件清零端; 入端,S L为左移串行输入端;S1、S0为操作模式控制端;R

实验七移位寄存器及其应用

实验七移位寄存器及其应用 一、实验目的 1、掌握中规模4位双向移位寄存器逻辑功能及使用方法。 2、熟悉移位寄存器的应用—实现数据的串行、并行转换和构成环形计数器。 二、实验原理 1、移位寄存器是一个具有移位功能的寄存器,是指寄存器中所存的代码能够在移位脉冲的作用下依次左移或右移。既能左移又能右移的称为双向移位寄存器,只需要改变左、右移的控制信号便可实现双向移位要求。根据移位寄存器存取信息的方式不同分为:串入串出、串入并出、并入串出、并入并出四种形式。 本实验选用的4位双向通用移位寄存器,型号为CC40194或74LS194,两者功能相同,可互换使用,其逻辑符号及引脚排列如图7-1所示。 图7-1 CC40194的逻辑符号及引脚功能 其中 D0、D1、D2、D3为并行输入端;Q0、Q1、Q2、Q3为并行输出端;S R为右移串行输 C为直接无条件清零端;CP为时入端,S L为左移串行输入端;S1、S0为操作模式控制端;R 钟脉冲输入端。 CC40194有5种不同操作模式:即并行送数寄存,右移(方向由Q0→Q3),左移(方向由Q3→Q0),保持及清零。 S1、S0和R C端的控制作用如表7-1。

2、移位寄存器应用很广,可构成移位寄存器型计数器;顺序脉冲发生器;串行累加器;可用作数据转换,即把串行数据转换为并行数据,或把并行数据转换为串行数据等。本实验研究移位寄存器用作环形计数器和数据的串、并行转换。 (1)环形计数器 把移位寄存器的输出反馈到它的串行输入端,就可以进行循环移位, 如图7-2所示,把输出端 Q3和右移串行输入端S R 相连接,设初始状态Q0Q1Q2Q3=1000,则在时钟脉冲作用下Q0Q1Q2Q3将依次变为0100→0010→0001→1000→……,如表7-2所示,可见它是一个具有四个有效状态的计数器,这种类型的计数器通常称为环形计数器。图7-2 电路可以由各个输出端输出在时间上有先后顺序的脉冲,因此也可作为顺序脉冲发生器。 图 7-2 环形计数器 如果将输出Q O与左移串行输入端S L相连接,即可达左移循环移位。 (2)实现数据串、并行转换 ①串行/并行转换器 串行/并行转换是指串行输入的数码,经转换电路之后变换成并行输出。 图7-3是用二片CC40194(74LS194)四位双向移位寄存器组成的七位串/并行数据转换电路。

双向移位寄存器

、课程设计的目的与要求 1.设计目的 熟悉MAXPLUS2/Quartus II 软件,掌握软件的VHDL 程序输入、程序编译和程序仿真操作; 学习利用VHDL 语言设计双向移位寄存器电路程序。 2.设计要求根据设计正文提出的双向移位寄存器功能设置,实现电路设计。 、设计正文 双向移位寄存器有三种输入方式: 4 位并行输入、 1 位左移串行输入、 1 位右移串行输 入; 双向移位寄存器有一种输出方式: 4 位并行输出。 双向移位寄存器工作过程如下: 当 1 位数据从左移串行输入端输入时,首先进入内部寄存器最高位,并在并行输出口最高位输出,后由同步时钟的上跳沿触发向左移位。 当 1 位数据从右移串行输入端输入时,首先进入内部寄存器最低位,并在并行输出口的最低位输出,后由同步时钟的上跳沿触发向右移位。 双向移位寄存器的输入、输出端口如下: CLR :异步清零输入端; SRSI :串行右移输入端; SLS I :串行左移输入端; A 、B、C、D: 4 位并行输入端; QA、QB、QC、QD: 4 位并行输出端; SO, S1:两位控制码输入端。 双向移位寄存器的端口功能如下: 当CLR = 0时,4位输出端清0; 当CLK = 0时,4位输出端保持原来状态不变; 当S= 00时,4位输出端保持原来的状态不变; 当S= 01时,允许串行右移输入1位数据; 当S= 10时,允许串行左移输入1位数据; 当S= 11时,允许4位数据从并行端口输入。 VHDL源程序: LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ——包含库和程序包 entity double_dir_regt is ——定义实体为double_dir_regt port ( s: in std_logic_vector(1 downto 0); clr,clk,srsi,slsi,a,b,c,d:in std_logic; result: out std_logic_vector(3 downto 0)); ——设置端口参数输入控制信号s, 时钟clk, 并行输入abcd, end double_dir_regt; 输出result ARCHITECTURE rtl of double_dir_regt is signal result1: std_logic_vector(3 downto 0); ——设置信号result1 使result 能作为输入使用begin result<=result1; process (clk,clr) ——敏感信号为时钟和清零信号begin if (clr='0')then result1<="0000"; elsif (clk'event and clk='1')then case s is when "00"=> ——控制信号为00 时实现保持功能result1(0)<=result1(0); result1(1)<=result1(1); result1(2)<=result1(2); result1(3)<=result1(3); when"01"=> ——控制信号为01 时实现右移功能result1(3)<=srsi; result1(2)<=result1(3); result1(1)<=result1(2); result1(0)<=result1(1);

相关主题
文本预览
相关文档 最新文档