EDA信号与变量.ppt

上传人:牧羊曲112 文档编号:5428617 上传时间:2023-07-06 格式:PPT 页数:22 大小:341.49KB
返回 下载 相关 举报
EDA信号与变量.ppt_第1页
第1页 / 共22页
EDA信号与变量.ppt_第2页
第2页 / 共22页
EDA信号与变量.ppt_第3页
第3页 / 共22页
EDA信号与变量.ppt_第4页
第4页 / 共22页
EDA信号与变量.ppt_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《EDA信号与变量.ppt》由会员分享,可在线阅读,更多相关《EDA信号与变量.ppt(22页珍藏版)》请在三一办公上搜索。

1、信号与变量,区别&联系,2,非静态与静态数据对象,非静态数据处理signal,variable静态数据处理constant,generic常量和信号是全局的,用于顺序代码及并行代码变量是局部的,只用于顺序代码(process,function,procedure)且值不能直接向外传递。,3,常量,常量可以在包集、实体或结构中声明。包集调用包集的所有实体使用实体对该实体的所有结构体可用结构仅在结构体中使用,4,信号,代表逻辑电路的“硬”连线,用作输入/出端口、内部连接所有端口默认为信号定义的地方同常量当信号用在顺序描述语句(如process)内部,其值不立刻更新,信号值是在相应的进程、函数或过程

2、完成后才进行更新对同一个信号进行多重赋值:编译器可能给出警告并退出综合过程或仅认为最后一次赋值是有效的。(Maxplus II给出警告),5,计数向量中1的个数,信号不立即更新变量立即更新,library IEEE;use IEEE.STD_LOGIC_1164.ALL;entity count_ones isport(din:in std_logic_vector(7 downto 0);ones:out integer range 0 to 8);end count_ones;architecture not_ok of count_ones issignal temp:integer r

3、ange 0 to 8;beginprocess(din)begintemp=0;for i in 0 to 7 loopif(din(i)=1)thentemp=temp+1;end if;end loop;ones=temp;end process;end architecture not_ok;,library IEEE;use IEEE.STD_LOGIC_1164.ALL;entity count_ones isport(din:in std_logic_vector(7 downto 0);ones:out integer range 0 to 8);end count_ones;

4、architecture ok of count_ones isbeginprocess(din)variable temp:integer range 0 to 8;begintemp:=0;for i in 0 to 7 loopif(din(i)=1)thentemp:=temp+1;end if;end loop;ones=temp;end process;end architecture ok;,8,分频器设计,library IEEE;use IEEE.STD_LOGIC_1164.ALL;entity freq_divider isport(clk,clr:in std_logi

5、c;out1,out2:buffer std_logic);end freq_divider;architecture Behavioral of freq_divider issignal count1:integer range 0 to 7;begin,process(clk,clr)variable count2:integer range 0 to 7;beginif(clr=1)thencount1=0;count2:=0;out1=0;out2=0;elseif(clkevent and clk=1)thencount1=count1+1;count2:=count2+1;if(

6、count1=?)thenout1=not out1;count1=0;end if;if(count2=?)thenout2=not out2;count2:=0;end if;end if;end if;end process;end Behavioral;,10,Cnt1:sigCnt2:var 2,2,2,3,4,4,11,触发器设计,library IEEE;use IEEE.STD_LOGIC_1164.ALL;entity dff isport(d,clk:in std_logic;q:buffer std_logic;qbar:out std_logic);end dff;ar

7、chitecture not_ok of dff isbeginprocess(clk)beginif(clkevent and clk=1)thenq=d;-进程结束后才生效qbar=not q;-进程结束后才生效,q的值此时还没更新!end if;end process;end architecture not_ok;,12,qbar延迟了一个周期,13,改进的设计,library IEEE;use IEEE.STD_LOGIC_1164.ALL;entity dff isport(d,clk:in std_logic;q:buffer std_logic;qbar:out std_log

8、ic);end dff;architecture ok of dff isbeginprocess(clk)beginif(clkevent and clk=1)thenq=d;end if;end process;qbar=not q;end architecture ok;,14,qbar赋值与进程并发,q变化,qbar立即更新,15,寄存器数量,一个信号的赋值是以另一个信号的跳变为条件时(即发生同步赋值时),编译后产生寄存器。(process、function、procedure中)如果一个变量在还没有进行赋值操作时已被使用,那么综合后就好产生寄存器。一个变量在一个信号跳变时赋值,并且该

9、值最终又被赋给了另外的信号,则综合后会产生寄存器。如果变量的值没有被进程(函数或过程)以外的代码调用,那么不一定产生寄存器。,16,17,18,library IEEE;use IEEE.STD_LOGIC_1164.ALL;entity dff isport(d,clk:in std_logic;q:buffer std_logic;qbar:out std_logic);end dff;architecture not_ok of dff isbeginprocess(clk)beginif(clkevent and clk=1)thenq=d;-进程结束后才生效qbar=not q;-进

10、程结束后才生效,q的值此时还没更新!end if;end process;end architecture not_ok;,19,改进的设计,library IEEE;use IEEE.STD_LOGIC_1164.ALL;entity dff isport(d,clk:in std_logic;q:buffer std_logic;qbar:out std_logic);end dff;architecture ok of dff isbeginprocess(clk)beginif(clkevent and clk=1)thenq=d;end if;end process;qbar=not

11、 q;end architecture ok;,20,移位寄存器,entity shift isport(din,clk:in bit;dout:out bit);end shift;architecture shift of shift isbeginprocess(clk)variable a,b,c:bit;beginif(clkevent and clk=1)thendout=c;c:=b;b:=a;a:=din;end if;end process;end architecture shift;,entity shift isport(din,clk:in bit;dout:out

12、bit);end shift;architecture shift of shift isbeginprocess(clk)variable a,b,c:bit;beginif(clkevent and clk=1)thena:=din;b:=a;c:=b;dout=c;end if;end process;end architecture shift;,entity shift isport(din,clk:in bit;dout:out bit);end shift;architecture shift of shift issignal a,b,c:bit;beginprocess(clk)beginif(clkevent and clk=1)thena=din;b=a;c=b;dout=c;end if;end process;end architecture shift;,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号