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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
不用分频器的方式点亮六个数码管
) ~9 L4 g, n$ |; Z
: l7 M& K5 Z, f& C5 W: g  A
为了达到六个数码管同时被点亮的效果,则要使数码管位选信号变化频率在1000hz左右,也即sel的变化频率在1000hz左右  |5 P+ c: ?' ~5 z: i2 o- A" _
5 ^' C* [0 L5 A: C8 Y
为了使频率达到1000hz,好多同学选择了用分频器的方式,当然这种方法得到的是准确的1000hz。我用了另外一种方式,也可以点亮六个数码管,虽然频率不是准确的1000hz,但却很方便。( {7 S) j2 p, |4 k

% [1 Z0 {$ ~/ r设置一个计数器【31:0】count
+ F3 S/ \3 q4 Y3 D这个计数器的最低位count【0】它的计数累加频率就是时钟频率50mhz& v; P% n; N, w1 ^  x
而第2位count【1】的累加频率为(50m/2^1)hz
5 p. Q3 z7 p: h8 v它的第N+1位的计数频率为(50m/2^N)hz
% }& @: y; A2 N7 {; [由此可的5 u4 A: b- ^" N6 K. ^8 C2 A( _- t
第17位count【16】的频率约为760hz,也可以达到点亮数码管的效果1 V" y& W$ E4 q: s: |2 ]
可以设置一个中间参数B,令计数器count以B为单位累加,达到更精确的频率值。f_out=(f_clk/2^n)*B。1 A$ O* r7 z+ |2 b* k: G7 L. t
取f_out=1000hz,f_clk=50000000hz,n=28
0 C0 Z. j$ j# l! z, OB=5369,所以程序为
8 J+ I+ F5 F6 G" F( v* r# P- I/ `, x. v6 D& o3 f& ~8 S5 _# n3 d
module smg(clk,rst_n,seg,sel);. g7 e4 U/ L; N# J; i
        input clk;+ A, \' p  Y# h) ?  W
        input rst_n;
" p. J6 d; L; c5 x4 N! J4 \+ g        
* Q1 a! k& p  \) f        output reg[2:0]sel;
: R- e& N7 W0 y        output reg[7:0]seg;
3 {0 y. H, h. c8 h        reg [31:0]count;
5 |3 b% }; i" H7 G' G: ?/ [        
: c' H% Z$ H! {. e        parameter B=5369;. {8 m% @: u8 H1 L+ A5 H
        
9 I7 `# W/ y7 ?        , ]7 }+ n- L/ Q/ q8 l/ m( M, D
        
2 v  S1 h9 w+ ^3 g: _  Q        always@(posedge clk or negedge rst_n)+ X% k! V9 H4 f, O0 s' ^- G- @
                begin
% S. K  S. f9 g- i% F/ |  w                        if(!rst_n)
  V0 D  P' |, ^  `$ j                                begin2 Z( y. J4 S' `9 m9 l; Y
                                        seg<=8'b1111_1111;* G) L! I0 |" [% l# w
                                        sel<=3'b111;- n' Y$ O% J) Z- w  i
                                        count<=0;5 b$ U$ T4 U1 D1 W7 Q3 U. _0 d6 _/ H& e; i
                                end
! h% o9 ]% p  X- ^0 y+ {( U4 X; N                        else
. B2 o4 J" {& u" E2 {" b                                begin/ Z  m- p5 c& P9 t6 G% s5 t2 R
                                        count<=count+B;& r- I, N' {, J0 A  a
                                        sel<=count[31:28];//计数频率约为1khz
! q- \+ g; b/ r$ |3 x! D: c                                        case(sel)
" M4 R8 F, W3 S' P& O                                        0:begin seg<=8'b1111_1001;end* Y$ @- x0 r% C, T
                                        1:begin seg<=8'b1010_0100;end
7 I/ y( c$ J7 m: W, p                                        2:begin seg<=8'b1011_0000;end6 ^: J) i( h. z, r& E- Q+ ]
                                        3:begin seg<=8'b1001_1001;end% G. e% Y  |8 T" t
                                        4:begin seg<=8'b1001_0010;end7 m7 l" s0 R( x8 [" i5 ~
                                        5:begin seg<=8'b1000_0010;end% |( }2 _" I, [# I- H
                                        default:begin sel<=0;end
4 I7 m$ ^& E/ z( V! W                                        endcase; z' s" A2 ]( p" d  y6 c5 `
                                end
2 ]- Y& \" i8 s+ B6 w1 i, `4 m+ T                end2 N% K! q0 E8 E8 U1 y+ P' k7 k3 A
7 g, F: I4 e% B
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-7-24 01:25 , Processed in 0.109375 second(s), 23 queries , Gzip On.

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

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

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