本文介紹常見的電路——計(jì)數(shù)器,然后我們由計(jì)數(shù)器電路講解到分頻電路。
一、計(jì)數(shù)器
(1)計(jì)數(shù)器代碼
計(jì)數(shù)器,顧名思義就是在時(shí)鐘的節(jié)拍下進(jìn)行計(jì)數(shù),一個(gè)簡單的N位計(jì)數(shù)器的代碼如下所示,這個(gè)計(jì)數(shù)器從0計(jì)數(shù)到2^N - 1(共計(jì)數(shù)了2^N個(gè)數(shù),也就是N位計(jì)數(shù)器):
1 module count#(parameter N=8)( 2 input clk, 3 input clear, 4 output[N-1:0] cnt_Q 5 ); 6 reg[N-1:0] cnt; 7 assign cnt_Q = cnt; 8 9 always@(posedge clk)10 if(clear)11 cnt <= 'h0; //同步清 0,高電平有效12 else13 cnt <= cnt+1'b1; //加法計(jì)數(shù)14 15 endmodule
上述描述的計(jì)數(shù)器通過 clear 信號(hào)清除計(jì)數(shù)值,然后下一周期開始加 1 計(jì)數(shù);當(dāng)計(jì)數(shù)器計(jì)到能夠存儲(chǔ)的最大數(shù)值時(shí), 例如本例為 8 個(gè) 1,即 8'hff 就會(huì)自動(dòng)回到 0,然后開始下一輪計(jì)數(shù)。
綜合得帶的電路如下所示: