双向移位寄存器
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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