基于VHDL移位寄存器程序设计

基于VHDL移位寄存器程序设计

实验目的

(1) 掌握中规模4位移位寄存器逻辑功能及使用方法。

(2) 学会用VHDL语言设计4位移位寄存器。

实验原理

移位寄存器是一个具有移位功能的寄存器,是指寄存器中所存的代码能够在移位脉冲的作用下依次左移或右移。既能左移又能右移的称为双向移位寄存器,只需要改变左、右移位的控制信号便可实现双向移位要求。根据移位寄存器存取信息的方式不同分为:串入串出、串入并出、并入串出、并入并出四种形式。该实验设计的是串行输入并行输出的左移位寄存器,由顶层文件模块及D触发器模块组成。

实验内容

(1) 用VHDL编写移位寄存器源程序。

(2) 将源程序进行综合、优化及功能仿真。

(3)软件说明:ModelSimSetup-13.1.0.162,QuartusSetup-13.1.0.162。

建立工程:

第一步:打开Quartus软件。

第二步:点击New Project Wizard -> next.

第三步:选择工程文件的存放位置,输入工程名 -> next -> next。

第四步:在family栏选择芯片型号-Cyclone IV E,在Name栏选择EP4CE115F29C7,选择完之后点击next。(如果不进行硬件调试时,此处默认即可)

第五步:检查工程有没有建错,点击完成。如下图:
在这里插入图片描述

程序设计:

全加器顶层文件设计:

   --文件名:shift_req.vhd 应与工程名保持一致:
  library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity shift_req is
    Port( a : in std_logic;
           clk : in std_logic;
           b: out std_logic_vector(4 downto 0));
end shift_req;
architecture gen_shift of shift_req is
signal z:std_logic_vector(0 to 4);
component dff   --D触发器元件声明
   port (d,clk:in std_logic;
         q:out std_logic);
end component;
begin
--	--方法一
--	z(0)<=a; b<=z(4);
--	q1:for i in 0 to 3 generate
--		dffx : dff port map(z(i),clk,z(i+1));
--	end generate;
	--方法二
dff0: dff port map(a,clk,z(0));   --元件例化语句
dff1: dff port map(z(0),clk,z(1));
dff2: dff port map(z(1),clk,z(2));
dff3: dff port map(z(2),clk,z(3));
dff4: dff port map(z(3),clk,z(4));
b<=z;
end gen_shift;

D触发器元件进行实例化:

 --文件名:dff.vhl
    library IEEE;
    use IEEE.STD_LOGIC_1164.ALL;
    use IEEE.STD_LOGIC_ARITH.ALL;
    use IEEE.STD_LOGIC_UNSIGNED.ALL;
    
    entity dff is
        Port ( d : in std_logic;
             clk : in std_logic;
             q : out std_logic);
    end dff;
    architecture Behavioral of dff is
    signal q_temp:std_logic;
    begin
     process(clk)
     begin
       if(clk'event and clk='1')then
           q_temp<=d;
       end if;
     end process;
     q<=q_temp;
    end Behavioral;

文件仿真(这里采用modelsim仿真波形):

  1. 选择File-> New -> Verification/Debugging Files ->University Program VWF。
    在这里插入图片描述
    2.打开测试文件。(右键点击添加端口,对输入信号初始化,赋值。)
    在这里插入图片描述
    3.仿真结果:

在这里插入图片描述
逻辑电路图:

显示编译成功后,选择菜单栏 Tools –>Netlist Viewers –>RTL Viewer 显示逻辑电路图
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

泸州月

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值