概述
基于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仿真波形):
- 选择File-> New -> Verification/Debugging Files ->University Program VWF。
2.打开测试文件。(右键点击添加端口,对输入信号初始化,赋值。)
3.仿真结果:
逻辑电路图:
显示编译成功后,选择菜单栏 Tools –>Netlist Viewers –>RTL Viewer 显示逻辑电路图
最后
以上就是甜甜汉堡为你收集整理的基于VHDL移位寄存器程序设计的全部内容,希望文章能够帮你解决基于VHDL移位寄存器程序设计所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复