語法規則
ABEL源檔案由許多語句組成。語句包括標識符、字元串、關鍵字、運算符及表達式等。
標識符
(1)標識符用來表示信號名、引腳名、狀態名、集合名、常量、器件以及模組名等;
(2)標識符必須以英文字母或下劃線開始;
(3)標識符中若有空格,用下劃線代替;
(4)標識符最長不得超過31個字元;
(5)標識符和英文字母的大、小寫有關,如F和f就是兩個不同的標識符。
例如:F,f,CS,B1,DATA_BUS等。
字元串
(1)字元串是用前、後單引號限定的ASCII字元序列;
(2)字元串用來表示標題、標記、信號屬性及器件的工業標號(在ABEL軟體中的器件庫中);
(3)字元串中允許有空格;
(4)字元串的長度不超過324個字元。
例如:‘Multiplier for Complement of 2’,'P16R6'。
運算符和表達式
ABEL語言中的表達式是標識符和運算符的組合。運算分為不同的優先權,最高優先權為1級,最低優先權是4級。先進性較高優先權的運算。表達式中優先權相同的運算,按由左至右的次序進行。圓括弧能改變運算次序,先進行最裡層圓括弧中的運算。
集合
(1)一組信號或常量稱為集合;
(2)集合名可以用一個標識符來表示;
(3)對集合的運算就是對集合中每個元素單獨進行運算;
(4)兩個或多個集合在進行運算時,它們的元素個數必須相等,對不同集合的相應元素單獨進行運算。
(5)非集合變數和集合之間的運算是非集合變數和集合的每一個元素單獨進行運算;
(6)方括弧是集合的符號;
(7)集合的元素不得超過32個。
數
ABEL軟體的數值運算精度是32位。32位二進制補碼的取值範圍是 到 ,即-21,4748, 到21,4748, 。32位無符號二進制數的取值範圍是0到 ,即0到42,9496, 。一切運算結果都不能超過數制的取值範圍;否則,要犯溢出錯誤。
ABEL語言中符號^B、^O、^D及^H(或^b、^o、^d及^h)分別表示二進制數、八進制數、十進制數、十六進制數。十進制數的符號^D可以省略不寫。
在ABEL語言中,還可以用字元串表示數。例如:字元A的ASCII碼是100,0001;字元E的ASCII碼是100,0101。故'A'=0100,000 =^B0100,0001=^H41。
專用常量
除數字是常量外,ABE語言還定義了一些專用常量(又稱特殊常量),以簡化ABEL源檔案的書寫。專用常量的表示法是在英文字母的左下方及右下方各加一個圓點。
(1).C.:時鐘脈衝輸入(低電平——高電平——低電平轉換);
(2).D.:脈衝下降沿(高電平——低電平轉換);
(3).F.:懸浮的輸入或輸出信號;
(4).K.:時鐘輸入(高電平——低電平——高電平轉換);
(5).P.:暫存器預載入;
(6).U.:時鐘脈衝上升沿(低電平——高電平轉換);
(7).X.:任意值;
(8).Z.:三態值。
注意:專用常量字母可以用大寫或小寫字母輸入,表示的含義相同。
關鍵字
關鍵字用來表示語句的功能;關鍵字的英文字母可以大寫、小寫或大小寫混合;關鍵字不得用來給器件、引腳、節點、常量、集合、宏、或信號命名。常見關鍵字如下:
(1)module(模組):表示模組開始語句,module的右面是一個模組名標識符。
(2)flag(標記):表示標記語句,flag的右面是選擇ABEL軟體的化簡級別、仿真輸出檔案格式(又稱跟蹤級別)等的字元串。
(3)title(標題):表示標題語句,title的右面是一個標題字元串,標題字元串書寫源檔案的標題,也可以加上源檔案的作者、單位、日期等。
(4)device(器件):表示器件說明語句,device的左面是標識符表示的器件名,device的右面是用字元串表示的器件工業標號。
(5)pin(器件引腳):表示引腳說明語句,pin的左面是信號名(標識符),pin的右面是和信號名對應的引腳號(十進制數字)。
(6)istype(屬性):表示屬性說明語句,istype的左面是“信號名及關鍵字pin”,或信號名,istype的右面是表示信號屬性的字元串。
(7)equation(邏輯方程):表示邏輯方程的語句,equation的下一行開始寫邏輯方程。各個邏輯方程必須以分號結束。
(8)state_diagram(狀態圖):表示狀態圖開始的語句,state_diagram的右面是暫存器狀態變數集和,其下一行開始寫各狀態的狀態描述語句。
(9)state(狀態):表示狀態描述語句,stata的右面是狀態名的標識符(代表一定的狀態分配值)和冒號,下一行開始寫狀態下的無條件輸出信號值及狀態轉移語句。
(10)GOTO(也可以寫goto):表示無條件轉移語句,GOTO的右面是狀態名標識符。
(11)IF…THEN…ELSE…(如果……那么轉向……否則轉向……):表示條件轉移語句,IF右面是用表達式表示的轉移條件,THEN及ELSE的右面都是狀態名的標識符。
(12)WHEN…ENDWITH:表示條件輸出語句,WITH的右面是條件輸出值。
(13)CAES…ENDCASE:表示多路轉移語句,CASE的右面是用表達式表示的轉移條件,然後是冒號,狀態名標識符及分號等。
(14)truth_table(真值表):表示真值表開始語句,truth_table的右面是左圓括弧,輸入信號集合,組合輸出符“->”或暫存器輸出符“:>”,輸出信號集合及右括弧,下一行開始輸入信號集合及輸出信號集合構成的表格,此表格的每一行必須以分號結束。
(15)ENABLE(使能):它的右面寫輸出信號名。
(16)fuses(熔絲):表示熔絲段開始語句,把可程式邏輯控制器中的熔絲各編上不同的號碼,稱為“熔絲號”,熔絲語句為:熔絲號=熔絲值。
(17)test_vectors(測試向量):表示測試向量段開始語句。
(18)end(結束):表示模組結束語句。
注意:不允許使用任何關鍵字作信號名等標識,且關鍵字的右面必須有空格。
注釋段
(1)注釋段是對ABEL源檔案的注釋,以便於理解和閱讀ABEL源檔案。
(2)注釋段不影響ABEL源檔案的意義。
(3)注釋段可以不輸入計算機,因此,能用任何文字(包括漢字)書寫注釋段。
(4)用前雙引號表示注釋段開始,以行的末尾或後雙引號表示注釋段的結束。
(5)注釋段的行數不受限制,但每一注釋行都要用前雙引號作為注釋行的開始。
ABEL源檔案
ABEL源檔案的典型結構是:
module 模組名
title '標題名'
器件名 device ‘器件的工業標號’;
@ALTERNATE(指示字:代替)
信號名 pin 引腳號;
常量說明;
常用表達式;
集合的定義;
equation(邏輯方程)
state_diagram(狀態圖)
truth_table(真值表)
fuses(熔絲)
test_vectors(測試向量)
end
ABEL源檔案每行不得超過131個字元。ABEl 源檔案中允許不寫熔絲段語句。
ABEL3.0軟體
ABEL3.0軟體共包含6個子程式:
(1)語法分析子程式,檔案名稱是PARSE.EXE。
(2)邏輯描述轉換子程式,檔案名稱是TRANSFOR.EXE。
(3)邏輯化簡子程式,檔案名稱是REDUCE.EXE。
(4)熔絲圖子程式,檔案名稱是FUSEMAP.EXE。
(5)仿真子程式,檔案名稱是SIMULATE.EXE。
(6)文檔檔案子程式,檔案名稱是DOCUMENT.EXE。