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