|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
我想要在A_IN的下降沿开始,' k$ K9 Z! t" A% _5 N) ^+ b, e, Y- T
给A_REG清零,然后每次来一个CLK的上升沿(不管A_IN的状态,只要CLLK上升),就给A_REG + 1。) o( | Z% D, K
请问怎么做?
0 i' r+ k6 h' J/ c以下做法可以吗?/ l4 u4 M3 w. |: i
always @( negedge A_in )0 j3 h) a2 p& O2 G/ I& c
begin3 T2 D* \+ r* P
A_reg <= 16'h0;
- j9 e" m' u3 m3 |if (A_reg[15:0] == 16'hffff) B_reg <=1'h1;
9 J' A. ?2 I$ T; c, ?else# |/ A" o& Z1 s9 w. h4 A
begin
& w2 O6 K7 a6 b6 Q, _A_reg <= A_reg + 1;
& B* D+ N: k9 e# X0 \4 q# G* `B_reg <=1'h0;; |7 F4 V: y" n% @+ D3 Q$ X2 z8 s
end
% H9 O/ E9 G$ d, e" i: bend8 n6 {2 x2 @! D7 q
/ @. \$ @9 n r: R. c
但里面没有clk....
7 V5 W0 k7 t- X; l* @) [, _若always里面加入clk,又会每次clk都给清零了;# R, R- h; K, S9 ]' R
if里面又不能放“沿”做条件...7 O1 {# y2 p8 M7 e$ V: {
是指当两个值不等,就判断为“沿”吗?
! D) Q( O7 I) n那么你的意思就是把always里面换为clk吧?
* X, Z& I# Y8 z这样理论上应该可以做到两个沿放一起,可是cpld内部从输入到赋值就很快,判断时所需要的时间应该是和赋值的时间一样的,我想,这样就永远判断不到这个“沿”的产生吧?
; M( k s% v( k h% ]1 w5 T5 W8 |/ T4 O8 B: }8 d" ]9 m
目的是以下两种情况都形成一个结果(不受干扰)
6 D: W; r. |: \9 d% I6 G! @. ^" X_ _ _ _ _ _ _ _ _ _7 j- p, L' H) U y3 w! D
clk _/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_: X* g/ E X0 T$ d
3 j( }$ N4 x; D! M# u
__________ ____________' E/ C+ u3 } C5 ^
AIN1 \________________/ A_reg= A_reg+1
/ V- v/ e( B8 U: H. {8 J& S; O" G7 k6 p$ e; e' o( a8 {' C4 I
_______ __ _ ____
& g6 G$ n; p! B5 l wAIN2 \___/ \______________/ \___/ A_reg= A_reg+1/ _' q! C; t; m* A u7 G! c* X
|
|