新聞中心

        EEPW首頁 > 設計應用 > 連接SPI接口器件—第一部分

        連接SPI接口器件—第一部分

        作者: 時間:2021-11-29 來源:電子產品世界 收藏


        本文引用地址:http://www.104case.com/article/202111/429950.htm

        image.png

        LEC2 Workbench系列技術博文主要關注萊迪思產品的應用開發問題。這些文章由萊迪思教育能力中心(LEC2)的FPGA設計專家撰寫。LEC2是專門針對萊迪思屢獲殊榮的低功耗FPGA和解決方案集合的全球官方培訓服務供應商。
        萊迪思CrossLink?-NX FPGA擁有豐富的特性,可加速實現高速和低速接口。本文(系列博文的第一篇)描述了使用CrossLink-NX FPGA連接基于SPI的外部組件。第一篇博文介紹了使用兩個時鐘域實現連接DAC(亞德諾半導體公司的AD7303 DAC)的SPI接口。第二篇博文將介紹使用單個時鐘域實現連接ADC(亞德諾半導體公司的 ADC AD7476)的SPI接口。兩個案例中呈現了兩種截然不同的實現接口的方法。

        兩個時鐘域的實現方案(dac_2c)

        亞德諾半導體公司(ADI)的AD7303模塊用作外部DAC。圖1顯示了接口的時序圖和時序參數。在本例中,SCLK頻率為30 MHz。時序參數t4、t5和t6在時序約束規范時尤其需要關注,它們將在set_output_delay約束中使用。

        1638169906327555.png

        圖1 時序圖和時序特征

        兩個時鐘域解決方案的實現如圖2所示。

        image.png

        圖2 兩個時鐘域SPI接口的實現

        使用的參數:

        輸入時鐘頻率:100 MHZ

        內部時鐘CLK_120頻率:120 MHZ

        內部時鐘CLK_30頻率:30 MHZ

        生成的時鐘dac_sck:30 MHZ

        PLL_120_30

        PLL從外部時鐘CLK(100 MHz)生成兩個內部相位同步時鐘CLK_120和CLK_30。

        dac_sample_gen模塊

        dac_sample_gen模塊為dac_fsm生成采樣信號(轉換)。采樣信號開始向DAC傳輸數字數據。采樣率通過sample_select [1:0]信號設置,如表1所示。dac_sample_gen的框圖如圖3所示。

        表1 采樣率設置

        image.png

        image.png

        image.png

        圖3 dac_sample_gen的框圖

        mode_select控制信號控制方波信號或三角波信號的生成,作為DAC的輸入數據。

        sync_stage模塊

        dac_sample_gen模塊與CLK_120一起工作。控制單元dac_fsm是CLK_30域的一部分。sync_stage模塊將轉換信號從CLK_120域傳輸到CLK_30域。來自dac_fsm的相應信號從CLK_30域傳輸到CLK_120。sync_stage的框圖如圖4所示。

        image.png

        圖4 sync_stage的框圖

        dac_fsm模塊用于雙時鐘實現方案

        dac_fsm模塊控制生成傳輸到DAC的控制/數據信號。為了遵循圖1給出的t4、t5和t6的值,dac_fsm在CLK_30的下降沿工作。Dac_fsm作為狀態機實現。

        image.png

        圖5 控制結構dac_fsm狀態機

        轉換信號被識別后,bit_count計數器加載值15。串行數據在時鐘信號CLK_30的下降沿輸出到dac_sdata上。傳輸16位數據后,dac_fsm再次發出就緒信號并等待下一個轉換信號。

        約束兩個時鐘域解決方案的設計

        1. 約束時鐘CLK

        image.png

        2. 約束時鐘CLK_120和CLK_30

        無需明確定義CLK_120和CLK_30這兩個時鐘信號,因為它們會由設計軟件自動定義。這兩個時鐘也稱為自動生成時鐘。

        image.png

        3. 約束dac_clk
        連接到端口dac_sck的時鐘信號是內部時鐘CLK_30的副本。該信號被外部DAC解讀為時鐘。因此,該信號也必須被定義為時鐘,便于正確描述t4、t5和t6的時間要求。該時鐘即所謂的手動生成時鐘。

        image.png

        4. 約束DAS輸入/FPGA輸出

        時間值t4、t5和t6描述了外部模塊的setup/hold要求。這些要求使用 set_output_delay約束進行描述。

        image.png

        運行兩個時鐘域解決方案的時序分析

        時序分析報告顯示了兩個時鐘信號CLK_120和CLK_30之間的關系。

        1638170113540662.png

        1638170136807867.png

        注意CLK_120和CLK_30的跨時鐘域參數,反之亦然。這正是我們所期望的。

        對輸出信號dac_sync和dac_sdata的分析展示了基于set_output_delay約束實現的setup slack和hold slack。

        1638170153629773.png

        總結

        總之,兩個時鐘域提供了一些功耗方面的優勢,因為設計的一部分以較低的速度運行。此外,時序約束也很容易指定。該項目(dac_2c)可在LEC2索取。欲獲取項目副本,請通過info@lec2-fpga.com與我們聯系。

        我們將在下一篇文章中探討單個時鐘域的方法。

        Eugen Krassin是萊迪思教育能力中心(LEC2)的總裁兼創始人。



        關鍵詞:

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 鲜城| 册亨县| 宜兰县| 蒙山县| 沈阳市| 绥芬河市| 昭平县| 邢台县| 太和县| 武穴市| 东莞市| 日照市| 西乌珠穆沁旗| 新宁县| 滨州市| 曲麻莱县| 东方市| 松溪县| 梨树县| 宜宾县| 文安县| 休宁县| 正安县| 石柱| 抚松县| 鱼台县| 车致| 濉溪县| 高青县| 汶上县| 会泽县| 垫江县| 宁城县| 元氏县| 固安县| 奎屯市| 怀柔区| 南澳县| 北碚区| 龙南县| 碌曲县|