资源描述
四位多功能移位寄存器的设计
1、实验目的
熟悉ISE系列软件的设计流程和基本工具使用;学习四位多功能移位寄存器的设计;学习VHDL的IF语句应用。
2、实验内容
移位寄存器是一种常用的时序电路。它除了具有存储代码的功能之外,还具有移位功能。移位功能是指存储在寄存器里的代码可再移位脉冲的作用下依次左移或右移。移位寄存器可用于寄存代码,还可用于数据的串/并转换,并/串转换以及数值运算和处理等。
3、实验器材
Spartan 3E开发板。
4、实验说明
实验中所需要的源文件在本报告附录中。
5、实验步骤
步骤1:创建ISE工程
(1)启动桌面上的ISE9.1图标,在Project Navigator中选择File→New Project。
(2)在弹出的对话框(见图1)中,设置工程名为yiwei,工程存放路径为E:\work\,顶层模块类型选择HDL,并单击Next按钮。
图1 ISE工程属性对话框
(3)出现图2所示对话框,目标器件选择spartan3E,具体设计如下图。
图2 ISE工程属性对话框
(4)一直点击Next,直到出现图3(即是刚才所设定的),最后点击Finish。
图3 工程设计总表
出现图4,这就是所建立的工程,现在我们需要在里面完成我们的设计。
图4 ISE工程属性对话框
步骤2:创建新的VHDL设计文件
(1)在ISE用户界面中,选择Project→New Source。
(2)在弹出的对话框(见图5)中,选择VHDL Module作为源程序类型,设置文件名为yiwei,并单击“下一步”按钮。
图5 VHDL的 New Source Wizard
(3)点击Next,直到出现图6,直到Finish。
图6 程序总结
(4)点击Finish之后出现程序编辑窗口,在窗口中进行程序编辑。
步骤3:利用XST进行设计综合并仿真
(1)点击processes目录下的synthesize-XST可以实现综合。
(2)综合过后,在信息显示窗口中会显示Process "Synthesize" completed successfully即综合成功。成功后会在相应的地方打勾,即。如果有警告会出现感叹号,若为错误会出现叉号,可以点击Transoript下的Errors查看错误信息并修改,警告信息可以忽略。
步骤4:设计实现
(1)创建用户约束文件
a:在processes框中选择user constraints,打开其+号,选择下拉菜单中的create area constraints,双击它来添加约束。
b:会出现一个问你是否创建约束文件的窗口,点击YES,出现一个窗口,点击右侧的package view。
c:在左下的窗口中可以定义输入输出与引脚的连接。具体的设置如图19,设置后点击保存并关闭窗口。完成上述步骤后,约束文件就已经创建好了。
图19 分配引脚后的封装图
具体的约束条件为:
NET "clk" LOC = "C9" ;--时钟
NET "d<0>" LOC = "L13" ;--SW0(拨动开关,靠近LED端为1)
NET "d<1>" LOC = "L14" ; --SW1
NET "d<2>" LOC = "H18" ; --SW2
NET "d<3>" LOC = "N17" ; --SW3
NET "dil" LOC = "H13" ; --EAST(按键,按下为1)
NET "dir" LOC = "V4" ; --NORTH
NET "q<0>" LOC = "F12" ; --LED0
NET "q<1>" LOC = "E12" ; --LED1
NET "q<2>" LOC = "E11" ; --LED2
NET "q<3>" LOC = "F11" ; --LED3
NET "rd" LOC = "K18" ; --ROT A(旋钮)
NET "s<0>" LOC = "K17" ; --SOUTH
NET "s<1>" LOC = "D18" ; --WEST
步骤5:生成下载配置文件
(1)点击processes中的implement design,完成实现设计的三个步骤,即转换、映射和布局布线,如图20,
图20 完成实现的工程界面
(2)继续点击下一步Generate Program File可以生成位流文件,关闭弹出的对话框。
(3)将板子的电源和数据线连接好,点击Generate Program File的+号,在下拉菜单中选择generate PROM,ACE,or,JTAG File ,并双击。出现图21,并选择如下配置。
图21 iMPACT界面
(4)点击Next,出现图22,
图22 PROM文件
(5)点击Next,选择一个PROM。如图23,
图23 具体的Xilinx PROM器件
(7)点击Next,直到点击Finish,完成,出现下图24,
图24 文件生成总结
(8)点击完成之后,如图25所示,
图25 配置文件
(9)点击OK ,添加位流文件,如图26所示,
图26 添加位流文件
(10)选中top.bit文件,打开它,在接下弹出的窗口中点击NO,如图27所示。
图27 增加器件
(11)点击No之后,出现图28,
图28 增加器件
(12)如图29所示,
图29 PROM 文件格式
(13)双击source框中的最后一个PROM File Formatter,在Processes中双击Generate File,生成以.MCS结尾的文件,如图30所示,
图30 生成PROM文件
(14)双击source框中的第一个boundary scan,并在最右侧的空白处右击选择Initialize Chain,如图31所示,
图31 初始化文件
(15)在弹出的选择添加top.bit,和Untitled.mcs,后面1个不添加,如图32所示,
图32 添加器件之后的图
(16)右击top.bit文件选择program命令,如图33,
图33
(17)Program之后,会出现下图34:
图34
(18)在弹出的Program Succeeded上点击OK
(19)同样,按照下图35所示,下载程序
图35
(20)在弹出的Program Succeeded上点击OK
(21)把设计下载到板子中,在板子上可以看到效果。
注意:板子断电后必须重新载入程序。
6、实验现象
拨动开关,LED显示开关取值所对应的七段码。
7、结语
本实验主要是对ISE软件的熟悉,了解下载的流程。在做此实验的过程时可以相应的看下其他各种命令会产生什么结果。熟悉ISE能完成的相关功能,并了解相关设置的含义,以及板子的使用等等。
附录:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity yiwei is
Port ( clkin : in STD_LOGIC;
rd : in STD_LOGIC;
dir : in STD_LOGIC;
dil : in STD_LOGIC;
s : in STD_LOGIC_VECTOR (1 downto 0);
d : in STD_LOGIC_VECTOR (3 downto 0);
q : buffer STD_LOGIC_VECTOR (3 downto 0));
end yiwei;
architecture Behavioral of yiwei is
signal clk:std_logic;
signal counter:std_logic_vector(26 downto 0):=(others=>'0');
begin
process(clkin)
begin
if(clkin'event and clkin='1')then
counter <= counter+1;
end if;
end process;
clk<=counter(26);
process(clk,rd,s)
begin
if(rd='1')then
q<="0000";
elsif(clk'event and clk='1')then
if(s="00")then
q<=d;
elsif(s="01")then
q<=q(2 downto 0)&dil;
elsif(s="10")then
q<=dir&q(3 downto 1);
elsif(s="11")then
q<=q;
end if;
end if;
end process;
end Behavioral;
展开阅读全文