verilog 计数器

counter.v

`timescale 1 ns/10 ps 
module con (clk,res,y);

input        clk;
input        res;
output[7:0]  y;
reg[7:0]     y;       //触发器定义成reg变量;
wire[7:0]    sum;     //+1 运算结果

assign       sum=y+1; //组合逻辑部分

always@(posedge clk or negedge res)

if (~res) begin 
    y<=0;  //res 为低时y寄存器复位
    end
else begin 

   y<=sum;  // y得到sum值,触发器正常工作时候

end 


endmodule 

stimulus_tb.v

//-----testbench  of count-----

`timescale 1 ns/10 ps 
module comp_conv_tb;

reg        clk,res;

wire[7:0]  y;
//异名例化
con  con (.clk(clk),
          .res(res),
          .y(y));
 
initial begin
    $dumpfile("test.vcd");
    $dumpvars(0,comp_conv_tb);
     

         clk<=0 ;res<=0;
    #17 res<=1;
    # 6000 $stop;         
end

always #5 clk=~clk;
 
endmodule

compile.sh

#!/bin/bash
echo "开始编译"

iverilog counter.v stimulus_tb.v -o fn

#./invet

echo "编译完成"
vvp -n fn -lxt2
echo "生成波形文件"
cp test.vcd wave.lxt
echo "打开波形文件"
gtkwave wave.lxt

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值