1、偶數(shù)分頻
- 方法
直接使用計(jì)數(shù)器實(shí)現(xiàn),在計(jì)數(shù)一半時(shí)將時(shí)鐘翻轉(zhuǎn)即可;
- 4 分頻示例
1module clk_div_even
2#(
3 parameter DIV = 4
4)
5(
6 input clk,
7 input rstn,
8 output reg clko
9);
10
11reg [DIV/2-1:0] cnt;
12
13always @(posedge clk or negedge rstn)
14begin
15 if(!rstn) begin
16 cnt <= 0;
17 clko <= 0;
18 end else begin
19 if(cnt == (DIV/2 - 1)) begin
20 clko <= ~clko;
21 cnt <= 0;
22 end else begin
23 cnt <= cnt + 1;
24 end
25 end
26end
27
28endmodule
- 仿真波形:
2、奇數(shù)分頻
- 非 50% 占空比
使用計(jì)數(shù)器,當(dāng)計(jì)數(shù)到一半時(shí)候進(jìn)行翻轉(zhuǎn)時(shí)鐘,當(dāng)計(jì)數(shù)到分頻值時(shí)候再次翻轉(zhuǎn);
1module clk_div_odd1
2#(
3 parameter DIV = 5
4)
5(
6 input clk,
7 input rstn,
8 output reg clko
9);
10
11reg [DIV-1:0] cnt;
12
13always @(posedge clk or negedge rstn)
14begin
15 if(!rstn) begin
16 cnt <= 0;
17 end else begin
18 if(cnt == (DIV-1)) begin
19 cnt <= 0;
20 end
21 else begin
22 cnt <= cnt + 1;
23 end
24 end
25end
26
27always @(posedge clk or negedge rstn)
28begin
29 if(!rstn) begin
30 clko <= 1'b0;
31 end else begin
32 if(cnt == (DIV-1)/2) begin
33 clko <= ~clko;
34 end
35 else if(cnt == (DIV -1)) begin
36 clko <= ~clko;
37 end
38 else begin
39 clko <= clko;
40 end
41 end
42end
43
44endmodule
仿真波形:
- 50% 占空比
上升沿和下降沿分別做分頻,將結(jié)果進(jìn)行或操作即可;
1module clk_div_odd2
2#(
3 parameter DIV = 5
4)
5(
6 input clk,
7 input rstn,
8 output clko
9);
10
11//posedge clk
12reg [DIV-1:0] pos_cnt;
13reg pos_clk;
14
15always @(posedge clk or negedge rstn)
16begin
17 if(!rstn) begin
18 pos_cnt <= 0;
19 end else begin
20 if(pos_cnt == (DIV-1)) begin
21 pos_cnt <= 0;
22 end else begin
23 pos_cnt <= pos_cnt + 1;
24 end
25 end
26end
27
28always @(posedge clk or negedge rstn)
29begin
30 if(!rstn) begin
31 pos_clk <= 0;
32 end else begin
33 if(pos_cnt == (DIV-1)/2) begin
34 pos_clk <= ~pos_clk;
35 end
36 else if(pos_cnt == (DIV-1)) begin
37 pos_clk <= ~pos_clk;
38 end
39 else begin
40 pos_clk <= pos_clk;
41 end
42 end
43end
44
45//negedge clk
46reg [DIV-1:0] neg_cnt;
47reg neg_clk;
48
49always @(negedge clk or negedge rstn)
50begin
51 if(!rstn) begin
52 neg_cnt <= 0;
53 end else begin
54 if(neg_cnt == (DIV-1)) begin
55 neg_cnt <= 0;
56 end else begin
57 neg_cnt <= neg_cnt + 1;
58 end
59 end
60end
61
62always @(negedge clk or negedge rstn)
63begin
64 if(!rstn) begin
65 neg_clk <= 0;
66 end else begin
67 if(neg_cnt == (DIV-1)/2) begin
68 neg_clk <= ~neg_clk;
69 end
70 else if(neg_cnt == (DIV-1)) begin
71 neg_clk <= ~neg_clk;
72 end
73 else begin
74 neg_clk <= neg_clk;
75 end
76 end
77end
78
79//clk output
80assign clko = pos_clk | neg_clk;
81
82endmodule
仿真波形:
3、小數(shù)分頻
以設(shè)計(jì)2.6分頻為例;
- 方法:
(1)將小數(shù)取分?jǐn)?shù)形式,即 2.6 = 13/5;
(2)因?yàn)?.6在2~3之間,因此可以使用2分頻和3分頻組合實(shí)現(xiàn);
(3)由如下方程進(jìn)行設(shè)計(jì):
1x + y = 5
22x + 3y = 13
求得 x = 2, y = 3
, 即使用2個(gè)2分頻和3個(gè)3分頻時(shí)鐘實(shí)現(xiàn)2.6分頻;
(4)設(shè)計(jì)總計(jì)數(shù)器,范圍為 013 計(jì)數(shù),那么在 04范圍內(nèi)進(jìn)行2分頻的計(jì)數(shù),在5~13范圍內(nèi)進(jìn)行3分頻的計(jì)數(shù),然后根據(jù)計(jì)數(shù)生成需要的時(shí)鐘;
(5)
- Verilog實(shí)現(xiàn):
1//clk divider: 2.5 , M/N = 13/5
2module clk_div_mn
3#(
4 parameter M = 13,
5 parameter N = 5
6)
7(
8 input clk,
9 input rstn,
10 output reg clko
11);
12
13parameter DIV_M = 2;
14parameter DIV_N = 3;
15
16reg [3:0] cnt;
17always @(posedge clk or negedge rstn)
18begin
19 if(!rstn) begin
20 cnt <= 0;
21 end else begin
22 if(cnt == (M-1)) begin
23 cnt <= 0;
24 end else begin
25 cnt <= cnt + 1;
26 end
27 end
28end
29
30reg [3:0] cnt2;
31reg [3:0] cnt3;
32
33parameter CHANGE = 4;
34
35always @(posedge clk or negedge rstn)
36begin
37 if(!rstn) begin
38 cnt2 <= 0;
39 cnt3 <= 0;
40 end else begin
41 if(cnt <= (CHANGE-1)) begin
42 cnt3 <= 0;
43 if(cnt2 == (DIV_M-1)) begin
44 cnt2 <= 0;
45 end else begin
46 cnt2 <= cnt2 + 1;
47 end
48 end
49 else if(cnt > (CHANGE -1)) begin
50 cnt2 <= 0;
51 if(cnt3 == (DIV_N -1)) begin
52 cnt3 <= 0;
53 end else begin
54 cnt3 <= cnt3 + 1;
55 end
56 end
57 end
58end
59
60always @(posedge clk or negedge rstn)
61begin
62 if(!rstn) begin
63 clko <= 0;
64 end else begin
65 if(cnt < CHANGE) begin
66 if(cnt2 == 0 || cnt2 == DIV_M/2) begin
67 clko <= ~clko;
68 end
69 else begin
70 clko <= clko;
71 end
72 end
73 else begin
74 if(cnt3 == 0 || cnt3 == (DIV_N-1)/2) begin
75 clko <= ~clko;
76 end
77 else begin
78 clko <= clko;
79 end
80 end
81 end
82end
83
84endmodule
- 仿真波形:
-
電路設(shè)計(jì)
+關(guān)注
關(guān)注
6701文章
2531瀏覽量
213754 -
仿真
+關(guān)注
關(guān)注
51文章
4251瀏覽量
135463 -
Verilog
+關(guān)注
關(guān)注
29文章
1366瀏覽量
112002 -
計(jì)數(shù)器
+關(guān)注
關(guān)注
32文章
2290瀏覽量
96174 -
分頻電路
+關(guān)注
關(guān)注
7文章
45瀏覽量
36194
發(fā)布評(píng)論請(qǐng)先 登錄
CPLD epm7128時(shí)鐘電路,分頻電路設(shè)計(jì)
下載:《ADS應(yīng)用詳解-射頻電路設(shè)計(jì)與仿真》
基于LabVIEW的數(shù)字電路設(shè)計(jì)和仿真
FPGA實(shí)現(xiàn)小數(shù)分頻器

ADS2008射頻電路設(shè)計(jì)與仿真實(shí)例
電路設(shè)計(jì)與仿真技術(shù)
Multisim電路設(shè)計(jì)與仿真
數(shù)字家庭網(wǎng)關(guān)射頻濾波電路設(shè)計(jì)與仿真
乘法器電路設(shè)計(jì)方案匯總(五款模擬電路設(shè)計(jì)原理及仿真程序分享)

電子分頻器電路圖大全(六款電子分頻器電路設(shè)計(jì)原理圖詳解)

淺談FPGA設(shè)計(jì)中分頻電路設(shè)計(jì)
射頻PCB電路設(shè)計(jì)與仿真案例

評(píng)論