簡體   English   中英

Verilog測試平台

[英]Verilog testbench

我想編寫自己的測試平台,但是沒有輸出。 我盡了一切努力,但沒有幫助。 有人可以幫我嗎?

module direct(clk, reset, x, y);
input clk, reset;
input signed [7:0]x;
output signed [23:0]y;
reg signed [23:0]y;
reg signed [15:0]a[0:8]; //coeff
reg signed [7:0]rej[0:8]; //reg
reg signed [23:0]acc; 
reg [4:0]count; //

always@(posedge clk)
begin: states
   parameter s0=0, s1=1, s2=2, s3=3;
    reg[1:0] state;
    integer i;
    if(reset == 0) begin
        state <= s0;
    end
    else begin

    case(state)
        s0: begin
            state <= s1;
            acc <= 0;
            a[0] <= 16'd887; 
            a[1] <= 16'd553;
            a[2] <= -16'd2563;
            a[3] <= -16'd8745;
            a[4] <= 16'd19757;
            a[5] <= -16'd8745;
            a[6] <= -16'd2563;
            a[7] <= 16'd553;
            a[8] <= 16'd887;
            for (i=0; i<9; i=i+1) 
                rej[i] <= 0;
            end

        s1: begin
            state <= s2;
            count <= 0;
            acc <= 0;
            rej[0]<= x; 
            for (i = 1; i <9; i=i+1)
                rej[i] <= rej[i-1];
            end

        s2: begin
            if(count ==9) 
                state <= s3;
            else
                begin
                    state <= s2;
                    count <= count + 1'd1;
                    acc <= acc + rej[count]*a[count];
                end
            end

        s3: begin
            state <= s1;
            y <= acc;
            end
            default:state <=s0;
        endcase
    end
end
endmodule

我自己的測試台:(如果有人可以指出我做錯了什么)

`timescale 1 ns / 100 ps
module direct_test();
reg clk, reset;
reg [7:0]x;
wire [23:0]y;

    direct U1(
            .clk(clk),
            .reset(reset), 
            .x(x),
            .y(y)
            );
    always
    #10 clk = ~clk;
    initial 
    begin
    clk = 1'b0;
    #5 reset <= 1'b0;
    x <= 1'd1;
    #10 reset <= 1'b1;
end
endmodule

direct模塊中存在編譯錯誤。 更改:

    for (i = 1; i <9; i=i+1) rejestry

至:

    for (i = 1; i <9; i=i+1)

direct_test模塊中的always塊會阻止模擬完成。 $finish添加到initial塊:

    initial 
    begin
    clk = 1'b0;
    #5 reset <= 1'b0;
    x <= 1'd1;
    #10 reset <= 1'b1;
    #5000 $finish;
end

有了這些變化,我看到y的波形從X變為'h377,'h5a0等。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM