一個數(shù)字倍頻電路
這個就是原理圖,奉上代碼
1 ///////////////////////////////////////////////////////////////////////////// 2 // DATE : Wed Jun 6 22:58:17 CST 2012 3 ///////////////////////////////////////////////////////////////////////////// 4 module clk_mul( 5 input wire clk 6 , input wire rst_n 7 , output wire clk_out 8 ); 9 ////////////////////////////////////////////////////////////////////////////// 10 // variable declaration 11 reg temp_mul ; 12 ////////////////////////////////////////////////////////////////////////////// 13 // logic 14 always @(posedge clk_out or negedge rst_n) begin 15 if(~rst_n) temp_mul <= 1'b0 ; 16 else temp_mul <= #2 ~temp_mul ; 17 end 18 assign clk_out = ~(clk ^ ~temp_mul) ; 19 ////////////////////////////////////////////////////////////////////////////// 20 21 endmodule // CREATED by poiu_elab@1207 22 23 //////////////////////////////////////////////////////////////////////////////
這個東西很簡單的,但是要注意,它的核心是第16行的#2,這里的延時(占空比)可以通過電路的Tco和經(jīng)過反相器的時間來搞定(其中可以插入一些buffer來調(diào)節(jié)時間),testbench這么來寫(很簡單,但是便于下面解釋延時對占空比的影響還是附上)。
1 /////////////////////////////////////////////////////////////////////////////// 2 // DATE : Wed Jun 6 23:00:31 CST 2012 3 /////////////////////////////////////////////////////////////////////////////// 4 `define CLK_CYCLE 20 5 module tb(); 6 /////////////////////////////////////////////////////////////////////////////// 7 // variable declaration 8 reg clk ; 9 reg rst_n ; 10 wire clk_out ; 11 /////////////////////////////////////////////////////////////////////////////// 12 // stimulation generation 13 initial forever #(`CLK_CYCLE/2) clk = ~clk; 14 initial begin 15 rst_n = 1'b0 ; 16 clk = 1'b1 ; 17 #500; 18 rst_n = 1'b1 ; 19 #5000; 20 $stop; 21 end 22 /////////////////////////////////////////////////////////////////////////////// 23 // module instaniation 24 clk_mul u_clk_mul( 25 .clk ( clk ) 26 , .rst_n ( rst_n ) 27 , .clk_out ( clk_out ) 28 ); 29 /////////////////////////////////////////////////////////////////////////////// 30 31 endmodule // CREATED by poiu_elab@1207 32 33 ///////////////////////////////////////////////////////////////////////////////
下面給出仿真圖,當(dāng)#2的時候,是這樣的,其中你要關(guān)心的其實是~temp_mul & clk, 當(dāng)你要是q端經(jīng)過反相器的信號與接入的clk信號相同的時候你的clk_out就會起來,之后你的q端翻轉(zhuǎn)了的話,你的clk_out就會落下來,這時候在下一個clk翻轉(zhuǎn)的時候,你的~temp_mul & clk就會又要把clk_out拉起來,q端又翻轉(zhuǎn),以此類推,就可以繼續(xù)在每個clk的跳變沿出現(xiàn)你的clk_out的高電平,調(diào)整你的Tco和反相器延時就可以調(diào)整你的高電平時間,由于周期又是固定的,這樣就可以調(diào)整你的占空比。
而當(dāng)#5的時候,是這樣的
看出什么端倪了沒,當(dāng)你的延時,正好是時鐘周期的1/4的時候,你就可以得到一個占空比是50%的2倍頻時鐘。
編輯:hfy
-
反相器
+關(guān)注
關(guān)注
6文章
311瀏覽量
43289 -
倍頻電路
+關(guān)注
關(guān)注
4文章
12瀏覽量
32510
發(fā)布評論請先 登錄
相關(guān)推薦
評論