我是靠谱客的博主 甜甜汉堡,最近开发中收集的这篇文章主要介绍基于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 显示逻辑电路图
在这里插入图片描述

最后

以上就是甜甜汉堡为你收集整理的基于VHDL移位寄存器程序设计的全部内容,希望文章能够帮你解决基于VHDL移位寄存器程序设计所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(55)

评论列表共有 0 条评论

立即
投稿
返回
顶部