校招Verilog——單bit快慢時鍾域切換(脈沖展寬法)


 1 module Sync_Pulse
 2 (
 3     input   clka,
 4     input   clkb,
 5     input   rst_n,
 6     input   pulse_ina,      //脈沖或電平信號都可以
 7     output  pulse_outb,     //脈沖信號
 8     output  signal_outb     //電平信號
 9 );
10 //--------------------------------------------------------
11 reg         signal_a;
12 reg         signal_a_r1;
13 reg         signal_a_r2;
14 reg         signal_b;
15 reg         signal_b_r1;
16 //--------------------------------------------------------
17 //--    a時鍾域生成展寬信號
18 //--------------------------------------------------------
19 always @(posedge clka or negedge rst_n)begin
20     if(!rst_n)begin
21         signal_a <= 1'b0;
22     end
23     else if(pulse_ina) begin        //檢測到脈沖
24         signal_a <= 1'b1;           //拉高
25     end
26     else if(signal_a_r2) begin      //同步到b后同步回a
27         signal_a <= 1'b0;           //拉低,展寬使命完成
28     end
29 end
30 //--------------------------------------------------------
31 //--    展寬信號同步到b時鍾域再同步回a時鍾域
32 //--------------------------------------------------------
33 always @(posedge clkb or negedge rst_n)begin
34     if(!rst_n)begin
35         signal_b    <= 1'b0;
36         signal_b_r1 <= 1'b0;
37     end
38     else begin
39         signal_b    <= signal_a;
40         signal_b_r1 <= signal_b;
41     end
42 end
43 
44 always @(posedge clka or negedge rst_n)begin
45     if(!rst_n)begin
46         signal_a_r1 <= 1'b0;
47         signal_a_r2 <= 1'b0;
48     end
49     else begin
50         signal_a_r1 <= signal_b_r1;
51         signal_a_r2 <= signal_a_r1;
52     end
53 end
54 //--------------------------------------------------------
55 //--    脈沖信號輸出,上升沿檢測
56 //--------------------------------------------------------
57 assign pulse_outb = ~signal_b_r1 & signal_b;
58 //--------------------------------------------------------
59 //--    電平信號輸出,b時鍾域展寬信號
60 //--------------------------------------------------------
61 assign signal_outb = signal_b_r1;
62 
63 
64 endmodule

 

這個代碼建議背出來,看不太懂就自己仿真看看吧!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM