VHD并行描述语句.ppt

上传人:小飞机 文档编号:6522957 上传时间:2023-11-08 格式:PPT 页数:31 大小:751.32KB
返回 下载 相关 举报
VHD并行描述语句.ppt_第1页
第1页 / 共31页
VHD并行描述语句.ppt_第2页
第2页 / 共31页
VHD并行描述语句.ppt_第3页
第3页 / 共31页
VHD并行描述语句.ppt_第4页
第4页 / 共31页
VHD并行描述语句.ppt_第5页
第5页 / 共31页
点击查看更多>>
资源描述

《VHD并行描述语句.ppt》由会员分享,可在线阅读,更多相关《VHD并行描述语句.ppt(31页珍藏版)》请在三一办公上搜索。

1、第24讲 并发描述语句(5)主要知识点:生成语句 1.FOR-GENERATE 2.IF-GENERATEG,复习:参数传递语句元件例化,参数传递语句 参数传递语句(GENERIC)主要用来传递信息给设计实体的某个具体元件,如用来定义端口宽度、器件延迟时间等参数后并将这些参数传递给设计实体。使用参数传递语句易于使设计具有通用性,例如,在设计中有一些参数不能确定,为了简化设计和减少VHDL程序的书写,我们通常编写通用的VHDL程序。在设计程序中,这些参数是待定的,在模拟时,只要用GENERIC语句将待定参数初始化即可。参数传递语句的书写格式为:GENERIC(类属表);,例:LIBRARY IE

2、EE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY and2 IS GENERIC(DELAY:TIME:=10 ns);PORT(a:IN STD_LOGIC;b:IN STD_LOGIC;c:OUT STD_LOGIC);END and2;ARCHITECTURE behave OF and2 ISBEGIN c=a AND b AFTER(DELAY);END behave;,元件例化语句 元件例化就是将预先设计好的设计实体定义为一个元件,然后利用映射语句将此元件与当前设计实体中的指定端口相连,从而为当前设计实体引入了一个低一级的设计层次。在结构体中,描述只表示元

3、件(或模块)和元件(或模块)之间的互连,就象网表一样。当引用库中不存在的元件时,必须首先进行元件的创建,然后将其放在工作库中,通过调用工作库来引用元件。在引用元件时,要先在结构体中说明部分进行元件的说明,然后在使用元件时进行元件例化。,元件例化语句也是一种并行语句,各个例化语句的执行顺序与例化语句的书写顺序无关,而是按照驱动的事件并行执行的。在进行元件例化时,首先要进行例化元件的说明,元件说明部分使用COMPONENT语句,COMPONENT语句用来说明在结构体中所要调用的模块。如果所调用的模块在元件库中并不存在时,设计人员必须首先进行元件的创建,然后将其放在工作库中通过调用工作库来引用该元件

4、。,COMPONENT语句的一般书写格式如下:COMPONENT GENERIC;PORT;END COMPONENT;-元件说明语句在上面的书写结构中,保留字COMPONENT后面的“引用元件名”用来指定要在结构体中例化的元件,该元件必须已经存在于调用的工作库中;如果在结构体中要进行参数传递,在COMPONENT语句中,就要有传递参数的说明,传递参数的说明语句以保留字GENERIC开始;然后是端口说明,用来对引用元件的端口进行说明;最后以保留字END COMPONENT来结束 COMPONENT语句。,如果在结构体中要引用上例中所定义的带延迟的二输入与门,首先在结构体中要用COMPONENT

5、语句对该元件进行说明,说明如下:COMPONENT and2GENERIC(DELAY:TIME);PORT(a:IN STD_LOGIC;b:IN STD_LOGIC;c:OUT STD_LOGIC);END COMPONENT;,用COMPONENT语句对要引用的元件进行说明之后,就可以在结构体中对元件进行例化以使用该元件。元件例化语句的书写格式为:GENERIC MAP(参数映射)PORT MAP(端口映射);标号名是此元件例化的唯一标志,在结构体中标号名应该是唯一的,否则编译时将会给出错误信息;接下来就是映射语句,映射语句就是把元件的参数和端口与实际连接的信号对应起来,以进行元件的引用

6、。,VHDL提供了三种映射方法:位置映射、名称映射和混合映射。位置映射就是PORT MAP语句中实际信号的书写顺序与COMPONENT语句中端口说明中的信号书写顺序保持一致,如下例所示:,位置映射示例:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY example IS PORT(in1,in2:IN STD_LOGIC;out:OUT STD_LOGIC);END example;,ARCHITECTURE structure OF example IS COMPONENT and2GENERIC(DELAY:TIME);PORT(a:IN S

7、TD_LOGIC;b:IN STD_LOGIC;c:OUT STD_LOGIC);END COMPONENT;BEGIN U1:and2 GENERIC MAP(10 ns)-参数映射 PORT MAP(in1,in2,out);-端口映射END structure;,标号名 元件名,元件例化,在上例中,元件U1 的端口 a 映射到信号in1,端口 b 映射到信号in2,端口c 映射到信号 out。,元件说明,2.名称映射在PORT MAP语句中将引用的元件的端口信号名称赋给结构体中要使用的例化元件的信号,如下例所示:例:名称映射LIBRARY IEEE;USE IEEE.STD_LOGIC_

8、1164.ALL;ENTITY example IS PORT(in1,in2:IN STD_LOGIC;out:OUT STD_LOGIC);END example;,ARCHITECTURE structure OF example IS COMPONENT and2GENERIC(DELAY:TIME);PORT(a:IN STD_LOGIC;b:IN STD_LOGIC;c:OUT STD_LOGIC);END COMPONENT;BEGIN U1:and2 GENERIC MAP(10 ns)PORT MAP(a=in1,b=in2,c=out);END structure;,3.混

9、合方式 是在PORT MAP()的信号连接关系中含有上述的两种方式。,如:U3:mux2 PORT MAP(A,B,S1,y=Y);,注意:名称映射的书写顺序要求并不是很严格,只要把要映射的对应信号连接起来就可以了,顺序是可以颠倒的.,【例】试用元件例化语句,将四选一数据选择器用二选一来实现。,Y,D0 D1,D2 D3,S1,S0,A,B,顶层文件:,LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux4 IS PORT(D0,D1,D2,D3:IN STD_LOGIC;S0,S1:IN STD_LOGIC;Y:OUT STD_LOGIC);

10、END mux4;ARCHITECTURE example13 OF mux4 IS COMPONENT mux2 PORT(a,b,s:IN STD_LOGIC;y:OUT STD_LOGIC);END COMPONENT;SIGNAL A,B:STD_LOGIC;BEGIN U1:mux2 PORT MAP(D0,D1,S0,A);U2:mux2 PORT MAP(a=D2,b=D3,s=S0,y=B);U3:mux2 PORT MAP(A,B,S1,y=Y);END exmple13;,-元件例化-元件定义,-位置关联方式-名称关联方式-混合关联方式,【例】试用元件例化语句,将四选一数据

11、选择器用二选一来实现。,底层文件:,LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux2 IS PORT(a,b,s:IN STD_LOGIC;y:OUT STD_LOGIC);END mux2;ARCHITECTURE example13 OF mux2 IS BEGIN y=a WHEN s=0 ELSE b;END example13;,-二选一数据选择器,【例】试用元件例化语句,将四选一数据选择器用二选一来实现。,【练习】试用元件例化语句,将全加器用半加器来实现。,生成语句生成语句(GENERATE)是一种可以建立重复结构或者是在多个

12、模块的表示形式之间进行选择的语句。由于生成语句可以用来产生多个相同的结构,因此使用生成语句就可以避免多段相同结构的VHDL程序的重复书写(相当于复制)。生成语句有两种形式:FOR-GENERATE模式IF-GENERATE模式。,FOR-GENERATE 模式的生成语句FOR-GENERATE 模式生成语句的书写格式为:标号:FOR 循环变量 IN 离散范围 GENERATE;END GENERATE 标号;其中循环变量的值在每次的循环中都将发生变化;离散范围用来指定循环变量的取值范围,循环变量的取值将从取值范围最左边的值开始并且递增到取值范围最右边的值,实际上也就限制了循环的次数;循环变量每

13、取一个值就要执行一次GENERATE语句体中的并行处理语句;最后FOR-GENERATE模式生成语句以保留字END GENERATE 标号:;来结束GENERATE语句的循环。,生成语句的典型应用是存储器阵列和寄存器。下面以四位移位寄存器为例,说明FOR-GENERATE模式生成语句的优点和使用方法。下图所示电路是由边沿D触发器组成的四位移位寄存器,其中第一个触发器的输入端用来接收四位移位寄存器的输入信号,其余的每一个触发器的输入端均与左面一个触发器的Q端相连。,图用D触发器构成的四位移位寄存器根据上面的电路原理图,写出四位移位寄存器的VHDL描述如下。,LIBRARY IEEE;USE IE

