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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
本帖最后由 Taio 于 2019-4-10 11:05 编辑
, c; H. {, i8 T* g# Q) s' y* g( j& D( E0 Z- X% s' X
转——【FPGA代码学习】实践一下FPGA时钟分频
9 I+ X0 ~4 ^& q* p  L
以前小伙伴一起讨论过关于  关于  FPGA 时钟分频?  这些奇葩的分频,可能也只在IC内部用的到吧,由于好奇,我也来尝试一下。/ }  z$ H+ _, t/ J9 |! ^
一、 具有50% 占空比的奇数的整数分频1 E& \; L& t; a
对时钟进行N分频,创建由时钟沿触发的计数器,计数到N-17 W1 H' q  F8 u* q
对于3分频,从0计数到2   即是 N=3
7 _8 q; n& h- g1 W对于3分频,从0计数到3   即是 N=4
: D, i' }" \! U5 U5 m" d/ T  ^) [……
( F) L+ c' L7 @; p/ ?! E3 Y2 A' I
+ E2 W* B) G: N( U) S( {( u6 c

1 R( E( K& W0 m. l
图:3分频
/ [$ _5 n; `3 ?& O

& L9 ?* g( i' A, L, T* Y: ]' ^3 N/ a* k

  v  H) z9 w* Y$ o' N3 \& [代码如下:
$ l' R/ d5 I/ O) t8 p9 b/ i+ y: w/ U; h4 B1 }6 @( Z
  • 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

  • ; U' P) K, z7 A$ b1 @+ s& I

: l( w( I; v9 R9 e1 k+ L, H* {% I[color=rgb(51, 102, 153) !important]复制代码
- F: s; X- P7 Y) B

9 B3 U; C! s0 [& T0 Z3 n4 {7 b4 I" D, t
9 Y% f0 a" z4 g3 N" u! N. t
. ?2 K' |( k- x& H; g二、非50%占空比的非整数分频
9 O8 n& a7 {6 q, v" Y4 r. L& V' b, s1 S5 E- j7 t/ Y
实现一个 4.5 倍分频,占空比为40%,不含毛刺。
# d2 c+ |1 ^* T( i; Z- y$ B, A
5 O, a' W7 H- l. Q2 }
图:4.5倍分频 40% 占空比

' k1 T, M& ~- F1 S7 d) B& A( v/ n% _6 Z2 N
代码如下:. K8 z( ?! _: @# \- [; G5 ]
  • 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
  • ( u' w) j# d9 v+ j( \) k

3 n9 [' r( ^' k9 Z9 J2 g+ E
7 i7 I8 _" F8 q  {

  N; Y$ f( R( |5 b5 ~# J" y. U$ J3 Q8 P8 w4 p1 L
* T/ d( e, h# S  e
三、小结0 f, A3 U1 J+ b, a( e( E+ h) R8 E3 V
4 Y+ B- ^: t" `
4 N: t$ S) G5 @( N. m
分频主要是对时钟的操作,以及计数器的实现。# k8 b. L1 }8 F6 e2 i5 ]
6 B8 F8 {9 A  J0 x
参考:   群聊天
) I  p( H! M9 G' Y" C# G3 a5 o   网络
" v1 a0 d2 ?+ ?《硬件架构的艺术》
" ^8 j% @, p9 w$ ~

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-7-31 05:57 , Processed in 0.109375 second(s), 23 queries , Gzip On.

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

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

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