在工業(yè)控制" title="工業(yè)控制">工業(yè)控制領(lǐng)域,,數(shù)字I/O以其簡(jiǎn)單,、靈活的特性,得到了廣泛的應(yīng)用,。以往對(duì)于數(shù)字I/O的應(yīng)用和數(shù)量增加的方法通常用GAL和專(zhuān)用I/O芯片采用譯碼擴(kuò)展等方式來(lái)實(shí)現(xiàn),,這種方式盡管能夠滿足一定程度上的要求,但對(duì)于更大數(shù)量的I/O應(yīng)用,,比如幾十甚至上百路的數(shù)字I/O,,就勉為其難了。為了滿足這種要求,,并且進(jìn)一步提高數(shù)字I/O的使用效率,,專(zhuān)門(mén)針對(duì)多路數(shù)字I/O進(jìn)行了基于STD總線" title="STD總線">STD總線的設(shè)計(jì),應(yīng)用Xilinx公司的CPLD" title="CPLD">CPLD進(jìn)行編程開(kāi)發(fā),,實(shí)現(xiàn)了64位數(shù)字輸入DIN 0~DIN 31和64位數(shù)字輸出DOUT O~DOUT 31,,同時(shí)每一路I/O可以獨(dú)立編程,既可以作為輸入又可以作為輸出,。
1 STD總線
目前,,STD標(biāo)準(zhǔn)總線已成為工業(yè)控制領(lǐng)域內(nèi)最流行的標(biāo)準(zhǔn)總線之一,主要用于8位微處理機(jī)和單片機(jī)工業(yè)控制系統(tǒng),。STD總線的典型結(jié)構(gòu)如圖1所示,。
在工業(yè)控制系統(tǒng)的實(shí)際應(yīng)用中,上位機(jī),、主控模塊等往往需要通過(guò)STD總線,,根據(jù)STD總線的協(xié)議、特性訪問(wèn)其他的單片機(jī)系統(tǒng),。例如,,在某測(cè)量設(shè)備中,上位機(jī),、主控模塊可以通過(guò)總線上的I/O模塊,、A/D模塊接口,采集傳感器的量值,,通過(guò)STD總線訪問(wèn)RAM模塊,,以及通過(guò)STD總線進(jìn)行主控模塊與總線上其他控制器之間,主控模塊與上位機(jī)之間的通信與數(shù)據(jù)交換等,,構(gòu)成了一個(gè)微型的工業(yè)控制網(wǎng)絡(luò),。本文的多路數(shù)字I/O就是STD總線中的一個(gè)模塊。
2 多路數(shù)字I/O的硬件設(shè)計(jì)
2.1 電路組成
主要由可編程邏輯電路,、電平調(diào)理電路,、總線接口電路以及電源電路等組成??删幊踢壿嬘布捎肵ilinx公司的CPLD器件XC95288,,應(yīng)用。Xilinx公司的Project Navigator(ISE)集成開(kāi)發(fā)環(huán)境進(jìn)行編程開(kāi)發(fā),;電平調(diào)理電路采用74LS245,,具有輸入輸出電平轉(zhuǎn)換的功能,還可以通過(guò)接繼電器或者光電隔離器與外設(shè)接口,;總線接口電路采用74LS245,,對(duì)74LS245的DIR(方向)進(jìn)行讀寫(xiě)編程,實(shí)現(xiàn)了與STD總線的數(shù)據(jù)通信,,電源電路為CPLD以及電平轉(zhuǎn)換電路等提供必需的電源系統(tǒng),。
硬件實(shí)現(xiàn)框圖如圖2所示,虛線框內(nèi)為多路數(shù)字I/O的硬件電路部分,。
2.2 性能特點(diǎn)
數(shù)量多 CPLD芯片XC95288具有208個(gè)管腳,,其中用戶I/O管腳數(shù)量達(dá)到168個(gè),除了地址總線,、數(shù)據(jù)總線以及片選信號(hào)等所占用40個(gè)I/O之外,,其余的128個(gè)I/0完全可以作為通用I/0編程使用;
面積小 如此眾多數(shù)量的I/O,,完全由一片CPLD來(lái)實(shí)現(xiàn),,簡(jiǎn)化了電路設(shè)計(jì)程序,減少了PCB的設(shè)計(jì)面積,,又提高了數(shù)字I/O的穩(wěn)定性,;
靈活性高 由于每一個(gè)I/O都可獨(dú)立編程,因此在使用過(guò)程中變得非常靈活,,可以根據(jù)現(xiàn)場(chǎng)需求隨時(shí)改變其輸入,、輸出,在工業(yè)控制應(yīng)用領(lǐng)域?yàn)楫a(chǎn)品的增強(qiáng)與升級(jí)提供了極大的靈活性,。
此外,,該設(shè)計(jì)還具有傳輸速度高(由CPLD的傳輸特性決定)及電平兼容性好等特點(diǎn),可滿足用戶在測(cè)試,、控制及設(shè)計(jì)應(yīng)用中的多種需求,。
3 多路數(shù)字I/O的程序設(shè)計(jì)
該系統(tǒng)使用業(yè)界領(lǐng)先的FPGA設(shè)計(jì)環(huán)境XilinxISE,其將先進(jìn)的技術(shù)與靈活性,、易使用性的圖形界面結(jié)合在一起,,可以在最短的時(shí)間,,獲得最佳的硬件設(shè)計(jì)。XC95288 CPLD是低功耗3.3 V器件,,288個(gè)宏單元,,6 400個(gè)可用邏輯門(mén),168個(gè)用戶I/O,,再加上靈活,、高度優(yōu)化的VHDL硬件描述語(yǔ)言,實(shí)現(xiàn)了128位數(shù)字I/O的程序化設(shè)計(jì),。
3.1 部分程序代碼
部分程序代碼如下:
其中:addr是10位地址總線,;bd是8位數(shù)據(jù)總線;en_245和dir_245分別是STD總線接口芯片74LS245的片選使能與方向信號(hào),;tempx是片內(nèi)寄存器,;io_inx和outx分別是8位輸入、8位輸出I/O口,。
3.2 性能描述
多路數(shù)字I/O口的選擇由10位地址決定,,不同的地址操作不同的。I/O端口,,在I/O非動(dòng)態(tài)情況下,,數(shù)據(jù)總線處于高阻狀態(tài),避免了總線沖突,,同時(shí)也提高了I/O端口的穩(wěn)定性,,減少了高速數(shù)據(jù)傳輸條件下引起不必要的錯(cuò)誤,根據(jù)現(xiàn)場(chǎng)對(duì)I/O輸入,、輸出的需要,,可以修改程序,靈活改變端口的功能,,另外,,對(duì)于輸出端口,加入了數(shù)據(jù)寫(xiě)出后讀回的功能,,使得上位機(jī)能夠隨時(shí)驗(yàn)證寫(xiě)出數(shù)據(jù)的正確性,,對(duì)于外設(shè)信號(hào),通過(guò)信號(hào)調(diào)理板實(shí)現(xiàn)電平匹配,,進(jìn)一步增加了本設(shè)計(jì)的功能可靠性,。
4 結(jié)語(yǔ)
以CPLD器件為核心,選用Xilinx公司的ISE作為硬件開(kāi)發(fā)平臺(tái),,并采用VHDL編程語(yǔ)言,,充分應(yīng)用了可編程邏輯器件的特點(diǎn),發(fā)揮了VHDL硬件描述語(yǔ)言的編程優(yōu)點(diǎn),。減少了芯片數(shù)量,,既做到了系統(tǒng)小型化又降低了成本,。程序已通過(guò)綜合實(shí)驗(yàn),應(yīng)用了STD總線的通訊特點(diǎn),,與總線上的其他板卡,、設(shè)備通訊也極為方便,既解決了工業(yè)通信網(wǎng)絡(luò)的一般問(wèn)題,,又達(dá)到了工業(yè)通用I/O的較高要求??傊?,該多路數(shù)字I/O設(shè)計(jì)容量高、功耗低,、速度快,,不僅具有通用性、實(shí)用性,,而且具有靈活性和移植性,,便于調(diào)試,為高速I(mǎi)/O開(kāi)發(fā)設(shè)計(jì)提供了一種很好的嘗試,,相信在很多行業(yè)都會(huì)有廣闊的應(yīng)用前景,。