14、EE.STD_LOGIC_1164.ALL;ENTITY shift_reg IS PORT(di:IN STD_LOGIC;cp:IN STD_LOGIC;do:OUT STD_LOGIC);END shift_reg;,ARCHITECTURE structure OF shift_reg IS COMPONENT dff PORT(d:IN STD_LOGIC;clk:IN STD_LOGIC;q:OUT STD_LOGIC);END COMPONENT;SIGNAL q:STD_LOGIC_VECTOR(3 DOWNTO 1);BEGIN dff1:dff PORT MAP(di,cp

15、,q(1);dff2:dff PORT MAP(q(1),cp,q(2);dff3:dff PORT MAP(q(2),cp,q(3);dff4:dff PORT MAP(q(3),cp,do);END structure;,元件说明,元件例化,在上例的结构体中有四条元件例化语句,这四条语句的结构十分相似。我们对上例再做适当修改,使结构体中这四条元件例化语句具有相同的结构,如下例所示:,例LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY shift_reg IS PORT(di:IN STD_LOGIC;cp:IN STD_LOGIC;do:OUT

16、 STD_LOGIC);END shift_reg;ARCHITECTURE structure OF shift_reg IS,COMPONENT dff PORT(d:IN STD_LOGIC;clk:IN STD_LOGIC;q:OUT STD_LOGIC);END COMPONENT;SIGNAL q:STD_LOGIC_VECTOR(4 DOWNTO 0);BEGINq(0)=di;dff1:dff PORT MAP(q(0),cp,q(1);dff2:dff PORT MAP(q(1),cp,q(2);dff3:dff PORT MAP(q(2),cp,q(3);dff4:dff

17、PORT MAP(q(3),cp,q(4);do=q(4);END structure;,元件例化,元件说明,这样便可以使用FOR-GENERATE模式生成语句对上例中的规则体进行描述,如例所示。,例:FOR-GENERATE模式生成语句应用LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY shift_reg IS PORT(di:IN STD_LOGIC;cp:IN STD_LOGIC;do:OUT STD_LOGIC);END shift_reg;ARCHITECTURE structure OF shift_reg IS,COMPONENT

18、dff PORT(d:IN STD_LOGIC;clk:IN STD_LOGIC;q:OUT STD_LOGIC);END COMPONENT;SIGNAL q:STD_LOGIC_VECTOR(4 DOWNTO 0);BEGINq(0)=di;label1:for i in 0 to 3 generatedffx:dff port map(q(i),cp,q(i+1);end generate label1;do=q(4);END structure;,可以看出用FOR-GENERATE模式生成语句替代例中的四条元件例化语句,使VHDL程序变的更加简洁明了。在例的结构体中用了两条并发的信号代

19、入语句和一条FOR-GENERATE模式生成语句,两条并发的信号代入语句用来将内部信号q和输入端口di、输出端口do连接起来,一条FOR-GENERATE模式生成语句用来产生具有相同结构的四个触发器。,IF-GENERATE模式生成语句IF-GENERATE模式生成语句的书写格式如下:标号:IF 条件 GENERATE;END GENERATE 标号;,IF-GENERATE模式生成语句主要用来描述一个结构中的例外情况,例如,某些边界条件的特殊性。当执行到该语句时首先进行条件判断,如果条件为“TRUE”才会执行生成语句中的并行处理语句;如果条件为“FALSE”,则不执行该语句。,例:IF-GE

20、NERATE模式生成语句应用LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY shift_reg IS PORT(di:IN STD_LOGIC;cp:IN STD_LOGIC;do:OUT STD_LOGIC);END shift_reg;ARCHITECTURE structure OF shift_reg IS,COMPONENT dff PORT(d:IN STD_LOGIC;clk:IN STD_LOGIC;q:OUT STD_LOGIC);END COMPONENT;SIGNAL q:STD_LOGIC_VECTOR(3 DOWNTO

21、1);BEGIN label1:FOR i IN 0 TO 3 GENERATE IF(i=0)GENERATE dffx:dff PORT MAP(di,cp,q(i+1));END GENERATE;,IF(i=3)GENERATE dffx:dff PORT MAP(q(i),cp,do);END GENERATE;IF(i/=0)AND(i/=3)GENERATE dffx:dff PORT MAP(q(i),cp,q(i+1));END GENERATE;END GENERATE label1;END structure;,在例的结构体中,FOR-GENERATE模式生成语句中使用了IF-GENERATE模式生成语句。IF-GENERATE模式生成语句首先进行条件i=0和i=3的判断,即判断所产生的D触发器是移位寄存器的第一级还是最后一级;如果是第一级触发器,就将寄存器的输入信号di代入到PORT MAP语句中;如果是最后一级触发器,就将寄存器的输出信号do代入到PORT MAP语句中。这样就解决了硬件电路中输入输出端口具有不规则性所带来的问题。,

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

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


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号