双向移位寄存器

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

、课程设计的目的与要求

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);

控制信号为10时实现左移功能

end case; end if; end process; end rtl;

三、课程设计总结

1

由上图1看出当sOs 仁01时,寄存器执行右移功能,并可看出 srsi=1100110011001100.

whe n"10"=>

whe n"11"=>

result1(0)<=slsi; result1(1)<=result1(0); result1(2)<=result1(1); result1(3)<=result1(2);

控制信号为11时实现并行输入功能

result1(0)<=a; result1(1)<=b; result1(2)<=c; result1(3)<=d;

程序结束

输出结果result 依次由初始状态 0000,逐渐右移左端输入端口输入 srsi=1100110011001100, 此时result 依次会出现1000:移入1; 1100:移入两个1; 0110:移入两个1 一个0;再有 以后出现的结果

能。

0011,1001,1100,0110,0011,1001,1100……••此结果符合真值表要求的右移功

M 已成訓Time

10.6 n?

*\¥

\ PoHer :

45.53 rte

Iriteivat | 37.83 ns 5臥:

EM

J ps

10 0 BS EQ.g ns

30. HE

40.0 ns : 50 0 DE

60 0 DE

10. Q ns

Till

畑岂

nr

dk

n r"L r L r L TT r

L n

Hr 1 1

0 0

1 1

0 0 1 1 0 0 1 1

slsi

1 1 1

ETsil

r

1 1

国M

ID

a

!>•

b

e

LZ

i

H result :oooo X

ioorx ooii x

■onTHioTl iwnrooTT^^TTnniM - Ciooi ^3510711^0^0^0;

图表2双向移位寄存器左移仿真波形图

由上图2看出当s0s1=10时,寄存器执行左移功能,并可看出 slsi=1100110011001100, 输出结果result 依次由初始状态 0000,逐渐右移左端输入端口输入

slsi=1100110011001100,

此时result 依次会出现0001 :移入1; 0011 :移入两个1 ; 0110:移入两个1 一个0;再有 以后出现的结果 1100,1001, 0011,0110, 1100,1001, 0011……..此结果符合真值表要求的左移 功能。

图表3双向移位寄存器并行输入仿真波形图

如图3中控制信号s0s1=11,寄存器执行四位并行输入功能, 输入端为图中a,b,c,d=0110,

当时钟脉冲到来后,寄存器输出端 result 输出结果应为并行输入数据

abcd=0110,根据仿真

波形图可知,输出结果

result 先出现0000的初始结果,经过一段时间的延迟,输出

result=0110,为并行输入数据,实现了并行输入的功能。

M aster Tim 占 Bar:

0 p$

< 卜]Pointis 匚

Interva l:

0 ps

相关文档
最新文档