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 肥蟲 閱讀(3248) 評論(0)  編輯  收藏 所屬分類: Verilog


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


          網站導航:
          博客園   IT新聞   Chat2DB   C++博客   博問  
           

          導航

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

          統計

          常用鏈接

          留言簿(2)

          隨筆分類

          隨筆檔案

          相冊

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 丰原市| 浙江省| 阿坝| 射洪县| 石渠县| 十堰市| 江西省| 莲花县| 当雄县| 达日县| 福海县| 绥芬河市| 即墨市| 丹江口市| 惠东县| 成都市| 界首市| 农安县| 恩平市| 锡林郭勒盟| 安化县| 长沙县| 抚顺县| 故城县| 云南省| 双鸭山市| 措勤县| 新安县| 若羌县| 福安市| 文山县| 柏乡县| 建宁县| 梁平县| 水城县| 宜君县| 巴楚县| 和硕县| 类乌齐县| 陕西省| 华宁县|