<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 牛人業(yè)話 > FPGA研發(fā)之道(10)架構設計漫談(五)數字電路的靈魂-流水線

          FPGA研發(fā)之道(10)架構設計漫談(五)數字電路的靈魂-流水線

          作者: 時間:2014-10-27 來源:網絡 收藏

            ,最早為人熟知,起源于十九世紀初的福特汽車工廠,富有遠見的福特,改變了那種人圍著汽車轉、負責各個環(huán)節(jié)的生產模式,轉變成了流動的汽車組裝線和固定操作的人員。于是,工廠的一頭是不斷輸入的橡膠和鋼鐵,工廠的另一頭則是一輛輛正在下線的汽車。這種改變,不但提升了效率,更是拉開了工業(yè)時代大生產的序幕。

          本文引用地址:http://www.ex-cimer.com/article/264455.htm

            如今,這種模式常常應用于數字電路的設計之中,與現在流驅動的架構不謀而合。舉例來說:某設計輸入為A種數據流,而輸出則是B種數據流,其流水架構如下所示:

            

          ?

            每個模塊只負責處理其中的一部分,這種處理的好處是,1、簡化設計,每個模塊只負責其中的一個功能,便于功能和模塊劃分。2,時序優(yōu)化,流水的處理便于進行時序的優(yōu)化,特別是處理復雜的邏輯,可以通過流水設計,改善關鍵路徑,提升處理頻率,并能提升處理性能。

            各個之間的連接方式也可通過多種方式,如果是處理的是數據塊,流水模塊之間可以通過FIFO或者RAM進行數據暫存的方式進行直接連接、也可以通過寄存器直接透傳。也可通過某些支持brust傳輸的常用業(yè)界標準總線接口進行點對點的互聯(lián),例如AHB,WISHBONE,AVALON-ST等接口,這種設計的優(yōu)點是標準化,便于模塊基于標準接口復用。每個模塊的接收接口為從接口(SLAVE),而發(fā)送接口為主接口(MASTER)。

            架構流水的好處一目了然,但另一個問題,對于某些設計就需要謹慎處理,那就是時延。對于進入的信息A,如果接入的流水處理的模塊越多,其輸出時的時延也越高,因此如對處理時延要要求的設計就需要在時,謹慎對待添加流水線。時,可以通過處理各個單元之間的延時估計,從而評估系統(tǒng)的時延,避免最終不能滿足時延短的需求,返回來修改架構。

            流水架構在另種設計中則無能為力,那就是帶反饋的設計,如下圖所示:

            

          ?

            圖中,需要處理模塊的輸入,需要上一次計算后的結果的值,也就是輸出要反饋回設計的輸入。例如某幀圖像的解壓需要解壓所后的上一幀的值,才能計算得出。此時,流水的處理就不能使用,若強行添加流水,則輸入需等待。

            

          ?

            如上圖中,如在需反饋的設計中強加流水,則輸入信息Ai需要等待Ai-1處理完畢后,再進行輸入,則處理模塊1,就只能等待(空閑)。因此,問題出現了,流水線等待實際上就是其流水處理的的效果沒有達到,白白浪費了邏輯和設計。

            流水應用在調用式的設計中,可以通過接口與處理流水并行達到。即寫入、處理、讀出等操作可以做到流水式架構,從而增加處理的能力。

            流水是中一種常用的手段,通過合理劃分流水層次,簡化設計,優(yōu)化時序。同時流水在模塊設計中也是一種常用的手段和技巧。這將在后續(xù)重陸續(xù)介紹。,流水本身簡單易懂,而真正能在設計中活用,就需要對所處理的業(yè)務有著深刻的理解。正如那就話,知曉容易,踐行不易,且行且珍惜。

          電路相關文章:電路分析基礎


          fpga相關文章:fpga是什么


          數字濾波器相關文章:數字濾波器原理


          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();