双向移位寄存器的设计一、实验目的利用数字电路设计中移位寄存器的相关知识,通过课程设计更加深入的了解移位寄存器的功能。在计算机中常要求寄存器有移位功能。如在进行乘法时要求将部分积右移在将并行传送的数转换成串行数时也需要移位。因此移位寄存器的设计是必要的。二、硬件要求主芯片AlteraEPM7128SLC84-15,时钟信号,拨码开关。三、实验内容设计一个双向移位寄存器四、实验原理用VHDL语言描述任意分频数的分频器,并实现占空比任意设置.每当系统时钟上升沿到来时,计数器就加计数一位(可任意设置为N位),当计数值到达预定值时就对分频时钟翻转.这样就会得到一个连续的时钟脉冲.当移位信号到来时,移位寄存器就对存储的二进制进行移位操作.移位寄存方式可自行设置(可左移,右移,一位移,多位移位寄存)。五、实验源程序libraryieee;useieee.std_logic_1164.all;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;entitytdirregisport(clk:instd_logic;din:instd_logic;dir:instd_logic;op_l:outstd_logic;op_r:outstd_logic);endtdirreg;architectureaoftdirregissignalq:std_logic_vector(7downto0);beginprocess(clk)beginifclk'eventandclk='1'thenifdir='0'thenq(0)=din;foriin1to7loopq(i)=q(i-1);endloop;elseq(7)=din;foriin7downto1loopq(i-1)=q(i);endloop;endif;endif;endprocess;op_l=q(7);op_r=q(0);enda;六波形仿真结果dir为一个控制信号,clk为时钟控制信号,din为输入信号,表示要存入的数据,op_r表示右移,从高位到低位,后得到的结果,op_l表示左移,从低位到高位后得到的结果。如图所示,当dir为0时,op_r输出的是右移的结果,遇到一个clk的下降沿时,输入数据右移一位。op_l输出的是左移的结果,遇到一个clk的下降沿时,输入数据左移一位。当dir为1时,op_r与op_l与上述相反