|
這是我的代碼,目的是設計一個同步捕獲的計數器用來測頻,大家看看能行嗎
- 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個時鐘還是多個時鐘?
|
|