FPGA使用入门实验报告示例
一.实验目的
(1) 掌握ISE 13.2集成开发环境和Modelsim软件的使用方法;
(2) 熟悉S6 Card实验板的使用方法。
(3) 掌握使用Verilog HDL语言实现常用组合逻辑和时序逻辑的方
法。
(4) 了解Chipscope的功能与使用方法。
二. 实验内容
(1) 熟悉S6 CARD实验板;
(2) 熟悉ISE集成开发环境;
(3) 3比特加法器仿真与上板实验
(4)m序列产生器仿真与在板Chipscope调试。
三. 实验过程依照指导书进行
四. 实验代码分析
(1)3bit加法器(见注释)
module m_seq_gen(
//端口I/O定义
input clk,//定义clk为输入类型
input reset,//定义resert为输入类型
output seq//定义seq为输出类型
);
//内部信号说明
reg [3:0] state;//定义变量state,为寄存器型,位宽为4
//功能定义
always @(posedge clk or negedge reset)//当clk上升沿来到或者reset下降沿来到,//触发敏感事件,执行以下程序
begin
if(!reset)//如果不是reset下降沿来到
state <= 4'b1111;//state输出结果为4位的二进制数字1111
else
begin
state[3:1] <= state[2:0];//state从第二位到第四位输出结果为其第一位//到第三位的数值
state[0] <= ^(state & 4'b1001);//state第一位输出结果为state原来的//值与二进制数1001相与的结果
end
end
assign seq = state[0]; //连续赋值,将state第一位值赋给seqEndmodule
(2)m序列测试文件代码分析(见注释)
module test_m;
// Inputs,将clk和reset定义为寄存器类型
reg clk;
reg reset;
// Outputs
wire seq;//将seq定义为连线类型
// Instantiate the Unit Under Test (UUT)
m_seq_gen uut (
.clk(clk),
.reset(reset),
.seq(seq)
);
initial begin
// Initialize Inputs,将初始值均设为0
clk = 0;
reset = 0;
// Wait 100 ns for global reset to finish
#100;
reset = 0;
// Add stimulus here
end
always10clk = ~clk;//产生测试时钟,延时10s后使时钟取反endmodule
五. 实验仿真结果分析
1.3比特加法器(见注释)
(1)功能仿真波形
由上图可知加法器功能正常,且当a、b之和大于7时产生进位
(2)时序仿真波形
板子上拨码开关的6、7、8和1、2、3分别作为加法器的输入,D1-D4 LED灯分别表示cout和sum,拨动拨码开关,观察
LED
的变化。
实验板实照
由上图可证程序运行正常,3比特加法成功
2. m序列产生器
(1)产生原理:每一个周期内,第一个和第四个寄存器的值作异或
运算后,寄存器移位,运算出的值赋给第一个寄存器,构成新的系统寄存器状态值。
(2)功能仿真波形
第一行为时钟信号,第二行为重置信号,第三行为输出的m序列。
(3)Chipscope波形