在系统可编程技术:第11讲 VHDL语言结构体的描述方法

上传人:cn****1 文档编号:570229633 上传时间:2024-08-02 格式:PPT 页数:29 大小:213KB
返回 下载 相关 举报
在系统可编程技术:第11讲 VHDL语言结构体的描述方法_第1页
第1页 / 共29页
在系统可编程技术:第11讲 VHDL语言结构体的描述方法_第2页
第2页 / 共29页
在系统可编程技术:第11讲 VHDL语言结构体的描述方法_第3页
第3页 / 共29页
在系统可编程技术:第11讲 VHDL语言结构体的描述方法_第4页
第4页 / 共29页
在系统可编程技术:第11讲 VHDL语言结构体的描述方法_第5页
第5页 / 共29页
点击查看更多>>
资源描述

《在系统可编程技术:第11讲 VHDL语言结构体的描述方法》由会员分享,可在线阅读,更多相关《在系统可编程技术:第11讲 VHDL语言结构体的描述方法(29页珍藏版)》请在金锄头文库上搜索。

1、在系统可编程技术第第11讲讲 VHDL语言结构体的描述语言结构体的描述方法方法结构体的一般语言格式结构体的一般语言格式ARCHITECTURE ARCHITECTURE 结构体名结构体名 OF OF 实体名实体名 ISIS 说明语句说明语句 BEGINBEGIN 功能描述语句功能描述语句 END END 结构体名结构体名; ;结构体三种描述方法结构体三种描述方法行为描述行为描述(behavioral)数据流描述数据流描述(dataflow)结构化描述结构化描述(structural)功能描述语句功能描述语句进程语句进程语句信号赋值语句信号赋值语句子程序调用语句子程序调用语句元件例化语句元件例化

2、语句结构体结构体行为描述行为描述 行为描述是高层次描述方式,它只描述输入行为描述是高层次描述方式,它只描述输入与输出之间的逻辑转换关系,而不涉及具体逻辑与输出之间的逻辑转换关系,而不涉及具体逻辑电路结构等信息。电路结构等信息。 主要用于系统数学模型的仿真或系统工作原主要用于系统数学模型的仿真或系统工作原理的仿真。故其大量采用的算术运算、关系运算、理的仿真。故其大量采用的算术运算、关系运算、惯性延时、传输延时等描述方式是难于或不能进惯性延时、传输延时等描述方式是难于或不能进行逻辑综合的。行逻辑综合的。行为描述:一般采用进程语句行为描述:一般采用进程语句(PROCESSPROCESS)描述)描述高

3、层次的功能高层次的功能描述,不必考描述,不必考虑在具体电路虑在具体电路是怎样实现的。是怎样实现的。Architecture behavioral of eqcomp4 is begincomp: process (a,b) beginif a=b then equal = 1; else equal =0;end if; end process comp;end behavioral ;结构体数据流描述结构体数据流描述 数据流描述:也称寄存器(数据流描述:也称寄存器(RTL)描述方式,)描述方式,明确描述了数据信号的流动路径、流动方向和流明确描述了数据信号的流动路径、流动方向和流动结果。动结果

