一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

用verilog語言寫的任意整數(shù)的分頻器

 小櫻業(yè)余書吧 2013-09-02

占空比:對(duì)于一串理想的脈沖序列中(如方波),正脈沖的持續(xù)時(shí)間與脈沖總周期的比值,叫做這個(gè)方波的占空比。

 

分頻分為奇分頻和偶分頻

第一,偶數(shù)倍分頻:偶數(shù)倍分頻應(yīng)該是大家都比較熟悉的分頻,通過計(jì)數(shù)器計(jì)數(shù)是完全可以實(shí)現(xiàn)的。如進(jìn)行N倍偶數(shù)分頻,那么可以通過由待分頻的時(shí)鐘觸發(fā) 計(jì)數(shù)器計(jì)數(shù),當(dāng)計(jì)數(shù)器從0計(jì)數(shù)到N/2-1時(shí),輸出時(shí)鐘進(jìn)行翻轉(zhuǎn),并給計(jì)數(shù)器一個(gè)復(fù)位信號(hào),使得下一個(gè)時(shí)鐘從零開始計(jì)數(shù)。以此循環(huán)下去。這種方法可以實(shí)現(xiàn) 任意的偶數(shù)分頻。

    第二:奇數(shù)倍分頻:奇數(shù)倍分頻常常在論壇上有人問起,實(shí)際上,奇數(shù)倍分頻有兩種實(shí)現(xiàn)方法:首先,完全可以通過計(jì)數(shù)器來實(shí)現(xiàn),如進(jìn)行三分頻,通過待分頻時(shí)鐘 上升沿觸發(fā)計(jì)數(shù)器進(jìn)行模三計(jì)數(shù),當(dāng)計(jì)數(shù)器計(jì)數(shù)到鄰近值進(jìn)行兩次翻轉(zhuǎn),比如可以在計(jì)數(shù)器計(jì)數(shù)到1時(shí),輸出時(shí)鐘進(jìn)行翻轉(zhuǎn),計(jì)數(shù)到2時(shí)再次進(jìn)行翻轉(zhuǎn)。即是在計(jì)數(shù) 值在鄰近的1和2進(jìn)行了兩次翻轉(zhuǎn)。這樣實(shí)現(xiàn)的三分頻占空比為1/3或者2/3。如果要實(shí)現(xiàn)占空比為50%的三分頻時(shí)鐘,可以通過待分頻時(shí)鐘下降沿觸發(fā)計(jì) 數(shù),和上升沿同樣的方法計(jì)數(shù)進(jìn)行三分頻,然后下降沿產(chǎn)生的三分頻時(shí)鐘和上升沿產(chǎn)生的時(shí)鐘進(jìn)行相或運(yùn)算,即可得到占空比為50%的三分頻時(shí)鐘。這種方法可以 實(shí)現(xiàn)任意的奇數(shù)分頻。歸類為一般的方法為:對(duì)于實(shí)現(xiàn)占空比為50%的N倍奇數(shù)分頻,首先進(jìn)行上升沿觸發(fā)進(jìn)行模N計(jì)數(shù),計(jì)數(shù)選定到某一個(gè)值進(jìn)行輸出時(shí)鐘翻 轉(zhuǎn),然后經(jīng)過(N-1)/2再次進(jìn)行翻轉(zhuǎn)得到一個(gè)占空比非50%奇數(shù)n分頻時(shí)鐘。再者同時(shí)進(jìn)行下降沿觸發(fā)的模N計(jì)數(shù),到和上升沿觸發(fā)輸出時(shí)鐘翻轉(zhuǎn)選定值相 同值時(shí),進(jìn)行輸出時(shí)鐘時(shí)鐘翻轉(zhuǎn),同樣經(jīng)過(N-1)/2時(shí),輸出時(shí)鐘再次翻轉(zhuǎn)生成占空比非50%的奇數(shù)n分頻時(shí)鐘。兩個(gè)占空比非50%的n分頻時(shí)鐘相或運(yùn) 算,得到占空比為50%的奇數(shù)n分頻時(shí)鐘。另外一種方法:對(duì)進(jìn)行奇數(shù)倍n分頻時(shí)鐘,首先進(jìn)行n/2分頻(帶小數(shù),即等于(n-1)/2+0.5),然后再 進(jìn)行二分頻得到。得到占空比為50%的奇數(shù)倍分頻。

     下面講講進(jìn)行小數(shù)分頻的設(shè)計(jì)方法:

     第三 ,小數(shù)分頻:首先講講如何進(jìn)行n+0.5分頻,這種分頻需要對(duì)輸入時(shí)鐘進(jìn)行操作。基本的設(shè)計(jì)思想:對(duì)于進(jìn)行n+0.5分頻,首先進(jìn)行模n的計(jì)數(shù),在計(jì)數(shù)到 n-1時(shí),輸出時(shí)鐘賦為‘1’,回到計(jì)數(shù)0時(shí),又賦為0,因此,可以知道,當(dāng)計(jì)數(shù)值為n-1時(shí),輸出時(shí)鐘才為1,因此,只要保持計(jì)數(shù)值n-1為半個(gè)輸入時(shí) 鐘周期,即實(shí)現(xiàn)了n+0.5分頻時(shí)鐘,因此保持n-1為半個(gè)時(shí)鐘周期即是一個(gè)難點(diǎn)。從中可以發(fā)現(xiàn),因?yàn)橛?jì)數(shù)器是通過時(shí)鐘上升沿計(jì)數(shù),因此可以在計(jì)數(shù)為n- 1時(shí)對(duì)計(jì)數(shù)觸發(fā)時(shí)鐘進(jìn)行翻轉(zhuǎn),那么時(shí)鐘的下降沿變成了上升沿。即在計(jì)數(shù)值為n-1期間的時(shí)鐘下降沿變成了上升沿,則計(jì)數(shù)值n-1只保持了半個(gè)時(shí)鐘周期,由 于時(shí)鐘翻轉(zhuǎn)下降沿變成上升沿,因此計(jì)數(shù)值變?yōu)?。因此,每產(chǎn)生一個(gè)n+0.5分頻時(shí)鐘的周期,觸發(fā)時(shí)鐘都是要翻轉(zhuǎn)一次。設(shè)計(jì)思路如下:

