移位寄存器

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

双向移位寄存器的设计

一、实验目的

利用数字电路设计中移位寄存器的相关知识,通过课程设计更加深入的了解移位寄存器的功能。在计算机中常要求寄存器有移位功能。如在进行乘法时要求将部分积右移在将并行传送的数转换成串行数时也需要移位。因此移位寄存器的设计是必要的。

二、硬件要求

主芯片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 ;

end if;

end if;

end process ;

op_l <= q(7);

op_r <= q(0);

end a;

六波形仿真结果

dir为一个控制信号,clk为时钟控制信号,din为输入信号,表示要存入的数据,op_r表示右移,从高位到低位,后得到的结果,op_l表示左移,从低位

到高位后得到的结果。如图所示,当dir为0时,op_r输出的是右移的结果,

遇到一个clk的下降沿时,输入数据右移一位。op_l输出的是左移的结果,遇到一个clk的下降沿时,输入数据左移一位。当dir为1时,op_r与op_l与上述相反

相关文档
最新文档