<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      module的定義及端口的作用

      Posted on 2024-03-25 22:09  綠葉落秋風  閱讀(180)  評論(0)    收藏  舉報

      模型功能

      • module是verilog中層次劃分的基本單元
      • 通過module之間的調用,可以實現硬件描述層次的提高
      • 端口列表則是module的輸入輸出,和數字電路的走線連接等效
      • 基于module的不斷地疊加,verilog可以完成從底層的與或門到復雜數字系統的逐步設計

      模型框圖

      //module define
      module A#(
        input i_clk
      )(
      
      );
      //module application
      B #(
        .MD_SIM(1'b1)
      )u_B(
        .i_clk(i_clk)
      );
      
      endmodule
      

      實現步驟

      1. 確認模塊的名稱
      • 模塊名是調用該模塊的句柄,一個工程中不允許存在同一個模塊
      • 但是如果是封裝為IP,采用OOC的綜合方式,則vivado是支持在不同IP中使用同樣命名的模塊
      • 一般模塊的命名突出功能特點
      • 比如硬件模塊BRAM、FIFO,總線轉接模塊AXISMART,測試激勵模塊tb_bram等
      • 只要能一眼看出模塊的作用即可
      1. 確認模塊的參數列表
      • 和C語言的函數的參數類似,verilog的模塊也是可以傳遞參數的
      • 參數作為整個模塊的常數項,可以隨意插入而不用考慮時序問題,是模塊靈活通用的關鍵所在
      • 一般位寬、硬件信息、延時大小等用戶參數,均需要通過參數列表進行傳遞
      1. 確認模塊的信號列表
      • 與參數不同,信號的輸入輸出必須考慮到時序問題和方向問題
      • 一般信號的輸入用于該模塊的控制和數據的輸入
      • 而信號的輸出則是該模塊的標志位和數據的輸出
      • 但是這個只是對于一般模塊級別的設計
      • 更加復雜的系統會引入各種操作總線,利用通用協議,實現各種握手交互
      • 所以
        • 一個信號列表應該對信號輸入、信號輸出、總線交互三個部分進行明確的區分
        • 才能具備很好的區分度和可維護性
      1. 模塊的調用方法
      • 如前所示,模塊的調用同樣包括了參數部分和信號部分
      • 其中參數部分可以缺省
      • 信號部分輸出可以缺省,輸入缺省的話,則依賴編譯器的處理邏輯
        • 比如vivado一般將缺省的輸入置零
        • modelsim一般置為X
      1. generate在模塊調用中的應用
      • 在C語言中,函數可以在for、if等結構中進行重復調用
      • 而verilog中,所有硬件并行執行,無法實現在for中按照步驟執行
      • 為了實現順序執行,常采用狀態機或者流水線去構建級聯的硬件
        • 顯然,這種方法將會造成很大調用問題
      • 在verilog中,實現級聯邏輯一般用generate for
        • for的含義是將模塊多次重復,依靠級聯信號實現處理邏輯的步步執行
        • 這個方法可以有效地解決模塊重復調用地問題
      • 當然,可以使用generate if對某些模塊進行選擇性執行
        • 但是,這里必須由常數對if的條件進行控制
        • 也就是說,信號是無法控制模塊是否調用的
        • 要實現類似C的兩個函數中選擇一個執行,verilog需要將判斷條件施加在輸出上
      • 還有一個generate case,和if是類似的效果
      generate genvar i;
      for(i = 0; i < 3; i = i + 1)
        begin:FOR_3
          A u_A(
            .i_clk(i_clk),
            .i_dat1(3'h111),
            .i_dat2(2'b11),
            .i_dat3(1'b1)    
          ); 
        end 
      endgenerate
      
      • 如上所示
        • 在for級聯邏輯中,位寬的匹配是一個比較重要的點
        • 為了保證信號的準確性,位寬連接只存在兩種格式:
          • 復制:輸入信號不大于端口位寬,則復制該信號到所有模塊
          • 對齊:輸入信號位寬大于端口位寬,則將輸入信號對齊至N*端口位寬(高位補零),然后按名稱順序匹配
        • 則示例中的三個數據結果為
          • FOR_3[2].u_A.i_dat1 = 1'b1(對齊)
          • FOR_3[1].u_A.i_dat2 = 1'b0(對齊)
          • FOR_3[0].u_A.i_dat3 = 1'b1(復制)
      • 所以,在使用generate for時,需要嚴格控制位寬,缺省位寬是不可取的,而直接寫整型,則會被認為是32位寬的數據進行對齊

      最終效果


      調用接口

      • 示例模型,無調用接口
      主站蜘蛛池模板: 欧美白人最猛性xxxxx| 亚洲成A人片在线观看无码不卡| 午夜综合网| 亚洲欧美综合人成在线| 亚洲精品综合久久国产二区| 国产AV无码专区亚洲AV潘金链 | 略阳县| 一区二区免费高清观看国产丝瓜| 国产福利午夜十八禁久久| 无码天堂亚洲国产AV| 国产欧美日韩另类在线专区 | 国产男女猛烈无遮挡免费视频| 国产91午夜福利精品| 亚洲人成色7777在线观看不卡| 三级4级全黄60分钟| 亚洲人精品午夜射精日韩| 乱妇乱女熟妇熟女网站| 免费观看全黄做爰大片| 哈巴河县| 亚洲中文字幕伊人久久无码 | 亚洲av无码之国产精品网址蜜芽 | 97欧美精品系列一区二区| 成熟丰满熟妇av无码区| 日韩一区二区三区水蜜桃| 无码专区 人妻系列 在线| 撕开奶罩揉吮奶头高潮av| 免费黄色大全一区二区三区| 日韩精品一区二区三区激| 亚洲大尺度一区二区av| 国产精一品亚洲二区在线播放| 亚洲人成网网址在线看| 欧美成人午夜在线观看视频| 国产精品久久久久鬼色| 极品美女自拍偷精品视频| 精品久久丝袜熟女一二三| 狠狠综合久久av一区二| 日韩av天堂综合网久久| 少妇又爽又刺激视频| 人妻精品动漫H无码中字| 在国产线视频A在线视频| 无码囯产精品一区二区免费|