FPGA使用入门实验报告示例

王明刚

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;

  #50 reset = 1;

  // Add stimulus here

  end

  always #10 clk = ~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波形