马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
异步计数器(也称为ripple-through counter)的特点是每一位触发器的输出作为下一位触发器的时钟输入,因此计数速度会因为级联触发器的流传延迟而受到限制。这种计数器的最大工作频率通常低于同步计数器。
一、电路符号
输入信号:时钟信号clk,复位端rst。输出信号:计数输出端q[3..0]
二、设计代码
- module yibu_cnt(q,clk,rst);
- output [3:0] q;
- input rst,clk;
- reg[3:0]q;
- reg[3:0]qn;
- always @(posedge clk)
- begin
- if(!rst)
- begin q[0]=0; qn[0]=1;end
- else
- begin q[0]=~q[0];qn[0]=~q[0];end
- end
- always@(posedge qn[0])
- begin
- if(!rst)
- begin q[1]=0;qn[1]=1;end
- else
- begin q[1]=~q[1];qn[1]=~q[1];end
- end
- always@(posedge qn[1])
- begin
- if(!rst)
- begin q[2]=0;qn[2]=1;end
- else
- begin q[2]=~q[2];qn[2]=~q[2];end
- end
- always@(posedge qn[2])
- begin
- if(!rst)
- begin q[3]=0;qn[3]=1;end
- else
- begin q[3]=~q[3];qn[3]=~q[3];end
- end
- endmodule
复制代码 三、仿真代码
- module yibu_cnt_tb;
- reg rst;
- reg clk;
- wire [3:0] q;
- // 实例化被测试模块
- yibu_cnt uut (
- .q(q),
- .clk(clk),
- .rst(rst)
- );
- // 时钟信号生成
- initial begin
- clk = 0;
- forever #10 clk = ~clk; // 产生一个周期为10ns的时钟信号
- end
- // 测试序列
- initial begin
- rst =1;
- #10;
- rst =0;
- #10;
- rst =1;
- #300;
- $finish;
- end
- initial begin
- $monitor("Time = %t, rst = %b, clk = %b, q = %b", $time, rst, clk, q);
- end
- endmodule
复制代码 四、仿真结果
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |