找回密码
 注册
关于网站域名变更的通知
查看: 306|回复: 1
打印 上一主题 下一主题

不用分频器的方式点亮六个数码管

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2018-12-5 10:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
不用分频器的方式点亮六个数码管

: P! g& O3 ~9 C& ?0 f/ F
, x7 w: J+ }9 ]  ^& b为了达到六个数码管同时被点亮的效果,则要使数码管位选信号变化频率在1000hz左右,也即sel的变化频率在1000hz左右" |( ]6 A$ o* S# y" s! U$ O

8 n3 m" C% o6 Z' u3 _为了使频率达到1000hz,好多同学选择了用分频器的方式,当然这种方法得到的是准确的1000hz。我用了另外一种方式,也可以点亮六个数码管,虽然频率不是准确的1000hz,但却很方便。1 e5 t$ \# Y* X1 i7 v9 V+ ~
% ?: q( z' \5 i: G9 G% @
设置一个计数器【31:0】count* }+ q" G( `  o: W( ?2 o
这个计数器的最低位count【0】它的计数累加频率就是时钟频率50mhz
- C5 P! Y8 M- U4 z& s5 T而第2位count【1】的累加频率为(50m/2^1)hz
9 X2 y2 v& a+ x  W3 C# R它的第N+1位的计数频率为(50m/2^N)hz
' U+ s; X! T& E, a8 U+ v7 `由此可的
+ r* c' K5 ?! k2 E% U" C  m第17位count【16】的频率约为760hz,也可以达到点亮数码管的效果
  L# }. L# v: ~可以设置一个中间参数B,令计数器count以B为单位累加,达到更精确的频率值。f_out=(f_clk/2^n)*B。
6 C+ C; [: h  K取f_out=1000hz,f_clk=50000000hz,n=288 P  g  }% {) ?% E/ i% c2 P
B=5369,所以程序为' |' U& }- ?, g% g

  ?2 X- l4 b" t* P9 c( nmodule smg(clk,rst_n,seg,sel);/ `8 }2 f# j2 h8 G- F
        input clk;
8 W) D; x/ i% @5 s2 d        input rst_n;. `- V+ H6 a2 S+ `$ C' x2 p
        
0 N* t$ f; ?- A9 R& X3 \, R+ L        output reg[2:0]sel;
# i" J  A% t+ Q4 X- K( {7 N        output reg[7:0]seg;
( Q8 x9 B* i" C) n" E; V% B        reg [31:0]count;
2 y% }$ u7 l9 V$ B0 p3 z  E% ?" ~        ! C2 s" i. i  u( ?
        parameter B=5369;
% w4 P7 y" b9 Q( M        9 ]0 x) e' a/ N2 O8 U
        ( O* m) P6 y; b2 Q  R# u
        " V8 V8 x5 j' d" l) i1 w$ }
        always@(posedge clk or negedge rst_n)- S8 R: p. S3 a: e( u1 k6 {+ ?
                begin
$ s8 R8 h& x5 U3 p* D                        if(!rst_n)& p1 x0 U" l9 g9 L- j7 U2 m+ q
                                begin* F. q/ H* w9 F6 g+ x# `- U% l
                                        seg<=8'b1111_1111;
0 ^& q: a0 z  i1 {% S: s                                        sel<=3'b111;" M" D+ J! v" K% P- d8 ]
                                        count<=0;" b2 ]$ b6 F9 {! e; n7 f! ^4 h
                                end+ T/ ?; `; T  o! r0 v
                        else
1 X7 S+ W4 c# v  X$ x& ]                                begin; z, d, [( Z/ s# w% r: X' P
                                        count<=count+B;
7 z9 U( N. Z4 k6 z6 W5 Q; R( O                                        sel<=count[31:28];//计数频率约为1khz7 e4 r# a" r; n. M% @5 U% n8 v
                                        case(sel)9 Y: C( e* Q+ T
                                        0:begin seg<=8'b1111_1001;end
6 ?, D/ A- @1 T# b$ l" P# f7 p0 z8 l                                        1:begin seg<=8'b1010_0100;end+ ?3 n  [# P& R
                                        2:begin seg<=8'b1011_0000;end% J( F1 U" y: a3 ?( W7 N
                                        3:begin seg<=8'b1001_1001;end
' h: q1 d) Z& P; @                                        4:begin seg<=8'b1001_0010;end
: a; v  Y" F' @" p6 s% j. [3 q1 U                                        5:begin seg<=8'b1000_0010;end
7 k$ o( v; y  P* M2 l  J0 f  C                                        default:begin sel<=0;end
5 U# q5 A# b% r                                        endcase, o  s. c9 A" }- v, o; B
                                end+ h) X5 y4 i% u1 w
                end4 Z$ Q" L% L+ {

4 J+ T. h! M0 a9 H# x# P
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-10-6 23:19 , Processed in 0.125000 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表