搜索
bottom↓
回复: 2

刚刚做的加法计数器,骑兵,欢迎拍砖,狠狠的拍。

[复制链接]

出0入0汤圆

发表于 2009-9-21 20:18:23 | 显示全部楼层 |阅读模式
显示电路很简单,就是一个4位数码管加4个8550三极管,没有画图直接焊了。
顺便问下,减法计算器要怎么做?想来好久都想不出来。


// test3.v

/**************************************************************
** 模块名称:test3
  **************************************************************/
module test3(
             clk48M, //48M时钟输入
             RSTn, //复位信号,高电平复位
             a, //key1
             b, //key2
             q, //led1
             q2, //led2
             DIGIT, //数码管输出
             SEG //数码管段位输出
             );

input clk48M;
input RSTn;
input a;
input b;

output [7:0] DIGIT;
output [3:0] SEG;
output [0:0] q;
output [0:0] q2;

reg [23:0] count; //分频计数器
reg [15:0] count2;//数码管扫描计数器
reg [7:0] DIGIT;
reg [3:0] SEG;
reg [3:0] cach1;
reg [3:0] cach2;
reg [3:0] cach3;
reg [3:0] cach4;

assign q = a & b;
assign q2 = a | b;


always@(posedge clk48M or negedge RSTn)
  begin
    if(!RSTn) //异步复位
      begin
        cach1=4'b0000;
        cach2=4'b0000;
        cach3=4'b0000;
        cach4=4'b0000;

        DIGIT=8'hff;
        SEG=4'b1111;

        count=23'h0;
        count2=16'h0;
        //计数器赋初值
      end
      else
        begin
           fork
             count=count+1;
             count2=count2+1;
           join
           if(count==24'hff_ff_ff)
             begin
               cach1=cach1+1;
                 if(cach1==4'h0a)
                   fork
                     cach1=4'h0;
                     cach2=cach2+1;
                   join
                   if(cach2==4'h0a)
                     fork
                       cach2=4'h0;
                       cach3=cach3+1;
                     join
                     if(cach3==4'h0a)
                       fork
                         cach3=4'h0;
                         cach4=cach4+1;
                       join
                       if(cach4==4'h0a)
                         cach4=4'h0;
             end
             if(count2==16'h00)
               begin
                 SEG=4'b1111;                       //熄灯
               end
             else if(count2==16'h100)
               begin
                 case(cach1)                                                //七段译码
                           4'h0:DIGIT = 8'hc0;                                //显示0
                           4'h1:DIGIT = 8'hf9;                                //显示1
                             4'h2:DIGIT = 8'ha4;                                //显示2
                             4'h3:DIGIT = 8'hb0;                                //显示3
                           4'h4:DIGIT = 8'h99;                                //显示4
                           4'h5:DIGIT = 8'h92;                                //显示5
                           4'h6:DIGIT = 8'h82;                                //显示6
                           4'h7:DIGIT = 8'hf8;                                //显示7
                           4'h8:DIGIT = 8'h80;                                //显示8
                           4'h9:DIGIT = 8'h90;                                //显示9
                                4'ha:DIGIT = 8'h88;                                //显示a
                           4'hb:DIGIT = 8'h83;                                //显示b
                           4'hc:DIGIT = 8'hc6;                                //显示c
                           4'hd:DIGIT = 8'ha1;                                //显示d
                           4'he:DIGIT = 8'h86;                                //显示e
                           4'hf:DIGIT = 8'h8e;                                //显示f
                 endcase
                 SEG=4'b1110;
               end
             else if(count2==16'h3fff)
               begin
                 SEG=4'b1111;
               end
             else if(count2==16'h4100)
               begin
                 case(cach2)                                                //七段译码
                           4'h0:DIGIT = 8'hc0;                                //显示0
                           4'h1:DIGIT = 8'hf9;                                //显示1
                             4'h2:DIGIT = 8'ha4;                                //显示2
                             4'h3:DIGIT = 8'hb0;                                //显示3
                           4'h4:DIGIT = 8'h99;                                //显示4
                           4'h5:DIGIT = 8'h92;                                //显示5
                           4'h6:DIGIT = 8'h82;                                //显示6
                           4'h7:DIGIT = 8'hf8;                                //显示7
                           4'h8:DIGIT = 8'h80;                                //显示8
                           4'h9:DIGIT = 8'h90;                                //显示9
                                4'ha:DIGIT = 8'h88;                                //显示a
                           4'hb:DIGIT = 8'h83;                                //显示b
                           4'hc:DIGIT = 8'hc6;                                //显示c
                           4'hd:DIGIT = 8'ha1;                                //显示d
                           4'he:DIGIT = 8'h86;                                //显示e
                           4'hf:DIGIT = 8'h8e;                                //显示f
                 endcase
                 SEG=4'b1101;
               end
             else if(count2==16'h7fff)
               begin
                 SEG=4'b1111;
               end
             else if(count2==16'h8100)
               begin
                 case(cach3)                                                //七段译码
                           4'h0:DIGIT = 8'hc0;                                //显示0
                           4'h1:DIGIT = 8'hf9;                                //显示1
                             4'h2:DIGIT = 8'ha4;                                //显示2
                             4'h3:DIGIT = 8'hb0;                                //显示3
                           4'h4:DIGIT = 8'h99;                                //显示4
                           4'h5:DIGIT = 8'h92;                                //显示5
                           4'h6:DIGIT = 8'h82;                                //显示6
                           4'h7:DIGIT = 8'hf8;                                //显示7
                           4'h8:DIGIT = 8'h80;                                //显示8
                           4'h9:DIGIT = 8'h90;                                //显示9
                                4'ha:DIGIT = 8'h88;                                //显示a
                           4'hb:DIGIT = 8'h83;                                //显示b
                           4'hc:DIGIT = 8'hc6;                                //显示c
                           4'hd:DIGIT = 8'ha1;                                //显示d
                           4'he:DIGIT = 8'h86;                                //显示e
                           4'hf:DIGIT = 8'h8e;                                //显示f
                 endcase
                 SEG=4'b1011;
               end
             else if(count2==16'hbfff)
               begin
                 SEG=4'b1111;
               end
             else if(count2==16'hc100)
               begin
                 case(cach4)                                                //七段译码
                           4'h0:DIGIT = 8'hc0;                                //显示0
                           4'h1:DIGIT = 8'hf9;                                //显示1
                             4'h2:DIGIT = 8'ha4;                                //显示2
                             4'h3:DIGIT = 8'hb0;                                //显示3
                           4'h4:DIGIT = 8'h99;                                //显示4
                           4'h5:DIGIT = 8'h92;                                //显示5
                           4'h6:DIGIT = 8'h82;                                //显示6
                           4'h7:DIGIT = 8'hf8;                                //显示7
                           4'h8:DIGIT = 8'h80;                                //显示8
                           4'h9:DIGIT = 8'h90;                                //显示9
                                4'ha:DIGIT = 8'h88;                                //显示a
                           4'hb:DIGIT = 8'h83;                                //显示b
                           4'hc:DIGIT = 8'hc6;                                //显示c
                           4'hd:DIGIT = 8'ha1;                                //显示d
                           4'he:DIGIT = 8'h86;                                //显示e
                           4'hf:DIGIT = 8'h8e;                                //显示f
                 endcase
                 SEG=4'b0111;
               end
        end
  end

endmodule

出0入0汤圆

发表于 2009-9-21 22:01:35 | 显示全部楼层
最好去看看代码规范啊,很多 ,摩托罗拉的就不错,看到这种代码风格很多人都不愿意看下去啊

出0入0汤圆

发表于 2009-9-21 22:16:54 | 显示全部楼层
真值表,画出状态转移图,写状态机
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-2 17:16

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表