找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

巢课
电巢直播8月计划
查看: 791|回复: 1
打印 上一主题 下一主题

VHDL编程心得------多余时钟的引入 问题

[复制链接]

6

主题

30

帖子

144

积分

二级会员(20)

Rank: 2Rank: 2

积分
144
跳转到指定楼层
1#
发表于 2012-3-2 09:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您!

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

x
多余时钟的引入
6 O; a0 w7 n# f9 ~* T在设计时往往会遇到这种情况,需要对外部某个输入信号进行判断,当其出现上跳或下跳沿
" ]: G6 l' ^% `2 d! O时,执行相应的操作,而该信号不像正常时钟那样具有固定占空比和周期,而是很随机,需; f5 K! {+ u, `0 M; F) ]
要程序设计判断其上跳沿出现与否。这时,很容易写出如下程序:
6 _* c3 d- j: `7 Q+ v①  process(Ctl_a) -- Ctl_a 即为该输入信号 # @  e( ]2 w& g7 g- u: X" f% Z6 i
② begin / H# Q# F2 f" Z% B- U( b6 a
③ if Ctl_a ’event and Ctl_a= ’1 ’ then
1 J0 ]' A+ V9 q/ d" j9 H- N: s: {. O④  …  … ; -- 执行相应操作
( F+ I) H* |) y' h$ i; H⑤ end if ;
# k) ^5 i! K3 T" w& B/ s⑥ end process;
0 @; Y" o, i3 |0 D5 r8 N! G8 R8 |由于出现第③行这类语句,综合工具自动默认 Ctl_a为时钟,某些 FPGA 更会强行将该输入( Y2 b' H0 B. a- r' Y" s
约束到时钟引脚上。而设计者的初衷只是想将其作为下位机的状态输入以进行判断。上面的
+ f- Q2 a) k4 {! N& Y程序容易造成多时钟现象,增加设计的难度。解决的办法可以如下,将 Ctl_a增加一级状态  x' V( c1 D4 m
Ctl_areg 寄存,通过对 Ctl_a和Ctl_areg 状态判断上跳与否,改正程序如下:
+ Q2 k7 `6 k  B" ~7 M( U0 F7 H① process(clk) % Q# N2 `; j1 b  }  ]
② begin & w6 J/ j; ?# \# z7 N" W# h) Y& B
③ if clk ’event and clk= ’1 ’ then 0 O7 a' N7 G1 _4 z2 K) T: o: X. `* t
④ Ctl_areg<=Ctl_a;--产生相邻状态 0 i3 B2 ^% J1 c: T5 o4 ^. I
⑤ if Ctl_areg=’0 ’ and Ctl_a= ’1 ’ then-- 上跳判断 8 n: p! N9 f* ~4 @+ M) x! b
⑥  …  … ; -- 执行相应操作 % N5 B# Q. l9 a- g- ^" W
⑦ end if;
2 j9 f' {* {5 ?3 G2 R! G⑧ end if; : |1 s1 G# @4 M: t& Y0 u
⑨ end process; 7 P  N' H* g+ ?! B
程序中第④行用以产生两个相邻状态,第⑤行对前后状态进行判断是否有上跳现象发生。其
) L. R' {$ g7 @$ y5 r/ b中,需注意的是clk 的时钟频率应明显快于 Ctl_a信号的变化频率,以保证正确采样。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 支持!支持! 反对!反对!

0

主题

18

帖子

8

积分

初级新手(9)

Rank: 1

积分
8
2#
发表于 2012-3-3 10:45 | 只看该作者
看了  也懂了点   步奏  挺明了的   支持一下  楼主的分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

巢课

技术风云榜

关于我们|手机版|EDA365 ( 粤ICP备18020198号 )

GMT+8, 2024-11-28 04:07 , Processed in 0.118393 second(s), 33 queries , Gzip On.

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

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

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