栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

EDA 实验:计数器

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

EDA 实验:计数器

之前实验存个档

源程序:

module count(clk,reset,en,load,up_down,q,count,d );
input clk,reset,en,load,up_down; 

 //clk时钟信号;复位端reset;en使能端;load预制数控制端;up_down增减计数控制端
//reset低电平,输出清零
//en高电平对输出进行赋值
//load高电平,输入d的值在clk上升沿存入计数器寄存器reg_in
//up_down低电平加法计数器,高电平减法计数器
input [3:0] d;  //输入
output reg [3:0] q;  //输出
output count;  //  B/C
reg [3:0] reg_in;  //寄存器
reg count;
always @(posedge clk or negedge reset)
begin
    if(!reset)
    begin
    q=0;
    count=0;
    end
    else if(reset)
        begin
        if (load)
        begin
        q=d;
        count=0;
        end  //reg_in==q?
        else if (~load)
            begin
            if(en)
                begin
                if(!up_down)
                    begin
                    if (q<8)
                    begin
                    q=q+1;
                    count=0;
                    end
                    else if (q==8)
                    begin
                    q=q+1;
                    count=1;
                    end
                    else if (q==9)
                        begin
                        q=0;
                        count=0;
                        end
                    end
                else
                    begin
                    if(q>1)
                        begin
                        q=q-1;
                        count=0;
                        end
                    else if(q==1)
                        begin
                        q=q-1;
                        count=1;
                        end
                    else if(q==0)
                        begin
                        q=9;
                        count=0;
                        end
                    end
                end
            end
        end
end
endmodule
 

激励文件:

module sim_count(    );
reg clk,reset,en,load,up_down;
reg [3:0]d;
wire count;
wire [3:0]q;
count uut(.clk(clk),.reset(reset),.en(en),.load(load),.up_down(up_down),.d(d),.count(count),.q(q));
initial
begin
clk=0;reset=1;en=1;load=1;up_down=0;d=5; 
end
always #1 clk=~clk;
always #3 en=~en;
always #250 reset=~reset;
always //load周期500ns
begin
#100 load=~load;  //0~100ns load=1
#400 load=~load;  //100~400ns load=0
end
always #500 up_down=~up_down;
//always #600 d=d+1;
endmodule

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/528987.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号