我是靠谱客的博主 冷酷奇异果,最近开发中收集的这篇文章主要介绍用quartus II作一个异步复位,同步使能,自动加载型16位二进制加法计数器,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

刚开始的想法是

module cont16(clk,rst,en,load,cout,dout,data);

parameter value=10; 


input  clk,rst,en,load;
input  [15:0] data;
output [15:0] dout;
output cout;


reg [15:0] q;
reg cout;


assign dout = q;


always @(posedge clk or posedge rst) 
begin
        if(rst)
        begin
                q<=0;
                cout<=0;
        end
        else if(en)
        begin
        if(!load) q<=data;
        else if(q>=(value/2-1)) 
        begin
        q=0; 
        cout=~cout;
        end
        else q<=q+1;
        end
end
endmodule

但用仿真时发现当 load = 0时,发现不能做到自动加载。后来改了下

module lsyyx_1(clk,rst,en,load,cout,dout,data,count);

parameter value=10000; 

input  clk,rst,en,load;
input  [15:0] data;
output [15:0] dout;
output cout,count;


reg [15:0] q;
reg cout,count;

assign dout = q;

always @(posedge clk or posedge rst) 
begin
        if(rst)
        begin
                q<=0;     //rst=1时,异步f复位

        end
        else if(en)//同步使能en=1,则允许加载或计数
        begin
                if(count==load) q<=data;
                else q<=q+1;
        end
end

always @(posedge clk or posedge rst)
begin
        if(rst)
        begin
                cout<=0;  
end
else if(q>=(value/2-1)) 
        cout=~cout;//翻转

end

always @(q)
begin
        if(q==(value/2-1)) count=1'b1;
        else count=1'b0;
end
endmodule

波形大概为这样 

最后

以上就是冷酷奇异果为你收集整理的用quartus II作一个异步复位,同步使能,自动加载型16位二进制加法计数器的全部内容,希望文章能够帮你解决用quartus II作一个异步复位,同步使能,自动加载型16位二进制加法计数器所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(53)

评论列表共有 0 条评论

立即
投稿
返回
顶部