4、。 它采用类似于布尔方程的并行信号赋值语句它采用类似于布尔方程的并行信号赋值语句进行描述。可以描述时序电路,也可描述组合电进行描述。可以描述时序电路,也可描述组合电路。是完全能够进行逻辑综合的描述方式。路。是完全能够进行逻辑综合的描述方式。当当a和和b的的宽度发生宽度发生变化时,变化时,需要修改需要修改设计,当设计,当宽度过大宽度过大时,设计时,设计非常繁琐非常繁琐布尔方程描述布尔方程描述Architecture dataflow2 of eqcomp4 is beginequal = not(a(0) xor b(0)andnot(a(1) xor b(1)and not(a(2) xor

5、b(2)and not(a(3) xor b(3);end dataflow2;Architecture dataflow1 of eqcomp4 is begin equal 信号信号A1, 信号信号B=信号信号B1,);architecture architecture structstruct of eqcomp4 is of eqcomp4 isCOMPONENT XNOR2COMPONENT XNOR2PORT(A,B:IN STD_LOGIC;PORT(A,B:IN STD_LOGIC; C:OUT STD_LOGIC); C:OUT STD_LOGIC);END COMPONEN

6、T;END COMPONENT;COMPONENT and4COMPONENT and4PORT(a,b,c,d:INPORT(a,b,c,d:IN STD_LOGIC; STD_LOGIC; q:OUTq:OUT STD_LOGIC); STD_LOGIC);END COMPONENT; END COMPONENT; SIGNAL X:STD_LOGIC_VECTOR(0 TO 3); SIGNAL X:STD_LOGIC_VECTOR(0 TO 3);beginbegin U0:xnor2 port U0:xnor2 port map(Amap(A=a(0),B=b(0),C=x(0);

7、=a(0),B=b(0),C=x(0); U1:xnor2 port U1:xnor2 port map(map(B B=b(1),A=a(1),C=x(1)=b(1),A=a(1),C=x(1);); U2:xnor2 port U2:xnor2 port map(Amap(A=a(2),B=b(2),C=x(2);=a(2),B=b(2),C=x(2); U3:xnor2 port U3:xnor2 port map(Amap(A=a(3),B=b(3),C=x(3);=a(3),B=b(3),C=x(3); U4:and4 port U4:and4 port ap(aap(a=x(0),

8、b=x(1),c=x(2),d=x(3),q=equal);=x(0),b=x(1),c=x(2),d=x(3),q=equal);end end structstruct; ;三种描述方式的比较三种描述方式的比较描述方式描述方式优点优点缺点缺点适用场合适用场合结构化描结构化描述述连接关系清连接关系清晰,电路模晰,电路模块化清晰块化清晰繁琐、复杂繁琐、复杂层次化设计层次化设计数据流描数据流描述述布尔函数定布尔函数定义明白义明白逻辑方程逻辑方程难以获得难以获得小小门数设计门数设计行为描述行为描述逻辑关系描逻辑关系描述清晰述清晰不一定能综合不一定能综合系统建模、复系统建模、复杂的电路杂的电路进程语

9、句(进程语句(processprocess)Process 语句的格式为:语句的格式为: 进程标号进程标号: Process (敏感信号列表敏感信号列表) 变量声明变量声明Begin顺序语句;顺序语句;End Process 进程标号进程标号;敏感表敏感表(Sensitivity(Sensitivity list) list)包括进程的一些信号,当敏感表中的包括进程的一些信号,当敏感表中的某个信号变化时进程才被激活,进程内的顺序语句被执行。当进程某个信号变化时进程才被激活,进程内的顺序语句被执行。当进程结束时,进程内的输出信号值被更新,进程进入等待(睡眠)状态,结束时,进程内的输出信号值被更新

10、,进程进入等待(睡眠)状态,直到敏感表中的某一信号再次发生变化,进程被再次激活执行。直到敏感表中的某一信号再次发生变化,进程被再次激活执行。请用进程语句描述下面电路:请用进程语句描述下面电路: 方案一方案一Library Library ieeeieee; ;Use ieee.std_logic_1164.all;Use ieee.std_logic_1164.all;Entity example isEntity example isport(port(a,b:ina,b:in std_logicstd_logicc,d:outc,d:out std_logicstd_logic););En

11、d example;End example;architecture m2 of architecture m2 of examleexamle is isbeginbeginProcessProcess(a,ba,b)beginbegin c=a and b; c=a and b; d= a or b; d= a or b;end processend process; ;end m2;end m2;方案二方案二architecture m2 of architecture m2 of examleexamle is isbeginbeginA:Process(a,b)begin c=a a

12、nd b;end process A;B:Process(a,b)begin d= a or b;end process B;end m2;end m2;方案三方案三Library Library ieeeieee; ;Use ieee.std_logic_1164.all;Use ieee.std_logic_1164.all;Entity example isEntity example isport(port(a,b:ina,b:in std_logicstd_logicc,d:outc,d:out std_logicstd_logic););End example;End exampl

13、e;architecture m2 of architecture m2 of examleexamle is isbeginbeginProcessProcess(a,ba,b)variablevariable tmp1,tmp2:std_logic; tmp1,tmp2:std_logic;beginbegintmp1:=a and b;tmp1:=a and b;tmp2:=a or b;tmp2:=a or b;c=tmp1;c=tmp1;d=tmp2;d=tmp2;end processend process; ;end m2;end m2;变量的变量的结果必结果必须由信须由信号带出

14、号带出进程进程注意进程内的语句是顺序执行注意进程内的语句是顺序执行结果结果f总是总是等于等于a变量和信号的区别变量和信号的区别例:例:8未奇偶校验电路未奇偶校验电路Library ieee;Use ieee.std_logic_1164.all;Entity jojy is port(a:in std_logic_vector(0 to 7);q:out std_logic);End jojy;Architecture behave of jojy isBeginprocess(a)variable tmp:std_logic;begintmp:=0;for i in 0 to 7 loop

15、tmp:= tmp xor a(i);end loop;q b THEN RETURN a; ELSE RETURN b; END IF; END FUNCTION max; -结束结束FUNCTION语句语句END; -结束结束PACKAGE BODY语句语句 函数定义实例函数定义实例LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE WORK.hanshu.ALL ; ENTITY axamp IS PORT(dat1,dat2 : IN STD_LOGIC_VECTOR(3 DOWNTO 0); dat3,dat4 : IN STD_LOGIC_

16、VECTOR(3 DOWNTO 0); out1,out2 : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ); END; ARCHITECTURE bhv OF axamp IS BEGIN out1 = max(dat1,dat2); -用在赋值语句中的并行函数调用语句用在赋值语句中的并行函数调用语句 PROCESS(dat3,dat4) BEGIN out2 = max(dat3,dat4); -顺序函数调用语句顺序函数调用语句 END PROCESS; END; 函数应用实例函数应用实例过程(过程(Procedure)Procedure 过程名过程名 (参数表)(

17、参数表)Procedure 过程名过程名 (参数表)(参数表) IS 说明部分说明部分 Begin 顺序语句顺序语句END Procedure 过程名;过程名;过程首过程首在程序包标题在程序包标题中定义中定义过程体过程体在程序包体中在程序包体中定义定义LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;PACKAGE hanshu IS -定义程序包定义程序包 procedure max( signal a,b: IN STD_LOGIC_VECTOR; signal c: out std_logic_vector);-定义过程首定义过程首END ;PACKAGE

18、 BODY hanshu IS procedure max( signal a,b: IN STD_LOGIC_VECTOR)-定义过程体定义过程体 signal c: out std_logic_vector) is BEGINc=a;if(a=b) thenc=b;end if;END max; END; -结束结束PACKAGE BODY语句语句 过程定义实例过程定义实例LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE WORK.hanshu.ALL ; ENTITY axamp IS PORT(dat1,dat2 : IN STD_LOGIC

19、_VECTOR(3 DOWNTO 0); dat3,dat4 : IN STD_LOGIC_VECTOR(3 DOWNTO 0); out1,out2 : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ); END;ARCHITECTURE bhv OF axamp IS BEGINmax(dat1,dat2,out1);max(dat3,dat4,out2);END; 过程应用实例过程应用实例函数与过程对比函数与过程对比 过程可以返回多值,函数只能返回一个值。过程可以返回多值,函数只能返回一个值。过程的参数为过程的参数为IN、OUT、INOUT函数的参数为函数的参数为IN(默认默认)。函数和过程均能产生新的电路模块。函数和过程均能产生新的电路模块。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号