MAXPLUS軟件的使用()_第1頁(yè)
MAXPLUS軟件的使用()_第2頁(yè)
MAXPLUS軟件的使用()_第3頁(yè)
已閱讀5頁(yè),還剩22頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、3.5 用 AHDL 語(yǔ)言設(shè)計(jì)數(shù)字系統(tǒng)AHDL 語(yǔ)言是 ALTERA 公司開(kāi)發(fā)的高效、易學(xué)的硬件描述語(yǔ)言,在 max+plus2 軟件中使用 它比 VHDL 語(yǔ)言更有效。3.5.1 AHDL 簡(jiǎn)介一個(gè) AHDL 邏輯設(shè)計(jì)至少必須包含一個(gè)分設(shè)計(jì)段 (Subdesign Section) 和一個(gè)邏輯設(shè)計(jì)段 (Logic Section),其它段和語(yǔ)句是可選擇的,AHDL的設(shè)計(jì)文件是用 Max+Plus n軟件的文本編輯器編寫的源程序 (*.tdf)下面介紹 AHDL 的一些語(yǔ)句。( 1)常數(shù)敘述語(yǔ)句該語(yǔ)句可以用一個(gè)字符串代表數(shù)字、算數(shù)表達(dá)式 例:CONSTANT UPPER_LIMIT = 130

2、;CONSTANT BAR = 1 + 2 DIV 3 + LOG2(256);CONSTANT FOO = 1;CONSTANT FOO_PLUS_ONE = FOO + 1;(2) 定義函數(shù)語(yǔ)句 該語(yǔ)句可以定義一個(gè)在分設(shè)計(jì)中使用函數(shù), 例:DEFINE MAX(a,b) = (a > b) ? a : b;SUBDESIGN(dataaMAX(WIDTH,0).0: INPUT; databMAX(WIDTH,0).0: OUTPUT;)BEGINdatab = dataa;END;此例中 MAX 函數(shù)保證最小的數(shù)據(jù)位寬度。(3) 參數(shù)敘述語(yǔ)句該語(yǔ)句可以聲明參數(shù)化巨功能模塊和宏功能模

3、塊的一個(gè)或幾個(gè)參數(shù)例:PARAMETERS(FILENAME = "myfile.mif", - optional default value follows "=" signWIDTH,AD_WIDTH = 8,NUMWORDS = 2UD_WIDTH);(4) 函數(shù)描述語(yǔ)句共有 4 種形式的邏輯函數(shù)可以供用戶調(diào)用,它們是:Megafunction 具有復(fù)雜邏輯功能的巨功能模塊,放在 mega_LPM 庫(kù)中,可以供用戶調(diào)用 Primitive 一些基本邏輯功能函數(shù),可以直接調(diào)用Macrofunction 具有高水平的邏輯宏功能模塊,共有 300 多種,

4、放在 max2lib 子目錄中State Machi ne 種具有多個(gè)狀態(tài)的時(shí)序電路,可以形成符號(hào)圖形,用戶可以調(diào)用 以上幾種邏輯功能函數(shù)都可以以邏輯函數(shù)名和符號(hào)圖形的方式被調(diào)用,在AHDL 源文件中調(diào)用時(shí)要首先進(jìn)行聲明,見(jiàn)如下例子。1) 參數(shù)化函數(shù):FUNCTION lpm_add_sub (cin, dataaLPM_WIDTH-1.0, databLPM_WIDTH-1.0, add_sub)WITH (LPM_WIDTH, LPM_REPRESENTA TION, LPM_DIRECTION, ADDERTYPE, ONE_INPUT_IS_CONSTANT)RETURNS (resu

5、ltLPM_WIDTH-1.0, cout, overflow);該 函 數(shù) 名 為 lpm_add_sub , 輸 入 端 口 為 cin, dataaLPM_WIDTH-1.0,anddatabLPM_WIDTH-1.0;關(guān)鍵字 WITH 后是參數(shù)表,關(guān)鍵字 RETURN 后是輸出口 resultLPM_WIDTH-1.0, cout, and overflow2) 非參數(shù)化函數(shù) :FUNCTION compare (a3.0, b3.0)RETURNS (less, equal, greater);該函數(shù)名為 compare,輸入端口為 a3, a2, a1, a0, b3, b2, b

