1回答

0收藏

Verilog基础--数码管

FPGA/DSP FPGA/DSP 2579 人阅读 | 1 人回复 | 2013-04-23

感觉黑金开发板的例程很磨叽,很不规范,因此决定自己写。数码管的代码:
  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,比较简单,看官勿喷~

国内的ubuntu的更新源还是上海交大最给力
分享到:
回复

使用道具 举报

回答|共 1 个

倒序浏览

沙发

libing64

发表于 2013-4-23 16:27:37 | 只看该作者

排版问题有点蛋碎,在notepad++下排好后,QuartusII下就乱了,反之亦然
QuartusII中貌似中文会变成乱码,不知为何~
国内的ubuntu的更新源还是上海交大最给力
您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

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