Verilog学习笔记(7)Modelsim仿真_三角波发生器

1.状态机代码设计与仿真

1.1三角波发生器

Verilog学习笔记(7)Modelsim仿真_三角波发生器_第1张图片

 代码:

//最简单的状态机,三角波发生器;

module tri_gen(
                clk,
                res,
                d_out
               );

input            clk;
input            res;
output[8:0]      d_out;

reg              state;//定义主状态机的寄存器;
reg[8:0]         d_out;//将来会在awalys里面赋值,是一个实际的值,所以先定义为reg;299为8位;

always@(posedge clk or negedge res)
if(~res) begin
    state<=0;d_out=o;
end
else begin
    case(state)
    0://上升
    begin
        d_out<=d_out+1;
        if(d_out==299) begin
            state<=1;
        end
    end
    1://下降
    begin
        d_out<=d_out-1;
        if(d_out==1) begin
            state<=0;
        end
    end
    endcase
end

endmodule

Test bench;

`timescale 1ns/10ps

module tri_gen_tb;

reg            clk,res;
wire[8:0]      d_out;

tri_gen tri_gen(
                .clk(clk),
                .res(res),
                .d_out(d_out)
               );


initial begin
                clk<=0;res<=0;
       #17      res<=1;
       #8000    $stop; 
end

always #5 clk<=~clk;

endmodule

仿真波形:

Verilog学习笔记(7)Modelsim仿真_三角波发生器_第2张图片

2. 学习小结 

例化端口又接错了,从代码那边复制过来就没改,导致编译成功,但仿真无法启动。

你可能感兴趣的:(verilog,fpga)