6、1, and bO.關(guān)鍵字 RETURN 后是輸出口 less, equal, greater3) 狀態(tài)機(jī)函數(shù): 當(dāng)輸入和輸出是狀態(tài)機(jī)時(shí),應(yīng)該按照如下例子定義函數(shù),在返回結(jié)果語(yǔ)句中加MACHINE關(guān)鍵字FUNCTION ss_def (clock, reset, count)RETURNS (MACHINE ss_out);(5) 最小位數(shù)選擇語(yǔ)句定義一組數(shù)據(jù)中的最小數(shù)位是否是MSB ( most significant bit )或 LSB ( least significant bit )例:OPTIONS BIT0 = MSB;(6)斷言語(yǔ)句 該語(yǔ)句可以檢驗(yàn)表達(dá)式、參數(shù)、數(shù)據(jù)、計(jì)算函數(shù)有

7、效性和端口的使用情況。 例:ASSERT (WIDTH > 0)REPORT"Width (%) must be a positive integer" WIDTHSEVERITYERRORHELP_ID INTV ALUE; - for internal Altera use only在該例中,WIDTH>0是斷言條件,若此條件不滿足,將顯示REPORT后的內(nèi)容和SEVERITY 后的錯(cuò)誤等級(jí)。(7)分設(shè)計(jì)段 分設(shè)計(jì)段聲明輸入、輸出和雙向口 例:SUBDESIGN top(foo, bar, clk1, clk2 : INPUT = VCC;a0, a1, a

8、2, a3, a4 : OUTPUT;b7.0: BIDIR;) 端口類型可以是:INPUT, OUTPUT, BIDIR, MACHINE INPUT, 或 MACHINE OUTPU其中 MACHINE INPUT 或 MACHINE OUTPUT 口不能用于 TDF 的頂層,在端口類型說(shuō)明 后可以加端口當(dāng)前電平 VCC 或者是 GND 。(8)變量段 該段是聲明和產(chǎn)生邏輯段中使用的變量的地方,如下是變量段的例子。VARIABLEa, b, c : NODE;temp : halfadd; ts_node : TRI_STATE_NODE;IF DEVICE_FAMIL Y = "

9、;FLEX8000" GENERA TE8kadder : flex_adder;d,e : NODE;ELSE GENERATE7kadder : pterm_adder;f,g : NODE;END GENERATE;1) 函數(shù)變量聲明例: VARIABLEcomp : compare;adder : lpm_add_sub WITH (LPM_WIDTH = 8);該變量段聲明 comp 為函數(shù) compare 的引用變量,聲明 adder 為函數(shù) lpm_add_sub 的引用變 量,一旦聲明完畢,就意味著: 變量 comp 就是如下端口的代表:a3.0, b3.0: INP

10、UT; - inputs to compareless, equal, greater : OUTPUT; - outputs of compare 而變量 adder 是如下端口的代表:a8.1, b8.1: INPUT; - inputs of addersum8.1: OUTPUT; - outputs of adder也就是如下的引用變量可以使用在當(dāng)前的設(shè)計(jì)文件中:comp.a, comp.b, comp.less, comp.equal, comp.greater adder.dataa, adder.datab, adder.result2) 節(jié)點(diǎn)變量聲明 AHDL 軟件支持兩種節(jié)

11、點(diǎn)形式: NODE and TRI_STA TE_NODE 。 例:SUBDESIGN node_ex (a, oe : INPUT; b : OUTPUT; c : BIDIR;) VARIABLEb : NODE;t : TRI_STATE_NODE; BEGINb = a;out = b % therefore out = a % t = TRI(a, oe);t = c;% t is bus of c and tri_stated a %END; 如下的端口和功能模塊能連接三態(tài)節(jié)點(diǎn)( TRI_STA TE_NODE ):TRI 三態(tài)功能模塊 輸入端口( INPUT ) 端口從高層向下

12、輸出或雙向口( OUTPUT , BIDIR )從低層向上 當(dāng)前文件中的雙向口( BIDIR ) 當(dāng)前文件中的三態(tài)節(jié)點(diǎn) TRI_STATE_NODE3) 寄存器變量聲明 該聲明用于聲明寄存器: D 型: DFF , DFFE, T 型: TFF, TFFE JK 型: JKFF , JKFFE , SRFF, SRFFE 瑣存器: LATCH 例: VARIABLE ff : TFF;該變量一旦聲明完畢,就可以使用如下變量: ff.t , ff.clk , ff.clrn , ff.prn , ff.q 對(duì)于只有一個(gè)輸出的功能模塊,可以簡(jiǎn)化使用。 DFF 的功能說(shuō)明為: FUNCTION DF

