基于CY7CO9449的高速PCI數據采集卡設計
A/D控制模塊產生A/D器件的控制信號,從A/D讀取數據,然后寫入FIFO。AD控制模塊的功能相對比較簡單,也比較容易實現(xiàn)。
因為在數據采集的過程中A/D采樣速度數據是固定的,但是數據傳輸有時速度很快而有時因為等待出現(xiàn)短時的阻塞。所以必須要有FIFO來緩沖采集的數據。FIFO模塊是用Quatus6.0的向導生成的,只需要設定有關參數即可。FIFO的寫入和讀取使用同步接口邏輯,F(xiàn)IFO的存儲寬度是32位,其深度是512。
局部總線控制模塊從FIFO中讀取數據然后寫入CY7C09449的SRAM中。CY7C09449的局部總線支持同步數據傳輸,雖然它也兼容異步數據傳輸,但FPGA的局部總線控制模塊選用了同步數據傳輸邏輯,因為這樣可以獲得更高的數據傳輸速度。CY7C09449的局部總線支持最高的時鐘速度是50MHz,一次同步的突發(fā)數據傳輸在給出讀或寫的起始地址之后,每個時鐘周期可以傳送一次數據。CY7C09449局部總線的數據總線寬度是32位,這使得局部總線的最高傳輸速度達200Mb/s。
在CY7C09449的局部總線上,F(xiàn)PGA處于類似于微處理器的地位,控制著局部總線數據傳輸的主動權。FPGA的邏輯設計中,局部總線控制模塊的邏輯設計是獲得高速數據傳輸的關鍵。同步數據傳輸要比異步數據傳輸的邏輯復雜得多。在局部總線控制模塊的邏輯設計中使用了狀態(tài)
機,其設計的關鍵在于狀態(tài)機的狀態(tài)的定義和在各種條件下狀態(tài)的轉換。為了簡單起見這里不對多塊數據傳輸控制、中斷信號產生邏輯作討論而只介紹傳送一個數據塊的邏輯。
狀態(tài)機共定義了7個狀態(tài),各種狀態(tài)的轉換關系見圖3。
在論述狀態(tài)機的工作過程之前,先就影響狀態(tài)機狀態(tài)轉換的一些信號作說明。
Reset信號就是CY7C09449的引腳RSOUTD輸出的信號,它由低到高的轉變將啟動FPGA進行一次數據采集。
FifoEmpty信號是由FIFO模塊提供的,用來指示FIFO是否為空,它為1時表示FIFO是空的,沒有數據要傳輸,否則表示FIFO內有數據等待傳輸。
RdyOut信號是CY7C09449的引腳RDY OUT提供的信號,它用來指示CY7C09449的局部總線是否準備好數據傳輸。當RdyOut為高電平,表示CY7C09449的局部總線已經準備好數據傳輸,反之表示CY7C09449的局部總線未準備好數據傳輸。
Last信號是用來指示將要寫的數據是否為本次突發(fā)傳輸要寫的最后一個數據。這個信號由局部總線控制模塊內部產生。局部總線控制模塊內部有一個計數器,當準備一次突發(fā)傳輸的時候,就將要傳送的數據長度放入這個計數器內,每傳送一個雙字數據計數器的值就減去1,當且僅當計數器的值等于l的時候Last就為高電平。
評論