在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

一個時鐘異步切換原理圖

454398 ? 來源:博客園 ? 作者: poiu_elab ? 2020-11-10 15:06 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

原理如下圖(為了方便簡潔,去掉了rst_n)

波形是這樣的

代碼就是根據電路圖寫的

 1 ///////////////////////////////////////////////////////////////////////////////////////////
 2 //  DATE    :   Wed Jun  6 23:31:57 CST 2012
 3 ///////////////////////////////////////////////////////////////////////////////////////////
 4 module clk_sw(
 5     input   wire    clk_a
 6 ,   input   wire    clk_b
 7 ,   input   wire    rst_n
 8 ,   input   wire    sel
 9 ,   output  wire    clk_o
10 );
11 ///////////////////////////////////////////////////////////////////////////////////////////
12 // variable declaration
13 reg     clk_a_en ;
14 reg     clk_b_en ;
15 ///////////////////////////////////////////////////////////////////////////////////////////
16 // logic
17 always @(posedge clk_a or negedge rst_n) begin
18     if(~rst_n)                          clk_a_en     <=  1'b0               ;
19     else                                clk_a_en     <=  ~sel & ~clk_b_en   ;
20 end
21 always @(posedge clk_b or negedge rst_n) begin
22     if(~rst_n)                          clk_b_en     <=  1'b0               ;
23     else                                clk_b_en     <=  sel  & ~clk_a_en   ;
24 end
25 assign  clk_o   =   (clk_a & clk_a_en) | (clk_b & clk_b_en) ;
26 ///////////////////////////////////////////////////////////////////////////////////////////
27 
28 endmodule   //          CREATED by poiu_elab@1207
29 
30 ///////////////////////////////////////////////////////////////////////////////////////////

testbench是這樣的

 1 ///////////////////////////////////////////////////////////////////////////////////////////
 2 //  DATE    :   Wed Jun  6 23:42:58 CST 2012
 3 ///////////////////////////////////////////////////////////////////////////////////////////
 4 `define CLK_A_CYCLE   23
 5 `define CLK_B_CYCLE   47
 6 module tb();
 7 ///////////////////////////////////////////////////////////////////////////////////////////
 8 // variable declaration
 9 reg     clk_a   ;
10 reg     clk_b   ;
11 reg     rst_n   ;
12 reg     sel     ;
13 wire    clk_o   ;
14 ///////////////////////////////////////////////////////////////////////////////////////////
15 // stimulation generation
16 initial forever #(`CLK_A_CYCLE/2) clk_a = ~clk_a;
17 initial forever #(`CLK_B_CYCLE/2) clk_b = ~clk_b;
18 initial begin
19     rst_n           =   1'b0            ;
20     clk_a           =   1'b1            ;
21     clk_b           =   1'b1            ;
22     sel             =   1'b0            ;
23 #500;
24     rst_n           =   1'b1            ;
25 #500;
26 #({$random}%13+500);
27     sel             =   ~sel            ;
28 #({$random}%23+500);
29     sel             =   ~sel            ;
30 #({$random}%33+500);
31     sel             =   ~sel            ;
32 #({$random}%43+500);
33     sel             =   ~sel            ;
34 #({$random}%53+500);
35     sel             =   ~sel            ;
36 #({$random}%63+500);
37     sel             =   ~sel            ;
38 #({$random}%73+500);
39     sel             =   ~sel            ;
40 #({$random}%83+500);
41     sel             =   ~sel            ;
42 #({$random}%93+500);
43     sel             =   ~sel            ;
44 #({$random}%13+500);
45     sel             =   ~sel            ;
46 #({$random}%23+500);
47     sel             =   ~sel            ;
48 #({$random}%33+500);
49     sel             =   ~sel            ;
50 #({$random}%43+500);
51     sel             =   ~sel            ;
52 #({$random}%53+500);
53     sel             =   ~sel            ;
54 #({$random}%63+500);
55     sel             =   ~sel            ;
56 #({$random}%73+500);
57     sel             =   ~sel            ;
58 #({$random}%83+500);
59     sel             =   ~sel            ;
60 #({$random}%93+500);
61     sel             =   ~sel            ;
62 #5000;
63 $stop;
64 end
65 ///////////////////////////////////////////////////////////////////////////////////////////
66 // module instaniation
67 clk_sw u_clk_sw(
68     .clk_a  (   clk_a   )
69 ,   .clk_b  (   clk_b   )
70 ,   .rst_n  (   rst_n   )
71 ,   .sel    (   sel     )
72 ,   .clk_o  (   clk_o   )
73 );
74 ///////////////////////////////////////////////////////////////////////////////////////////
75 
76 endmodule   //          CREATED by poiu_elab@1207
77 
78 ///////////////////////////////////////////////////////////////////////////////////////////

這里的核心就是你的sel發生翻轉的時候,首先肯定是在本時鐘域內的clk_en會先變低(invalid),之后才會使得另外時鐘域內的clk_en變高(valid),這時另外一個時鐘域內的時鐘才能和clk_en相與輸出。

簡而言之,比如一開始是clk_a有效,clk_out為clk_a,sel翻轉后,clk_a_en在clk_a的時鐘域內先關斷(拉低),使得clk_out持續拉低,clk_a_en變低后,clk_b_en在clk_b的時鐘域內才能被拉高有效,這時同步的clk_b_en信號與clk_b相與就能使得clk_out成功切換到clk_b了。

