久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

步長可變的加減計數器

[復制鏈接]
跳轉到指定樓層
樓主
本帖最后由 WeTiGY 于 2016-11-25 23:28 編輯

實驗六  步長可變的加減計數器
一、實驗目的
1、掌握加減法計數器以及特殊功能計數器的設計原理;
2、用HDL語言設計多功能計數器。
二、硬件需求
    EDA/SOPC實驗箱一臺。
三、實驗原理
計數器的步長是指計數器每次的改變量。在很多應用場合,都希望計數器的步長可變。所謂步長可變,也就是計數器的步長是一個不定值,具體是多少是要靠外部干預的,比如外部給定其步長為5,那么該計數器每次要么增加5,要么減少5,也就是說計數器每次的改變量是5。這種步長可變的計數器才具有一定的實際意義,比如在直接數字頻率合成DDFS中的地址累加器就是一個步長可變的遞增計數器。
四、實驗內容
本實驗要完成的任務就是設計一個8位的計數器,步長的改變量要求從015,實驗中用撥擋開關模塊的SW1ASW4A來作為步長改變量的輸入,用按鍵F1來控制計數器的增減,具體要求為:當F1輸入為高時,計數器為步長可變的加計數器;當F1輸入為低時,計數器為步長可變的減計數器。計數器輸出的Q值用七段數碼管模塊來表示。實驗中計數器的時鐘頻率為了便于眼睛觀察,同上個實驗一樣用1Hz的時鐘。
第一個為分頻模塊:
  1. module divider_module
  2. (
  3.        CLK,f_Out
  4. );

  5.        input CLK;
  6.        output f_Out;
  7.    

  8.        parameter T1s=26'd50_000_000;
  9.        reg [25:0]Count1;
  10.    
  11.       always @ ( posedge CLK )
  12.                  if( Count1 == T1s)
  13.                       Count1 <= 26'd0;
  14.                 else
  15.                       Count1 <= Count1 + 1'b1;
  16.         
  17.        reg rf_Out;        
  18.        always @ ( posedge CLK )
  19.                    if( Count1 >= 26'd0 && Count1 <= 26'd25_000_000)
  20.                         rf_Out <= 1'b0;
  21.                   else
  22.                         rf_Out <= 1'b1;     
  23.       assign f_Out = rf_Out;

  24. endmodule
復制代碼


第二個為數碼管模塊:
  1. module hex_module
  2. (
  3.    f_Out,hex_one,hex_two,Q
  4. );
  5.    input  f_Out;
  6.    input  [7:0] Q;
  7.    output [6:0] hex_one;
  8.    output [6:0] hex_two;
  9.    parameter _0=7'b0000001, _1=7'b1111001, _2=7'b0010010, _3=7'b0000011, _4=7'b1001100, _5=7'b0100100,
  10.              _6=7'b0100000, _7=7'b0001111, _8=7'b0000000, _9=7'b0000100,  _A=7'b0001000, _B=7'b1100000,
  11.              _C=7'b0110001, _D=7'b1000010, _E=7'b0110000, _F=7'b0111000;
  12.         
  13.    reg [7:0] i;
  14.    reg [7:0] u;
  15.    reg [6:0] rhex_one;
  16.    reg [6:0] rhex_two;
  17.    always@(posedge f_Out)
  18.           begin
  19.             i<=Q>>4;
  20.            case(i)
  21.                  8'd0 :  rhex_one<=_0;     //0
  22.                  8'd1 :  rhex_one<=_1;     //1
  23.                  8'd2 :  rhex_one<=_2;     //2
  24.                  8'd3 :  rhex_one<=_3;     //3
  25.                  8'd4 :  rhex_one<=_4;     //4
  26.                  8'd5 :  rhex_one<=_5;     //5
  27.                  8'd6 :  rhex_one<=_6;     //6
  28.                  8'd7 :  rhex_one<=_7;     //7
  29.                  8'd8 :  rhex_one<=_8;     //8
  30.                  8'd9 :  rhex_one<=_9;     //9
  31.                  8'd10:  rhex_one<=_A;     //A
  32.                  8'd11:  rhex_one<=_B;     //B
  33.                  8'd12:  rhex_one<=_C;     //C
  34.                  8'd13:  rhex_one<=_D;     //D
  35.                  8'd14:  rhex_one<=_E;     //E
  36.                  8'd15:  rhex_one<=_F;     //F
  37.                
  38.           default:  rhex_one<=_F;      //F
  39.            endcase
  40.                  u<=Q&8'h0f;
  41.            case(u)
  42.                  8'd0 :  rhex_one<=_0;     //0
  43.                  8'd1 :  rhex_one<=_1;     //1
  44.                  8'd2 :  rhex_one<=_2;     //2
  45.                  8'd3 :  rhex_one<=_3;     //3
  46.                  8'd4 :  rhex_one<=_4;     //4
  47.                  8'd5 :  rhex_one<=_5;     //5
  48.                  8'd6 :  rhex_one<=_6;     //6
  49.                  8'd7 :  rhex_one<=_7;     //7
  50.                  8'd8 :  rhex_one<=_8;     //8
  51.                  8'd9 :  rhex_one<=_9;     //9
  52.                  8'd10:  rhex_one<=_A;     //A
  53.                  8'd11:  rhex_one<=_B;     //B
  54.                  8'd12:  rhex_one<=_C;     //C
  55.                  8'd13:  rhex_one<=_D;     //D
  56.                  8'd14:  rhex_one<=_E;     //E
  57.                  8'd15:  rhex_one<=_F;     //F
  58.                  
  59.                  default:  rhex_one<=_F;      //F
  60.            endcase
  61.          end
  62.         assign hex_one=rhex_one;
  63.    assign hex_two=rhex_two;

  64. endmodule
