查看: 2264|回复: 1

Verilog基础--数码管

[复制链接]
  • TA的每日心情
    开心
    2014-5-14 13:12
  • 签到天数: 180 天

    连续签到: 1 天

    [LV.7]常住居民III

    发表于 2013-4-23 16:25:59 | 显示全部楼层 |阅读模式
    分享到:
    感觉黑金开发板的例程很磨叽,很不规范,因此决定自己写。数码管的代码:
    1. module seg7
    2. (
    3.         CLK, RSTn, LED,en
    4. );

    5.         input CLK, RSTn;
    6.         output [7:0] LED;
    7.         output  en;
    8.                 reg rEn = 1'b0;
    9.         parameter T1s = 26'd50_000_000;
    10.         reg [31:0] count;
    11.         
    12.                 reg [3:0] number = 4'b0000;

    13.                 parameter         _0 = 8'b1100_0000,
    14.                                                 _1 = 8'b1111_1001,
    15.                                                 _2 = 8'b1010_0100,
    16.                                                 _3 = 8'b1011_0000,
    17.                                                 _4 = 8'b1001_1001,
    18.                                                 _5 = 8'b1001_0010,
    19.                                                 _6 = 8'b1000_0010,
    20.                                                 _7 = 8'b1111_1000,
    21.                                                 _8 = 8'b1000_0000,
    22.                                                 _9 = 8'b1001_0000,
    23.                                                 _a = 8'b1000_1000,
    24.                                                 _b = 8'b1000_0011,
    25.                                                 _c = 8'b1100_0110,
    26.                                                 _d = 8'b1010_0001,
    27.                                                 _e = 8'b1000_0110,
    28.                                                 _f = 8'b1000_1110;

    29.                
    30.         
    31.         always @(posedge CLK or negedge RSTn)
    32.                 if(!RSTn)
    33.                         count <= 0;
    34.                 else if (count == T1s)
    35.                         count <= 26'b0;
    36.                 else count <= count + 26'b1;

    37.                 always @(posedge CLK or negedge RSTn)
    38.                         if(!RSTn)
    39.                                         number <= 4'b0000;
    40.                 else if(count == T1s)
    41.                     number <= number + 1'b1;   


    42.         reg[7:0] rLED;
    43.         always @(posedge CLK or negedge RSTn)
    44.                 if(!RSTn)
    45.                         rLED <= 8'b0000_0001;
    46.                 else if(count == T1s)
    47.                                                 case(number)
    48.                                                         0:rLED <= _0;
    49.                                                         1:rLED <= _1;
    50.                                                         2:rLED <= _2;
    51.                                                         3:rLED <= _3;
    52.                                                         4:rLED <= _4;
    53.                                                         5:rLED <= _5;
    54.                                                         6:rLED <= _6;
    55.                                                         7:rLED <= _7;
    56.                                                         8:rLED <= _8;
    57.                                                         9:rLED <= _9;
    58.                                                         10:rLED <= _a;
    59.                                                         11:rLED <= _b;
    60.                                                         12:rLED <= _c;
    61.                                                         13:rLED <= _d;
    62.                                                         14:rLED <= _e;
    63.                                                         15:rLED <= _f;
    64.                                                         default:rLED <= _0;
    65.                                                 endcase

    66.         assign LED = rLED;
    67.                 assign en = rEn;
    68. endmodule
    69.                
    复制代码
    tcl代码
    1. #------------------GLOBAL--------------------#
    2. set_global_assignment -name RESERVE_ALL_UNUSED_PINS "AS INPUT TRI-STATED"
    3. set_global_assignment -name ENABLE_INIT_DONE_OUTPUT OFF

    4. #复位引脚
    5. set_location_assignment        PIN_M1        -to RSTn

    6. #时钟引脚
    7. set_location_assignment        PIN_R9        -to CLK

    8. #数码管对应的引脚
    9. set_location_assignment        PIN_M8        -to LED[0]
    10. set_location_assignment        PIN_L7        -to LED[1]
    11. set_location_assignment        PIN_P9        -to LED[2]
    12. set_location_assignment        PIN_N9        -to LED[3]
    13. set_location_assignment        PIN_M9        -to LED[4]
    14. set_location_assignment        PIN_M10        -to LED[5]
    15. set_location_assignment        PIN_P11        -to LED[6]
    16. set_location_assignment        PIN_N11        -to LED[7]

    17. set_location_assignment        PIN_N6        -to en
    复制代码
    下载后数码管从0显示到f,比较简单,看官勿喷~

    回复

    使用道具 举报

  • TA的每日心情
    开心
    2014-5-14 13:12
  • 签到天数: 180 天

    连续签到: 1 天

    [LV.7]常住居民III

     楼主| 发表于 2013-4-23 16:27:37 | 显示全部楼层
    排版问题有点蛋碎,在notepad++下排好后,QuartusII下就乱了,反之亦然
    QuartusII中貌似中文会变成乱码,不知为何~
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-11-23 12:06 , Processed in 0.112034 second(s), 17 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.