|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
以下为testbench:
- `timescale 1ns/100ps //单位/精度
- module cool_tb ();
- //时钟产生
- //时钟周期为20ns
- reg clk;
- reg reset;
-
- wire led1;
- wire led2;
-
- parameter PERIOD = 20;//parameter 参数 类似#define
- initial //初始化
- begin
- clk =0;
- forever //一直执行
- #(PERIOD/2) clk=~clk; // #10 表示每隔10ns执行一次
- end
- initial
- begin
- reset_task(100);//复位100ns
- end
- task reset_task;//定义任务 input为任务的输入,RESET为输出
- input [15:0]reset_time;//复位事件
- begin
- reset=0;
- #reset_time;
- reset=1;
- end
- endtask
-
-
- //将信号驱动给设计模块
- cool cool_tb (.clk50m(clk), .rst_n(reset),.led1(led1),.led2(led2));
-
- endmodule
复制代码
下面为代码:
- module cool (clk50m ,rst_n,led1,led2);
- input clk50m;
- input rst_n;
-
- output led1;
- output led2;
-
- reg led1;
- reg led2;
-
- reg [12:0]cnt2604;
- reg clk9600;
- always @(posedge clk50m or negedge rst_n)
- begin
- if(!rst_n)
- begin
- cnt2604<=0;
- clk9600<=0;
- end
- else if(cnt2604==2604)
- clk9600<=~clk9600;
- else
- cnt2604<=cnt2604+1'b1;
- end
-
- always@(posedge clk9600 or negedge rst_n)
- begin
- if(!rst_n)
- begin
- led1<=0;
- led2<=0;
- end
- else
- begin
- led1<=~led1;
- led2<=led1+led2;
- end
- end
-
- endmodule
-
复制代码
仿真波形 |
-
波形图
|