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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
本帖最后由 Taio 于 2019-4-10 11:05 编辑 2 A! U& l$ I; d
. H# g- C) _6 Y8 ?* k
转——【FPGA代码学习】实践一下FPGA时钟分频

/ {  Z' K2 s# V; g! j3 C0 _以前小伙伴一起讨论过关于  关于  FPGA 时钟分频?  这些奇葩的分频,可能也只在IC内部用的到吧,由于好奇,我也来尝试一下。
) }# p5 P4 O4 n& P4 J3 A6 g2 T4 h/ W) P一、 具有50% 占空比的奇数的整数分频
+ |1 ]) y5 O& c$ }6 g/ |对时钟进行N分频,创建由时钟沿触发的计数器,计数到N-1
( O3 S" }3 q9 F& x7 E  C9 h' @9 U- h对于3分频,从0计数到2   即是 N=3
. {/ ~1 `! w3 C+ K/ p4 ~/ s对于3分频,从0计数到3   即是 N=4
$ V- y, K2 [$ a7 S3 I. z' `……
* O. ?& B3 |( D) M2 Q, X1 Y, q2 q
3 p! f, P: R! }- F3 b9 n
( p0 t, ?3 m( x- W* Y/ D  i
图:3分频

& L4 l5 Y) v" m! e, u' o. l6 ~3 ^, q/ u

' ]" e- l" q, N1 c6 Q" Q8 {* H+ y5 `, G# ?7 i
代码如下:
% T# s4 k0 Z( d2 c9 k0 }( E( B: ~/ Z% g
  • 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

  • $ y$ E8 i( ^  u1 t/ g0 M' f
* V  p4 q( e6 P! b$ `; }5 e. i
[color=rgb(51, 102, 153) !important]复制代码
6 H8 A5 V: {9 A7 ~& L2 x

- G1 P0 O; g" \/ @* l5 W: w
) \( U: W/ g) s8 x) q
' v- E( F$ d# K8 E6 Y" K( Z7 ~二、非50%占空比的非整数分频
; L- c+ ^& ~! U$ t7 N9 Y7 L1 d" Z! |; T
实现一个 4.5 倍分频,占空比为40%,不含毛刺。& h9 G% F8 ^  B0 p( y. ~

/ L6 T6 D7 c3 F8 q2 u' Z
图:4.5倍分频 40% 占空比

* [5 I0 w6 p5 e: c7 O6 p) m$ j% L0 C3 ?' h' }6 A
代码如下:2 [' \$ F1 g+ b+ S2 N9 B% }; e
  • 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
  • 3 |% `0 L2 H' P! ?  O4 G
& D1 p- q3 g2 f) u% f
7 W5 r/ G" ?3 T7 m+ y+ C

, N' T' X* u# p, d3 l# V% @+ C" g  s

" H! p+ C- ]. o6 O) \7 N' q三、小结1 s5 u" f8 q5 k$ J- s
* m7 ~. _- B5 A- u# e5 q, Q

0 L7 k+ U$ ?  m$ P1 v* o# R. P分频主要是对时钟的操作,以及计数器的实现。3 |2 c5 M# u0 x+ Z/ d6 h

! c/ D# L3 i0 o; u& U4 K参考:   群聊天3 Z' ?7 [, [: T; C  H/ J
   网络
' _1 X4 D) z3 |7 [# T《硬件架构的艺术》8 ]! G6 R4 P! f% }( Q  {- W. F

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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