原创 verilog学习笔记第一天

2010-6-18 15:50 1944 0 分类: FPGA/CPLD

第一个程序,计数器


counter.v


module couter(clk,rst,counter_out);
    input clk;
    input rst;
    output [3:0] counter_out;
    reg [3:0] counter_out;
   
    always @(posedge clk or negedge rst)
    if(!rst)
       counter_out <= 0;
    else
       counter_out <= counter_out + 1'b1;
endmodule


程序实现对输入时钟计数的功能。


module是Verilog的基本单元,每个module由两部分组成:端口声明和功能描述


验证代码的正确与否需要进行仿真,需要testbench。


test_counter.v


`timescale 1ns/1ns
module test_counter();
    parameter CLK_CYCLE = 20;
    parameter CLK_HCYCLE = 10;
   
    reg rst;
    reg clk;
    wire [3:0] counter_out;
    counter dut(clk,rst,counter_out);
   
    initial
    begin
       clk = 1'b1;
       rst = 1'b0;
       #10 rst = 1;
    end
    always
       #CLK_HCYCLE clk =~clk;
    initial
       $monitor("rst=%b,clk=%b,counter_out=%b",rst,clk,counter_out);
endmodule


测试平台不需要声明输入输出端口,而且基本上输入都是寄存器类型的,输出都是网线类型的,因为testbench的功能就是驱动输入,监控输出

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
0
关闭 站长推荐上一条 /3 下一条