原理就是這樣,其中clk_a_en和clk_b_en不會同時有效就避免了時鐘切換的時候窄脈沖及毛刺的生成,但是我覺得由于是組合邏輯輸出的時鐘總歸還是會有一些缺點和不足的。不知道有沒有什么更好的辦法。
編輯:hfy

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 時鐘
    +關注

    關注

    11

    文章

    1893

    瀏覽量

    133070
  • 波形
    +關注

    關注

    3

    文章

    390

    瀏覽量

    32271
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    異步時鐘切換電路

    異步時鐘切換電路
    發表于 05-08 09:40 ?5953次閱讀
    <b class='flag-5'>異步</b><b class='flag-5'>時鐘</b><b class='flag-5'>切換</b>電路

    時鐘設計中時鐘切換電路設計案例

    在多時鐘設計中可能需要進行時鐘切換。由于時鐘之間可能存在相位、頻率等差異,直接切換時鐘可能導致
    的頭像 發表于 09-24 11:20 ?6032次閱讀
    多<b class='flag-5'>時鐘</b>設計中<b class='flag-5'>時鐘</b><b class='flag-5'>切換</b>電路設計案例

    數字時鐘原理圖

    新手,懇求各位高手給數字時鐘原理圖,最好能夠給PCB
    發表于 11-10 10:18

    LDB時鐘切換程序與i.MX6異步時鐘切換指導手冊

    LDB時鐘切換程序與i.MX6異步時鐘切換指南
    發表于 12-13 07:22

    單片機時鐘電路原理圖

    單片機時鐘電路原理圖 下面以實際的時鐘電路來說明定時器的軟件編程方法,時鐘是最為常見的顯示
    發表于 03-14 14:25 ?1.7w次閱讀
    單片機<b class='flag-5'>時鐘</b>電路<b class='flag-5'>原理圖</b>

    相對與同步切換異步切換會對切換掉話率有多少影響

    相對與同步切換異步切換會對切換掉話率有多少影響 同步切換需要網絡中的基站間同步,異步
    發表于 06-18 00:13 ?967次閱讀

    利用光MOS的信號切換電路原理圖

    利用光MOS的信號切換電路原理圖
    發表于 08-15 17:43 ?2165次閱讀
    利用光MOS的信號<b class='flag-5'>切換</b>電路<b class='flag-5'>原理圖</b>

    自制視頻切換器的工作原理圖

    自制視頻切換器的工作原理圖 電路原理見下圖。電路的核心是塊視頻切換電路MAX4
    發表于 03-24 15:16 ?4460次閱讀
    自制視頻<b class='flag-5'>切換</b>器的工作<b class='flag-5'>原理圖</b>

    FPGA異步時鐘設計中的同步策略

    FPGA 異步時鐘設計中如何避免亞穩態的產生是必須考慮的問題。本文介紹了FPGA 異步時鐘
    發表于 12-20 17:08 ?63次下載
    FPGA<b class='flag-5'>異步</b><b class='flag-5'>時鐘</b>設計中的同步策略

    數字時鐘電路設計原理圖pcb

    數字時鐘電路設計原理圖pcb ,包含整個設計
    發表于 12-07 11:38 ?309次下載

    DS1302時鐘模塊原理圖

    ds1302時鐘芯片簡單介紹及其原理圖
    發表于 04-06 16:01 ?16次下載

    雙電源自動切換控制原理圖

    雙電源自動切換控制原理圖
    發表于 09-11 10:19 ?43次下載
    雙電源自動<b class='flag-5'>切換</b>控制<b class='flag-5'>原理圖</b>

    毛刺在時鐘切換電路的影響及其防止措施的介紹

    對于時鐘切換電路,輸入兩異步時鐘 clk0、c
    發表于 09-29 16:36 ?9次下載
    毛刺在<b class='flag-5'>時鐘</b><b class='flag-5'>切換</b>電路的影響及其防止措施的介紹

    電源自動切換的電路原理圖免費下載

    本文檔的主要內容詳細介紹的是電源自動切換的電路原理圖免費下載。
    發表于 11-12 08:00 ?66次下載
    電源自動<b class='flag-5'>切換</b>的電路<b class='flag-5'>原理圖</b>免費下載

    單項可控硅直流切換電路1原理圖

    單項可控硅直流切換電路1原理圖
    發表于 02-09 13:51 ?23次下載
    主站蜘蛛池模板: 欧洲成品大片在线播放 | 永井玛丽亚中文在线观看视频 | 日本zzzwww大片免费 | 中文字幕一区在线观看 | 欧美色综合高清视频在线 | 国产亚洲精品成人一区看片 | 天天插狠狠干 | 狠狠色噜噜狠狠狠97影音先锋 | 婷婷五月在线视频 | 欧美成人精品欧美一级乱黄 | 欧美男人的天堂 | 老师下面好湿好紧好滑好想要 | 18免费视频| 久久国产精品免费网站 | 中文4480yy私人免费影院 | 综合伊人| 国产成人精品一区二区仙踪林 | 欧美国产精品主播一区 | 天天操夜夜嗨 | 爆操极品美女 | 亚洲日本久久久午夜精品 | 免费在线观看的视频 | 四虎新地址 | 国产乱码1卡一卡二卡 | 午夜影院普通用户体验区 | 成人午夜毛片 | 亚洲国产精品丝袜在线观看 | 午夜色站 | 婷婷综合激情 | 午夜神马嘿嘿 | 国产ccc| 噜色| 色五丁香 | 天天插天天干天天操 | 曰本女人一级毛片看一级毛 | 婷婷丁香综合 | 色天使网 | 国产片无遮挡在线看床戏 | 一区二区三区欧美在线 | 久久久噜噜噜久久久午夜 | 狠狠色综合色综合网络 |