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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 牛人業(yè)話 > FPGA研發(fā)之道(17)-化繁為簡

          FPGA研發(fā)之道(17)-化繁為簡

          作者: 時間:2014-11-17 來源:網(wǎng)絡(luò) 收藏

            有個笑話說,有個病人感冒了,于是去看醫(yī)生,醫(yī)生診斷后說,你得了感冒,但是我只會治療肺炎,不如你回家再澆點涼水,把病惡化成肺炎,那我能治了。這個笑話展示了庸醫(yī)誤人。但是另一方面,從邏輯上來講,醫(yī)生則是一個把未知問題轉(zhuǎn)化成已知問題的高手。

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

            不說笑話,下面出兩個題目,其分別是

            問題1:運用,如何將一個時鐘域的上升沿,轉(zhuǎn)換成另一個時鐘域的脈沖信號(單周期信號)。

            問題2:運用,如何將一個時鐘域的脈沖信號(單周期信號),轉(zhuǎn)換成另一個時鐘域的上升沿。

            可能乍一看,這兩個題目優(yōu)點難度,特別是第二個問題,答上的就更少了。那再出第三道題目,會不會讓這個問題變簡單些那。

            問題3:運用,如何將一個時鐘域的上升沿,轉(zhuǎn)換成另一個時鐘域的上升沿。

            

           

            題目3,,就會讓人覺得太簡單了,這既是異步信號的同步化,寄存兩拍就可以了。這CLKA信號就被同步到CLKB的方法,有一定數(shù)字電路知識的都會 。不論CLKA與CLKB時鐘頻率的高低。

            下面回到題目1,我們按照那個庸醫(yī)的做法,把未知問題轉(zhuǎn)換成已知問題,那這個問題就轉(zhuǎn)化成了兩個部分,A時鐘域的上升沿轉(zhuǎn)換成B時鐘域的上升沿,,然后B時鐘域的上升沿如何變成其單脈沖信號。所以問題就很簡單了,最后的輸出 B &! B_r(B信號寄存一拍). 電路如下所示。

            

           

            那回到題目2.這個問題就轉(zhuǎn)換成了A時鐘的脈沖信號轉(zhuǎn)換成A信號的上升沿,而A信號的上升沿,再轉(zhuǎn)換成B信號的上升沿。

            

           

            那么,如何將已是時鐘信號的脈沖信號,轉(zhuǎn)換成另一個時鐘的脈沖信號?呵呵。

            以上只是兩個簡單的電路,實際設(shè)計中,有許多可以進行設(shè)計,可以化繁為簡或者化未知為已知的方法。

            例如,實際設(shè)計中,經(jīng)常有設(shè)計變更的情況,比如,原來輸出的信號A,但是需要輸出信號B。那可能大多數(shù)情況,模塊不用重新設(shè)計,只需要在原有輸出信號(或者數(shù)據(jù))A上,再添加相應(yīng)的輸出,或者封裝一層接口,就可以快速滿足需求。并且原有設(shè)計模塊也可以復(fù)用,并且已驗證充分。通過化未知問題為已知問題的方式,簡化設(shè)計和驗證,能夠快速的設(shè)計需要。一方面,而這正是IP復(fù)用的好處,另一方面,原有設(shè)計如何達到IP復(fù)用的標準,也是值得探索的部分。

            這個故事,其實還有另一版本,那就是錘子和釘子,那就是如果你已經(jīng)有一把錘子,那就看什么都是釘子。如何將未知問題轉(zhuǎn)化成你的錘子可以解決的釘子,則是就是設(shè)計復(fù)用的問題了。



          關(guān)鍵詞: FPGA 數(shù)字電路

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁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); })();