zoukankan      html  css  js  c++  java
  • FPGA六位共阳极数码管动态显示

      1 `timescale 1ns/1ps
      2 module adc_dis(
      3                clk ,
      4                     rst_n ,       
      5                sm_seg ,
      6                     sm_bit
      7                     );
      8                     
      9 input clk;//50HZ
     10 input rst_n;
     11 output[7:0] sm_seg;//段选
     12 output[5:0] sm_bit;//位选
     13 
     14 reg [7:0] sm_seg;
     15 reg [5:0] sm_bit;
     16 reg [31:0] count;
     17 reg [31:0] count2;
     18 reg [3:0] i;//数码管位数
     19 reg clk1, clk2;
     20 reg [3:0]ge,shi,bai,qian,wan,swan;
     21 reg [7:0] ge_reg,shi_reg,bai_reg,qian_reg,wan_reg,swan_reg;
     22 
     23 parameter//共阳极
     24         led_GYA0 = 8'hc0,     //'0'  
     25         led_GYA1 = 8'hf9,     //'1'
     26         led_GYA2 = 8'ha4,     //'2'
     27         led_GYA3 = 8'hb0,     //'3'
     28         led_GYA4 = 8'h99,     //'4'
     29         led_GYA5 = 8'h92,     //'5'
     30         led_GYA6 = 8'h82,     //'6'
     31         led_GYA7 = 8'hf8,     //'7'
     32         led_GYA8 = 8'h80,     //'8'
     33         led_GYA9 = 8'h90;     //'9'
     34 
     35 /****************分频1S*****************/        
     36 always@(posedge clk or negedge rst_n) begin
     37 if(!rst_n) begin //同步复位
     38            clk2  <= 1'b0;
     39            count2 <= 32'b0;
     40            end
     41      else if(count2 == 32'd249999)begin //高低电平转换 5*10^7*20ns=10^9ns=1s
     42           clk2 <= ~clk2;
     43           count2 <= 32'b0;
     44           end
     45      else begin
     46           count2 <= count2 + 1'b1; //计数
     47           end
     48  end
     49         
     50 /******************计数*********************/
     51 always@(posedge clk2 or negedge rst_n) begin//个位处理
     52 if(!rst_n) begin
     53               ge <= 4'b0000;
     54               shi <= 4'b0000;
     55               bai <= 4'b0000;
     56               qian <= 4'b0000;
     57               wan <= 4'b0000;
     58               swan <= 4'b0000; 
     59               end
     60 else if(ge == 4'b1010) begin //个位等于10
     61                        ge  = 4'b0000;
     62                        shi = shi + 1'b1;
     63                        if(shi == 4'b1010) begin//十位等于10
     64                                           shi = 4'b0000;
     65                                           bai = bai + 1'b1;
     66                                           if(bai == 4'b1010) begin//百位等于10
     67                                                              bai  = 4'b0000;
     68                                                              qian = qian + 1'b1;
     69                                                              if(qian == 4'b1010) begin//千位等于10
     70                                                                                  qian = 4'b0000;
     71                                                                                  wan  = wan + 1'b1;
     72                                                                                  if(wan == 4'b1010) begin//万位等于10
     73                                                                                                     wan  = 4'b0000;
     74                                                                                                     swan = swan + 1'b1;
     75                                                                                                     if(swan == 4'b1010) begin//十万位等于10
     76                                                                                                                         ge <= 4'b0000;
     77                                                                                                                         shi <= 4'b0000;
     78                                                                                                                         bai <= 4'b0000;
     79                                                                                                                         qian <= 4'b0000;
     80                                                                                                                         wan <= 4'b0000;
     81                                                                                                                         swan <= 4'b0000; 
     82                                                                                                                         end
     83                                                                                                     end 
     84                                                                                  end
     85                                                               end 
     86                                         end
     87                       end
     88 else  begin
     89       ge <= ge + 1'b1;
     90       end
     91         
     92 end
     93                           
     94 /***************编码*******************/
     95 always@(posedge clk2 or negedge rst_n) begin
     96 case(ge)
     97       4'b0000: ge_reg <= led_GYA0;
     98       4'b0001: ge_reg <= led_GYA1;
     99       4'b0010: ge_reg <= led_GYA2;
    100       4'b0011: ge_reg <= led_GYA3;
    101       4'b0100: ge_reg <= led_GYA4;
    102       4'b0101: ge_reg <= led_GYA5;
    103       4'b0110: ge_reg <= led_GYA6;
    104       4'b0111: ge_reg <= led_GYA7;
    105       4'b1000: ge_reg <= led_GYA8; 
    106       4'b1001: ge_reg <= led_GYA9;
    107       default: ge_reg <= led_GYA0; 
    108 endcase
    109       
    110 case(shi)
    111       4'b0000: shi_reg <= led_GYA0;
    112       4'b0001: shi_reg <= led_GYA1;
    113       4'b0010: shi_reg <= led_GYA2;
    114       4'b0011: shi_reg <= led_GYA3;
    115       4'b0100: shi_reg <= led_GYA4;
    116       4'b0101: shi_reg <= led_GYA5;
    117       4'b0110: shi_reg <= led_GYA6;
    118       4'b0111: shi_reg <= led_GYA7;
    119       4'b1000: shi_reg <= led_GYA8; 
    120       4'b1001: shi_reg <= led_GYA9;
    121       default: shi_reg <= led_GYA0; 
    122 endcase
    123 
    124 case(bai)
    125       4'b0000: bai_reg <= led_GYA0;
    126       4'b0001: bai_reg <= led_GYA1;
    127       4'b0010: bai_reg <= led_GYA2;
    128       4'b0011: bai_reg <= led_GYA3;
    129       4'b0100: bai_reg <= led_GYA4;
    130       4'b0101: bai_reg <= led_GYA5;
    131       4'b0110: bai_reg <= led_GYA6;
    132       4'b0111: bai_reg <= led_GYA7;
    133       4'b1000: bai_reg <= led_GYA8; 
    134       4'b1001: bai_reg <= led_GYA9;
    135       default: bai_reg <= led_GYA0;
    136 endcase
    137       
    138 case(qian)
    139       4'b0000: qian_reg <= led_GYA0;
    140       4'b0001: qian_reg <= led_GYA1;
    141       4'b0010: qian_reg <= led_GYA2;
    142       4'b0011: qian_reg <= led_GYA3;
    143       4'b0100: qian_reg <= led_GYA4;
    144       4'b0101: qian_reg <= led_GYA5;
    145       4'b0110: qian_reg <= led_GYA6;
    146       4'b0111: qian_reg <= led_GYA7;
    147       4'b1000: qian_reg <= led_GYA8; 
    148       4'b1001: qian_reg <= led_GYA9;
    149       default: qian_reg <= led_GYA0;
    150 endcase
    151       
    152 case(wan)
    153       4'b0000: wan_reg <= led_GYA0;
    154       4'b0001: wan_reg <= led_GYA1;
    155       4'b0010: wan_reg <= led_GYA2;
    156       4'b0011: wan_reg <= led_GYA3;
    157       4'b0100: wan_reg <= led_GYA4;
    158       4'b0101: wan_reg <= led_GYA5;
    159       4'b0110: wan_reg <= led_GYA6;
    160       4'b0111: wan_reg <= led_GYA7;
    161       4'b1000: wan_reg <= led_GYA8; 
    162       4'b1001: wan_reg <= led_GYA9;
    163       default: wan_reg <= led_GYA0;
    164 endcase
    165       
    166 case(swan)
    167       4'b0000: swan_reg <= led_GYA0;
    168       4'b0001: swan_reg <= led_GYA1;
    169       4'b0010: swan_reg <= led_GYA2;
    170       4'b0011: swan_reg <= led_GYA3;
    171       4'b0100: swan_reg <= led_GYA4;
    172       4'b0101: swan_reg <= led_GYA5;
    173       4'b0110: swan_reg <= led_GYA6;
    174       4'b0111: swan_reg <= led_GYA7;
    175       4'b1000: swan_reg <= led_GYA8; 
    176       4'b1001: swan_reg <= led_GYA9;
    177       default: swan_reg <= led_GYA0;
    178 endcase
    179 end
    180         
    181 /****************分频1MS*****************/        
    182 always@(posedge clk or negedge rst_n) begin
    183 if(!rst_n) begin //同步复位
    184            clk1  <= 1'b0;
    185            count <= 1'b0;
    186            end
    187 else if(count == 32'd24999)begin //高低电平转换 25000*20=500000ns=0.5ms
    188                            clk1 <= ~clk1;
    189                            count <= 1'b0;
    190                            end
    191 else begin
    192      count <= count + 1'b1; //计数
    193      end
    194 end
    195 
    196 /************数码管位数循环****************/    
    197 always@(posedge clk1 or negedge rst_n) begin
    198 
    199 if(!rst_n) begin //同步复位
    200            i <= 4'b0000;
    201            end
    202 else if(i == 4'b0101) begin 
    203                       i <= 4'b0000;
    204                       end
    205 else begin
    206      i <= i + 1'b1;
    207      end
    208 end
    209 
    210 /************数码管显示****************/
    211 always@(posedge clk1 or negedge rst_n) begin  
    212         case(i)
    213             4'b0000: begin sm_seg <= ge_reg;    sm_bit <= 6'b11_1110;  end
    214             4'b0001: begin sm_seg <= shi_reg;   sm_bit <= 6'b11_1101;  end
    215             4'b0010: begin sm_seg <= bai_reg;   sm_bit <= 6'b11_1011;  end
    216             4'b0011: begin sm_seg <= qian_reg;  sm_bit <= 6'b11_0111;  end
    217             4'b0100: begin sm_seg <= wan_reg;   sm_bit <= 6'b10_1111;  end
    218             4'b0101: begin sm_seg <= swan_reg;  sm_bit <= 6'b01_1111;  end
    219             default: begin sm_seg <= led_GYA0;  sm_bit <= 6'b11_1111;  end 
    220         endcase
    221    end         
    222      
    223 endmodule
  • 相关阅读:
    content-type
    文件上传
    注册案例
    20 行代码极速为 App 加上聊天功能
    一步一步带你安装史上最难安装的 vim 插件 —— YouCompleteMe
    iOS 调试心得
    Playground 你不知道的小技巧, CoreData 的使用
    令人眼前一亮的下拉式终端 Tilda & Guake
    代码可读性提升指南
    iOS 推送问题全解答《十万个为啥吖?》
  • 原文地址:https://www.cnblogs.com/chasing/p/4044889.html
Copyright © 2011-2022 走看看