verilog中clock不使用negedge的三個原因

          Verilog中典型的counter邏輯是這樣的:

          always@(posedge clk or negedge reset) begin
              
          if(reset == 1'b0)
                  reg_inst1 <= 8'd0;
              else if(clk == 1'b1)
                  reg_inst1 <= reg_inst1 + 1'd1;
              else
                  reg_inst1 
          <= reg_inst1;
          end

          clk為什么要用posedge,而不用negedge呢?請教丹內先生,答案如下:
          • 一般情況下,系統中統一用posedge,避免用negedge,降低設計的復雜度,可以減少出錯。
          • 在ModelSim仿真中,時鐘是很嚴格的,但是在真實的晶振所產生的clock卻是不嚴格的,比如高電平和低電平的時間跨度不一樣,甚至非周期性的微小波動。如果只使用posedge,則整個系統的節拍都按照clock上升延對齊,如果用到了negedge,則系統的節拍沒有統一到一個點上。上升延到上升延肯定是一個時鐘周期,但是上升延到下降延卻很可能不是半個周期。這都會出現問題。
          • FPGA特有的東西:Global CLK。FPGA內部有專門的CLK“線”,和一般的邏輯門的走法不一樣,目的是為了保證整個FPGA片內的時鐘一致,這個東西就叫Global CLK。(這個和negedge有什么關系?沒搞懂)

          posted on 2007-04-23 17:40 肥蟲 閱讀(3251) 評論(0)  編輯  收藏 所屬分類: Verilog


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           

          導航

          <2007年4月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          統計

          常用鏈接

          留言簿(2)

          隨筆分類

          隨筆檔案

          相冊

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 同德县| 浦城县| 塘沽区| 城固县| 平顺县| 长兴县| 河间市| 房产| 延川县| 漠河县| 营山县| 大庆市| 桑植县| 仁化县| 广丰县| 醴陵市| 旬阳县| 汾阳市| 涿鹿县| 化德县| 佛学| 江津市| 全州县| 沭阳县| 博野县| 化隆| 蒙城县| 磐安县| 芒康县| 靖远县| 富宁县| 赤壁市| 呼和浩特市| 三江| 河南省| 吴旗县| 太仆寺旗| 临朐县| 剑河县| 来安县| 抚州市|