xinlinx平台开发报告

来源:互联网 发布:软件实施工程师前景 编辑:程序博客网 时间:2024/04/30 08:19

前言

  • 对FPGA进行开发, PCB原理图、芯片手册、硬件用户手册是进行相关测试的必备工具。PCB原理图介绍电路板的连接情况,芯片手册介绍芯片的管脚信息、封装类型、功能信息,硬件用户手册介绍配置信息,FPGA的运行代码只占整个开发流程的小部分时间,大部分时间都是花在测试和查找资料上。查资料主要去xilinx的官网上去找!官网的资料最权威、最全!
  • 比如我们对Spartan6进行开发,首先要对其进行功能验证。我们选取FPGA开发板Mis603A作为测试平台。
  • Mis603A的处理器为Spartan6系列的XC6SLX16 管脚为256 系统时钟为50MHz。
    开发软件为Xinlinx的ISE

实例一

  • 测试发送端和接收端之间是否正常通信。
  • 验证方案:一个功能是发送端相接收端发8位的信息,然后接收的信息和目标信息进行比对,相同的话,接收端计数器加一,否则接收端保持不变。代码量不大,半个小时就可完成。
`timescale 1ns / 1ps//////////////////////////////////////////////////////////////////////////////////// Company: cuc_ecdav_604c// Designer name:JuHan // E-mail:1107033204@qq.com// Create Date:    11:07:19 07/13/2017 // Design Name: // Module Name:    test_8bit// Project Name: // Target Devices: // Tool versions: // Description: //// Dependencies: //// Revision: // Revision 0.01 - File Created// Additional Comments: ////////////////////////////////////////////////////////////////////////////////////module test_8bit(    input      sys_rst,    input      sys_clk,    input      [7:0]rec,    output     [7:0]trn,    output     [3:0]cnt    );parameter   TARGET = 8'h0A;wire     [7:0]rec_reg;reg      [7:0]trn_reg;reg      [3:0]cnt_reg;//transmit messagealways@(posedge sys_clk or negedge sys_rst)begin    if(sys_rst==0)        begin            trn_reg[7:0]<=trn_reg[7:0]+8'h1;        end    else    trn_reg[7:0]<=0;    endalways@(posedge sys_clk or negedge sys_rst)begin    if(sys_rst==0)    begin        if(rec_reg[7:0]%TARGET==0)//每隔十加一            begin                cnt_reg[3:0]<=cnt_reg[3:0]+4'h1;            end        else            cnt_reg[3:0]<=cnt_reg[3:0];    end    else    cnt_reg[3:0]<=0;endassign rec_reg[7:0]    =rec[7:0];assign     trn[7:0]    =trn_reg[7:0];assign     cnt[3:0]    =cnt_reg[3:0];endmodule

  • 主要时间都花在波形仿真验证上
    • 方法一:测试波形法
    • 方法二:测试代码法
      • 测试代码法采用的是Testbench。
      • Testbench相当于一个测试平台,给输入加激励,把输出端和另外一个输出端相连。(具体描述还得查查再写)
        首先在工程管理区将“Sources for”设置为Behavioral Simulation,在任意位置单击鼠标右键,并在弹出的菜单中选择“New Source”命令,然后选中“Verilog Test Fixture”类型,输入文件名为“test_test”,再点击“Next”进入下一页。这时,工程中所有Verilog Module的名称都会显示出来,设计人员需要选择要进行测试的模块。用鼠标选中test,点击“Next”后进入下一页,直接点击“Finish”按键,ISE会在源代码编辑区自动显示测试模块的代码。
`timescale 1ns / 1ps////////////////////////////////////////////////////////////////////////////////// Company: cuc_ecdav_604c// Designer name:JuHan// E-mail:1107033204@qq.com// Create Date:   17:29:22 07/14/2017// Design Name:   test_8bit// Module Name:   D:/My_study/master_study/difference/test_8bit/test_test.v// Project Name:  test_8bit// Target Device:  // Tool versions:  // Description: //// Verilog Test Fixture created by ISE for module: test_8bit//// Dependencies:// // Revision:// Revision 0.01 - File Created// Additional Comments:// ////////////////////////////////////////////////////////////////////////////////module test_test;    // Inputs    reg sys_rst;    reg sys_clk;    // Outputs    wire [7:0] trn;    wire [3:0] cnt;    // Instantiate the Unit Under Test (UUT)    test_8bit uut (        .sys_rst(sys_rst),         .sys_clk(sys_clk),         .rec(trn),         .trn(trn),         .cnt(cnt)    );    initial begin        // Initialize Inputs        sys_rst = 1;        #10;                sys_clk = 0;        #10;        sys_clk = 1;        #10;        sys_rst = 0;        end        // Wait 100 ns for global reset to finish    always        begin            #10 sys_clk = !sys_clk;         end         // Add stimulus hereEndmodule
  • 测试波形:
    这里写图片描述
  • 波形显示接收端每接收十个数据,计数器cnt就会加一。此外,接收端在第一个时刻时,cnt就加一,原因是0/10=0,符合if的判断条件,所以计数器加一。
原创粉丝点击