復制代碼



第三個為計數模塊:
  1. module ecount_module
  2. (
  3.    f_Out,F1,D,Q
  4. );
  5.    input  f_Out;
  6.    input  F1;
  7.    input  [3:0] D;
  8.    output [7:0] Q;
  9.         
  10.         reg [7:0] Q;
  11.         always@(posedge f_Out)
  12.             case(F1)
  13.                    1'b1: begin
  14.                            if(Q<8'd255) Q<=Q+D;
  15.                             else        Q<=8'b0;
  16.                          end
  17.                    1'b0: begin
  18.                            if(Q>8'd0) Q<=Q-D;
  19.                            else       Q<=8'd255;
  20.                          end
  21.             default: Q<=8'd255;
  22.        endcase

  23. endmodule                 
  24.                                                 
  25.                
  26.                         
  27.         
復制代碼



第四個為頂層模塊:
  1. module top_module
  2. (
  3.    CLK,F1,D,hex_one,hex_two
  4. );
  5.         input  CLK;
  6.         input  F1;
  7.         input  [3:0] D;
  8.         output [6:0] hex_one;
  9.         output [6:0] hex_two;
  10.         
  11.         divider_module u1
  12.         (
  13.           .CLK(CLK),
  14.           .f_Out(f_Out)
  15.         );
  16.         
  17.         wire f_Out;
  18.         ecount_module u2
  19.         (
  20.           .f_Out(f_Out),
  21.           .D(D),
  22.           .F1(F1),
  23.           .Q(Q)
  24.         );
  25.         
  26.         wire [7:0] Q;
  27.         hex_module u3
  28.         (
  29.           .f_Out(f_Out),
  30.           .hex_one(hex_one),
  31.           .hex_two(hex_two),
  32.           .Q(Q)
  33.         );
  34.         
  35. endmodule
復制代碼

注:仿真使用20分頻

仿真圖:


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

使用道具 舉報

沙發
ID:641933 發表于 2019-11-14 14:42 | 只看該作者
為什么我的仿真結果都是0啊
回復

使用道具 舉報

板凳
ID:646928 發表于 2019-12-30 00:57 來自手機 | 只看該作者
有沒有安裝包
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 一区二区久久精品 | 资源首页二三区 | 高清视频一区二区三区 | 毛片区| 天堂久久一区 | 羞羞色在线观看 | 一级二级三级在线观看 | 午夜亚洲 | 免费av在线网站 | 久久免费视频网 | 亚洲中午字幕 | 国产精品色 | 国产精品久久久久久久免费大片 | 久久天堂网 | 国产日韩久久 | 国产大毛片 | 天堂在线网 | 久久国产精品99久久久久久丝袜 | 国产精品1区2区 | 春色av| 亚洲精品乱码久久久久久按摩观 | 精品国产综合 | 国产黄色网址在线观看 | 亚洲精品在线免费观看视频 | 中文精品视频 | 综合久久久| 精品一区在线免费观看 | 午夜不卡一区二区 | 欧美a∨| 一级黄色录像片子 | 天天综合网天天综合色 | 夜夜艹天天干 | 日韩在线欧美 | 成人午夜精品 | 懂色中文一区二区三区在线视频 | 99久久视频| 涩涩99| 亚洲欧美日韩精品久久亚洲区 | 欧美一区二区三区久久精品视 | 毛片在线看片 | 国产精品1区2区 |