基于FPGA 的數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)
摘要:結(jié)合高速FPGA的特點(diǎn), 設(shè)計(jì)了一套數(shù)據(jù)采集系統(tǒng)。該系統(tǒng)以FPGA作為采集系統(tǒng)的核心, 應(yīng)用FPGA的內(nèi)部邏輯實(shí)現(xiàn)時(shí)序控制,對(duì)數(shù)據(jù)進(jìn)行采集、顯示,并將處理后的結(jié)果通過(guò)USB口傳輸?shù)缴衔粰C(jī)。該系統(tǒng)具有電路結(jié)構(gòu)簡(jiǎn)單、功耗低等優(yōu)點(diǎn), 可用于溫度、壓力等傳感器信息以及電壓、電流的數(shù)據(jù)采集。
1 引言
在科學(xué)技術(shù)研究和工業(yè)生產(chǎn)的各行業(yè)中, 常常需要對(duì)各種數(shù)據(jù)進(jìn)行采集, 如液位、溫度、 壓力、頻率等信息的采集。隨著數(shù)字技術(shù)的發(fā)展, 一些高性能的FPGA (Field Programmable Gate Array)和高速的A/D 應(yīng)用于數(shù)據(jù)采集系統(tǒng)中, 大大提高了系統(tǒng)的測(cè)量精度、數(shù)據(jù)采集處 理速度、數(shù)據(jù)傳輸速度等。本文設(shè)計(jì)了一種應(yīng)用EP1K10TC100 FPGA 和單片機(jī)的數(shù)據(jù)采集 系統(tǒng)。該系統(tǒng)具有數(shù)據(jù)采集速度高、功耗低、數(shù)據(jù)傳輸方便等優(yōu)點(diǎn)。
2 設(shè)計(jì)設(shè)計(jì)
基于 FPGA 的數(shù)據(jù)采集系統(tǒng)的總體功能模塊如下圖1 所示。系統(tǒng)有由FPGA、串行被動(dòng) 配置模塊、USB 通信模塊、電源模塊、顯示模塊、模數(shù)轉(zhuǎn)換模塊、數(shù)模轉(zhuǎn)換模塊等幾個(gè)模 塊組成。
主控芯片采用ACEX1K 系列的EP1K10TC100-3。ACEX 系列是當(dāng)今Altera CPLD 中應(yīng) 用前景最好的器件系列之一[1,2],該系列的FPGA 由邏輯陣列塊LAB(Logic array block)、 嵌入式陣列塊EAB(embedded array block)、快速互聯(lián)以及IO 單元構(gòu)成,每個(gè)邏輯陣列塊 包含8 個(gè)邏輯單元LE(logic element)和一個(gè)局部互聯(lián)。每個(gè)邏輯單元?jiǎng)t由一個(gè)4 輸入查找 表(LUT)、一個(gè)可編程觸發(fā)器、快速進(jìn)位鏈、級(jí)連鏈組成,多個(gè)LAB 和多個(gè)EAB 則可通過(guò)快速通道互相連接[3]。EAB 是ACEX 系列器件在結(jié)構(gòu)設(shè)計(jì)上的一個(gè)重要部件,他是輸入 端口和輸出端口都帶有觸發(fā)器的一種靈活的RAM 塊,其主要功能是實(shí)現(xiàn)一些規(guī)模不太大的 FIFO、ROM、RAM 和雙端口RAM 等。
3 系統(tǒng)硬件設(shè)計(jì)與實(shí)現(xiàn)
3.1 數(shù)據(jù)采集模塊
系統(tǒng)數(shù)據(jù)采集采用DAC0832。ADC0832 是美國(guó)國(guó)家半導(dǎo)體公司生產(chǎn)的一種8 位分辨 率、雙通道A/D 轉(zhuǎn)換芯片,最高分辨可達(dá)256 級(jí),可以適應(yīng)一般的模擬量轉(zhuǎn)換要求。其內(nèi) 部電源輸入與參考電壓的復(fù)用,使得芯片的模擬電壓輸入在0~5V 之間。芯片轉(zhuǎn)換時(shí)間僅為 32μS,據(jù)有雙數(shù)據(jù)輸出可作為數(shù)據(jù)校驗(yàn),以減少數(shù)據(jù)誤差,轉(zhuǎn)換速度快且穩(wěn)定性能強(qiáng)。獨(dú) 立的芯片使能輸入,使多器件掛接和處理器控制變的更加方便。通過(guò)控制數(shù)據(jù)輸入端,可以 輕易的實(shí)現(xiàn)通道功能的選擇。
FPGA 的 I/O 口直接與DAC0832 連接[4],通過(guò)VHDL 語(yǔ)言配置FPGA 芯片,以達(dá)到對(duì) DAC0832 數(shù)模轉(zhuǎn)換的時(shí)序控制。ADC0809 與FPGA 的連接電路比較簡(jiǎn)單,只要把控制引腳 和數(shù)據(jù)輸出引腳連接到 I/O 口上。
3.2 串行被動(dòng)配置模塊
因?yàn)榛赟RAM 工藝FPGA 存在掉電易失性特點(diǎn),所以配置模塊的主要是在每次上電 后對(duì)FPGA 進(jìn)行重新配置[4]。編程文件可以放在通用程序存儲(chǔ)器中, 在FLEX 器件上電后, 由芯片外部控制器自動(dòng)地從通用存儲(chǔ)器中讀出編程文件并送到FLEX 器件進(jìn)行配置, 數(shù)據(jù)傳 送方式可以為串行,也可以為并行。被動(dòng)串行(PS)配置模式的配置接口連接到芯片的5 個(gè) 引腳,分別為:nSTATUS、nCONFIG、CONF_DONE、DCLK、DATA0。 ICR 電路原理如圖2 所示。
ICR 控制電路的工作過(guò)程為:經(jīng)MAXPLUS II 編譯生產(chǎn)的配置文件(.sof)通過(guò)格式轉(zhuǎn)換 成為 (.rbf)。然后,通過(guò)PC 機(jī)的串行通信口,經(jīng)AT89C2051 單片機(jī)控制存儲(chǔ)在A(yíng)T24C256 中。單片機(jī)再根據(jù)系統(tǒng)的要求,通過(guò)P1.2、P1.3、P1.4、P3.0 和P3.1 等5 個(gè)I/O 口,將其存 儲(chǔ)在A(yíng)T24C256 中的配置數(shù)據(jù)下載到電路中的FPGA 器件中去。
3.3 USB 通信模塊
USB 接口芯片采用ISP1581。該芯片全面符合USB2.0 規(guī)范,具有高速的并行通用接 口,可在高速模式下工作,理論最高傳輸速度達(dá)到480Mbps[5]。除了控制端點(diǎn)外,ISP1581 還 有7 個(gè)輸入( IN) 端點(diǎn)和7 個(gè)輸出( OUT)端點(diǎn)。每個(gè)端點(diǎn)可以靈活配置數(shù)據(jù)傳輸方式以及數(shù) 據(jù)緩存區(qū)( FIFO) 的大小, 端點(diǎn)FIFO 最大容量可以達(dá)到2KB。ISP1581 芯片在配置枚舉時(shí) 需要單片機(jī)固件的支持, 一旦正確完成了配置和驅(qū)動(dòng)加載, 單片機(jī)對(duì)于ISP1581 芯片就如同 普通存儲(chǔ)器一樣可以進(jìn)行讀寫(xiě)操作, 以發(fā)送或接收數(shù)據(jù)。
3.4 顯示模塊
LED 采用四位共陽(yáng)極數(shù)碼管顯示。共陽(yáng)極四位一體數(shù)碼管采用動(dòng)態(tài)掃描工作方式,在 數(shù)碼管中每一位的字段位a、b、c、d、e、f、g 和dp 分別連接在一起,其工作原理與共陰 極數(shù)碼管工作原理一致,只不過(guò)共陽(yáng)極輸入數(shù)碼管的發(fā)光電平(有效電平)是0,和共陰極 數(shù)碼管相反。在數(shù)碼管顯示電路中運(yùn)用了一個(gè)驅(qū)動(dòng)芯片74LS47,運(yùn)用這個(gè)驅(qū)動(dòng)主要解決如 下幾個(gè)問(wèn)題:(1)電平正負(fù)轉(zhuǎn)換,(2)譯碼,可以節(jié)約I/O 口的占用。74 LS47 接受四位BCD 碼輸入,并通過(guò)7 個(gè)與/或門(mén)譯碼后輸出,用于驅(qū)動(dòng)數(shù)碼管,其輸出的低電平驅(qū)動(dòng)共陽(yáng)極數(shù) 碼管,低電平輸出電流在24mA 以上。
3.5 電源模塊
該設(shè)計(jì)中內(nèi)核電壓和I/O 口電壓都采用2.5V.因?yàn)樵撔酒瑢?duì)電源要求很?chē)?yán)格,所以通過(guò) 穩(wěn)壓塊來(lái)實(shí)現(xiàn)電源轉(zhuǎn)換。在該電路中通過(guò)一片1117-2.5 穩(wěn)壓塊由5V 轉(zhuǎn)化而來(lái)。電路連接便 捷簡(jiǎn)單,輸出電流可以達(dá)到1A,基本上能滿(mǎn)足該系統(tǒng)的需求。
4 被動(dòng)串行配置程序設(shè)計(jì)
PS 配置方式的時(shí)序圖如圖3 所示。
配置前必須先設(shè)置該芯片EP1K10TC100-3 上的下載模式選擇引腳MSEL1、MSEL0。 設(shè)置方式:當(dāng)MSEL1=0,MSEL0=0 時(shí)系統(tǒng)為PS 或AS 模式當(dāng)MSEL1=1, MSEL0=0 時(shí)系統(tǒng)為PPS 模式,當(dāng)MSEL1=1,MSEL0=1 時(shí)系統(tǒng)為PPA 模式。在這里設(shè)置成使MSEL1 =0、MSEL0=0 在PS 配置過(guò)程中:當(dāng)nCONFIG 產(chǎn)生下降沿脈沖時(shí)啟動(dòng)配置過(guò)程,在DCLK 上升沿, 將數(shù)據(jù)移入目標(biāo)芯片中。
在配置過(guò)程中,系統(tǒng)需要實(shí)時(shí)監(jiān)測(cè),一旦出錯(cuò),nSTATUS 將被拉 低,系統(tǒng)識(shí)別到這個(gè)信號(hào)后,立即重新啟動(dòng)配置過(guò)程。配置數(shù)據(jù)全部正確地移入目標(biāo)芯片內(nèi) 部后,CONF_DONE 信號(hào)跳變?yōu)楦?,此后,DCLK 必須提供幾個(gè)周期的時(shí)鐘(具體周期數(shù) 與DCLK 的頻率有關(guān)),確保目標(biāo)芯片被正確初始化,進(jìn)入用戶(hù)工作模式。配置流程圖如圖 4 所示:
圖4 被動(dòng)串行配置流程圖
5 總結(jié):
本文創(chuàng)新點(diǎn): 系統(tǒng)采用ACEX1K 系列的EP1K10TC100-3 FPGA 作為控制和處理的核心, 簡(jiǎn)化了系統(tǒng)的硬件設(shè)計(jì), 具有功耗低、速度快等優(yōu)點(diǎn);采用基于微控制器的FPGA 器件的 ICR 控制系統(tǒng),具有線(xiàn)路結(jié)構(gòu)簡(jiǎn)單、開(kāi)發(fā)容易、體積小、成本低的優(yōu)點(diǎn);采用USB 與上位 機(jī)通信,代替?zhèn)鹘y(tǒng)的串口數(shù)據(jù)傳輸, 提高了數(shù)據(jù)傳輸速率和可擴(kuò)展性,而且USB 可以總線(xiàn) 供電,在數(shù)據(jù)采集系統(tǒng)中耗電量小。
參考文獻(xiàn):
[1].ACEX1K datasheethttp://www.dzsc.com/datasheet/ACEX1K+_1307867.html.
[2].EP1K10TC100-3datasheethttp://www.dzsc.com/datasheet/EP1K10TC100-3_2529519.html.
[3].ROMdatasheethttp://www.dzsc.com/datasheet/ROM_1188413.html.
[4].DAC0832datasheethttp://www.dzsc.com/datasheet/DAC0832_253651.html.
[5].ADC0832 datasheethttp://www.dzsc.com/datasheet/ADC0832+_123000.html.
[6].ADC0809 datasheethttp://www.dzsc.com/datasheet/ADC0809+_123186.html.
[7].PC datasheethttp://www.dzsc.com/datasheet/PC+_2043275.html.
[8].AT89C2051 datasheethttp://www.dzsc.com/datasheet/AT89C2051+_810086.html.
[9].AT24C256 datasheethttp://www.dzsc.com/datasheet/AT24C256+_1128512.html.
[10].ISP1581datasheethttp://www.dzsc.com/datasheet/ISP1581_410269.html.
[11].74LS47datasheethttp://www.dzsc.com/datasheet/74LS47_1134230.html.
[12].BCD datasheethttp://www.dzsc.com/datasheet/BCD+_1225719.html.
來(lái)源:xinxin0次