13、F(d, clk, clrn, prn) RETURNS (q);. 則對(duì)于如下的變量段,邏輯段的意思是a.d = b.q;VARIABLEa, b : DFF; BEGINa = b; END;4) 狀態(tài)機(jī)變量聲明 例:VARIABLEss : MACHINEOF BITS (q1, q2, q3)WITH STATES (s1 =B"000",s2 =B"010",s3 =B"111");該例的意思是:狀態(tài)機(jī)的名字是 SS,狀態(tài)位q1, q2,和q3是該機(jī)寄存器的輸出,狀態(tài)機(jī)的狀態(tài)是s3, 并給出了當(dāng)前狀態(tài)值。(9)邏輯段 在邏輯

14、段中,說(shuō)明設(shè)計(jì)文件的邏輯操作。1) 布爾方程 邏輯段中布爾方程用于表達(dá)節(jié)點(diǎn)之間的邏輯關(guān)系,該關(guān)系必須遵從邏輯規(guī)則。 例:a = (c & -B"001101") + e6.1) # (p, q, r, S, t, v); 表達(dá)式的左邊可以是一個(gè)字符變量、端口和組,右邊是布爾方程表達(dá)式。2) 布爾控制方程 該控制方程用于建立狀態(tài)機(jī)的時(shí)鐘、復(fù)位和時(shí)鐘使能信號(hào),見(jiàn)下例:SS.clk = clk1;SS.reSet = a & b;SS.ena = clk1ena;該控制方程的格式為 <狀態(tài)機(jī)名 >.<端口名 > ,所以該例中狀態(tài)機(jī)名是ss三

15、個(gè)端口:位和使能。3) CASE 語(yǔ)句例:CASE f.q ISWHEN H"00" =>addr = 0;s = a & b;WHEN H"01" =>count.d = count.q + 1;s1,s2 和時(shí)鐘、復(fù)WHEN H"02", H"03", H"04" => f3.0.d = addr4.1;WHEN OTHERS =>f.d = f.q;END CASE;3) 缺省敘述語(yǔ)句 該語(yǔ)句指定真值表中變量的缺省值, 例:BEGINDEFAULTSa =

16、VCC;END DEFAULTS;IF y & z THENa = GND;END IF;END;4) IF THEN 語(yǔ)句 例:IF a = b THENc8.1 = H "77"addr3.1 = f3.1.q;f.d = addr + 1;ELSIF g3 $ g4 THENf.d = addr;ELSEd = VCC;END IF;4) FOR GENERATE 語(yǔ)句 例:CONSTANT NUM_OF_ADDERS = 8;SUBDESIGN 4gentst (: OUTPUT;aNUM_OF_ADDERS.1, bNUM_OF_ADDERS.1, cin

17、 : INPUT; cNUM_OF_ADDERS.1, cout)VARIABLE carry_out(NUM_OF_ADDERS+1).1 : NODE;BEGINcarry_out1 = cin;FOR i IN 1 TO NUM_OF_ADDERS GENERA TEci = ai $ bi $ carry_outi;% Full Adder %carry_outi+1 = ai & bi # carry_outi & (ai $ bi);END GENERATE;cout = carry_outNUM_OF_ADDERS+1;END;5) 真值表語(yǔ)句 該語(yǔ)句用于指定組合

18、邏輯和狀態(tài)機(jī)的輸入和輸出行為。例:TABLEa0,f4.1.q=>f4.1.d, control;0,B"0000"=>B"0001", 1;0,B"0100"=>B"0010", 0;1,B"0XXX"=>B"0100", 0;X,B"1111"=>B"0101", 1;END TABLE;該例中,a0和f4.1.q是輸入,f4.1.d和control是輸出,3.5.2 AHDL 中的語(yǔ)言元素(1) AH

19、DL 中的保留關(guān)鍵字AHDL 語(yǔ)言建議用大寫字母書(shū)寫如下關(guān)鍵字:AND FUNCTION OUTPUTASSERT GENERATE PARAMETERSBEGIN GND REPORTBIDIR HELP_ID RETURNSBITS IF SEGMENTSBURIED INCLUDE SEVERITYCASE INPUT STATESCLIQUE IS SUBDESIGNCONNECTED_PINS LOG2 TABLE CONSTANT MACHINE THENDEFAULTS MOD TITLEDEFINENANDTODESIGNNODETRI_STATE_NODEDEVICENORV

