《硬件描述语言VHDL及其应用.ppt》由会员分享,可在线阅读,更多相关《硬件描述语言VHDL及其应用.ppt(180页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、哈尔滨工业大学微电子中心硬件描述语言VHDL及其应用 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望哈尔滨工业大学微电子中心一、目的1.了解目前电子设计系统方法及流程2.了解/掌握综合与验证工具3.能用VHDL设计复杂功能电路二、内容1.高层次设计概述2.如何写优化的VHDL代码3.examples4.SoC设计方法学5.设计工具使用三、如何学习本课程带着实际课题学习,多提问题,一起分析、讨论11/14/20222哈尔滨工业大学微电子中心一、高层次设计概述1.ED
2、A工具发展2.设计方法3.深亚微米设计问题4.测试综合(可测性设计)5.Top-down设计流程6.硬件描述语言7.综合8.VHDL设计小结11/14/20223哈尔滨工业大学微电子中心年代名称硬件特征70sCAD16位小型机图型编辑,设计规则检查80sCAE32位工作站LVS工具90sEDA32位工作站逻辑/行为综合工具NowSoC?32位工作站物理综合工具,IP复用技术1.1EDA工具发展11/14/20224哈尔滨工业大学微电子中心1.1EDA工具发展(Cont.)CAD:逻辑图输入、逻辑模拟、电路模拟、版图设计和版图验证分别进行,需要对两者结果进行多次比较、修改。设计规模较小CAE:集
3、逻辑图输入、逻辑模拟、测试码生成、电路模拟、版图设计、版图验证等工具一体,构成一个较完整的IC设计系统EDA:HDL取代逻辑输入,逻辑网表由综合工具自动产生,可管理性增强,易于维护和数据交换SoC:采用深亚微米工艺生产技术,基于平台设计和IP复用技术,时序收敛性为首要目标11/14/20225哈尔滨工业大学微电子中心自顶向下设计方法(Top-down):系统行为设计结构设计逻辑设计电路设计版图设计1.2设计方法自底向上设计方法(Bottom-up):系统功能划分单元设计功能模块设计子系统设计系统总成基于平台设计方法(Platform-based):SoC设计普遍采用的方法,SoC平台和IPIn
4、tellectualProperty其它设计:嵌入式设计方法,层次式设计方法等11/14/20226哈尔滨工业大学微电子中心1.3深亚微米设计问题连线延时时序模型器件模型信号完整性电磁干扰功耗设计工具综合优化工具布图规划工具SDFPDEFSDF标准数据格式PDEF物理设计交换格式11/14/20227哈尔滨工业大学微电子中心1.4测试综合目的:集成电路的测试简单化嵌入可测试结构,加速可测性设计产品制造前就可评价设计的可测性消除冗余逻辑诊断不可测的逻辑结构内容:测试嵌入、设计规则检查、测试码生成、故障模拟/诊断和输出测试图样测试综合测试综合包括了使测试成功的每一步骤:如加入带测试因素的电路,对逻
5、辑综合增加约束条件以满足测试要求及对高级语言描述的可测结构的综合等都可归结为测试综合11/14/20228哈尔滨工业大学微电子中心1.4测试综合(Cont.)方法:Full ScanPartialScanBISTBoundaryScan标准/规范:IEEE1149IEEEP1500VSIARelatedSpec.SoC可测试设计:IP可测试设计GlueLogic可测试设计测试存取结构分类:1Pass2Pass11/14/20229哈尔滨工业大学微电子中心1.5Top-down设计流程TIMINGLVS/DRCEXTRACTIONRouteCOTSIGNOFFPLANNINGSYNTHESISF
6、LOORPLAN,P&REXTRACTIONLVS/DRCTIMING 11/14/202210哈尔滨工业大学微电子中心1.6硬件描述语言1)VHDL&Verilog2)VHDLObjectEntityI/O界面描述Architecture功能定义Process行为模块LibraryVHDLObject的集合Package数据类型、子程序、子单元的集合ConfigurationArchitecture/Parameter选择11/14/202211哈尔滨工业大学微电子中心1.6硬件描述语言(Cont.)3)VHDL中的端口:InOutInoutBufferBlk1Blk3Blk4Blk5Blk
7、2InInoutOutBufferEntity11/14/202212哈尔滨工业大学微电子中心1.7综合Definition:Synthesis=Translation+OptimizationHDLcodegtechlogicnetlistmin(SpeedXAreaXPower)Optimization&technologyMappingBehavioralSynthesis:SchedulingandAllocationAlgorithm11/14/202213哈尔滨工业大学微电子中心1.8VHDL设计小结i.一个完整的设计由一些子单元相互连接而成ii.每个子单元有一个Entity和至少
8、一个Architectureiii.单元间数据传递是通过在Entity中描述中所声明的端口进行,通信端口的信号类型、端口宽度以及端口方向要匹配iv.一个Architecture可包括Behavioral、Dataflow和Structure风格语句v.子单元(Component)在使用之前要声明11/14/202214哈尔滨工业大学微电子中心1.8VHDL设计小结(Cont.)RS(255,223)码译码器Top框图11/14/202215哈尔滨工业大学微电子中心1.8VHDL设计小结(Cont.)RS(255,223)码译码器详细模块图11/14/202216哈尔滨工业大学微电子中心1.8V
9、HDL设计小结(Cont.)entityrsdecoderisport(reset,clk:instd_logic;decin:inbit8;decout:outbit8);endrsdecoder;architecturestructuralofrsdecoderiscomponentsyndromeport(reset,clk:instd_logic;rec:inbit8;synfb:inbit8;syndout:outbit8);endcomponent;1componentbmexpandport(reset,clk:instd_logic;synin:inbit8;cnt:inrsI
10、nt;synout:outbit8;lstsfe:outbit8;bout:outbit8);endcomponent;componentbmfftbufport(reset,clk:instd_logic;ctl255:instd_logic;syno,addo:inbit8;bmfo:outrsbit8_vector(0toN2-1);endcomponent;211/14/202217哈尔滨工业大学微电子中心1.8VHDL设计小结(Cont.)componentifftport(reset,clk:instd_logic;ctlN1m1,ctlN1:instd_logic;ctl254:
11、instd_logic;buffin:inrsbit8_vector(0toN2-1);iffto:outbit8);endcomponent;componentfftobufport(reset,clk:instd_logic;ctlobf:instd_logic;din:inbit8;fbo:outbit8);endcomponent;3componentdecbufport(reset,clk:instd_logic;din:inbit8;dout:outbit8);endcomponent;componentcontrolport(reset,clk:instd_logic;ctlN1
12、m1,ctlN1:outstd_logic;ctl254,ctl255:outstd_logic;ctlobf:outstd_logic;synfb:outstd_logic;cntout:bufferrsInt);endcomponent;411/14/202218哈尔滨工业大学微电子中心1.8VHDL设计小结(Cont.)componentxor8port(in1,in2:inbit8;xout:outbit8);endcomponent;signalctlN1m1,ctlN1,ctl254,ctl255:std_logic;signalctlobf,synfb:std_logic;sig
13、nalfbo,dout,synout,lstsfe,bout:bit8;signalcntout:rsInt;signaliffto,syndout:bit8;signalbmfo:rsbit8_vector(0toN2-1);511/14/202219哈尔滨工业大学微电子中心1.8VHDL设计小结(Cont.)beginu1:control port map(reset,clk,ctlN1m1,ctlN1,ctl254,ctl255,ctlobf,synfb,cntout);u2:syndromeportmap(reset,clk,decin,synfb,syndout);u3:bmexpa
14、ndportmap(reset,clk,syndout,cntout,synout,lstsfe,bout);u4:bmfftbufportmap(reset,clk,ctl255,synout,lstsfe,bmfo);u5:ifftportmap(reset,clk,ctlN1m1,ctlN1,ctl254,bmfo,iffto);u6:fftobufportmap(reset,clk,ctlobf,iffto,fbo);u7:decbufportmap(reset,clk,decin,dout);u8:xor8portmap(fbo,dout,decout);endstructural;
15、611/14/202220哈尔滨工业大学微电子中心二、如何写优化的VHDL代码1.数据类型2.并发/顺序赋值语句3.小结4.Process语句5.资源共享6.其它11/14/202221哈尔滨工业大学微电子中心2.1数据类型TypesScalarFileAccessCompositeArrayRecordEnumeratedRealIntegerPhysical11/14/202222哈尔滨工业大学微电子中心2.1数据类型(Cont.)标准数据类型:bit,bit_vector,std_ulogic,std_logic,std_logic_vector,boolean,integer,etc.
16、复合数据类型:array,record,sub_type,newtype11/14/202223哈尔滨工业大学微电子中心2.1.1赋值语句i/signalt,s:bit;s=1;-s=t;ii/signalc:bit_vector(0to3);signald:bit_vector(3downto0);c=“1011”;d=c;-ok?c(0to3)=d(0to3)ok?d=c;-ok!c(0to3)=d(0to3)No!c(0)c(1)c(2)c(3)d(3)d(2)d(1)d(0)11/14/202224哈尔滨工业大学微电子中心iii/signals,t,w,m:bit;signalc:bi
17、t_vector(0to3);c=“1011”;c=s&t&w&m;c=(1,0,1,1);c=3;c1,1-s,2-1,3-1);Ok?c=3;-Noc1,1-s,2-1,3-1);-Ok2.1.1赋值语句(Cont.)11/14/202225哈尔滨工业大学微电子中心iv/signala_vec:bit_vector(0to11);a_vec=B”1100_0011_0011_1100”;a_vec=“1100001100111100”;a_vec=X”C33C”;a_vec=X”C3_3C”;a_vec=“1100_0011_0011_1100”;a_vec=“C33C”;Ok?a_vec
18、=“1100_0011_0011_1100”;a_vec=“C33C”;No!2.1.1赋值语句(Cont.)11/14/202226哈尔滨工业大学微电子中心二进制B(Binary)八进制O(Octal)十六进制X(Hexadecimal)位串中的进制表示:十进制D(Decimal)?十进制D(Decimal)No!2.1.1赋值语句(Cont.)11/14/202227哈尔滨工业大学微电子中心v/signalA,B,C:bit_vector(3downto0);C=AandB;C=notAOk?011011010100A=B=C=C(3)=A(3)andB(3);C(2)=A(2)andB(
19、2);C(1)=A(1)andB(1);C(0)=A(0)andB(0);S2.1.1赋值语句(Cont.)C=notAOK!01101001A=C=11/14/202228哈尔滨工业大学微电子中心vi/sliceofarrayentityVHDLisport(A:inbit_vector(0to7);outp:outbit);endVHDL;architectureE1ofVHDLisbeginoutp=A(5);end;signalC:bit_vector(0to7);C(4)=1;C(0to3)=“1001”;2.1.1赋值语句(Cont.)11/14/202229哈尔滨工业大学微电子中
20、心vii/Compositedatatypetypedateisrecordyear:integerrange1980to2030;month:integerrange1to12;day:integerrange1to30;endrecord;subtypebit8isbit_vector(7downto0);2.1.1赋值语句(Cont.)11/14/202230哈尔滨工业大学微电子中心vii/Compositedatatypesignalweekday,today:date;weekday.year=2003;weekday.monty=2;weekday.day=14;today=wee
21、kday;2.1.1赋值语句(Cont.)11/14/202231哈尔滨工业大学微电子中心2.1.2数据类型转换强类型语言:VHDL具有丰富的数据类型,不同类型的对象(信号、变量)不能直接赋值经常转换的数据类型:std_logic,bit,std_ulogic,boolean,signedunsigned,std_logic_vector,bit_vector数据类型转换三种方法:类型标记转换法、函数转换法和常数转换法11/14/202232哈尔滨工业大学微电子中心类型标记转换法std_logicandstd_ulogic,std_logic_vectorandsignedstd_logic_
22、vectorandunsignedintegerandreal等signalastd_logic_vector(0to7);signalbunsigned(0to7);b=unsigned(a);2.1.2数据类型转换(Cont.)11/14/202233哈尔滨工业大学微电子中心函数转换法std_logicandbitstd_ulogicandbit,booleanandbit,std_logic_vectorandbit_vectorintegerandstd_logic_vector/unsigned等signalastd_logic_vector(0to7);signalbinteger
23、range0to255;a=to_stdlogicvector(X”AF”);b0,1|H=1,others=0);signals:std_ulogic;signala:bit;a=typeconv(s);常数转换法2.1.2数据类型转换(Cont.)11/14/202235哈尔滨工业大学微电子中心Howtotransformbittypetobooleantype?signalbitty:bit;signalbooly:boolean;booly=(bitty=1);Discussion2.1.2数据类型转换(Cont.)11/14/202236哈尔滨工业大学微电子中心2.1.3逻辑运算与关
24、系运算运算符:and,or,not,xor,nand,nor=,/=,=Discussion:Whatistheresultofthefollowingrelationalstatement?“1000”“1111”=?“1000”“1111”=false11/14/202237哈尔滨工业大学微电子中心2.1.4算术操作运算符:+,*,mod,/,rem操作数类型:std_logic_vector,integer,signed,unsigned右操作数必须为2的指数!useieee.std_logic_unsigned.all;11/14/202238哈尔滨工业大学微电子中心2.1.4算术操作
25、(Cont.)signala,b:std_logic_vector(3downto0);q1=unsigned(a)+unsigned(b);q2=unsigned(a)+signed(b);q3=signed(a)+signed(b);q4=a+b;q5=(0&a)+b;-4bit-5bit-4bit-4bit-5bit11/14/202239哈尔滨工业大学微电子中心2.1.5连字符和聚集连字符:concatenationoperator聚集:aggregatessignalA,B:std_logic_vector(3downto0);signalC:std_logic_vector(7do
26、wnto0);signalD:std_logic;C=A&B;C(7)C(6)C(5)C(4)C(3)C(2)C(1)C(0)AB11/14/202240哈尔滨工业大学微电子中心C(7)=Z;C(6downto3)=A;C(2downto0)=0&A(1downto0);C1,6=D,5downto2=1,others=0);C=“00000000”;-初始化C0);2.1.5连字符和聚集(Cont.)11/14/202241哈尔滨工业大学微电子中心2.2并发/顺序赋值语句并发赋值语句在architecture的begin和end之间,与书写顺序无关,每一条并发语句均可用一个process语句
27、等价顺序赋值语句只能在process和子程序的begin和end之间,它除信号赋值语句外,还有变量赋值11/14/202242哈尔滨工业大学微电子中心2.2.1并发赋值语句D=A+E;A=B+C;+BCEAD11/14/202243哈尔滨工业大学微电子中心2.2.1并发赋值语句(Cont.)A=B+A;并发赋值语句:+ABAC=A;C=B;ABC组合逻辑环路!Multi-driver,needresolvedfunction11/14/202244哈尔滨工业大学微电子中心2.2.2顺序赋值语句D=A+E;A=B+C;+BCEAD11/14/202245哈尔滨工业大学微电子中心2.2.2顺序赋值
28、语句(Cont.)C=A;C=B;BCA0andI=7generateu2:dffportmap(reset,clk,tv(I1),tv(I);endgenerate;endgenerate;dout=tv(7);endstr;11/14/202248哈尔滨工业大学微电子中心2.4process描述电路功能或行为。由于综合后的电路对所有输入信号变化敏感,因此所有被读被读信号均应包含在敏感表中,否则,综合前的模拟结果与综合后的模拟结果不一致!11/14/202249哈尔滨工业大学微电子中心2.4.1syntaxprocess_label:process(sensitivitylist)decla
29、rations;beginstatements;-if,loop,case,subprogramcalletcendprocessprocess_label;11/14/202250哈尔滨工业大学微电子中心2.4.1syntaxP1:process(A,B)BeginD=AorBandC;EndprocessP1;P1:process(A,B,C)BeginD=AorBandC;EndprocessP1;11/14/202251哈尔滨工业大学微电子中心2.4.2communicationamongprocessAssignmentIf,case,loopetcSignal_NSignal_3S
30、ignal_1Signal_2ProcessAProcessBarchitectureexample11/14/202252哈尔滨工业大学微电子中心2.4.3ifthenelse语句综合i/.引入寄存器entitydffisport(d:instd_logic;clk:instd_logic;q:outstd_logic);Enddff;architecturertlofdffisbegininfer_reg:process(d,clk)beginif(clkeventandclk=1)thenq=d;endprocessinfer;endrtl;11/14/202253哈尔滨工业大学微电子中
31、心2.4.3ifthenelse语句综合(Cont.)ii/.引入锁存器Infer_latch:process(A,B)beginif(A=1)thenx=B;endprocessinfer_infer_latch;Infer_latch:process(A,B)Begin x=0;if(A=1)thenx=B;endprocessinfer_infer_latch;隐含了A=0时x=x;不完全的else11/14/202254哈尔滨工业大学微电子中心2.4.3ifthenelse语句综合(Cont.)iii/.组合电路entitycombisport(a,b:inbit;select:inb
32、it;y:outbit);endcomb;architecturearchofcombisbeginprocess(a,b,select)beginif(select=1)theny=b;elsey=a;endif;endprocess;endarch;bayselect1011/14/202255哈尔滨工业大学微电子中心2.4.3ifthenelse语句综合(Cont.)iv/.异步复位process(reset,clk,d)Beginif(reset=0)thenq=0;elsif(clkeventandclk=1)thenq=d;endif;endprocess;dclkresetq11
33、/14/202256哈尔滨工业大学微电子中心2.4.3ifthenelse语句综合(Cont.)v/.三态逻辑signals,sel,data:std_logic;process(sel,data)Beginif(sel=1)thens=data;elses=Z;endif;endprocess;111/14/202257哈尔滨工业大学微电子中心2.4.3ifthenelse语句综合(Cont.)v/.三态逻辑architecturebehoftribufissignalasel,bsel,a,b,s:std_logic;beginpa:process(asel,a)begins=Z;if(a
34、sel=1)thens=a;endif;endprocesspa;2pb:process(bsel,b)begins=Z;if(bsel=1)thens=b;endif;endprocesspb;endbeh;Multidriver!11/14/202258哈尔滨工业大学微电子中心2.4.3ifthenelse语句综合(Cont.)Discussionsignala,b,use_b:bit;process(a,b,use_b)Beginif(use_b=1)thens=b;elseif(use_b=0)thens=a;endif;endprocess;1Latch?11/14/202259哈尔
35、滨工业大学微电子中心2.4.3ifthenelse语句综合(Cont.)Discussionsignala,b,use_b:std_logic;process(a,b,use_b)Beginif(use_b=1)thens=b;elseif(use_b=0)thens=a;endif;endprocess;2Latch?11/14/202260哈尔滨工业大学微电子中心2.4.3ifthenelse语句综合(Cont.)Discussionelseassertfalsereport“invaliduse_b”severityerror;endif;endprocess;3what?signala
36、,b,use_b:std_logic;process(a,b,use_b)Beginif(use_b=1)thens=b;elseif(use_b=0)thens=a;11/14/202261哈尔滨工业大学微电子中心2.4.3ifthenelse语句综合(Cont.)vi/.在一个进程中,一个信号只能对应一个三态驱动process(b,ub,a,ua)Begindout=Z;if(ub=1)thendout=b;endif;if(ua=1)thendout=a;endif;endprocess;11/14/202262哈尔滨工业大学微电子中心2.4.3ifthenelse语句综合(Cont.)
37、vii/.Z值使用规则如:doutstatements;whenvalue|value=statements;whenvalue1tovalue2=statements;whenothers=statements;endcase;11/14/202265哈尔滨工业大学微电子中心2.4.4case语句(Cont.)ii/.case语句规则任意value互不相同如无others分枝,必须穷尽所有可能的表达式值如有others分枝,必须至少有一个表达值未列出任意分枝中的语句可以有多条11/14/202266哈尔滨工业大学微电子中心2.4.4case语句(Cont.)entitydecoderispo
38、rt(din:instd_logic_vector(0to2);q:outstd_logic_vector(0to7);enddecoder;architectureexofdecoderisbeginprocess(din)begincase(din)when“000”=qqqqqqqqq=“-”;endcase;endprocess;endex;11/14/202267哈尔滨工业大学微电子中心2.4.5forloop语句i/.语法loop_label:forloop_varinrangeloopsequentialstatements;endlooploop_label;说明:loop_l
39、abel可选,loop_var不需声明,综合时,循环语句将unrolledWhyloopstatement?11/14/202268哈尔滨工业大学微电子中心2.4.5forloop语句(Cont.)entityparsumisport(word:instd_logic_vector(0to7);par:outstd_logic);endparsum;architectureaddxorofparsumisbeginprocess(word)variablets:std_logic;begints:=0;forIinwordrangeloopts:=tsxorword(I);endloop;pa
40、r=ts;endprocess;endaddxor;Discussion:如果ts为信号,结果是什么?11/14/202269哈尔滨工业大学微电子中心2.4.6数据对象constantvariablesignali/.constantandvariableconstantconst_name:type:=value;variablevar_name:type;格式constantmask:std_logic_vector(0to7):=“00000000”;constantled_zero:bit_vector(0to7):=X”7E”;variabletsum:std_logic_vecto
41、r(3downto0);11/14/202270哈尔滨工业大学微电子中心2.4.6数据对象(Cont.)ii/.signalandvariable相同点:值可变,可综合为逻辑或线不同点:变量赋值有立即性,且只用于process和subprogram中(VHDL-1076-87),而信号除此之外,还可用于并行语句中应用:简单计算signal复杂计算variable中间结果variable11/14/202271哈尔滨工业大学微电子中心2.4.6数据对象(Cont.)signala,b,c,x,y:shortprocess(a,b,c)beginc=a;x=c+2;c=b;y=c+4;endpro
42、cess;signala,b,x,y:shortprocess(a,b,c)variablec:short;beginc:=a;x=c+2;c:=b;y=c+4;endprocess;11/14/202272哈尔滨工业大学微电子中心+2b4xy+2b4xya2.4.6数据对象(Cont.)signalvariable11/14/202273哈尔滨工业大学微电子中心2.4.6数据对象(Cont.)entitysigvarisport(a,b,c,d:std_logic;q:outstd_logic;endsigvar;architecturesigofsigvarissignalint:std_
43、logic;Beginprocess(a,b,c,d,int)beginint=aandbandc;q=intord;endprocess;endsig;entitysigvarisport(a,b,c,d:std_logic;q:outstd_logic;endsigvar;architecturesigofsigvarisBeginprocess(a,b,c,d)variablelint:std_logic;beginint:=aandbandc;q=intord;endprocess;endsig;11/14/202274哈尔滨工业大学微电子中心2.4.7wait语句waituntil,
44、wait,waiton,waitforwait语句表明了信号激活process的条件在process中,如有wait语句,敏感表必须取消在process中,如既无wait语句,也无敏感表,则不能正确模拟综合工具仅支持waituntil语句(引入寄存器)!11/14/202275哈尔滨工业大学微电子中心2.4.7wait语句(Cont.)libraryieee;Useieee.std_logic_1164.all;entitycount4isport(updown:instd_logic;clk:instd_logic;dout:outintegerrange0to15);endcount4;a
45、rchitecturebehaveofcount4issignalcnt:integerrange0to15;beginprocessbeginwaituntilclkeventandclk=1;if(updown=1)thenif(cnt=15)thencnt=0;elsecnt=cnt+1;endif;elseif(cnt=0)thencnt=15;elsecnt=cnt1;endif;endif;endprocess;endbehave;11/14/202276哈尔滨工业大学微电子中心2.5资源共享硬件资源:关系运算:=,/=,=算术运算:+,*,/每个运算符均要消耗大量的硬件资源,并产
46、生延时!如何用最小的资源实现相同的功能?11/14/202277哈尔滨工业大学微电子中心2.5资源共享(Cont.)i/.if(sel_a=1)thenz=a+t;endif;if(sel_a=0)thenz=b+t;endif;111/14/202278哈尔滨工业大学微电子中心2.5资源共享(Cont.)i/.z=a+twhensel_a=1elseb+t;或if(sel_a=1)thenz=a+t;elsez=b+t;endif;211/14/202279哈尔滨工业大学微电子中心2.5资源共享(Cont.)ii/.dout:=0;found:=false;forkin1to4loopif(
47、found=false)thenif(a(k)=1)thendout:=b(k)+c(k);found:=true;endif;endif;endloop;111/14/202280哈尔滨工业大学微电子中心2.5资源共享(Cont.)ii/.t1:=0;t2:=0;found:=false;forkin1to4loopif(found=false)thenif(a(k)=1)thent1:=b(k);t2:=c(k);found:=true;endif;endif;endloop;dout:=t1+t2;211/14/202281哈尔滨工业大学微电子中心2.5资源共享(Cont.)iii/.多
48、进程P1:processbeginwaituntilclkeventandclk=1;if(sel=“00”)thenreg_0=dA+dB;endif;endprocessP1;1P2:processbeginwaituntilclkeventandclk=1;if(sel=“01”)thenreg_1=dA-dB;endif;endprocessP2;11/14/202282哈尔滨工业大学微电子中心2.5资源共享(Cont.)iii/.多进程P3:processbeginwaituntilclkeventandclk=1;if(sel=“10”)thenreg_2=dB-dA;endif;
49、endprocessP1;2dout=reg_0whensel=“00”elsereg_1whensel=“01”elsereg_2whensel=“10”else0;资源:3个加法器/减法器,资源共享不能在多进程间实现!11/14/202283哈尔滨工业大学微电子中心2.5资源共享(Cont.)iv/.if(addr(31downto20)=“000000000001”)then资源:两个12位比较器资源:两个3位比较器+一个9位比较器if(addr(31downto23)=“000000000”)and(addr(22downto20)/=“111”)and(addr(22downto20
50、)/=“000”)then11/14/202284哈尔滨工业大学微电子中心2.5资源共享(Cont.)v/.s(0)A1)thens(k)=1;elses(k)=0;endif;endloop;资源:1个减法器,7个比较器说明:模拟时间长,因为每进入循环均要计算一次减法;综合时间也会较长,因为综合工具要移去循环中的定值表达式111/14/202285哈尔滨工业大学微电子中心2.5资源共享(Cont.)v/.s(0)tv)thens(k)=1;elses(k)=0;endif;endloop;资源:1个减法器,7个比较器说明:模拟、综合时间短211/14/202286哈尔滨工业大学微电子中心2.