<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > EDA/PCB > 設計應用 > 基于梯形圖-VHDL的CPLD開(kāi)發(fā)方法研究

基于梯形圖-VHDL的CPLD開(kāi)發(fā)方法研究

作者: 時(shí)間:2007-03-15 來(lái)源:網(wǎng)絡(luò ) 收藏

引言

順序控制邏輯電路廣泛應用于機器人、全自動(dòng)家用電器、工業(yè)自動(dòng)化設備及其它自動(dòng)化裝置中,它常采用器件進(jìn)行設計與實(shí)現。

如果直接采用原理圖輸入工具或語(yǔ)言描述的方法來(lái)設計順序控制邏輯電路,則設計效率不高。這是因為順序控制邏輯電路中包含大量的I/O信號,控制邏輯就是這些I/O信號的邏輯組合,這些I/O信號在整個(gè)控制邏輯中會(huì )被大量引用,而原理圖輸入工具中的元件如邏輯門(mén)和觸發(fā)器等的輸入引腳數是固定的,邏輯引用不夠靈活,同時(shí),I/O信號的大量引用又會(huì )使連線(xiàn)過(guò)于復雜。是一種文本設計工具,不是順序控制邏輯電路設計的專(zhuān)用工具,直接用它編寫(xiě)的順序控制邏輯程序結構零亂,不夠直觀(guān),編程及調試效率都不高。

的原理與特性

是可編程邏輯控制器(PLC)實(shí)現順序控制邏輯的專(zhuān)用設計工具,用描述的控制邏輯非常直觀(guān)易懂。梯形圖工具使用簡(jiǎn)便,開(kāi)發(fā)效率高,對電路設計者的要求很低,因此,電路設計者可以將更多精力用在順序控制邏輯功能的實(shí)現與優(yōu)化上。


圖1 典型的順序控制邏輯電路的梯形圖

梯形圖以?xún)筛叫械呢Q線(xiàn)分別表示電源線(xiàn)和地線(xiàn),在這兩根豎線(xiàn)之間,用橫線(xiàn)表示電氣連接線(xiàn),將各種代表邏輯量(“ON”或“OFF”)的元件觸點(diǎn)及輸出執行元件的線(xiàn)圈用橫線(xiàn)串接成一條電氣回路。多條這樣的回路并列在一起,形狀如同階梯,就構成了實(shí)現所需順序控制邏輯的梯形圖。

一個(gè)典型的順序控制電路的梯形圖如圖1所示。在梯形圖的每個(gè)回路中,當所有串聯(lián)的觸點(diǎn)全部都處于“ON”狀態(tài)時(shí),回路就處于導通狀態(tài),回路末端的輸出執行元件線(xiàn)圈被接通。例如,當X0為“ON”,X1為“OFF”時(shí),執行元件Y0就被接通,產(chǎn)生輸出動(dòng)作。執行元件不能多個(gè)串聯(lián),其觸點(diǎn)所代表的邏輯量可以在梯形圖中被多次反復引用。電路的各I/O信號也可以在梯形圖中被多次反復引用。

梯形圖-設計方法

如果將梯形圖法應用于開(kāi)發(fā)中,采用基于梯形圖的VHDL設計方法,就可將兩種設計工具的長(cháng)處相結合,從而提高順序邏輯電路設計開(kāi)發(fā)的效率,簡(jiǎn)化設計難度。

梯形圖-VHDL設計方法的總體思路是,將開(kāi)發(fā)過(guò)程分為兩個(gè)階段:第一階段先采用梯形圖對順序邏輯電路的邏輯進(jìn)行描述和設計,第二階段通過(guò)VHDL語(yǔ)言來(lái)實(shí)現梯形圖的邏輯功能,并通過(guò)專(zhuān)用的開(kāi)發(fā)軟件對所設計的邏輯進(jìn)行仿真調試。

在這里,梯形圖的作用是作為順序邏輯電路的邏輯原型,是VHDL語(yǔ)言編程的依據。用梯形圖完成的是電路的邏輯功能設計,而VHDL語(yǔ)言程序用于實(shí)現其邏輯功能。二者分工協(xié)作,相得益彰。其中梯形圖-VHDL設計方法的關(guān)鍵在于梯形圖的VHDL語(yǔ)言描述。

梯形圖的VHDL描述方法

梯形圖由三種要素構成,即輸入信號、輸出執行元件和連接線(xiàn)。在VHDL程序中必須采用特殊方法對這三要素進(jìn)行有效的描述。

(1)輸入信號Xi(i=0,1,…,M)
M個(gè)輸入信號必須在實(shí)體的端口說(shuō)明語(yǔ)句(PORT語(yǔ)句)中予以說(shuō)明。在PORT語(yǔ)句中,各輸入信號可以單獨說(shuō)明,也可將一組或一類(lèi)輸入信號用一個(gè)標準位向量(STD_LOGIC_VECTOR)說(shuō)明。

可以規定輸入信號為邏輯“1”時(shí),其狀態(tài)為“ON”;而為邏輯“0”時(shí),其狀態(tài)為“OFF”。梯形圖中對輸入信號Xi的引用對應于VHDL程序中對Xi的直接引用,而梯形圖中對的引用則對應于VHDL程序中對(NOT Xi)的引用。

(2)輸出執行元件Yj(j=0,1,…,N)
N個(gè)輸出執行元件(即輸出信號)也必須在實(shí)體的端口說(shuō)明語(yǔ)句(PORT語(yǔ)句)中予以說(shuō)明。如果某輸出信號在梯形圖中的其它位置需要被引用,則在PORT語(yǔ)句中必須將其端口模式設置為“BUFFER(輸出并向內部反饋)”。在PORT語(yǔ)句中,各輸出信號可以單獨說(shuō)明,也可將一組或一類(lèi)輸出信號用一個(gè)標準位向量(STD_LOGIC_VECTOR)說(shuō)明。