20、ARIABLEDIV NOT VCCELSE OF WHENELSIF OPTIONS WITHEND OR XNORFOR OTHERS XOR(2)保留識(shí)別符AHDL中的保留識(shí)別符:CARRY JKFFE SRFFECASCADE JKFF SRFFCEIL LATCH TFFEDFFE LCELL TFFDFF MCELL TRIEXP MEMORY USED FLOOR OPENDRN WIRE GLOBAL SOFT XAHDL中運(yùn)算符符號(hào)功能+:加號(hào)-:減=:數(shù)和串相等!:NOT!=:不等于>:大于>=大于等于<小于<=:小于等于&AND!&

21、:NAND$:XOR!$XNOR#OR!#BOR(4) AHDL中的組具有相同類型的端口可以形成一個(gè)組,該組可以有256個(gè)成員“ BIT”,如下的組雖然表達(dá)方式不同,但實(shí)際是同一個(gè)組。b5.O(b5, b4, b3, b2, b1, b0)b(5) AHDL中的數(shù)二進(jìn)制例:B"0110X1X10"八進(jìn)制例:Q"4671223"十六進(jìn)制例:H"123AECF"(6) AHDL中的算數(shù)表達(dá)式運(yùn)算符說(shuō)明優(yōu)先級(jí)別+(un ary)+1positive1-(un ary)-1 n egative1!aNOT1Aa a 2 exponent1MO

22、D4 MOD 2modulus2DIV4 DIV 2divisio n2*a * 2multiplicati on2LOG2LOG2(4-3)logarithm base22+1+1addition3-1-1subtract ion3=(numeric) 5 = 5numeric equality4=(stri ng)"a" = "b"stri ng equality4!=5 != 4not equal to4>5 > 4greater tha n4>=5 >= 5greater tha n or equal to4<a &

23、lt; b+2 less tha n4<=a <= b+2 less than or equal to4&a & bAND5ANDa AND b!&1 !& 0NAND (AND i nverter)5NAND1 NAND 0$1 $ 1XOR (exclusive OR)6XOR1 XOR 1!$ )1 !$ 1XNOR (exclusive NOR6XNOR1XNOR1#a # bOR7ORa OR b!#a !# bNOR (OR in verter)7NORa NOR b?(5<4) ? 3:4ternary8(7)巨功能模塊(LPM功

24、能)Mega功能模塊列表:門類:lpm_a nd lpmnvlpm_bustri lpm_muxlpm_clshift lpm_orlpm_constant lpm_xorlpm_decode muxbusmux運(yùn)算類:lpm_abs lpm_counterlpm_add_sub lpm_multlpm_compare存儲(chǔ)類:csfifo lpm_ram_dqcsdpram lpm_ram_iolpm_ff lpm_romlpm_latch l pm_dff (for backward compatibility only) lpm_shiftreg lpm_tff (for backward

25、 compatibility only) 其它類:clklock plln tsc核心類:a16450a8255a6402 ffta6850 rgb2ycrcba8237 ycrcb2rgba8251具體的功能塊輸入輸出信號(hào)見(jiàn)Max+plus n軟件幫助。Macrofunction )(8)老邏輯功能塊(Old-Style Macrofunctions )和宏功能塊(分類列表:功能模塊AddersLatchesArithmetic Logic Un itsMultipliersBuffersMultiplexersComparatorsParity Gen erators/CheckersCo

26、n vertersRate MultipliersCoun tersRegistersDecodersShift RegistersDigital FiltersStorage RegistersEDACSSI Fu nctio nsEn codersTrue/Compleme ntI/OEleme ntsFreque ncv Dividers具體的功能塊輸入輸出信號(hào)見(jiàn)Max+plus n軟件幫助。(9)基本邏輯功能塊(Primitives)緩沖器類:CARRY"OPndrn云SCADESOFTEXP TRIGLOBAL (SCLK)WIRE (GDFs only)LCELL (MC

27、ELL)觸發(fā)器和瑣存器類:DFF SRFF DFFE SRFFEJKFF輸入輸出端口類:BIDIRINOUTINPUTINOUTPUTOUTBIDIRC (GDFs on ly) INPUTC (GDFs on ly) OUTPUTC (GDFs only)邏輯類:ANDNORNOTORXNORXORNANDVCC (GDFs only)BAND (GDFs only)BNAND (GDFs only)BNOR (GDFs only)BOR (GDFs only)GND (GDFs only)具體的功能塊的功能和輸入輸出信號(hào)見(jiàn)Max+plus n軟件幫助。3.5.3 AHDL的使用例子使用AH

