|
这是我的代码,目的是设计一个同步捕获的计数器用来测频,大家看看能行吗
- always@(posedge clk or negedge rest or negedge softrest)//1s分频,clk为系统时钟,rest硬件复位,softrest软件复位
- if((!rest)||(!softrest)) fre_1Hz<=0;
- else if(fre_1Hz<50000000-1) fre_1Hz<=fre_1Hz+1;
- else fre_1Hz<=0;
- always@(fre_1Hz)
- if(fre_1Hz==50000000-1) fre_1Hz_flag=1;
- else fre_1Hz_flag=0;
- always@(posedge fre1 or posedge clk negedge rest or negedge softrest)//fre1为捕获端口
- if((!rest)||(!softrest)) fre_cnt1<=0;
- else if(clk)
- if(!fre_1Hz_flag) fre_cnt1<=fre_cnt1+1;
- else
- begin
- {fre1buf[4],fre1buf[3],fre1buf[2],fre1buf[1],fre1buf[0]}<={{2'b01,fre_cnt1[24:20],2'b01},{2'b01,fre_cnt1[19:15],2'b01},{2'b01,fre_cnt1[14:10],2'b01},{2'b01,fre_cnt1[9:5],2'b01},{2'b01,fre_cnt1[4:0],2'b01}};//编码发送
- fre_cnt1<=0;//计数清零
- end
复制代码
我就是第三个always弄不清楚,编码是发生在fre1的上升沿,还是说在clk的上升沿就发生,计数清零又是发生在什么时候?我一直都是begin end中的时序不太明白,begin end中若是有多条语句,则执行一次begin end需要的是1个时钟还是多个时钟?
|
|