实验六 4位移位寄存器的设计与实现
一.实验目的
1.使用ISE软件设计并仿真;
2.学会程序下载。
二.实验内容
使用ISE软件进行4位移位寄存器的设计与实现。
三.实验步骤
1. 编写文本文件并编译
2. 软件仿真
3. 进行硬件配置
四.实验原理
1. ISE软件是一个支持数字系统设计的开发平台。
2. 用ISE软件进行设计开发时基于相应器件型号的。
注意:软件设计时选择 的器件型号是与实际下载板上的器件型号相同。
3. 图6-1所示为4位移位寄存器的逻辑图,本实验中用Verilog语句来描述。
图6-1 4位移位寄存器逻辑图
(1) 新建工程
双击桌面上“ISE Design Suite 14.7”图标,启动ISE软件(也可从开始菜单启动)。每次打开ISE都会默认恢复到最近使用过的工程界面。当第一次使用时,由于还没有历史工程记录,所以工程管理区显示空白。选择File New--Project选项,在弹出的对话框中输入工程名称并指定工程路径。
点击Next按钮进入下一页,选择所使用的芯片及综合、仿真工具。计算机上安装的所有用于仿真和综合的第三方EDA工具都可以在下拉菜单中找到。在图中我们选用了Spartan6 XC6SLX16芯片,采用CSG324封装,这是NEXYS3开发板所用的芯片。另外,我们选择Verilog作为默认的硬件描述语言。
再点击Next按钮进入下一页,这里显示了新建工程的信息,确认无误后,点击Finish就可以建立一个完整的工程了。
(2) 设计输入和代码仿真
在工程管理区任意位置单击鼠标右键,在弹出的菜单中选择New Source命令,选择Verilog Module输入,并输入Verilog文件名。
单击Next按钮进入端口定义对话框。其中Module Name栏用于输入模块名,这里是shiftreg,下面的列表框用于端口的定义。Port Name表示端口名称,Direction表示端口方向(可选择为input、output或inout),MSB表示信号最高位,LSB表示信号最低位,对于单信号的MSB和LSB不用填写。当然,端口定义这一步
我们也可以略过,在源程序中再行添加。
定义了模块的端口后,单击Next进入下一步,点击Finish完成创建。这样,ISE就会自动创建一个Verilog模块的模板,并且在源代码编辑区打开。简单的注释、模块和端口定义已经自动生成,接下来的工作就是将代码编写完整。
输入代码后,我们还需要对模块进行测试。在工程管理区将view设置为Simulation,在任意位置单击鼠标右键,并在弹出的菜单中选择New Source,在类型中选择Verilog Test Fixture,输入测试文件名,单击下一步。这时所有工程中的模块名都会显示出来,我们选择要进行测试的模块。点击Next ,再单击Finish按钮,ISE会在源代码编辑区自动生成测试模块的代码。我们看到,ISE已经自动生成了基本的信号并对被测模块做了例化。我们的工作就是在initial?end块中的“//Add stimulus here”后面添加测试向量。
完成测试文件编辑后,确认工程管理区中view选项设置为Simulation,这时在过程管理区会显示与仿真有关的进程。右键单击其中的Simulate Behavioral Model项,选择弹出菜单中的Process Properties项,会弹出属性设置对话框,其中Simulation Run Time就是仿真时间的设置,可将其修改为任意时长。
仿真参数设置完后,就可以进行仿真。首先在工程管理区选中测试代码,然后在过程管理区双击Simulate Behavioral Model,ISE将启动ISE Simulator,可以得到仿真结果,如图6-2所示。
图6-2
(3) 综合与实现
在工程管理区的view中选择Implementation,然后在过程管理区双击
Synthesize-XST,就可以开始综合过程。
另外,要实现设计,还需要为模块中的输入输出信号添加管脚约束,这就需要在工程中添加UCF文件。在工程管理区单击鼠标右键,点击New Source,选择Implementation- Constraints File,出现一个空白的约束文件,我们就可以为设计添加各种约束。如果综合步骤没有语法错误,XST能够给出初步的资源消耗情况,点击Design Summary,即可查看。
在过程管理区双击Implementation Design选项,就可以自动完成实现步骤。如果设计没有经过综合,就会启动XST完成综合,在综合后完成实现过程。经过实现后能够得到精确的资源占用情况。在Design Summary即可看到具体的资源占用情况。
(4) 器件配置
硬件配置是FPGA开发最关键的一步,只有将HDL代码下载到FPGA芯片中,才能进行调试并最终实现相应的功能。首先我们必须生成能下载到硬件中的二进制比特文件。双击过程管理区的Generate Programming File,ISE就会为设计生成相应的二进制比特文件。
然后利用USB-MiniUSB缆线,来为开发板提供电源和数据下载。我们只需上网下载免费的Digilent Adept软件,即可快速实现Nexys3开发板上FPGA的配置。用USB-MiniUSB缆线连接开发板和PC,打开开发板的电源开关,然后启动Digilent Adept软件。系统开始自动连接FPGA设备,成功检测到设备后,会显示出JTAG链
上所用芯片。
界面上将显示检测到NEXYS3开发板上的器件FPGA(XC6SLX16)。这里我们对FPGA进行配置。在Browse中找到之前生成的设计的二进制比特文件,并点击旁边的Program按钮,软件就开始对FPGA进行配置。配置成功后,下面的状态栏会显示Programming Successful。至此,器件配置成功,我们就可以在器件上验证预期的设计有没有很好的得以实现。
五.实验结论
补充:(仅供参考)
1.4位移位寄存器的verilog源代码
module ShiftReg (
input wire clk,
input wire clr,
input wire data_in,
output reg [3:0] q
);
reg [24:0] q1;
//25位计数器
always @ (posedge clk or posedge clr)
begin
if (clr == 1)
q1 <= 0;
else
q1 <= q1 + 1;
end
assign mclk = q1[24]; // 1.5 Hz
// 4位移位寄存器
always @ (posedge mclk or posedge clr)
begin
if (clr == 1)
q <= 0;
else
begin
q[3] <= data_in;
q[2:0] <= q[3:1];
end
end
endmodule
2.4位移位寄存器的约束文件
NET "clk" LOC ="V10";
NET "data_in" LOC ="T5";
NET "clr" LOC ="T10";
NET "q[3]" LOC ="T11"; NET "q[2]" LOC ="R11"; NET "q[1]" LOC ="N11"; NET "q[0]" LOC ="M11";
西安邮电学院可编程逻辑实验报告 系 别
学 号 成 绩 实验日期 通信系 Xxxxxxxx 2009-12-10 班 级 通工0702 姓 名 高原 教师签字
实验名称
一:实验目的 七、移位寄存器设计
1.掌握移位寄存器电路设计的方法。
2.通过开发CPLD来实现时序逻辑电路的功能。 二:实验所用仪表及主要器材
MAX+PLUSII软件等
三:实验原理简述(源程序、真值表、原理图)
(1) 能自启动的环形计数器
源程序:
Library ieee;
Use ieee.std_logic_1164.all;
Entity e7_memory is
Port(clk:in std_logic;
q: out std_logic_vector(3 downto 0));
end;
Architecture f1 of e7_memory is
signal q0,q1,q2,q3,d_temp:std_logic;
signal q_temp:std_logic_vector(3 downto 0);
begin
process (clk)
begin
q<=q0&q1&q2&q3;
q_temp<=q0&q1&q2&q3;
case q_temp is
when "0000"=>d_temp<='1';
when "0001"=>d_temp<='1';
when others=>d_temp<='0';
end case;
if (clk'event and clk='1') then
q0<=d_temp;
q1<=q0;
q2<=q1;
q3<=q2;
end if;
end process;
end;
真值表:
(2) 节日彩灯电路设计
源程序
library ieee;
use ieee.std_logic_1164.all;
entity hbb-2 is
port(st,clk:in std_logic;
q:out std_logic_vector(3 downto 0));
end;
architecture rtl of hbb-2 is
signal a:std_logic_vector(3 downto 0);
begin
process(clk)
begin
if(clk'event and clk='1')then
if(st='1')then
if(a="0000"or a="0001"or a="0011"or a="0111"or a="1111"or a="1110" or a="1100" or a="1000")then
a(0)<=not a(3);
a(1)<=a(0);
a(2)<=a(1);
a(3)<=a(2);
else
a<="0000";
end if;
elsif(st='0')then
if(a="0000" or a="0001"or a="0011"or a="0111"or a="1111"or a="1110" or a="1100" or a="1000")then
a(3)<=not a(0);
a(2)<=a(3);
a(1)<=a(2);
a(0)<=a(1);
else
a<="0000";
end if;
end if;
end if;
end process;
q<=a;
end;
真值表:
四:实验测量记录(数据、仿真波形图及分析、原程序分析、硬件测试实分析)
(1)能自启动的环形计数器的波形图:
(2)的波形图:
五:实验心得(实验中问题的解决方法等)
本次实验主要是对移存型计数器进行VHDL语言描述,并对其功能仿真验证,通过本次实验,我复习了数电中与VHDL相关的知识,更深一步的学习了VHDL一些简单代码的编写方法,初步学习了用VHDL进行设计的基本思想,复习了if等语句的使用。
移位寄存器实验报告一实验原理移位寄存器是用来寄存二进制数字信息并且能进行信息移位的时序逻辑电路根据移位寄存器存取信息的方式可分为串…
移位寄存器实验报告一、实验目的和要求掌握移位寄存器的工作原理及设计方法掌握串、并数据转换的概念与方法了解序列信号在CPU控制器设计…
实验一实验报告姓名何璟学号120xx60099实验日期20xx108一实验名称线性移位寄存器二实验目的1234了解线性移位寄存器产…
移位寄存器实验报告一实验原理移位寄存器是用来寄存二进制数字信息并且能进行信息移位的时序逻辑电路根据移位寄存器存取信息的方式可分为串…
移位寄存器实验报告424实验目的1掌握移位寄存器的工作原理2综合移位寄存器数码扫描电路在实验板上下载并验证结果3掌握电路仿真的基本…
实验七移位寄存器及其应用一实验目的1掌握中规模4位双向移位寄存器逻辑功能及使用方法2熟悉移位寄存器的应用实现数据的串行并行转换和构…
实验一实验报告姓名何璟学号120xx60099实验日期20xx108一实验名称线性移位寄存器二实验目的1234了解线性移位寄存器产…
移位寄存器实验报告424实验目的1掌握移位寄存器的工作原理2综合移位寄存器数码扫描电路在实验板上下载并验证结果3掌握电路仿真的基本…
移位寄存器实验报告一实验原理移位寄存器是用来寄存二进制数字信息并且能进行信息移位的时序逻辑电路根据移位寄存器存取信息的方式可分为串…
移位寄存器实验报告一、实验目的和要求掌握移位寄存器的工作原理及设计方法掌握串、并数据转换的概念与方法了解序列信号在CPU控制器设计…