• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統 > 牛人業話 > FPGA研發之道(17)-化繁為簡

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

    作者: 時間:2014-11-17 來源:網絡 收藏

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

    本文引用地址:http://www.czjhyjcfj.com/article/265499.htm

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

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

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

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

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

      

     

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

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

      

     

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

      

     

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

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

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

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



    關鍵詞: FPGA 數字電路

    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 大厂| 会东县| 秦皇岛市| 延安市| 德保县| 南漳县| 连山| 莒南县| 隆尧县| 中牟县| 扎囊县| 无极县| 盐山县| 清徐县| 莫力| 西峡县| 吴江市| 沁水县| 南乐县| 鲜城| 江油市| 吐鲁番市| 崇阳县| 绥化市| 上虞市| 淮滨县| 和硕县| 高唐县| 连州市| 铜鼓县| 青岛市| 尚义县| 湘潭县| 固安县| 黔东| 扬州市| 汝城县| 苗栗县| 江油市| 佛教| 阿拉尔市|