基于CPLD的多路信號采集系統(tǒng)實(shí)現(xiàn)方案
3 CPLD實(shí)現(xiàn)計算機(jī)異步串行通訊設(shè)計
3.1異步串行通信的幀格式
在異步串行通信中,數(shù)據(jù)位是以字符為傳送單位,數(shù)據(jù)位的前、后要有起始位、停止位,另外可以在停止位的前面加上一個比特位(bit)的校驗(yàn)位。其幀格式仍然采用1位開始位+8位數(shù)據(jù)位+1位停止位.如圖2所示。此次設(shè)計中沒有奇偶效驗(yàn)位。停止位,為邏輯1,總在每一幀的末尾。此次設(shè)計中停止位為1位。
3.2異步串行通信的波特率
串行口每秒發(fā)送或接收數(shù)據(jù)的位數(shù)為波特率。若發(fā)送或接收一位數(shù)據(jù)需要時間為t,則波特率為1/ t,相應(yīng)的發(fā)送或接收時鐘為1/t Hz。發(fā)送和接收設(shè)備的波特率應(yīng)該設(shè)置成一致,如果兩者的波特率不一致,將會出現(xiàn)校驗(yàn)錯或者幀錯。要產(chǎn)生9600b/s波特率,要有一個不低于9600 Hz的時鐘才可以。為產(chǎn)生高精度的時鐘,我們專門選取48M的晶振,通過5000分頻,最終頻率為48M/5000=9600BIT/S
3.3發(fā)送程序設(shè)計
根據(jù)采用的幀格式,需要發(fā)送的數(shù)據(jù)為10位(1位開始位、8位數(shù)據(jù)位、1位停止位),在發(fā)送完這10位后,就應(yīng)該停止發(fā)送,并使發(fā)送端電平處于邏輯1,然后等候下次的發(fā)送。發(fā)送電路一共有3個并行進(jìn)程如圖3所示,進(jìn)程1產(chǎn)生9600bps波特率,使系統(tǒng)能夠以9600的波特率發(fā)送幀。進(jìn)程2中,當(dāng)允許寫信號WR下降延時,發(fā)送完成標(biāo)志位tdEmpty變?yōu)榈碗娖?,開始接受并行數(shù)據(jù),并將數(shù)據(jù)放入鎖存器鎖存。當(dāng)寫允許WR標(biāo)上升延時,發(fā)送完成標(biāo)志位變?yōu)楦?。進(jìn)程3,將放入鎖存器中的并行數(shù)據(jù)并串轉(zhuǎn)換,并依照幀格式,將10位數(shù)據(jù),在TXD引腳上以9600波特率,串行輸出經(jīng)過串口芯片MAX232電平轉(zhuǎn)換后實(shí)現(xiàn)與計算機(jī)正常通訊。
3.4接收程序設(shè)計
接收電路比發(fā)送電路要復(fù)雜,接收電路要實(shí)時檢測起始位的到來,一旦檢測到起始位到,就要將這一幀數(shù)據(jù)接收下來。接受電路一共設(shè)計有三個并行進(jìn)程如圖4所示,其中 進(jìn)程1 負(fù)責(zé)產(chǎn)生9600bps波特率,使系統(tǒng)能夠在9600的波特率與外界系統(tǒng)通訊。進(jìn)程2 產(chǎn)生接收信號RXD的完成標(biāo)志位,每次在接收到幀的起始位時,標(biāo)志位RXDF變高,在完成接受數(shù)據(jù)后,標(biāo)志位RXDF變低。進(jìn)程3負(fù)責(zé)將RXD信號輸入的10位串行數(shù)據(jù),依照10位的幀格式,先去掉串口的接收起始位和接收結(jié)束位,取其中的8位有效數(shù)據(jù),并將8位有效數(shù)據(jù)進(jìn)行串并轉(zhuǎn)換,變成并行數(shù)據(jù)后,由8位數(shù)據(jù)總線DATA0~DATA7并行輸出。
4采集存儲控制程序設(shè)計
4.1采樣主控程序設(shè)計:
此次系統(tǒng)我們使用48M晶振,每路信號采樣率不低于12.5khz,一共相當(dāng)于16路模擬量,所以控制點(diǎn)為48M ÷ (16 12.5khz)=240點(diǎn),所以主控計數(shù)器中有240個計數(shù)點(diǎn)可以用于控制。在0~240個點(diǎn)中實(shí)現(xiàn)了通道選通、啟動AD、幀計數(shù)、兩次SRAM地址遞推等工作。每次循環(huán)結(jié)束后,系統(tǒng)主控計數(shù)器清零,反復(fù)循環(huán)采集。具體細(xì)節(jié)如圖5所示。
評論