找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2644|回復: 0
打印 上一主題 下一主題
收起左側

FPGA 400進制 8倍計數(shù)器代碼

[復制鏈接]
跳轉到指定樓層
樓主
ID:537367 發(fā)表于 2019-5-13 20:35 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
module QQ(clk,clk_out);
input clk;
output reg clk_out;
reg [31:0] cnt;
always@(posedge clk)
  begin
          if(cnt<=5000000)
                begin
                   clk_out<=0;
                       cnt<=cnt+1;
                end
              elseif((cnt>2500000)&&(cnt<5000000))
                begin
                  clk_out<=1;
                      cnt<=cnt+1;
                end
              else
       begin
                   clk_out<=1;
                       cnt<=0;
                end
       end  
endmodule
module QQQ(clk,count_c,counter_out);
input clk;
output reg count_c;
output reg [7:0] counter_out;
reg current_state;
reg next_state;
always@( current_state)
begin
    case(current_state)
            1'b0:
                  begin
                         count_c=0;                         if(counter_out<58)
                               next_state=0;
                             else
                               next_state=1;
                      end
                1'b1:
                  begin
                         next_state=0;
                             count_c=1;
                      end
                default:
                  begin
                      end
         endcase
  end
always@(posedge clk)
  begin
          current_state<=next_state;
               if(counter_out<58)
               counter_out<=counter_out+1;
              else
               counter_out<=0;
       end
endmodule
module smg(
input clk,
input count_c,
input [7:0]counter_out,
output [7:0]duan,//數(shù)碼管段選
output [2:0]wei//數(shù)碼管位選  
        );
reg [32:0] cnt;// 時鐘分頻計數(shù)器
parameter system_clk = 50_000_000;
localparam cnt1_MAX = system_clk/1000/2-1;
reg [14:0] cnt1;   //分頻計數(shù)器
reg clk_1k;         //掃描時鐘,1KHz
reg [2:0]flag_wei;     //數(shù)碼管位選
reg [7:0]flag_duan;     //數(shù)碼管段選
reg [3:0]disp_data; //單位顯示數(shù)據(jù)緩存
reg [32:0]flagf1;
reg [32:0]flagm1;
reg [32:0]flagm2;
//1KHz時鐘分頻計數(shù)器
always@(posedge clk)
begin
  if(cnt1==cnt1_MAX)cnt1<=0;
  else cnt1<=cnt1+1'b1;
end
//得到1KHz時鐘
always@(posedge clk)
if(cnt1==cnt1_MAX)
  clk_1k<=~clk_1k;
always@(posedge clk)
begin
  if(clk)
     begin
        flagm2<=counter_out/10;//個位
        flagm1<=counter_out%10;//十位
        flagf1<=count_c;
     end
end  
   
//位選信號控制
always@(posedge clk_1k)
  if(flag_wei == 3'd5)
     flag_wei<=3'd0;
  else
     flag_wei<=flag_wei+1'b1;
//根據(jù)不同的數(shù)碼管位選擇不同的待顯示數(shù)據(jù)
always@(*)
begin
  case(flag_wei)
     3'd0:disp_data<=0;
     3'd1:disp_data<=0;
     3'd2:disp_data<=0;
     3'd3:disp_data<=flagf1;
     3'd4:disp_data<=flagm2;
     3'd5:disp_data<=flagm1;
     default :disp_data<=4'd0;
  endcase
end
//顯示小數(shù)點,分割時分秒
always @ (*)
begin
       case(flag_wei)  
              0: flag_duan[7] = 1'b1;                                 
              1: flag_duan[7] = 1'b1;                                 
              2: flag_duan[7] = 1'b1;                                   
              3: flag_duan[7] = 1'b1;                                 
              4: flag_duan[7] = 1'b1;                                   
              5: flag_duan[7] = 1'b1;                                   
              default: flag_duan[7] = 1'b1;                          
              
       endcase      
end
//數(shù)據(jù)譯碼,將待顯示數(shù)據(jù)翻譯為符合數(shù)碼管顯示的編碼
always@(*)
begin
  case(disp_data)
     4'd0:       flag_duan[6:0]=7'b1000000;
     4'd1:      flag_duan[6:0]=7'b1111001;
     4'd2:      flag_duan[6:0]=7'b0100100;
     4'd3:      flag_duan[6:0]=7'b0110000;
     4'd4:      flag_duan[6:0]=7'b0011001;
     4'd5:      flag_duan[6:0]=7'b0010010;
      4'd6:      flag_duan[6:0]=7'b0000010;
     4'd7:      flag_duan[6:0]=7'b1111000;
     4'd8:      flag_duan[6:0]=7'b0000000;
     4'd9:      flag_duan[6:0]=7'b0010000;
     default :  flag_duan[6:0]=7'b1111111;
  endcase
end
assign wei = flag_wei;
assign duan = flag_duan;
endmodule

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表