可以規定輸出信號為邏輯“1”時(shí),其狀態(tài)為“ON”;而為邏輯“0”時(shí),其狀態(tài)為“OFF”。梯形圖中對輸出信號Yj的引用對應于VHDL程序中對Yj的直接引用,而梯形圖中對的引用則對應于VHDL程序中對(NOT Yj)的引用。

(3)連接線(xiàn)
梯形圖中的連接線(xiàn)有四種:回路最左側的橫線(xiàn)為回路起始線(xiàn)(母線(xiàn));回路中部的橫線(xiàn)為“與”邏輯連接線(xiàn);回路中部的豎線(xiàn)為“或”邏輯連接線(xiàn);回路右側與輸出執行元件相連的線(xiàn)為輸出線(xiàn)。

在VHDL程序中,可用“與”邏輯運算符“AND”代替梯形圖中的“與”邏輯連接線(xiàn),用“或”邏輯運算符“OR” 替梯形圖中的“或”邏輯連接線(xiàn),用信號賦值運算符“=” 代替梯形圖中的輸出線(xiàn)。

這樣,梯形圖中的每一個(gè)電氣回路都可很方便地用一條對輸出信號的賦值語(yǔ)句來(lái)描述。賦值語(yǔ)句的左邊是輸出信號,右邊是一個(gè)由各輸入/輸出信號及與/或運算符構成的邏輯表達式。

雖然在VHDL程序中也可以用IF分支語(yǔ)句來(lái)描述梯形圖各回路中信號的邏輯關(guān)系,但這樣會(huì )使程序結構很雜亂,調試很困難,可讀性也較差,因此不推薦用IF語(yǔ)句來(lái)描述梯形圖回路中的邏輯,而建議采用邏輯表達式給輸出信號賦值的描述方法。

對于梯形圖中那些不向外輸出信號的內部元件來(lái)說(shuō),如定時(shí)器、狀態(tài)寄存器、移位寄存器等,可采用元件例化語(yǔ)句調用有關(guān)的庫元件功能進(jìn)行描述,并在結構體中為其輸出聲明一個(gè)中間信號。當這類(lèi)元件有輸出信號時(shí),將其輸出信號賦值給聲明好的中間信號,電路中其它位置就可對該中間信號或者它的取反信號進(jìn)行引用。 通過(guò)以上各描述方法,就可將用梯形圖設計的電路邏輯原型方便地逐行轉換為VHDL程序。在進(jìn)行電路邏輯功能設計時(shí),就不必為VHDL程序的語(yǔ)法和程序結構花費過(guò)多的時(shí)間,能更加專(zhuān)注于電路邏輯功能設計與優(yōu)化,同時(shí)也使所編寫(xiě)的VHDL程序邏輯更加清晰,可讀性更好。

應用實(shí)例

以下通過(guò)圖1所示的典型的順序控制電路的實(shí)例來(lái)說(shuō)明梯形圖的VHDL描述方法。

在圖1中,X0、X2和X4分別是三個(gè)輸出回路的啟動(dòng)信號,X1、X3和X5分別是三個(gè)輸出回路的停止信號,Y0、Y1和Y2分別是三個(gè)輸出回路的輸出執行元件。只有當Y0啟動(dòng)輸出后,才允許Y1啟動(dòng);只有當Y1啟動(dòng)輸出后,才允許Y2啟動(dòng)。reset為CPLD芯片的上電復位信號,低電平有效。

實(shí)現該電路控制的VHDL程序邏輯如下:
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY sequence IS
PORT(X0, X1, X2, X3, X4, X5: IN STD_LOGIC;
RESET: IN STD_LOGIC;
Y0, Y1, Y2 : BUFFER STD_LOGIC);
END sequence;
ARCHITECTURE ladder OF sequence IS
BEGIN
PROCESS(RESET, X0,X1,X2,X3,X4,X5)
BEGIN
IF (RESET='0') THEN
Y0='0'; Y1='0'; Y2='0';
ELSE
Y0=(X0 OR Y0)AND (NOT X1);
Y1=(X2 OR Y1)AND (NOT X3)AND Y0;
Y2=(X4 OR Y2)AND (NOT X5)AND Y1;
END IF;
END PROCESS;
END ladder;

利用MAX+PLUS II的定時(shí)仿真工具對上面的程序進(jìn)行仿真,結果如圖2所示。從時(shí)序仿真的結果可以看到,電路的輸出邏輯與梯形圖原型的邏輯完全一致。

結語(yǔ)

本文通過(guò)對一個(gè)典型順序控制電路梯形圖的VHDL程序設計與時(shí)序仿真,表明梯形圖-VHDL設計方法是正確可行的。梯形圖法的引入使VHDL程序的設計得到簡(jiǎn)化,所設計出的程序結構簡(jiǎn)練,輸出邏輯表達清楚。梯形圖與VHDL程序分工明確,電路邏輯功能設計的工作由梯形圖來(lái)承擔,而VHDL程序只需負責對梯形圖的邏輯功能進(jìn)行描述并生成CPLD的下載文件。這樣,對兩種設計工具各取所長(cháng),就使得用CPLD開(kāi)發(fā)順序邏輯控制電路和系統的效率得到提高。



關(guān)鍵詞: VHDL CPLD 梯形圖 方法研究

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>