28、DL中的數(shù)例1:SUBDESIGN decode1(address15.O: INPUT;chip_e nable: OUTPUT;)BEGINchip_enable = (address15.0 = H"0370");END;在該例中當(dāng)?shù)刂窞槭M(jìn)制數(shù)370時(shí),輸出端"chip_enable”輸出高電平。(2) 常數(shù)和定義函數(shù)功能的使用 例 1:常數(shù)使用例。CONSTANT IO_ADDRESS = H"0370" % 常數(shù) %SUBDESIGN decode2(a15.0 : INPUT;ce: OUTPUT;)BEGINce = (a15

29、.0 = IO_ADDRESS);END;例 2: 定義函數(shù)使用例。PARAMETERS (WIDTH);DEFINE MAX(a,b) = (a > b) ? a : b;%使用定義功能定義的函數(shù),該函數(shù)保證端口位數(shù)的數(shù)量%SUBDESIGN minport(dataAMAX(WIDTH,0).0 : INPUT;dataBMAX(WIDTH,0).0 : OUTPUT;)BEGINdataB = dataA;END;(3) 布爾表達(dá)式的使用例 1 :SUBDESIGN boole1(a0, a1, b : INPUT;out1, out2 : OUTPUT;)BEGINout1 =

30、a1 & !a0;out2 = out1 # b;END;例 2: 具有一個(gè)聲明的節(jié)點(diǎn)SUBDESIGN boole2(a0, a1, b : INPUT;out : OUTPUT;)VARIABLEa_equals_2 : NODE; %被聲明的節(jié)點(diǎn) %BEGINa_equals_2 = a1 & !a0;out = a_equals_2 # b;END;例 3: 具有組的例。OPTIONS BIT0 = MSB;% 指定 BIT0 是 MSB%CONSTANT MAX_WIDTH = 1+2+3-3-1; % 聲明常數(shù) MAX_WIDTH = 2 %SUBDESIGN gr

31、oup1(a1.2, use_exp_in1+2-2.MAX_WIDTH: INPUT;d1.2, use_exp_out1+2*2-4.MAX_WIDTH: OUTPUT;dual_range5.43.2: OUTPUT;)BEGINd = a + B"10"use_exp_out = use_exp_in;dual_range = VCC;END;例 4: 具有條件語(yǔ)句的例。SUBDESIGN priority(low, middle, high : INPUT;highest_level1.0 : OUTPUT;)BEGINIF high THEN highest_l

32、evel = 3;ELSIF middle THEN highest_level = 2;ELSIF low THEN highest_level = 1;ELSE highest_level = 0;END IF;END;在本例中, high 信號(hào)具有最高優(yōu)先權(quán), 若三個(gè)信號(hào) high,middle 和 low 都被 VCC 驅(qū)動(dòng), 則只 有 high 信號(hào)起作用,輸出 highest_level = 3 。例 5: 有 CASE 的語(yǔ)句的例。 SUBDESIGN decoder( code1.0: INPUT;out3.0 : OUTPUT;)BEGINCASE code ISWHEN 0

33、 => out = B"0001"WHEN 1 => out = B"0010"WHEN 2 => out = B"0100"WHEN 3 => out = B"1000"END CASE;END;例 6:7 段顯示譯碼器例7 段顯示器的筆劃順序%-a-% f|b%-g-% e|c%-d-%該顯示器可以顯示如下數(shù)字和字母: % 0 1 2 3 4 5 6 7 8 9 A b C d E F % 7 段譯碼器程序:SUBDESIGN 7segment(i3.0: INPUT;a, b, c,

34、d, e, f, g : OUTPUT;)BEGINTABLEi3.0 => a, b, c, d, e, f, g;H"0"=> 1, 1, 1, 1, 1, 1, 0;H"1"=> 0, 1, 1, 0, 0, 0, 0;H"2"=> 1, 1, 0, 1, 1, 0, 1;H"3"=> 1, 1, 1, 1, 0, 0, 1;H"4"=> 0, 1, 1, 0, 0, 1, 1;H"5"=> 1, 0, 1, 1, 0, 1,

