新聞中心

        EEPW首頁 > 測試測量 > 設計應用 > 基于FPGA的數據采集系統的設計與實現

        基于FPGA的數據采集系統的設計與實現

        作者: 時間:2011-03-17 來源:網絡 收藏

        2 軟件設計方案
        軟件設計方案中采用了自頂向下的設計方法,運用Verilog HDL語言來設計數字系統,分別完成數字系統內部各個子模塊的設計。結構及模塊間的連接示意圖如圖4所示。

        4.JPG


        由圖4可見,系統主要由3個模塊組成。它們分別是A/D接口adc.v模塊、USB接口usb.v模塊以及頂層top.v模塊,其中在頂層top.v模塊中,完成了對其他兩個模塊的調用,使它們拼接成為一個完整的系統。其中鎖相環PLL_1和PLL_2分別給ade.v模塊和usb.v模塊提供時鐘源。
        2.1 控制A/D芯片接口的軟件設計
        在adc.v模塊中,需要完成對TLV1572的接口邏輯代碼的設計,其實質就是在TLV1572的時序分析的基礎上來設計邏輯代碼,使得FPGA能夠按照其時序要求完成對A/D芯片的各種控制,包括提供給TLV1572的串行時鐘信號信號ADC_CLK、CS片選信號ADC_CSn以及從TLV1572中讀取出轉換完成的串行數據S_DATA。
        TLV1572的時序圖如圖5所示。

        5.JPG


        從時序圖可見,A/D芯片的轉化過程是在當CS為低電平后,由SCLK的上升沿發起的,輸出的頭六位二進制數字均為“0”,此時A/D芯片正處于采樣階段,數字無效,這六位無效的二進制數之后,A/D轉換完成后的二進制數據在SCLK的上升沿被送到總線上,這時,作為系統主控制芯片的FPGA應當去采樣總線上的數據,得到轉換后的結果。
        2.2 FPGA控制USB2.0芯片的軟件設計
        在usb.v模塊中,需要完成FPGA對CY7C68013A的接口邏輯代碼的設計和異步FIFO模塊的設計。其中,對CY7C68013A的接口邏輯代碼主要是完成對CY7C68013A芯片的端點FIFO的各種控制,包括16位的數據信號FIFO_DATA[15:0]、2位端點FIFO選擇信號FIFO_ADDR[1:0]、端點FI-FO滿標志位信號FIFO_Full、端點FIFO寫使能信號FIFO_WR_en。因為adc.v模塊和芯片外部的CY7C68013A工作在不同的時鐘域內,故異步FIFO模塊設計部分設計的目的除了是要完成從ade.v模塊讀取過來數據的緩沖,另外就是需要解決異步時鐘域數據傳輸可能出現的亞穩態問題。
        具體來說,FPGA在工作時需要不斷向CY7C68013A的端點FIFO寫入數據,而FPGA與CY7C68013A之間的工作模式屬于同步方式,兩者都由PLL _2模塊提供40 MHz的時鐘信號進行工作,那么它們之間的關系就是同步Slave FIFO的寫操作,由FPGA向CYTC68013A中寫入數據。
        在Verilog HDL程序設計中,需要設計一個狀態機來完成同步Slave FIFO寫的時序,寫時序如下;1)IDLE:當寫事件發生時,進狀態1;2)狀態1:使FIFOADR[1:0]指向IN FIFO,進狀態2;3)狀態2:如果端點FIFO滿,在當前狀態等待,否則進狀態3;4)狀態3:驅動數據到數據線上,使SLWR有效,持續一個IFCLK周期,進狀態4;5)狀態4:如需傳輸更多的數,進狀態2,否則進入IDLE狀態。
        該狀態轉換的狀態圖如圖6所示。

        6.JPG



        關鍵詞: FPGA 數據采集系統

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 息烽县| 建阳市| 扎赉特旗| 永修县| 彰武县| 澄城县| 鄂托克前旗| 新竹县| 常熟市| 驻马店市| 成都市| 鄂州市| 台前县| 阳信县| 平乐县| 宁波市| 安图县| 彭水| 蕉岭县| 莱阳市| 汽车| 望谟县| 辽阳市| 平南县| 任丘市| 云梦县| 新和县| 宁化县| 琼结县| 依兰县| 五莲县| 洛隆县| 长海县| 博罗县| 景泰县| 本溪市| 哈尔滨市| 建德市| 友谊县| 交口县| 平顺县|