资源描述:
《用AHDL设计运算电路-stu.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第七讲:使用AHDL编辑方法设计逻辑运算电路半加器、全加器、四位加法器四位加减法器、乘法器设计涉及的几种样本及元素介绍一、半加器设计SUBDESIGNhadd_t(a,b:INPUT;s,c:OUTPUT;)BEGINs=a$b;s=a&b;END;方法一:布尔表达式SUBDESIGNhadd_t(a,b:INPUT;s,c:OUTPUT;)BEGINTABLEa,b=>s,c;0,0=>0,0;0,1=>1,0;1,0=>1,0;1,1=>0,1;ENDTABLE;END;方法二:真值表法(一)SUBDESIGNhadd_t3(a[1..0]:INP
2、UT;b[1..0]:OUTPUT;)BEGINTABLEa[1..0]=>b[1..0];0=>0;1=>2;2=>2;3=>1;ENDTABLE;END;方法三:真值表法(二)用AHDL编辑方法一真值表:注意真值表的形式二逻辑表达式:逻辑运算符:NOT>AND>NAND>XOR>NXOR>OR=NOR逻辑运算符范例说明!!aNOT&A&BAND!&1!&0NAND$1$1XOR!$1!$1NXOR#A#BOR!#A!#BNOR逻辑运算符使用:1.两个操作数为单一节点:(a&b)2.两个操作数为组:(a,b,c)&(d,e,f)=(a&d,b&e,c
3、&f)3.一个操作数为单一节点,一个操作数为组:(a&b[1..4])=(a&b1,a&b2,a&b3,a&b4)4.两个操作数为数字:(3&9)=B“0011”&B“1001”=B“0001”5.一个操作数为数字,一个操作数为节点:(a,b,c)&1=(a,b,c)&(0,0,1)=(a&0,b&0,c&1)6.一个操作数为数字,一个操作数为Vcc:(a,b,c)&Vcc=(a,b,c)二、全加器设计SUBDESIGNfadd_t2(a,b,ci:INPUT;s,co:OUTPUT;)BEGINIF(a==0&b==0&ci==0)THENs=gnd
4、;co=gnd;ELSIF(a==0&b==1&ci==0)THENs=vcc;co=gnd;ELSIF(a==1&b==0&ci==0)THENs=vcc;co=gnd;用IFTHEN语句:ELSIF(a==1&b==1&ci==0)THENs=vcc;co=vcc;ELSIF(a==0&b==0&ci==1)THENs=vcc;co=gnd;ELSIF(a==0&b==1&ci==1)THENs=gnd;co=vcc;ELSIF(a==1&b==0&ci==1)THENs=gnd;co=VCC;ELSEs=vcc;co=vcc;ENDIF;END;
5、BEGINTABLEa,b,ci=>s,co;0,0,0=>0,0;0,1,0=>1,0;1,0,0=>1,0;1,1,0=>0,1;0,0,1=>1,0;0,1,1=>0,1;1,0,1=>0,1;1,1,1=>1,1;ENDTABLE;END;用真值表法:AHDL编辑方法一真值表:注意真值表的形式二逻辑表达式:IFTHENSTATEMENT运算/比较符运算/比较符范例说明优先级--1负号1!!a反向1+1+1加2-1-1减2==If5==5相等3!=If5!=4不等于3>If5>4大于3>=If5>=4大于等于3&,!&---4;$,!$---5;
6、#,!#---6三、四位加法器设计INCLUDE"hadd_t.inc";INCLUDE"fadd_t.inc";SUBDESIGNadd4_t(a[3..0],b[3..0]:INPUT;s[3..0],cout:OUTPUT;)VARIABLEh:hadd_t;f[3..1]:fadd_t;AHDL编辑方法:方法一介绍:样本VariableSection与InstanceDeclaration的引用方法BEGINh.a=a0;h.b=b0;f[].a=a[3..1];f[].b=b[3..1];f1.ci=h.c;f2.ci=f1.co;f3.ci
7、=f2.co;s0=h.s;s[3..1]=f[3..1].s;cout=f3.co;END;a3a2a1a0b3b2b1b0Coc3c2c1Cos3s2s1s0f3f2f1h1方法二介绍:加法运算SUBDESIGNadd4_t2(a[3..0],b[3..0]:INPUT;s[3..0],cout:OUTPUT;)BEGIN(cout,s[])=(gnd,a[])+(gnd,b[]);END;四、四位加减法器设计四位加减法器设计SUBDESIGNsubadd4_t(sub,a[3..0],b[3..0]:INPUT;co,s[3..0]:OUTPUT
8、;)BEGINifsubthen(co,s[])=(gnd,a[])-(gnd,b[]);el