35、1;H"6"=> 1, 0, 1, 1, 1, 1, 1;H"7"=> 1, 1, 1, 0, 0, 0, 0;H"8"=> 1, 1, 1, 1, 1, 1, 1;H"9"=> 1, 1, 1, 1, 0, 1, 1;H"A"=> 1, 1, 1, 0, 1, 1, 1;H"B"=> 0, 0, 1, 1, 1, 1, 1;H"C"=> 1, 0, 0, 1, 1, 1, 0;H"D"=>

36、; 0, 1, 1, 1, 1, 0, 1;H"E"=> 1, 0, 0, 1, 1, 1, 1;H"F" => 1, 0, 0, 0, 1, 1, 1;END TABLE;END;例 7: 地址譯碼器例。SUBDESIGN decode3(addr15.0, m/io: INPUT;rom, ram, print, sp2.1 : OUTPUT;)BEGINTABLEm/io, addr15.O=> rom, ram,print,0,sp;B"00"1,B"00XXXXXXXXXXXXXX"=&

37、gt; 1,0,1,B"100XXXXXXXXXXXXX"=> 0,1,0,B"00"0,B"0000001010101110"=> 0,0,1,B"00"0,B"0000001011011110"=> 0,0,0,B"01"0,B"0000001101110000"=> 0,0,0,B"10"END TABLE;END;例8:使用1pm譯碼功能譯碼該譯碼器功能:En abledataLPM WIDTH1.0eq

38、LPM DECODES-1.00X0000.001LPM DECODES 11000.001L DECODES PM 20100.00110000.10100000.01該函數(shù)的AHDL說(shuō)明:FUNCTION lpm_decode (dataLPM_WIDTH-1.O, en able, clock, aclr)WITH (LPM_WIDTH, LPM_DECODES, LPM_PIPELINE)RETURNS (eqLPM_DECODES-1.0);在此例中不需要 enable,clock和acir端口。該譯碼器源文件:INCLUDE "lpm_decode.i nc"S

39、UBDESIGN decode4(address15.O : INPUT;chip_e nable: OUTPUT;)BEGINchip_e nable = lpm_decode(data=address)WITH (LPM_WIDTH=16, LPM_DECODES=2A10)RETURNS (.eqH"0370"); % 返回地址為 H"0370" 位置的碼 %END;(4) 變量缺省值的使用 例 1 :SUBDESIGN default1 (i3.0: INPUT;ascii_code7.0 : OUTPUT;) BEGINDEFAULTS asc

40、ii_code = B"00111111" % 問(wèn)號(hào)的 ASCII 碼 % END DEFAULTS;TABLE i3.0 => ascii_code;B"1000" => B"01100001" % "a" %B"0100" => B"01100010" % "b" %B"0010" => B"01100011" % "c" %B"0001" =>

41、; B"01100100" % "d" %END TABLE;END; 在該例中若沒(méi)有譯碼輸出時(shí),輸出問(wèn)號(hào)。 例 2 :SUBDESIGN default2 (a, b, c: INPUT;select_a, select_b, select_c: INPUT;wire_or, wire_and: OUTPUT;) BEGINDEFAULTS wire_or = GND; wire_and = VCC;END DEFAULTS;IF select_a THEN wire_or = a; wire_and = a;END IF;IF select_b TH

42、EN wire_or = b; wire_and = b;END IF;IF select_c THEN wire_or = c; wire_and = c;END IF;END;(5) 低電平激活信號(hào) 例 1 :SUBDESIGN daisy(/local_request /local_grant /request_in /request_out /grant_in /grant_out)BEGINDEFAULTS/request_out/grant_outEND DEFAULTS;: INPUT;: OUTPUT;: INPUT;: OUTPUT;: INPUT;: OUTPUT;= VC

43、C;= VCC;= VCC;IF /request_in = GND # /local_request = GND THEN/request_out = GND;END IF;IF /grant_in = GND THENIF /local_request = GND THEN /local_grant = GND;ELSIF /request_in = GND THEN /grant_out = GND;END IF;END IF;END;(4) 時(shí)序邏輯例 1: 定義 D 觸發(fā)器的輸入輸出信號(hào)。 SUBDESIGN bur_reg(clk, load, d7.0 : INPUT; q7.0

