MAXPLUS软件的使用()_第1页
MAXPLUS软件的使用()_第2页
MAXPLUS软件的使用()_第3页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、3.5 用 AHDL 语言设计数字系统AHDL 语言是 ALTERA 公司开发的高效、易学的硬件描述语言,在 max+plus2 软件中使用 它比 VHDL 语言更有效。3.5.1 AHDL 简介一个 AHDL 逻辑设计至少必须包含一个分设计段 (Subdesign Section) 和一个逻辑设计段 (Logic Section),其它段和语句是可选择的,AHDL的设计文件是用 Max+Plus n软件的文本编辑器编写的源程序 (*.tdf)下面介绍 AHDL 的一些语句。( 1)常数叙述语句该语句可以用一个字符串代表数字、算数表达式 例:CONSTANT UPPER_LIMIT = 130

2、;CONSTANT BAR = 1 + 2 DIV 3 + LOG2(256);CONSTANT FOO = 1;CONSTANT FOO_PLUS_ONE = FOO + 1;(2) 定义函数语句 该语句可以定义一个在分设计中使用函数, 例:DEFINE MAX(a,b) = (a > b) ? a : b;SUBDESIGN(dataaMAX(WIDTH,0).0: INPUT; databMAX(WIDTH,0).0: OUTPUT;)BEGINdatab = dataa;END;此例中 MAX 函数保证最小的数据位宽度。(3) 参数叙述语句该语句可以声明参数化巨功能模块和宏功能模

3、块的一个或几个参数例:PARAMETERS(FILENAME = "myfile.mif", - optional default value follows "=" signWIDTH,AD_WIDTH = 8,NUMWORDS = 2UD_WIDTH);(4) 函数描述语句共有 4 种形式的逻辑函数可以供用户调用,它们是:Megafunction 具有复杂逻辑功能的巨功能模块,放在 mega_LPM 库中,可以供用户调用 Primitive 一些基本逻辑功能函数,可以直接调用Macrofunction 具有高水平的逻辑宏功能模块,共有 300 多种,

4、放在 max2lib 子目录中State Machi ne 种具有多个状态的时序电路,可以形成符号图形,用户可以调用 以上几种逻辑功能函数都可以以逻辑函数名和符号图形的方式被调用,在AHDL 源文件中调用时要首先进行声明,见如下例子。1) 参数化函数: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);该 函 数 名 为 lpm_add_sub , 输 入 端 口 为 cin, dataaLPM_WIDTH-1.0,anddatabLPM_WIDTH-1.0;关键字 WITH 后是参数表,关键字 RETURN 后是输出口 resultLPM_WIDTH-1.0, cout, and overflow2) 非参数化函数 :FUNCTION compare (a3.0, b3.0)RETURNS (less, equal, greater);该函数名为 compare,输入端口为 a3, a2, a1, a0, b3, b2, b

6、1, and bO.关键字 RETURN 后是输出口 less, equal, greater3) 状态机函数: 当输入和输出是状态机时,应该按照如下例子定义函数,在返回结果语句中加MACHINE关键字FUNCTION ss_def (clock, reset, count)RETURNS (MACHINE ss_out);(5) 最小位数选择语句定义一组数据中的最小数位是否是MSB ( most significant bit )或 LSB ( least significant bit )例:OPTIONS BIT0 = MSB;(6)断言语句 该语句可以检验表达式、参数、数据、计算函数有

7、效性和端口的使用情况。 例:ASSERT (WIDTH > 0)REPORT"Width (%) must be a positive integer" WIDTHSEVERITYERRORHELP_ID INTV ALUE; - for internal Altera use only在该例中,WIDTH>0是断言条件,若此条件不满足,将显示REPORT后的内容和SEVERITY 后的错误等级。(7)分设计段 分设计段声明输入、输出和双向口 例: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 的顶层,在端口类型说明 后可以加端口当前电平 VCC 或者是 GND 。(8)变量段 该段是声明和产生逻辑段中使用的变量的地方,如下是变量段的例子。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) 函数变量声明例: VARIABLEcomp : compare;adder : lpm_add_sub WITH (LPM_WIDTH = 8);该变量段声明 comp 为函数 compare 的引用变量,声明 adder 为函数 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也就是如下的引用变量可以使用在当前的设计文件中:comp.a, comp.b, comp.less, comp.equal, comp.greater adder.dataa, adder.datab, adder.result2) 节点变量声明 AHDL 软件支持两种节

11、点形式: 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; 如下的端口和功能模块能连接三态节点( TRI_STA TE_NODE ):TRI 三态功能模块 输入端口( INPUT ) 端口从高层向下

12、输出或双向口( OUTPUT , BIDIR )从低层向上 当前文件中的双向口( BIDIR ) 当前文件中的三态节点 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 对于只有一个输出的功能模块,可以简化使用。 DFF 的功能说明为: FUNCTION DF

13、F(d, clk, clrn, prn) RETURNS (q);. 则对于如下的变量段,逻辑段的意思是a.d = b.q;VARIABLEa, b : DFF; BEGINa = b; END;4) 状态机变量声明 例:VARIABLEss : MACHINEOF BITS (q1, q2, q3)WITH STATES (s1 =B"000",s2 =B"010",s3 =B"111");该例的意思是:状态机的名字是 SS,状态位q1, q2,和q3是该机寄存器的输出,状态机的状态是s3, 并给出了当前状态值。(9)逻辑段 在逻辑

