<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                head.v的內容如下 ```verilog //提取信號的邊沿 module GetP(clk,rst_n,din,qp,qn); input clk,din,rst_n; output qp,qn; reg f1,f2; assign qp = f1 & ~f2; assign qn = ~f1 & f2; always@(posedge clk)begin if(!rst_n)begin f1 <= 1'b0; f2 <= 1'b0; end else begin f1 <= din; f2 <= f1; end end endmodule // ******************************************************************** // Description :任意整數時鐘分頻 // -------------------------------------------------------------------- module divide#( parameter WIDTH = 3, //計數器的位數,計數的最大值為 2**WIDTH-1 parameter N = 3 //分頻系數,請確保 N < 2**WIDTH-1,否則計數會溢出 ) ( input clk, input rst_n, output clkout ); reg [WIDTH-1:0] cnt_p,cnt_n; //cnt_p為上升沿觸發時的計數器,cnt_n為下降沿觸發時的計數器 reg clk_p,clk_n; //clk_p為上升沿觸發時分頻時鐘,clk_n為下降沿觸發時分頻時鐘 //上升沿觸發時計數器的控制 always @ (posedge clk or negedge rst_n ) //posedge和negedge是verilog表示信號上升沿和下降沿 //當clk上升沿來臨或者rst_n變低的時候執行一次always里的語句 begin if(!rst_n) cnt_p<=0; else if (cnt_p==(N-1)) cnt_p<=0; else cnt_p<=cnt_p+1; //計數器一直計數,當計數到N-1的時候清零,這是一個模N的計數器 end //上升沿觸發的分頻時鐘輸出,如果N為奇數得到的時鐘占空比不是50%;如果N為偶數得到的時鐘占空比為50% always @ (posedge clk or negedge rst_n) begin if(!rst_n) clk_p<=0; else if (cnt_p<(N>>1)) //N>>1表示右移一位,相當于除以2去掉余數 clk_p<=0; else clk_p<=1; //得到的分頻時鐘正周期比負周期多一個clk時鐘 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 //下降沿觸發的分頻時鐘輸出,和clk_p相差半個時鐘 always @ (negedge clk) begin if(!rst_n) clk_n<=0; else if (cnt_n<(N>>1)) clk_n<=0; else clk_n<=1; //得到的分頻時鐘正周期比負周期多一個clk時鐘 end assign clkout = (N==1)?clk:(N[0])?(clk_p&clk_n):clk_p; //條件判斷表達式 //當N=1時,直接輸出clk //當N為偶數也就是N的最低位為0,N(0)=0,輸出clk_p //當N為奇數也就是N最低位為1,N(0)=1,輸出clk_p&clk_n。正周期多所以是相與 endmodule ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看