44、: OUTPUT;)VARIABLEff7.0: DFFE;BEGINff.clk = clk;ff.ena = load;ff.d = d;q = ff.q;END;該例中分別定義7個(gè)D觸發(fā)器的信號(hào)例 2: 調(diào)用巨功能模塊INCLUDE "lpm_dff.inc"SUBDESIGN lpm_reg(clk, load, d7.0 : INPUT;q7.0: OUTPUT;)BEGINq = lpm_dff (.clock=clk, .enable=load, .data=d)WITH (LPM_WIDTH=8)RETURNS (.q);END;例 3: 在變量段聲明寄存器

45、的輸出。SUBDESIGN reg_out(clk, load, d7.0 : INPUT;q7.0: OUTPUT;)VARIABLEq7.0: DFFE; % outputs also declared as registers %BEGINq.clk = clk;q.ena = load;q = d;END;例 4:16 位計(jì)數(shù)器例SUBDESIGN ahdlcnt(clk, load, ena, clr, d15.0 : INPUT;q15.0: OUTPUT;)VARIABLEcount15.0: DFF;BEGINcount.clk = clk;count.clrn = !clr;

46、 % 清零 %IF load THENcount.d = d; % 置數(shù) %ELSIF ena THENcount.d = count.q + 1; % 計(jì)數(shù) %ELSEcount.d = count.q; % 保持 %END IF;q = count;END;例 5: 具有 D 觸發(fā)器功能的狀態(tài)機(jī)SUBDESIGN simple(clk, reset, d: INPUT;q: OUTPUT;)VARIABLEss: MACHINE WITH STATES (s0, s1); BEGINss.clk = clk;ss.reset = reset;CASE ss ISWHEN s0 =>q

47、 = GND;IF d THENss = s1;END IF;WHEN s1 =>q = VCC;IF !d THENss = s0;END IF;END CASE;END;例 6: 步進(jìn)馬達(dá)控制器SUBDESIGN stepper(clk, reset: INPUT;ccw, cw: INPUT;phase3.0: OUTPUT;)VARIABLEss: MACHINE OF BITS (phase3.0) WITH STATES (s0 = B"0001",s1 = B"0010",s2 = B"0100", s3 = B&

48、quot;1000");BEGINss.clk = clk;ss.reset = reset;TABLEss,ccw,cw=>ss;%s0,1,x=>s3;s0,x,1=>s1;s1,1,x=>s0;s1,x,1=>s2;s2,1,x=>s1;s2,x,1=>s3;s3,1,x=>s2;s3,x,1=>s0;END TABLE;END;例 7 :+匕宀指定一個(gè)輸出BIT的狀態(tài)機(jī)SUBDESIGN moore1(clk : INPUT; reset : INPUT; y: INPUT;z: OUTPUT;)% current cur

49、rent % state output %ss: MACHINE OF BITS (z)WITH STATES (s0= 0,s1=1,s2=1,s3=0);BEGINss.clk= clk;ss.reset =reset;TABLE% current currentnext% stateinputstate %ss,y=>ss;%s0,0=>s0s0,1=>s2s1,0=>s0s1,1=>s2s2,0=>s2s2,1=>s3s3,0=>s3s3,1=>s1END TABLE;END;例 8: 不聲明輸出狀態(tài)的狀態(tài)機(jī)SUBDESIGN mo

50、ore2(clk : INPUT;reset : INPUT;y: INPUT;z: OUTPUT;)ss: MACHINE WITH STATES (s0, s1, s2, s3); zd: NODE;BEGINss.clk = clk;ss.reset = reset;z = DFF(zd, clk, VCC, VCC);TABLE%currentcurrentnextnext %stateinputstateoutput %ss,y=>ss,zd;s0,0=>s0,0;s0,1=>s2,1;s1,0=>s0,0;s1,1=>s2,1;s2,0=>s2,1;s2,1=>s3,0;s3,0=>s3,0;s3,1=>s1,1;END TABLE;END;例 9 :異步狀態(tài)機(jī)SUBDESIGN mealy(clk: INPUT;reset : INPUT;y: INPUT;z: OUTPUT;)VARIABLEss: MACHINE WITH STATES (s0, s1, s2, s3);BEGI

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論