下面是任意正整數(shù)的分頻/*此時(shí)舉例是6倍頻*/

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
//divn.v / Verilog
module divn    (
input clk,
input rst_n,
output o_clk
);
parameter WIDTH = 3;
parameter N     = 6;
reg [WIDTH-1:0] cnt_p;// 上升沿計(jì)數(shù)單位
reg [WIDTH-1:0] cnt_n;// 下降沿計(jì)數(shù)單位
reg             clk_p;// 上升沿時(shí)鐘
reg             clk_n;// 下降沿時(shí)鐘
assign o_clk = (N == 1) ? clk :
               (N[0])   ? (clk_p | clk_n) : (clk_p);//其中N==1是判斷不分頻,N[0]是判斷是奇數(shù)還是偶數(shù),若為1則是奇數(shù)分頻,若是偶數(shù)則是偶數(shù)分頻。
         
always@(posedge clk or negedge rst_n) begin
if (!rst_n)
    cnt_p <= 0;
else if (cnt_p == (N-1))
    cnt_p <= 0;
else
    cnt_p <= cnt_p + 1;
end
always@(posedge clk or negedge rst_n) begin
if (!rst_n)
    clk_p <= 1;//此處設(shè)置為0也是可以的,這個(gè)沒有硬性的要求,不管是取0還是取1結(jié)果都是正確的。
else if (cnt_p < (N>>1))/*N整體向右移動(dòng)一位,最高位補(bǔ)零,其實(shí)就是N/2,不過在計(jì)算奇數(shù)的時(shí)候有很明顯的優(yōu)越性*/
    clk_p <= 1;
else
    clk_p <= 0;   
end
always@(negedge clk or negedge rst_n) begin
if (!rst_n)
    cnt_n <= 0;
else if (cnt_n == (N-1))
    cnt_n <= 0;
else
    cnt_n <= cnt_n + 1;
end
always@(negedge clk or negedge rst_n) begin
if (!rst_n)
    clk_n <= 1;
else if (cnt_n < (N>>1))
    clk_n <= 1;
else
    clk_n <= 0;
end
endmodule
testbench.v
divn_tb.v / Verilog
`timescale 1ns/10ps
module divn_tb;
reg clk;
reg rst_n;
wire o_clk;
divn u0 (
.clk(clk),
.rst_n(rst_n),
.o_clk(o_clk)
);
initial begin
clk   = 1'b1;
rst_n = 1'b1;
   #50 rst_n = 1'b1;/*這一步是一定要加上的,因?yàn)?,如果不加的話就等于沒有進(jìn)行初始化,輸出信息是沒有的,這一點(diǎn)已經(jīng)驗(yàn)證過了*/
end
// 50MHz clk
always #10 clk = ~clk;
endmodule

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    91一区国产中文字幕| 日本人妻熟女一区二区三区| 免费播放一区二区三区四区| 免费在线播放一区二区| 日韩精品免费一区三区| 青青操视频在线观看国产| 国产日韩欧美专区一区| 中文久久乱码一区二区| 午夜福利视频偷拍91| 日韩精品小视频在线观看| 日本三区不卡高清更新二区| 丝袜人妻夜夜爽一区二区三区| 久久亚洲精品成人国产| 国产精品激情对白一区二区| 中国日韩一级黄色大片| 日本国产欧美精品视频| 尹人大香蕉一级片免费看| 中文字幕av诱惑一区二区| 欧美尤物在线视频91| 亚洲一区二区精品免费| 五月婷婷缴情七月丁香 | 中文字幕欧美视频二区| 成人午夜视频在线播放| 久久免费精品拍拍一区二区| 99久久人妻中文字幕| 国产又粗又硬又大又爽的视频| 黄片免费播放一区二区| 欧洲偷拍视频中文字幕| 日韩精品区欧美在线一区| 国产一区欧美午夜福利| 国产又粗又长又大高潮视频 | 欧美国产日产综合精品| 天海翼精品久久中文字幕| 出差被公高潮久久中文字幕| 免费精品一区二区三区| 国产av一区二区三区久久不卡| 老司机精品一区二区三区| 国产成人精品综合久久久看| 91偷拍视频久久精品| 大尺度剧情国产在线视频| 91久久精品在这里色伊人|