EDA信号与变量课件_第1页
EDA信号与变量课件_第2页
EDA信号与变量课件_第3页
EDA信号与变量课件_第4页
EDA信号与变量课件_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

信号与变量区别&联系1非静态与静态数据对象非静态数据处理 signal,variable静态数据处理 constant,generic常量和信号是全局的,用于顺序代码及并行代码变量是局部的,只用于顺序代码(process,function,procedure)且值不能直接向外传递。2常量常量可以在包集、实体或结构中声明。包集—调用包集的所有实体使用实体—对该实体的所有结构体可用结构—仅在结构体中使用3信号代表逻辑电路的“硬”连线,用作输入/出端口、内部连接所有端口默认为信号定义的地方同常量当信号用在顺序描述语句(如process)内部,其值不立刻更新,信号值是在相应的进程、函数或过程完成后才进行更新对同一个信号进行多重赋值:编译器可能给出警告并退出综合过程或仅认为最后一次赋值是有效的。(MaxplusII给出警告)4计数向量中‘1’的个数信号不立即更新变量立即更新5libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;entitycount_onesisport(din:instd_logic_vector(7downto0); ones:outintegerrange0to8);endcount_ones;architecturenot_okofcount_onesis signaltemp:integerrange0to8;begin process(din) begin temp<=0; foriin0to7loop if(din(i)='1')then temp<=temp+1; endif; endloop; ones<=temp; endprocess; endarchitecturenot_ok;6process(clk,clr) variablecount2:integerrange0to7; begin if(clr='1')then count1<=0; count2:=0; out1<='0'; out2<='0'; else if(clk'eventandclk='1')then count1<=count1+1; count2:=count2+1; if(count1=???)then out1<=notout1; count1<=0; endif; if(count2=???)then out2<=notout2; count2:=0; endif; endif; endif; endprocess;endBehavioral;9Cnt1:sigCnt2:var2,22,34,410触发器设计libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;entitydffisport(d,clk:instd_logic; q:bufferstd_logic; qbar:outstd_logic);enddff;architecturenot_okofdffisbegin process(clk) begin if(clk'eventandclk='1')then q<=d; --进程结束后才生效 qbar<=notq;--进程结束后才生效,q的值此时还没更新! endif; endprocess;endarchitecturenot_ok;11qbar延迟了一个周期12改进的设计libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;entitydffisport(d,clk:instd_logic; q:bufferstd_logic; qbar:outstd_logic);enddff;architectureokofdffisbegin process(clk) begin if(clk'eventandclk='1')then q<=d; endif; endprocess; qbar<=notq;endarchitectureok;13qbar赋值与进程并发,q变化,qbar立即更新14寄存器数量一个信号的赋值是以另一个信号的跳变为条件时(即发生同步赋值时),编译后产生寄存器。(process、function、procedure中)如果一个变量在还没有进行赋值操作时已被使用,那么综合后就好产生寄存器。一个变量在一个信号跳变时赋值,并且该值最终又被赋给了另外的信号,则综合后会产生寄存器。如果变量的值没有被进程(函数或过程)以外的代码调用,那么不一定产生寄存器。151617libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;entitydffisport(d,clk:instd_logic; q:bufferstd_logic; qbar:outstd_logic);enddff;architecturenot_okofdffisbegin process(clk) begin if(clk'eventandclk='1')then q<=d; --进程结束后才生效 qbar<=notq;--进程结束后才生效,q的值此时还没更新! endif; endprocess;endarchitecturenot_ok;18改进的设计libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;entitydffisport(d,clk:instd_logic; q:bufferstd_logic; qbar:outstd_logic);enddff;architectureokofdffisbegin process(clk) begin if(clk'eventandclk='1')then q<=d; endif; endprocess; qbar<=notq;endarchitectureok;19移位寄存器entityshiftisport( din,clk:inbit; dout:outbit);endshift;architectureshiftofshiftisbegin process(clk) variablea,b,c:bit; begin if(clk'eventandclk='1')then dout<=c; c:=b; b:=a; a:=din; endif; endprocess;endarchitectureshift;20entityshiftisport( din,clk:inbit; dout:outbit);endshift;architectureshiftofshiftisbegin process(clk) variablea,b,c:bit; begin if(clk'eventandclk='1')then a:=din; b:=a; c:=b; dout<=c;

endif; endprocess;endarchitectureshift;21entityshiftisport( din,clk:inbit; dout:outbit);endshift;architectureshiftofshif

温馨提示

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

评论

0/150

提交评论