14、段中,说明设计文件的逻辑操作。1) 布尔方程 逻辑段中布尔方程用于表达节点之间的逻辑关系,该关系必须遵从逻辑规则。 例:a = (c & -B"001101") + e6.1) # (p, q, r, S, t, v); 表达式的左边可以是一个字符变量、端口和组,右边是布尔方程表达式。2) 布尔控制方程 该控制方程用于建立状态机的时钟、复位和时钟使能信号,见下例:SS.clk = clk1;SS.reSet = a & b;SS.ena = clk1ena;该控制方程的格式为 <状态机名 >.<端口名 > ,所以该例中状态机名是ss三

15、个端口:位和使能。3) CASE 语句例:CASE f.q ISWHEN H"00" =>addr = 0;s = a & b;WHEN H"01" =>count.d = count.q + 1;s1,s2 和时钟、复WHEN H"02", H"03", H"04" => f3.0.d = addr4.1;WHEN OTHERS =>f.d = f.q;END CASE;3) 缺省叙述语句 该语句指定真值表中变量的缺省值, 例:BEGINDEFAULTSa =

16、VCC;END DEFAULTS;IF y & z THENa = GND;END IF;END;4) IF THEN 语句 例: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 语句 例: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) 真值表语句 该语句用于指定组合

18、逻辑和状态机的输入和输出行为。例: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 中的语言元素(1) AH

19、DL 中的保留关键字AHDL 语言建议用大写字母书写如下关键字: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)保留识别符AHDL中的保留识别符:CARRY JKFFE SRFFECASCADE JKFF SRFFCEIL LATCH TFFEDFFE LCELL TFFDFF MCELL TRIEXP MEMORY USED FLOOR OPENDRN WIRE GLOBAL SOFT XAHDL中运算符符号功能+:加号-:减=:数和串相等!:NOT!=:不等于>:大于>=大于等于<小于<=:小于等于&AND!&

21、:NAND$:XOR!$XNOR#OR!#BOR(4) AHDL中的组具有相同类型的端口可以形成一个组,该组可以有256个成员“ BIT”,如下的组虽然表达方式不同,但实际是同一个组。b5.O(b5, b4, b3, b2, b1, b0)b(5) AHDL中的数二进制例:B"0110X1X10"八进制例:Q"4671223"十六进制例:H"123AECF"(6) AHDL中的算数表达式运算符说明优先级别+(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运算类:lpm_abs lpm_counterlpm_add_sub lpm_multlpm_compare存储类: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具体的功能块输入输出信号见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具体的功能块输入输出信号见Max+plus n软件帮助。(9)基本逻辑功能块(Primitives)缓冲器类:CARRY"OPndrn云SCADESOFTEXP TRIGLOBAL (SCLK)WIRE (GDFs only)LCELL (MC

27、ELL)触发器和琐存器类: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)具体的功能块的功能和输入输出信号见Max+plus n软件帮助。3.5.3 AHDL的使用例子使用AH

28、DL中的数例1:SUBDESIGN decode1(address15.O: INPUT;chip_e nable: OUTPUT;)BEGINchip_enable = (address15.0 = H"0370");END;在该例中当地址为十六进制数370时,输出端"chip_enable”输出高电平。(2) 常数和定义函数功能的使用 例 1:常数使用例。CONSTANT IO_ADDRESS = H"0370" % 常数 %SUBDESIGN decode2(a15.0 : INPUT;ce: OUTPUT;)BEGINce = (a15

29、.0 = IO_ADDRESS);END;例 2: 定义函数使用例。PARAMETERS (WIDTH);DEFINE MAX(a,b) = (a > b) ? a : b;%使用定义功能定义的函数,该函数保证端口位数的数量%SUBDESIGN minport(dataAMAX(WIDTH,0).0 : INPUT;dataBMAX(WIDTH,0).0 : OUTPUT;)BEGINdataB = dataA;END;(3) 布尔表达式的使用例 1 :SUBDESIGN boole1(a0, a1, b : INPUT;out1, out2 : OUTPUT;)BEGINout1 =

30、a1 & !a0;out2 = out1 # b;END;例 2: 具有一个声明的节点SUBDESIGN boole2(a0, a1, b : INPUT;out : OUTPUT;)VARIABLEa_equals_2 : NODE; %被声明的节点 %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; % 声明常数 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: 具有条件语句的例。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 信号具有最高优先权, 若三个信号 high,middle 和 low 都被 VCC 驱动, 则只 有 high 信号起作用,输出 highest_level = 3 。例 5: 有 CASE 的语句的例。 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-%该显示器可以显示如下数字和字母: % 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该函数的AHDL说明: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" % 问号的 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; 在该例中若没有译码输出时,输出问号。 例 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) 低电平激活信号 例 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) 时序逻辑例 1: 定义 D 触发器的输入输出信号。 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个D触发器的信号例 2: 调用巨功能模块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 位计数器例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; % 置数 %ELSIF ena THENcount.d = count.q + 1; % 计数 %ELSEcount.d = count.q; % 保持 %END IF;q = count;END;例 5: 具有 D 触发器功能的状态机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: 步进马达控制器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 :+匕宀指定一个输出BIT的状态机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: 不声明输出状态的状态机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 :异步状态机SUBDESIGN mealy(clk: INPUT;reset : INPUT;y: INPUT;z: OUTPUT;)VARIABLEss: MACHINE WITH STATES (s0, s1, s2, s3);BEGI

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论