verilog 信号值采样

需要做一个减速过程的速度段(va—vb)之间的时间测量,还需要采到最接近预定速度的两个值(稍大和稍小),下面是我编的一段程序,求大神看看错在哪了
always@(posedge clk or negedge RSTn)
begin
if( !RSTn )begin cnt1<=0;cnt2<=0;t1<=0;t2<=0;Va1<=0;Va2<=0;Vb1<=0;Vb2<=0;end//初始化
else
begin
if(V>Va)
begin Va1<=V;cnt1<=0;cnt2<=0;t1<=0;t2<=0;end
if(V>Vb&&V<Va)
begin
cnt1<=cnt1+1'b1;
case(cnt1)
1:Va2<=V;
default:Va2<=Va2;
endcase
Vb1<=V;
if(cnt2)t2<=t2+cnt2;
else t2<=t2;
cnt2<=0;
end
if(V<Vb)
begin
cnt2<=cnt2+1'b1;
t1<=cnt1+t2;
case(cnt2)
1:Vb2<=V;
default:Vb2<=Vb2;
endcase
Va1<=Va1;
Vb1<=Vb1;
end
end
end

第1个回答  2014-05-27
预定 速度是哪个,没看懂你的代码,直接比较当前速度和预定速度,如果当前速度大于预定速度就把当前速度赋值给速度寄存器a1(当速度小于预定速度的时候,不赋值,所以最后一个更新的应该是最接近预定速度的大速度),并且当前速度大于预定速度的标志位flag《=1;当速度刚刚小于预定速度的时候,flag《=0;vb0《=V;每个时钟有扫描一下flag,让flag_last<=flag;在判断速度刚刚小于预定速度的点就是flag_last==1,flag==0的时候,这个时候把vb0的值给到最近接预定速度的最小值寄存器Vb1中就好了,Va1和Vb1就是要求的两个速度值追问

我想问一下,我的V的频率是2ms,clk是1m的时钟,我不知道能不能采样。
你知不知道,[19:0]的V和同样是20位的Va比较,需要多少个时钟?
即if(V>Va)需要多少时钟完成判断?

追答

一个啊

追问

那就是说:
if(V>Va)
begin Va1<=V;cnt1<=0;cnt2<=0;t1<=0;t2<=0;end

需要6个时钟完成?

相似回答
大家正在搜