fft_wave.ant

来自「用vhdl编写的FFT的代码,很全,很强大.」· ANT 代码 · 共 198 行

ANT
198
字号
////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 1995-2003 Xilinx, Inc.
// All Right Reserved.
////////////////////////////////////////////////////////////////////////////////
//   ____  ____ 
//  /   /\/   / 
// /___/  \  /    Vendor: Xilinx 
// \   \   \/     Version : 8.2.02i
//  \   \         Application : ISE
//  /   /         Filename : fft_wave.ant
// /___/   /\     Timestamp : Tue Sep 05 14:27:26 2006
// \   \  /  \ 
//  \___\/\___\ 
//
//Command: 
//Design Name: fft_wave
//Device: Xilinx
//
`timescale 1ns/1ps

module fft_wave;
    reg clk = 1'b0;
    reg reset = 1'b0;
    wire [15:0] xn_re;
    reg [15:0] xn_im = 16'b0000000000000000;
    wire [6:0] xn_index;
    wire [6:0] ram_addr;
    wire rfd;
    wire [15:0] xk_re;
    wire [15:0] xk_im;
    wire [4:0] blk;
    reg start = 1'b0;
    wire done;
    wire [6:0] xk_index;

    parameter PERIOD = 20;
    parameter real DUTY_CYCLE = 0.5;
    parameter OFFSET = 100;

    initial    // Clock process for clk
    begin
        #OFFSET;
        forever
        begin
            clk = 1'b0;
            #(PERIOD-(PERIOD*DUTY_CYCLE)) clk = 1'b1;
            #(PERIOD*DUTY_CYCLE);
        end
    end

    fft_test UUT (
        .clk(clk),
        .reset(reset),
        .xn_re(xn_re),
        .xn_im(xn_im),
        .xn_index(xn_index),
        .ram_addr(ram_addr),
        .rfd(rfd),
        .xk_re(xk_re),
        .xk_im(xk_im),
        .blk(blk),
        .start(start),
        .done(done),
        .xk_index(xk_index));

    integer TX_FILE = 0;
    integer TX_ERROR = 0;
    
    initial begin    // Annotation process for clock clk
        #0;
        ANNOTATE_xn_re;
        ANNOTATE_xn_index;
        ANNOTATE_ram_addr;
        ANNOTATE_rfd;
        ANNOTATE_xk_re;
        ANNOTATE_xk_im;
        ANNOTATE_blk;
        ANNOTATE_done;
        ANNOTATE_xk_index;
        #OFFSET;
        forever begin
            #12;
            ANNOTATE_xn_re;
            ANNOTATE_xn_index;
            ANNOTATE_ram_addr;
            ANNOTATE_rfd;
            ANNOTATE_xk_re;
            ANNOTATE_xk_im;
            ANNOTATE_blk;
            ANNOTATE_done;
            ANNOTATE_xk_index;
            #8;
        end
    end

    initial begin  // Open the annotations file...
        TX_FILE = $fopen("D:\\Develop\\PQS\\FPGA\\fft_test\\fft_wave.ano");
        #1020 // Final time:  1020 ns
        $display("Success! Annotation Simulation Complete.");
        $fdisplay(TX_FILE, "Total[%d]", TX_ERROR);
        $fclose(TX_FILE);
        $finish;
    end

    initial begin
        // -------------  Current Time:  108ns
        #108;
        reset = 1'b1;
        // -------------------------------------
        // -------------  Current Time:  128ns
        #20;
        reset = 1'b0;
        // -------------------------------------
        // -------------  Current Time:  168ns
        #40;
        start = 1'b1;
        // -------------------------------------
        // -------------  Current Time:  188ns
        #20;
        start = 1'b0;
        // -------------------------------------
    end

    task ANNOTATE_xn_re;
        #0 begin
            $fdisplay(TX_FILE, "Annotate[%d,xn_re,%b]", $time, xn_re);
            $fflush(TX_FILE);
            TX_ERROR = TX_ERROR + 1;
        end
    endtask

    task ANNOTATE_xn_index;
        #0 begin
            $fdisplay(TX_FILE, "Annotate[%d,xn_index,%b]", $time, xn_index);
            $fflush(TX_FILE);
            TX_ERROR = TX_ERROR + 1;
        end
    endtask

    task ANNOTATE_ram_addr;
        #0 begin
            $fdisplay(TX_FILE, "Annotate[%d,ram_addr,%b]", $time, ram_addr);
            $fflush(TX_FILE);
            TX_ERROR = TX_ERROR + 1;
        end
    endtask

    task ANNOTATE_rfd;
        #0 begin
            $fdisplay(TX_FILE, "Annotate[%d,rfd,%b]", $time, rfd);
            $fflush(TX_FILE);
            TX_ERROR = TX_ERROR + 1;
        end
    endtask

    task ANNOTATE_xk_re;
        #0 begin
            $fdisplay(TX_FILE, "Annotate[%d,xk_re,%b]", $time, xk_re);
            $fflush(TX_FILE);
            TX_ERROR = TX_ERROR + 1;
        end
    endtask

    task ANNOTATE_xk_im;
        #0 begin
            $fdisplay(TX_FILE, "Annotate[%d,xk_im,%b]", $time, xk_im);
            $fflush(TX_FILE);
            TX_ERROR = TX_ERROR + 1;
        end
    endtask

    task ANNOTATE_blk;
        #0 begin
            $fdisplay(TX_FILE, "Annotate[%d,blk,%b]", $time, blk);
            $fflush(TX_FILE);
            TX_ERROR = TX_ERROR + 1;
        end
    endtask

    task ANNOTATE_done;
        #0 begin
            $fdisplay(TX_FILE, "Annotate[%d,done,%b]", $time, done);
            $fflush(TX_FILE);
            TX_ERROR = TX_ERROR + 1;
        end
    endtask

    task ANNOTATE_xk_index;
        #0 begin
            $fdisplay(TX_FILE, "Annotate[%d,xk_index,%b]", $time, xk_index);
            $fflush(TX_FILE);
            TX_ERROR = TX_ERROR + 1;
        end
    endtask

endmodule

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?