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

转——【FPGA代码学习】实践一下FPGA时钟分频

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
本帖最后由 Taio 于 2019-4-10 11:05 编辑
  m4 `7 o8 C; B. a6 D
, l; L4 z+ M3 v$ p2 E
转——【FPGA代码学习】实践一下FPGA时钟分频

/ d4 w) t( @% o8 `  Y! d1 T4 ~: `以前小伙伴一起讨论过关于  关于  FPGA 时钟分频?  这些奇葩的分频,可能也只在IC内部用的到吧,由于好奇,我也来尝试一下。; b6 d( g0 w+ P- T( h+ k
一、 具有50% 占空比的奇数的整数分频5 N/ @6 T% I3 C3 K( ^! e2 Z
对时钟进行N分频,创建由时钟沿触发的计数器,计数到N-1
5 e4 D# U" `: S' p6 Q8 p1 A* U4 _对于3分频,从0计数到2   即是 N=3
0 a/ r! X2 c" J" j- ~对于3分频,从0计数到3   即是 N=4
2 `5 w4 n0 W* N* L# T2 Y% D, S. E……
3 Y# w* @0 k$ `" A# l
) N$ G* k0 v8 v4 A* Y7 x* F
1 M# u; k+ i* @, \& J; K
图:3分频
0 x- b$ J4 v" s) O" l! C

# f" g; M  b4 V8 `% a" E* M0 H; A
( H+ N7 W2 V* T9 I: Z& y& A! `  @  p$ X; P% q' |+ R! c5 T+ v
代码如下:
) g6 G' c( \* W+ w4 M, r
9 g0 ^6 c$ d" ]5 f4 ?; u& k
  • module half_clk_dai(
  •                      clk_in,
  •                      rst,
  •                      clk_out,
  •                      cnt
  •                      );
  • input clk_in;
  • input rst;
  • output clk_out;
  • output [0:1] cnt;
  • reg clk_out;
  • reg [0:1] count= 2'b00;
  • assign cnt = count;
  • always@(posedge clk_in or negedge rst or negedge clk_in)
  • begin
  •    if(!rst)
  •      clk_out<=0;
  •    else
  •      begin
  •        if(count==2)
  •          begin
  •            count=0;
  •            clk_out<=~clk_out;
  •          end
  •       else
  •          count=count+1;
  •      end
  • end
  • endmodule

  • 3 H! R% O" A6 o" g
8 L, J. M; z, U* o8 E
[color=rgb(51, 102, 153) !important]复制代码
( W* Y3 {0 ^2 N  Q' q! K6 w

9 w% l# E" u  r( t, E  R0 W0 n$ b

+ y, ]3 H1 H, f3 [2 G二、非50%占空比的非整数分频0 N3 V6 ?$ g+ R) u% q6 p/ p
1 H* h) V  {/ D3 a: L0 n: B$ o
实现一个 4.5 倍分频,占空比为40%,不含毛刺。
# p9 b# J1 y+ W6 Z# ]$ }5 `
7 O, Q2 y4 V' W6 H, C2 Q
图:4.5倍分频 40% 占空比

( n" x7 q4 h% \$ f0 w" E# o; M: V! ]* ]+ O. s2 T
代码如下:
$ ]+ _0 ~  h  ?) m+ x
  • module half_clk_dai(
  •                     clk_in,
  •                     rst,
  •                     clk_out,
  •                     cnt
  •                     );
  • input clk_in;
  • input rst;
  • output clk_out;
  • output [0:1] cnt;
  • reg clk_out;
  • reg [0:2] count= 3'b00;
  • reg  [0:1] flag=2'b00;
  • reg [0:3]temp =4'b0011;
  • assign cnt = count;
  • always@(posedge clk_in or negedge rst or negedge clk_in)
  •   begin
  •     if(!rst)
  •       clk_out<=0;
  •     else
  •       begin
  •         if(count == temp )
  •             begin
  •               count=0;
  •               clk_out<=~clk_out;
  •               if(flag==2)
  •                 begin
  •                   if(temp==3)temp=4;
  •                   else temp=3;
  •                   flag = 0;
  •                 end
  •               flag=flag+1;
  •             end
  •         else
  •             count=count+1;
  •       end
  •     end
  • endmodule
  • % X) ~+ w: j2 O5 J, l& i1 G
& Q+ \  [* `' |6 V5 p) K
1 h$ h% A. p. c. ^5 H

% M, X1 j0 U, ?
) l1 k# h# ^) W" c1 N
" O! `7 z7 W) j三、小结, A1 n8 L- e4 I2 r( r6 T6 t
$ T* J* R' T7 j7 ^# H! ?5 ^

& l/ R% M0 v7 K# t' H3 ?分频主要是对时钟的操作,以及计数器的实现。
+ E* `+ @9 U0 K! L& P8 q* B$ z4 ]! D& c& V( m) ~
参考:   群聊天
7 j* f; B/ {" N: {6 ?   网络
0 F8 ?4 l7 f+ J/ @7 Z《硬件架构的艺术》
& ^" O3 d1 g( [

该用户从未签到

2#
发表于 2019-4-10 17:39 | 只看该作者
thanks for sharing
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-9-23 03:06 , Processed in 0.109375 second(s), 23 queries , Gzip On.

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

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

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