嵌人式丁業(yè)控制系統(tǒng)的突出特點(diǎn)是在高低溫、高電磁輻射環(huán)境下的抗干擾性和可靠穩(wěn)定性。和PLC系統(tǒng)相比。其明顯的優(yōu)點(diǎn)是處理速度快、方便進(jìn)行工業(yè)以太網(wǎng)的組建、編程方便、通用性好,而且價(jià)格僅僅是PLC的幾分之一,具有很好的發(fā)展前景。本論文主要論述了以EP9315和MAX2_EPM240為核心的嵌入式輸入輸出系統(tǒng)的設(shè)計(jì)。
1、系統(tǒng)構(gòu)成
整個(gè)嵌入式輸入輸出系統(tǒng)分為嵌入式系統(tǒng)、應(yīng)用模塊(即輸入輸出模塊)和轉(zhuǎn)換模塊三部分,總體結(jié)構(gòu)如圖1所示。
圖1系統(tǒng)結(jié)構(gòu)框圖
1.1 嵌入式系統(tǒng)
本設(shè)計(jì)選擇Cirrus Logic公司高性能的ARM9嵌入式微處理器EP9315.該微處理器具有ARM920T內(nèi)核所有的優(yōu)異性能。豐富的集成外設(shè)接口包括以太網(wǎng)MAC、串口,2.0全速HOST USB、專用SDRAM通道的LCD接口、觸摸屏接口等。
Cirrus logic公司為用戶提供了基于該處理器的全功能開(kāi)發(fā)板。配合Windows CE.net嵌入式操作系統(tǒng),系統(tǒng)開(kāi)發(fā)效率高、運(yùn)行穩(wěn)定,為工業(yè)控制提供了可靠的系統(tǒng)平臺(tái)。基于定制的WinCE操作系統(tǒng)實(shí)現(xiàn)工業(yè)控制中應(yīng)用模塊的專用驅(qū)動(dòng),提高嵌入式系統(tǒng)的通用性。
本文所述系統(tǒng)應(yīng)用了開(kāi)發(fā)板豐富的集成外設(shè)接口。通過(guò)串口進(jìn)行eboot下載;通過(guò)以太網(wǎng)進(jìn)行操作系統(tǒng)內(nèi)核和應(yīng)用程序的下載,并實(shí)現(xiàn)以太網(wǎng)通信;HOST USB接鼠標(biāo)方便用戶操作;LCD屏實(shí)現(xiàn)顯示,觸摸屏接口實(shí)現(xiàn)面板觸摸操作。
1.2轉(zhuǎn)換模塊的設(shè)計(jì)
轉(zhuǎn)換模塊用于將開(kāi)發(fā)板上需要用到的信號(hào)線引出,主要包括數(shù)據(jù)線、地址線和部分I/O控制信號(hào)(如nWR,nRD,NCS3,nWAIT等)。在轉(zhuǎn)換模塊中主要用到了電平轉(zhuǎn)換驅(qū)動(dòng)芯片74LVXC4245,其作用包括:(1)改善信號(hào)的質(zhì)量;(2)抗干擾;(3)實(shí)現(xiàn)電平轉(zhuǎn)換;(4)提高EP9315管腳的驅(qū)動(dòng)能力。
1.3基于CPLD的輸入輸出模塊的設(shè)計(jì)
1.3.1輸入輸出模塊的設(shè)計(jì)思想
在工業(yè)應(yīng)用現(xiàn)場(chǎng),輸人/輸出模塊通常包括數(shù)字量輸入模塊、數(shù)字量輸出模塊、數(shù)字量輸入/輸出模塊、模擬量輸入模塊、模擬量輸出模塊、模擬量輸入/輸出模塊等。
考慮到不同應(yīng)用系統(tǒng)復(fù)雜程度不同,因而對(duì)輸入輸出端口的需求也就不同。為了能根據(jù)實(shí)際需要靈活添加不同種類的輸入輸出模塊,設(shè)計(jì)時(shí)采用了如下思想:
ARM9的數(shù)據(jù)總線、地址總線和控制總線同時(shí)和多個(gè)插槽相連接,并且給每個(gè)插槽賦予一個(gè)固定的地址,稱為插槽地址,各類模塊可插入任何一個(gè)插槽。
各類輸入/輸出模塊均基于CPLD進(jìn)行開(kāi)發(fā)設(shè)計(jì),實(shí)現(xiàn)對(duì)外界系統(tǒng)的檢測(cè)與控制。但對(duì)于不同的輸入輸出應(yīng)用系統(tǒng)而言,其輸入信號(hào)以及輸出信號(hào)特性各異,表現(xiàn)出復(fù)雜性。設(shè)計(jì)時(shí)必須考慮到上述復(fù)雜性,根據(jù)實(shí)際情況,對(duì)相應(yīng)輸入輸出信號(hào)進(jìn)行信號(hào)調(diào)理。為了保證輸入輸出模塊和ARM9主控器連接的穩(wěn)定性和快速性,采用了總線方式的擴(kuò)展:將CPLD掛在ARM9的BANK3空間,連接11根地址線,16根數(shù)據(jù)線,以及相應(yīng)的控制線(包括nRD、nWR、nCS3、nWAIT)。各類輸入/輸出模塊總體設(shè)計(jì)框圖可如圖2表示。
圖2輸入輸出模塊結(jié)構(gòu)框圖
信號(hào)條理電路的主要功能為:實(shí)現(xiàn)對(duì)各類輸入信號(hào)的凋理,使之滿足CPLD輸入管腳的電氣要求;實(shí)現(xiàn)對(duì)CPLD輸出信號(hào)的調(diào)理,使之滿足應(yīng)用系統(tǒng)的電氣要求。CPLD總線功能:通過(guò)各類總線建立CPLD與ARM9之19的信號(hào)聯(lián)系,實(shí)現(xiàn)CPLD與ARM9之間的通信。
因各類模塊可插入任何一個(gè)插槽,為了實(shí)現(xiàn)不同種類的模塊的自動(dòng)識(shí)別,通過(guò)硬件設(shè)計(jì)語(yǔ)言賦予每類模塊一個(gè)ID碼。ARM通過(guò)“讀ID碼地址”讀取ID碼,即可判斷是何種模塊。隨后即可根據(jù)模塊類型實(shí)行對(duì)應(yīng)的操作。
1.3.2 CPLD的選用端口數(shù)據(jù)。
Altera公司的MAXII器件采用了全新的CPLD結(jié)構(gòu),比以往的MAX器件具有更高的性價(jià)比、更低的功耗、更大的容量,使其成為復(fù)雜控制應(yīng)用的理想方案??紤]到輸入輸出模塊的功能相對(duì)簡(jiǎn)單,不需要大量的復(fù)雜運(yùn)算,本系統(tǒng)選用容量相對(duì)較小的EPM240進(jìn)行設(shè)計(jì)。
1.3.3 CPLD的軟件設(shè)計(jì)
為了通過(guò)ARM9的地址總線、數(shù)據(jù)總線和控制總線實(shí)現(xiàn)對(duì)輸入輸出模塊的讀寫控制,必須根據(jù)ARM9的讀寫時(shí)序圖對(duì)輸入輸出模塊的CPLD進(jìn)行硬件語(yǔ)言編程設(shè)計(jì)。
輸入模塊關(guān)鍵代碼如下:
assign data_bus=((~(RDICS))&(address==baddr[10:5])&(haddr[4:0]==5‘b00000))?16’b0000000011011111:16‘bz;
assign data_bus=((~(RDICS))&(address==baddr[10:5])&(baddr[4:0]==57b00100))?dc24v_in:16’bz;
程序中第一個(gè)assign語(yǔ)句功能:當(dāng)?shù)刂房偩€的低五位為5‘b00000,即為“讀模塊ID碼地址”,就向數(shù)據(jù)總線輸出該模塊的ID碼。
第二個(gè)assign語(yǔ)句功能:當(dāng)?shù)刂房偩€的低五位為5“b00100,即為“讀模塊數(shù)據(jù)地址”,就將模塊輸入端口數(shù)據(jù)讀入數(shù)據(jù)總線。
輸入模塊Quatuttis II仿真結(jié)果如圖3所示。從圖中可以看出,當(dāng)?shù)刂房偩€的低五位地址為5’b00100時(shí),模塊輸入端口數(shù)據(jù)(de24v_in)被讀入到數(shù)據(jù)總線(data_bus)。
圖3輸入模塊仿真時(shí)序圖
同理,可進(jìn)行輸池模塊設(shè)計(jì),關(guān)鍵代碼如下:
always @ (posedge pro_clk) begin
if((-WRITS))&(address==baddr [10:5])&(bad&[4:0]==5‘00010))begin
mem_data[ i ]=data_bus;
i=i+1;
if((mem data [0]==mem_data[1])&(mem_data[1]==mem_data[2])&(mem_data[2]==
mem_data[3])) begin
relay_reg = mem_data[0];
end
end
end
assign relay = relay_reg;
assign led = ~relay_reg;
assign data_bus = ((~(RDICS))&(address==baddr[10:5])&(baddr[4:0]==5’b00000))?16‘b0000000011011110:16’bz;
程序中alwavs語(yǔ)句功能:當(dāng)?shù)刂房偩€的低五位為5‘b00010,即為“寫模塊數(shù)據(jù)地址”,就將數(shù)據(jù)總線數(shù)據(jù)寫入到寄存器mem_data[]。為了增強(qiáng)抗干擾能力,程序中采取了連續(xù)讀取四次數(shù)據(jù)總線數(shù)據(jù)并判斷是否一致,若一致,才更新模塊輸出端口數(shù)據(jù)。
程序中第三個(gè)assign語(yǔ)句功能:當(dāng)?shù)刂房偩€的低五位為5’b00000,即為“讀模塊ID碼地址”,就向數(shù)據(jù)總線輸出該模塊的ID碼。
輸出模塊Quarutu。II仿真結(jié)果如圖4所示。從圖中可以看出,當(dāng)?shù)刂房偩€的低五位為5‘b00100時(shí),數(shù)據(jù)總線(data_bus)被寫入到模塊輸出端口(relay)。
圖4輸出模塊仿真時(shí)序圖
2、 系統(tǒng)軟件設(shè)計(jì)
2.1驅(qū)動(dòng)程序設(shè)計(jì)思想
輸入輸出模塊驅(qū)動(dòng)程序基于流接口驅(qū)動(dòng)程序類型進(jìn)行設(shè)計(jì)。驅(qū)動(dòng)程序的設(shè)計(jì)一方面應(yīng)根據(jù)實(shí)現(xiàn)功能考慮到物理地址的合理分配,另一方面應(yīng)考慮到與應(yīng)用程序的接口。下面就圍繞這兩個(gè)方面具體論述驅(qū)動(dòng)程序的設(shè)計(jì)思想。
2.1.1物理地址的合理分配
對(duì)輸入模塊,包含有如下兩種操作。(1)讀lD碼;(2)讀取輸入端口數(shù)據(jù)。對(duì)輸出模塊,包含有如下兩種操作。(1)讀ID碼;(2)寫數(shù)據(jù)至輸出端口。
為了保證驅(qū)動(dòng)程序的通用行,即是說(shuō),對(duì)插入某個(gè)插槽的模塊,無(wú)論是是輸入模塊,還是輸出模塊,驅(qū)動(dòng)程序結(jié)構(gòu)是一樣的??蓪?duì)每個(gè)插槽分配三個(gè)物理地址,包括讀取ID碼地址(簡(jiǎn)稱“ID地址”)、讀取輸人模塊數(shù)據(jù)地址(簡(jiǎn)稱“讀地址”)、寫數(shù)據(jù)至輸出模塊地址(簡(jiǎn)稱“寫地址”)。應(yīng)用程序通過(guò)“ID地址”讀取的ID碼數(shù)據(jù)判斷模塊的類型,進(jìn)而通過(guò)“讀地址”對(duì)輸入模塊進(jìn)行讀操作,或是通過(guò)“寫地址”對(duì)輸出模塊進(jìn)行寫操作。對(duì)輸入輸出模塊的讀寫操作包含字操作、字節(jié)操作、位操作三種方式,可在驅(qū)動(dòng)程序中通過(guò)“與運(yùn)算和移位運(yùn)算”變換實(shí)現(xiàn)。對(duì)每一插槽,三個(gè)物理地址可如表1分配:
表1應(yīng)用模塊物理地址分配
在初始化函數(shù)(IO_Init)中,通過(guò)函數(shù)VirtualAlloc()和VirtualCopy()把EP9315針對(duì)輸入輸I葉J模塊的物理地址和操作系統(tǒng)的虛擬空間聯(lián)系起來(lái),實(shí)現(xiàn)地址映射。
2.1.2輸入輸出模塊讀寫操作實(shí)現(xiàn)
操作輸入輸出模塊的應(yīng)用程序流程可簡(jiǎn)述如下[3]:發(fā)送“讀模塊ID命令碼”-》接收驅(qū)動(dòng)程序返回?cái)?shù)據(jù)(即模塊ID碼)-》根據(jù)模塊ID碼判斷模塊類型(輸入模塊還是輸出模塊)-》根據(jù)模塊具備功能發(fā)相關(guān)命令碼進(jìn)行模塊讀操作或?qū)懖僮鳎òㄗ植僮?、字?jié)操作和位操作三種情況)。
驅(qū)動(dòng)程序設(shè)計(jì)思路如下:在寫函數(shù)(IO_WRITE)中實(shí)現(xiàn)功能為:接受命令碼,并將命令碼存入某指定變量一判斷命令碼是否是寫命令碼一若是就執(zhí)行寫操作(包括字操作、字節(jié)操作和位操作三種情況)。在讀函數(shù)(IO_READ)中實(shí)現(xiàn)功能為:判斷命令碼是否是讀命令碼一若是就執(zhí)行讀操作并返回讀取的數(shù)據(jù)(包括字操作、字節(jié)操作和位操作三種情況)。
2.1.3輸入輸出模塊讀寫脈寬的調(diào)整
EP9315在WinCE操作系統(tǒng)下主頻達(dá)到200MHz,總線頻率為100MHz,外設(shè)時(shí)鐘為50MHz,因而,EP9315發(fā)出的讀寫及使能信號(hào)脈寬不足50ns??梢酝ㄟ^(guò)改變EP9315的BANK3上的讀寫時(shí)序.使其能和CPLD交互。具體可通過(guò)設(shè)置應(yīng)用模塊地址空間存儲(chǔ)空問(wèn)讀寫特性寄存器SMCBCR3中等待時(shí)間位WST1和WST2實(shí)現(xiàn)。
若SMCBCR3的代碼設(shè)置為:SMCBCR3=2000ffef實(shí)現(xiàn)功能為:設(shè)置nCS3數(shù)據(jù)寬度為32bits,讀寫脈寬為320ns。這種設(shè)置使得CPLD擁有較低的總線頻率,滿足對(duì)CPLD的讀寫時(shí)序要求。
3 、小結(jié)
本文作者創(chuàng)新點(diǎn)是基于MAX2_EPM240進(jìn)行了輸入輸出模塊的硬件軟件設(shè)計(jì),在Windows CE.net操作系統(tǒng)下,實(shí)現(xiàn)了EP9315嵌入式系統(tǒng)對(duì)輸入輸出模塊的控制,且可根據(jù)實(shí)際需要,靈活選用各類模塊。該系統(tǒng)功耗低、穩(wěn)定性好,適合工業(yè)控制中的運(yùn)用。
責(zé)任編輯:gt
評(píng)論
查看更多