1、一、课程设计的目的与要求1设计目的 熟悉 MAXPLUS2/Quartus II 软件,掌握软件的 VHDL 程序输入、程序编译和程序仿真操作; 学习利用 VHDL 语言设计双向移位寄存器电路程序。2设计要求根据设计正文提出的双向移位寄存器功能设置,实现电路设计。二、设计正文 双向移位寄存器有三种输入方式:4 位并行输入、1 位左移串行输入、1 位右移串行输入; 双向移位寄存器有一种输出方式:4 位并行输出。双向移位寄存器工作过程如下: 当 1 位数据从左移串行输入端输入时,首先进入内部寄存器最高位,并在并行输出口最高位输出,后由同步时钟的上跳沿触发向左移位。 当 1 位数据从右移串行输入端输
2、入时,首先进入内部寄存器最低位,并在并行输出口的最低位输出,后由同步时钟的上跳沿触发向右移位。双向移位寄存器的输入、输出端口如下:CLR:异步清零输入端;SRSI:串行右移输入端;SLSI:串行左移输入端;A、B、C 、D:4 位并行输入端;QA、QB、QC、QD:4 位并行输出端;S0,S1:两位控制码输入端。双向移位寄存器的端口功能如下:当 CLR0 时, 4 位输出端清 0;当 CLK0 时,4 位输出端保持原来状态不变;当 S00 时,4 位输出端保持原来的状态不变;当 S01 时,允许串行右移输入 1 位数据;当 S10 时,允许串行左移输入 1 位数据;当 S11 时,允许 4 位
3、数据从并行端口输入。VHDL 源程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL; 包含库和程序包entity double_dir_regt is 定义实体为 double_dir_regtport ( 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
4、,end double_dir_regt; 输出 resultARCHITECTURE rtl of double_dir_regt issignal result1: std_logic_vector(3 downto 0);设置信号 result1 使 result 能作为 输入使用beginresult 控制信号为 00 时实现保持功能result1(0) 控制信号为 01 时实现右移功能result1(3) 控制信号为 10 时实现左移功能result1(0) 控制信号为 11 时实现并行输入功能result1(0)=a;result1(1)=b;result1(2)=c;result
5、1(3)=d;end case;end if; 程序结束end process;end rtl;三、课程设计总结图表 1 双向移位寄存器右移仿真波形图由上图 1 看出当 s0s1=01 时,寄存器执行右移功能,并可看出1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 srsi=1100110011001100,输出结果 result 依次由初始状态 0000,逐渐右移左端输入端口输入 srsi=1100110011001100,此时 result 依次会出现 1000:移入 1;1100:移入两个1;0110:移入两个 1 一个 0;再有以后出现的结果0011,1001,1100
6、,0110,0011,1001,1100此结果符合真值表要求的右移功能。图表 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 双向移位寄存器
7、并行输入仿真波形图如图 3 中控制信号 s0s1=11,寄存器执行四位并行输入功能,输入端为图中a,b,c,d=0110,当时钟脉冲到来后,寄存器输出端 result 输出结果应为并行输入数据abcd=0110,根据仿真波形图可知,输出结果 result 先出现 0000 的初始结果,经过一段时间的延迟,输出 result=0110,为并行输入数据,实现了并行输入的功能。0 11 0控制信号 s0s1=111 1 0 0 1 1 0 0 1 1 0 0 1 1图表 4 双向移位寄存器保持仿真波形图由图 4 中当控制信号 s0s1=10 时实现左移功能,得到 0000,0001,0011,0110 的输出结果,当 s0s1=00 时,输出 result 一直保持 0110 不变,实现保持功能,根据仿真波形图可知,寄存器实现了保持的功能。综合以上四波形图,寄存器实现了实验要求的保持,右移,左移,并行输入的功能。输出结果控制信号 s0s1=00