用Verilog语言怎么写一个60进制的计数器然后显示在数码管上

2019-07-16 00:29发布

小弟刚学FPGA用的是EP4CE6  现在想写一个60进制的计数器 然后在数码管上显示出来   用verilog写   但想了好几天没想出来   去大侠指导下   或给个程序看看   小弟感激不尽。。。。。拜托了
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
19条回答
孟凡良
1楼-- · 2019-07-16 19:58
 精彩回答 2  元偷偷看……
孟凡良
2楼-- · 2019-07-16 22:16
列扫描模块
module column_scan_module
(
    CLK, RSTn, Column_Scan_Sig
);
   
     input CLK;
     input RSTn;
     output [1:0]Column_Scan_Sig;
     
     /*****************************/
     
     parameter T10MS = 18'd199_999;

     /*****************************/
     
     reg [17:0]Count1;

     always @ ( posedge CLK or negedge RSTn )
         if( !RSTn )
              Count1 <= 18'd0;
          else if( Count1 == T10MS )
              Count1 <= 18'd0;
          else
              Count1 <= Count1 + 18'b1;
   
     /*******************************/

     reg [1:0]t;
     
     always @ ( posedge CLK or negedge RSTn )
         if( !RSTn )
              t <= 2'd0;
          else if( t == 2'd2 )
              t <= 2'd0;
          else if( Count1 == T10MS )
              t <= t + 1'b1;

    /*********************************/
     
     reg [1:0]rColumn_Scan;

     always @ ( posedge CLK or negedge RSTn )
         if( !RSTn )
              rColumn_Scan <= 2'b10;
          else if( Count1 == T10MS )
              case( t )
               
                    2'd0 : rColumn_Scan <= 2'b10;
                     2'd1 : rColumn_Scan <= 2'b01;

                endcase  
               
     /******************************/
     
     assign Column_Scan_Sig = rColumn_Scan;
     
     /******************************/
              

endmodule




孟凡良
3楼-- · 2019-07-17 00:05
行扫描模块
module row_scan_module
(
    CLK, RSTn,
     Ten_SMG_Data, One_SMG_Data,
     Row_Scan_Sig
);

    input CLK;
     input RSTn;
     input [7:0]Ten_SMG_Data;
     input [7:0]One_SMG_Data;
     output [7:0]Row_Scan_Sig;
     
     /*******************************/

     parameter T10MS = 18'd199_999;

     /*******************************/
     
      reg [17:0]Count1;
     
     always @ ( posedge CLK or negedge RSTn )
         if( !RSTn )
              Count1 <= 18'd0;
          else if( Count1 == T10MS )
              Count1 <= 18'd0;
          else
              Count1 <= Count1 + 18'b1;
   
     /*******************************/

     reg [1:0]t;
     
     always @ ( posedge CLK or negedge RSTn )
         if( !RSTn )
              t <= 2'd0;
          else if( t == 2'd2 )
              t <= 2'd0;
          else if( Count1 == T10MS )
              t <= t + 1'b1;
   
     /**********************************/

     reg [7:0]rData;
   
    always @ ( posedge CLK or negedge RSTn )
         if( !RSTn )
              rData <= 8'd0;
          else if( Count1 == T10MS )
              case( t )
               
                  2'd0 : rData <= Ten_SMG_Data;
                     2'd1 : rData <= One_SMG_Data;
            
                endcase
               
    /***********************************/

     assign Row_Scan_Sig = rData;
     
     /***********************************/
              
endmodule









孟凡良
4楼-- · 2019-07-17 01:59
完了    大家多多支持
青春流年
5楼-- · 2019-07-17 06:40
楼主你真是太伟大了,你真应该送佛送到西,顺便解释一下
青春流年
6楼-- · 2019-07-17 12:33
 精彩回答 2  元偷偷看……

一周热门 更多>