VHDL语言设计入门.ppt

上传人:s****8 文档编号:67324155 上传时间:2022-12-24 格式:PPT 页数:80 大小:473KB
返回 下载 相关 举报
VHDL语言设计入门.ppt_第1页
第1页 / 共80页
VHDL语言设计入门.ppt_第2页
第2页 / 共80页
点击查看更多>>
资源描述

《VHDL语言设计入门.ppt》由会员分享,可在线阅读,更多相关《VHDL语言设计入门.ppt(80页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、VHDL入门需掌握的基本知识入门需掌握的基本知识一、信号(一、信号(一、信号(一、信号(signalsignal)的含义和信号的)的含义和信号的)的含义和信号的)的含义和信号的2 2种最常种最常种最常种最常 用类型:用类型:用类型:用类型:std_logicstd_logic和和和和td_logic_vectortd_logic_vector二、四种常用语句的基本用法二、四种常用语句的基本用法二、四种常用语句的基本用法二、四种常用语句的基本用法赋值语句、赋值语句、赋值语句、赋值语句、if if语句、语句、语句、语句、casecase语句和语句和语句和语句和processprocess语句语句语

2、句语句三、实体(三、实体(三、实体(三、实体(entityentity)、结构体()、结构体()、结构体()、结构体(architecture)architecture)和一个实和一个实和一个实和一个实 体和一个结构体组成的设计实体。体和一个结构体组成的设计实体。体和一个结构体组成的设计实体。体和一个结构体组成的设计实体。四、层次结构的设计四、层次结构的设计四、层次结构的设计四、层次结构的设计 掌握元件(掌握元件(掌握元件(掌握元件(componentcomponent)语句和端口映射()语句和端口映射()语句和端口映射()语句和端口映射(port port map map)语句。)语句。)语

3、句。)语句。五、库(五、库(五、库(五、库(librarylibrary)和程序包()和程序包()和程序包()和程序包(pachagepachage)的基本使用。)的基本使用。)的基本使用。)的基本使用。有了上述的入门知识,一般的设计没有什么问题。有了上述的入门知识,一般的设计没有什么问题。有了上述的入门知识,一般的设计没有什么问题。有了上述的入门知识,一般的设计没有什么问题。信号和变量信号和变量 信号(信号(signal)是硬件中连线的抽象描是硬件中连线的抽象描述,信号在元件的端口连接元件。述,信号在元件的端口连接元件。变量变量(varable)在硬件中没有类似的对在硬件中没有类似的对应关系

4、,它们主要用于硬件特性的高层次应关系,它们主要用于硬件特性的高层次建模所需的计算中。建模所需的计算中。信号在逻辑电路信号在逻辑电路设计中最常用的数据类型设计中最常用的数据类型 在在VHDL语言中有语言中有10种数据类型,但种数据类型,但是在逻辑电路设计中最常用的是是在逻辑电路设计中最常用的是std_logic和和std_logic-vector提供的数据类型。提供的数据类型。Std_logic类型分为布尔(类型分为布尔(boolean)型、)型、位(位(bit)型、位矢量)型、位矢量(bit_vector)型。型。信号在逻辑电路信号在逻辑电路设计中最常用的数据类型设计中最常用的数据类型Std_

5、logic有有9种状态,常用的是三种状态:种状态,常用的是三种状态:0 高电平高电平1 低电平低电平z高阻高阻 高阻状态是为了双向总线的描述高阻状态是为了双向总线的描述信号的说明信号的说明 一个信号只有说明语句说明后才能使用。用一个信号只有说明语句说明后才能使用。用VHDL语言进行设计就是写一系列语句。一个语语言进行设计就是写一系列语句。一个语句用分号结束。设计说明形式如下:句用分号结束。设计说明形式如下:Signal clock,T1,T2 :std_logic;Signal r0,r1,r2,r3:std_logic_vector(15 downto 0);Signal r0,r1,r2,

6、r3:std_logic_vector(0 upto 15);信号的说明信号的说明 整数不能看作矢量,不能按位运算。整数不能看作矢量,不能按位运算。整数不能进行逻辑运算,只能进行算术运整数不能进行逻辑运算,只能进行算术运算。算。从信号说明看不出一个从信号说明看不出一个信号是组合逻辑信号是组合逻辑还是时序逻辑(例如寄存器),这与还是时序逻辑(例如寄存器),这与ABEL语言是不同的。语言是不同的。逻辑运算符逻辑运算符有有有有6 6种逻辑运算符:种逻辑运算符:种逻辑运算符:种逻辑运算符:NOTNOT、OROR、ANDAND、NANDNAND、NORNOR、XORXOR。常用的为前三种。常用的为前三种

7、。常用的为前三种。常用的为前三种。signal a,b:std_logic;signal a,b:std_logic;signal c,d:std_logic_vector(7 signal c,d:std_logic_vector(7 downtodownto 0);0);a and b a and b a or ba or b not a not a 正确正确正确正确 c and d c c and d c xorxor d d not c not c 正确正确正确正确 a and c a and c 错误错误错误错误 2 2个进行逻辑运算的信号,类型必须相同。这些逻辑个进行逻辑运算的信号

8、,类型必须相同。这些逻辑个进行逻辑运算的信号,类型必须相同。这些逻辑个进行逻辑运算的信号,类型必须相同。这些逻辑运算符优先级相同。运算符优先级相同。运算符优先级相同。运算符优先级相同。算术运算符算术运算符常用的算术运算符有:常用的算术运算符有:+-Signal a,b:std_logic_vector(15 downto 0);a +ba +1A+“01”并置运算符并置运算符&并置运算符用于位的连接,形成矢量。也可连接矢并置运算符用于位的连接,形成矢量。也可连接矢量形成更大的矢量。量形成更大的矢量。Signal a,b:std_logic_vector(3 downto 0);Signal c

9、,d:a,b:std_logic_vector(2 downto 0);a and (1&c)c&a 关系运算符关系运算符关系运算符有下列几种:关系运算符有下列几种:关系运算符有下列几种:关系运算符有下列几种:=等于等于等于等于/=/=不等于不等于不等于不等于 大于大于大于大于 =大于等于大于等于大于等于大于等于 等于、不等于运算符适用于所有的数据类型,等于、不等于运算符适用于所有的数据类型,等于、不等于运算符适用于所有的数据类型,等于、不等于运算符适用于所有的数据类型,其他的运算符适用于整数、位及矢量等。在进行其他的运算符适用于整数、位及矢量等。在进行其他的运算符适用于整数、位及矢量等。在进

10、行其他的运算符适用于整数、位及矢量等。在进行关系运算时,两边的数据类型必须相同,但位长关系运算时,两边的数据类型必须相同,但位长关系运算时,两边的数据类型必须相同,但位长关系运算时,两边的数据类型必须相同,但位长度可以不同。度可以不同。度可以不同。度可以不同。关系运算的结果为关系运算的结果为关系运算的结果为关系运算的结果为“真真真真”或者或者或者或者“假假假假”。常用的常用的4种语句种语句 VHDL有许多类型的语句,我们这里讲有许多类型的语句,我们这里讲4种。种。一、赋值语句一、赋值语句 signal a,b,c:std_logic;signal d,e,q:std_logic_vector;

11、c=not(a and b);q=d or q;常用的常用的4种语句种语句二、二、二、二、if if 语句语句语句语句1 1、if if语句的三种形式语句的三种形式语句的三种形式语句的三种形式 if if 条件条件条件条件 thenthen 若干语句若干语句若干语句若干语句 end ifend if;if if 条件条件条件条件 thenthen 若干语句若干语句若干语句若干语句 elseelse 若干语句若干语句若干语句若干语句 end ifend if;常用的常用的4种语句种语句二、二、if语句语句1 1、if if语句的三种形式语句的三种形式语句的三种形式语句的三种形式 if 条件条件1

12、 then 若干语句若干语句 elsif 条件条件2 then 若干语句若干语句 else 条件条件n then 若干语句若干语句 end if;常用的常用的4种语句种语句二、二、二、二、if if 语句语句语句语句2 2、例子、例子、例子、例子116116位寄存器位寄存器位寄存器位寄存器-Signal reset,-Signal reset,clkclk,wen wen :std_logic;:std_logic;-Signal d,q:std_logic_vector(15-Signal d,q:std_logic_vector(15 downtodownto 0);0);If reset

13、=0 then If reset=0 then q=x”0000”;q=x”0000”;Elsif Elsif clockevent and clock=1 thenclockevent and clock=1 then if if wenwen=1 then=1 then q=d;q=d;else else q =q q =q;end if;end if;End ifEnd if;说明:说明:说明:说明:-是注释开始的标志,是注释开始的标志,是注释开始的标志,是注释开始的标志,signalsignal语句的存在只是为了说语句的存在只是为了说语句的存在只是为了说语句的存在只是为了说明这些信号的

14、类型,供阅读方便使用。明这些信号的类型,供阅读方便使用。明这些信号的类型,供阅读方便使用。明这些信号的类型,供阅读方便使用。常用的常用的4种语句种语句二、二、二、二、if if 语句语句语句语句3 3、例子、例子、例子、例子216216位寄存器的另一种形式位寄存器的另一种形式位寄存器的另一种形式位寄存器的另一种形式-Signal reset,-Signal reset,clkclk,wen wen :std_logic;:std_logic;-Signal d,q:std_logic_vector(15-Signal d,q:std_logic_vector(15 downtodownto-0

15、);-0);If reset=0 then If reset=0 then q=x”0000”;q=x”0000”;Elsif Elsif clockevent and clock=1 thenclockevent and clock=1 then if if wenwen=1 then=1 then q=d;q=d;end if;end if;End ifEnd if;常用的常用的4种语句种语句二、二、二、二、if if 语句语句语句语句4 4、例子、例子、例子、例子316316位寄存器的第三种形式位寄存器的第三种形式位寄存器的第三种形式位寄存器的第三种形式-Signal reset,-Si

16、gnal reset,clkclk,wen wen :std_logic;:std_logic;-Signal d,q:std_logic_vector(15-Signal d,q:std_logic_vector(15 downtodownto-0);-0);If reset=0 then If reset=0 then q=”0000000000000000”;q=”0000000000000000”;Elsif Elsif clockevent and clock=1 thenclockevent and clock=1 then if if wenwen=1 then=1 then q

17、=d;q=d;end if;end if;End ifEnd if;常用的常用的4种语句种语句二、二、if 语句语句5、信号沿的几种表示方法、信号沿的几种表示方法 clockevent and clock=1 上升沿上升沿 clockevent and clock=0 下降沿下降沿 rising_edge(clock)上升沿上升沿 falling_edge(clock)下降沿下降沿 常用的常用的4种语句种语句二、二、二、二、if if 语句语句语句语句6 6、例子、例子、例子、例子44时钟下降沿触发的时钟下降沿触发的时钟下降沿触发的时钟下降沿触发的1616位寄存器位寄存器位寄存器位寄存器-Si

18、gnal reset,-Signal reset,clkclk,wen wen :std_logic;:std_logic;-Signal d,q:std_logic_vector(15-Signal d,q:std_logic_vector(15 downtodownto-0);-0);If reset=0 then If reset=0 then q=X”0000”;q=X”0000”;Elsif Elsif falling_edge(clock)thenfalling_edge(clock)then if if wenwen=1 then=1 then q=d;q=d;end if;en

19、d if;End ifEnd if;常用的常用的4种语句种语句二、二、二、二、if if 语句语句语句语句7 7、例子、例子、例子、例子55二选一多路开关二选一多路开关二选一多路开关二选一多路开关 -Signal -Signal selsel:std_logic;:std_logic;-Signal a,b,c:std_logic_vector(15-Signal a,b,c:std_logic_vector(15-downtodownto 0);0);If If selsel=0 then=0 then c=a;c=a;ElseElse c=b;c=b;End if;End if;常用的常用

20、的4种语句种语句三、进程(三、进程(process)语句)语句 PROCESS语句是语句是VHDL语言中描述硬语言中描述硬件系统行为的最基本的语句。件系统行为的最基本的语句。本质上描述本质上描述了一个功能独立的电路块。了一个功能独立的电路块。1、process语句的基本形式语句的基本形式PROCESS(敏感信号(敏感信号1,敏感信号,敏感信号2,)BEGIN END PROCESS;常用的常用的4种语句种语句三、三、process语句语句2、说明、说明 敏感信号表中的任何一个发生变化,都启敏感信号表中的任何一个发生变化,都启动动process语句工作。敏感信号表中的信号语句工作。敏感信号表中的

21、信号是一部分输入信号,或者在是一部分输入信号,或者在process语句中语句中形成的反馈信号;纯粹输出的信号或者在形成的反馈信号;纯粹输出的信号或者在本语句中不发生变化的信号不能放入敏感本语句中不发生变化的信号不能放入敏感信号表。信号表。常用的常用的4种语句种语句三、三、process语句语句 我们在我们在if语句中介绍的电路如果不和语句中介绍的电路如果不和PROCESSS语句结合起来,不能构成一个语句结合起来,不能构成一个功能独立的电路,编译时就会出错。功能独立的电路,编译时就会出错。下面是改造后的下面是改造后的16位寄存器和位寄存器和2选选1多路开多路开关。关。3、改造后的、改造后的16位

22、寄存器位寄存器-Signal reset,-Signal reset,clkclk,wen wen :std_logic;:std_logic;-Signal d,q:std_logic_vector(15-Signal d,q:std_logic_vector(15 downtodownto 0);0);register_proregister_pro:process(reset,clock)process(reset,clock)beginbeginIf reset=0 then If reset=0 then q=x”0000”;q=x”0000”;Elsif Elsif clockev

23、ent and clock=1 thenclockevent and clock=1 then if if wenwen=1 then=1 then q=d;q=d;end if;end if;End ifEnd if;end process;end process;注意:注意:注意:注意:敏感信号表中没有信号敏感信号表中没有信号敏感信号表中没有信号敏感信号表中没有信号D D,因为只需要,因为只需要,因为只需要,因为只需要resetreset和和和和clockclock启动启动启动启动这个这个这个这个processprocess语句;信号语句;信号语句;信号语句;信号q q是个输出信号,因此不

24、能放入是个输出信号,因此不能放入是个输出信号,因此不能放入是个输出信号,因此不能放入processprocess语句的敏感信号表中。语句的敏感信号表中。语句的敏感信号表中。语句的敏感信号表中。Register_pro:Register_pro:表示一个标号,标号可有可无。表示一个标号,标号可有可无。表示一个标号,标号可有可无。表示一个标号,标号可有可无。常用的常用的4种语句种语句三、三、process语句语句4、改造后的、改造后的2选一多路开关选一多路开关-Signal -Signal selsel:std_logic;:std_logic;-Signal a,b,c:std_logic_ve

25、ctor(15-Signal a,b,c:std_logic_vector(15-downtodownto 0);0);process(process(selsel,a,b),a,b)beginbeginIf If selsel=0 then=0 then c=a;c=a;ElseElse c=b;c=b;End if;End if;end process;end process;常用的常用的4种语句种语句三、三、process语句语句5、程序计数器、程序计数器PC的一种设计的一种设计-signal pc,-signal pc,zjmpzjmp_pc,_pc,cjmpcjmp_pc:_pc:-

26、std_logic_vector(15-std_logic_vector(15 downhtodownhto 0);0);-signal t,-signal t,zj zj_flag,_flag,cj cj_flag,_flag,dwdw_flag,reset:std_logic;_flag,reset:std_logic;pc_proc:process(pc,pc_proc:process(pc,zjmpzjmp_pc,_pc,cjmpcjmp_pc,t,_pc,t,zj zj_flag,_flag,cj cj_flag,_flag,dwdw_flag,reset)_flag,reset)b

27、eginbegin if reset=0 then if reset=0 then pc=x”0000”;pc=x”0000”;elsifelsif tevent and t=1 then tevent and t=1 then if if zj zj_flag=1 then_flag=1 then pc=pc=zjmpzjmp_pc;_pc;elsifelsif cj cj_flag=1 then_flag=1 then pc=pc=cjmpcjmp_pc;_pc;elsifelsif dwdw_flag=1 then_flag=1 then pc=pc+“10”;pc=pc+“10”;el

28、se else pc=pc+1;pc=pc+1;end if;end if;end if;end if;end process;end process;常用的常用的4种语句种语句三、三、process语句语句6、1000000计数器设计计数器设计-signal counter:std_logic_vector(19-signal counter:std_logic_vector(19 downtodownto 0);0);-signal counter-signal counter clkclk,reset:std_logic;,reset:std_logic;-16-16进制进制f423ff

29、423f等于等于1010进制进制999999999999process(reset,process(reset,clkclk)beginbegin if reset=0 then if reset=0 then counter=x”00000”;counter=x”00000”;elsifelsif clkclkevent and event and clkclk=1 then=1 then if counter/=x”f423f”then if counter/=x”f423f”then counter=counter+1;counter=counter+1;else else counte

30、r=x”00000”;counter=x”00000”;end if;end if;end if;end if;end process;end process;常用的常用的4种语句种语句三、三、process语句语句7、锁存器设计、锁存器设计-signal reset,set,-signal reset,set,clkclk:std_logic;:std_logic;-siganlsiganl d,q:std_logic_vector(15 d,q:std_logic_vector(15 downtodownto 0);0);process(reset,set,process(reset,se

31、t,clkclk)if reset=0 then if reset=0 then q=x”0000”;q=x”0000”;elsifelsif set=0 then set=0 then q=x”q=x”ffffffff”;”;elsifelsif clkclk=1 then=1 thenq=d;q when“00”=result=0&a+0&b;result=0&a+0&b;q=result(15 q=result(15 downtodownto 0);0);coutcout=result(16);when“01”=result=0&a+0&b;result=0&a+0&b;q=result

32、(15 q=result(15 downtodownto 0);0);coutcout=result(16);when“10”=q=a and b;q=a and b;coutcout=when others=q=a or b;q=a or b;coutcout=when“00”|“01”|“10”=c=1;c when“11”=c=0;c when others=null;null;end case;end case;end process;end process;在本例子中,第一个在本例子中,第一个when when 中的中的“|“|“代表或者,即三个条件中的任何代表或者,即三个条件中的任

33、何一个满足,都执行一个满足,都执行 c=1c=1。实际上与非门很少这样设计。实际上与非门很少这样设计。NullNull是个什么也不做的空语句。是个什么也不做的空语句。常用的常用的4种语句种语句四、四、CASE语句语句4、例子、例子3一个状态机设计一个状态机设计 该状态机可用于指令该状态机可用于指令cache的在不命中时的在不命中时的控制。指令的控制。指令cache容量是容量是8 x 8 字。每个字。每个字字16位。存储器数据总线是位。存储器数据总线是16位。位。Miss是是不命中标志。不命中标志。-signal state,next_state:std_logic_vector(3-signa

34、l state,next_state:std_logic_vector(3 downtodownto 0);0);-signal reset,-signal reset,clkclk,miss:std_logic;,miss:std_logic;proceeeproceee(reset,(reset,clkclk)beginbegin if reset=0 then if reset=0 then state=“0000”;state=“0000”;elsifelsif clkclkevent and event and clkclk=1 then=1 then state=next_stat

35、e;state when“0000”=if miss=1 then if miss=1 then next_state=“0001”;next_state=“0001”;else else next_state=“0000”;next_state when “0001”=-1-1 next_state=“0011”;next_state when “0011”=-2-2 next_state=“0010”;next_state when “0010”=-3-3 next_state=“0110”;next_state when “0110”=-4-4 next_state=“0111”;nex

36、t_state when “0111”=-5-5 next_state=“0100”;next_state when “0100”=-6-6 next_state=“1100”;next_state when “1100”=-7-7 next_state=“1000”;next_state when “1000”=-8-8 next_state=“0000”;next_state when others=next_state=“0000”;next_state=“0000”;end case;end case;end process;end process;设计实体设计实体 VHDLVHDL适

37、合做大型工程的设计。除了极少数十适合做大型工程的设计。除了极少数十适合做大型工程的设计。除了极少数十适合做大型工程的设计。除了极少数十分简单的工程外,基本上都采用层次结构的设计。分简单的工程外,基本上都采用层次结构的设计。分简单的工程外,基本上都采用层次结构的设计。分简单的工程外,基本上都采用层次结构的设计。在层次结构的设计中,设计实体是一个基本单元。在层次结构的设计中,设计实体是一个基本单元。在层次结构的设计中,设计实体是一个基本单元。在层次结构的设计中,设计实体是一个基本单元。使用使用使用使用VHDLVHDL语言设计一个工程的过程中,经常要语言设计一个工程的过程中,经常要语言设计一个工程的

38、过程中,经常要语言设计一个工程的过程中,经常要使用厂家提供各种库,库中存放的是供用户使用使用厂家提供各种库,库中存放的是供用户使用使用厂家提供各种库,库中存放的是供用户使用使用厂家提供各种库,库中存放的是供用户使用的已经设计好的设计实体。因此可以认为,一个的已经设计好的设计实体。因此可以认为,一个的已经设计好的设计实体。因此可以认为,一个的已经设计好的设计实体。因此可以认为,一个工程就是用户设计的各个设计实体和库中提供的工程就是用户设计的各个设计实体和库中提供的工程就是用户设计的各个设计实体和库中提供的工程就是用户设计的各个设计实体和库中提供的设计实体通过适当的信号连接完成的。设计实体通过适当

39、的信号连接完成的。设计实体通过适当的信号连接完成的。设计实体通过适当的信号连接完成的。设计实体在一个工程中除了最高层的设计实设计实体在一个工程中除了最高层的设计实设计实体在一个工程中除了最高层的设计实设计实体在一个工程中除了最高层的设计实体外,其他设计实体都是体外,其他设计实体都是体外,其他设计实体都是体外,其他设计实体都是子系统子系统子系统子系统,或者称为,或者称为,或者称为,或者称为元件元件元件元件。这里的元件是广义的,不是市场上卖的现成的元这里的元件是广义的,不是市场上卖的现成的元这里的元件是广义的,不是市场上卖的现成的元这里的元件是广义的,不是市场上卖的现成的元件。最高层的设计实体就是

40、系统总体。件。最高层的设计实体就是系统总体。件。最高层的设计实体就是系统总体。件。最高层的设计实体就是系统总体。设计实体设计实体 一个设计实体由三部分构成:一个设计实体由三部分构成:一个设计实体由三部分构成:一个设计实体由三部分构成:实体实体实体实体 (entityentity)定义系统对外联系的信号,信号的方向和数据定义系统对外联系的信号,信号的方向和数据定义系统对外联系的信号,信号的方向和数据定义系统对外联系的信号,信号的方向和数据类型。相当于电子器件的引脚。类型。相当于电子器件的引脚。类型。相当于电子器件的引脚。类型。相当于电子器件的引脚。结构体结构体结构体结构体(architectur

41、e)(architecture)完成设计实体规定的功能,就是子系统的内部完成设计实体规定的功能,就是子系统的内部完成设计实体规定的功能,就是子系统的内部完成设计实体规定的功能,就是子系统的内部电路结构。电路结构。电路结构。电路结构。库库库库(library)(library)和程序包和程序包和程序包和程序包(package)(package)设计实体前面要写明该设计实体用到的库和程序设计实体前面要写明该设计实体用到的库和程序设计实体前面要写明该设计实体用到的库和程序设计实体前面要写明该设计实体用到的库和程序包。包。包。包。实体(实体(entity)Entity Entity定义流出、流入设计实

42、体的信号。定义流出、流入设计实体的信号。定义流出、流入设计实体的信号。定义流出、流入设计实体的信号。EntityEntity的书写形式如下:的书写形式如下:的书写形式如下:的书写形式如下:EntityEntity 实体名实体名 is 端口说明;端口说明;end 实体名;实体名;实体(实体(entity)下面举一个实体的例子:下面举一个实体的例子:ENTITY mux ISPORT(d0,d1,sel:IN STD_LOGIC;q:OUT STD_LOGIC);END mux;其中,其中,MUX是实体名。是实体名。PORT(端口)说明的是端口(端口)说明的是端口信号的数据类型的和流动方向。在本例

43、中,信号的数据类型的和流动方向。在本例中,d0、d1和和sel是是STD_LOGIC数据类型,是流入实体的信号;数据类型,是流入实体的信号;q是是STD_LOGIC数据类型,是流出实体的信号。数据类型,是流出实体的信号。实体(实体(entity)Port(Port(端口的书写形式端口的书写形式端口的书写形式端口的书写形式)PORT(PORT(端口名,端口名,端口名,端口名,端口名:模式,端口名:模式,端口名:模式,端口名:模式 数据类型;数据类型;数据类型;数据类型;端口名,端口名,端口名,端口名,端口名:模式,端口名:模式,端口名:模式,端口名:模式 数据类型;数据类型;数据类型;数据类型;

44、.端口名,端口名,端口名,端口名,端口名:模式,端口名:模式,端口名:模式,端口名:模式 数据类型数据类型数据类型数据类型);实体说明中的每一个输出实体说明中的每一个输出实体说明中的每一个输出实体说明中的每一个输出/输入被称为一个端输入被称为一个端输入被称为一个端输入被称为一个端口。一个端口实际上表示一个或者一组具有相同口。一个端口实际上表示一个或者一组具有相同口。一个端口实际上表示一个或者一组具有相同口。一个端口实际上表示一个或者一组具有相同模式和数据类型的负责与外部通讯的信号,相当模式和数据类型的负责与外部通讯的信号,相当模式和数据类型的负责与外部通讯的信号,相当模式和数据类型的负责与外部

45、通讯的信号,相当于元件的引脚。于元件的引脚。于元件的引脚。于元件的引脚。实体(实体(entity)下面是一个下面是一个下面是一个下面是一个PORTPORT语句的例子:语句的例子:语句的例子:语句的例子:PORTPORT (reset,(reset,cscs:ininstd_logic;std_logic;rd,rd,wrwrininstd_logic;std_logic;a1,a0:a1,a0:inin std_logic;std_logic;pa,pa,pbpbinoutinout std_logic_vector(7 std_logic_vector(7 downtodownto 0);0

46、);pc pcoutoutstd_logic_vector(17 std_logic_vector(17 downtodownto 0)0););端口的模式用来说明信号通过端口的方向和通过方式,端口的模式用来说明信号通过端口的方向和通过方式,端口的模式用来说明信号通过端口的方向和通过方式,端口的模式用来说明信号通过端口的方向和通过方式,有下列几种方式:有下列几种方式:有下列几种方式:有下列几种方式:实体(实体(entity)ININ(流入实体)(流入实体)(流入实体)(流入实体)OUT OUT(从实体流出)(从实体流出)(从实体流出)(从实体流出)INOUT INOUT(双向端口,即可流入实体

47、,又可从实体流出)(双向端口,即可流入实体,又可从实体流出)(双向端口,即可流入实体,又可从实体流出)(双向端口,即可流入实体,又可从实体流出)BUFFER BUFFER(双向端口,可从实体流出,也能用于内部反馈)(双向端口,可从实体流出,也能用于内部反馈)(双向端口,可从实体流出,也能用于内部反馈)(双向端口,可从实体流出,也能用于内部反馈)OUT OUT模式的端口不能用于被设计实体的内部反馈。模式的端口不能用于被设计实体的内部反馈。模式的端口不能用于被设计实体的内部反馈。模式的端口不能用于被设计实体的内部反馈。BUFFERBUFFER模式的端口能够用于被设计实体的内部反馈。模式的端口能够用

48、于被设计实体的内部反馈。模式的端口能够用于被设计实体的内部反馈。模式的端口能够用于被设计实体的内部反馈。INOUTINOUT模式可以代替模式可以代替模式可以代替模式可以代替ININ、INOUTINOUT、BUFFERBUFFER模式,模式,模式,模式,INOUTINOUT模式允许内部反馈。虽然模式允许内部反馈。虽然模式允许内部反馈。虽然模式允许内部反馈。虽然INOUTINOUT模式能代替其他模式能代替其他模式能代替其他模式能代替其他模式,但在设计时,除非真正需要双向端口时,建议不要模式,但在设计时,除非真正需要双向端口时,建议不要模式,但在设计时,除非真正需要双向端口时,建议不要模式,但在设计

49、时,除非真正需要双向端口时,建议不要使用使用使用使用INOUTINOUT模式。惯例是把输入端口指定为模式。惯例是把输入端口指定为模式。惯例是把输入端口指定为模式。惯例是把输入端口指定为ININ模式,把模式,把模式,把模式,把输出端口指定为输出端口指定为输出端口指定为输出端口指定为OUTOUT模式,把双向端口指定模式,把双向端口指定模式,把双向端口指定模式,把双向端口指定INOUTINOUT模式。模式。模式。模式。这一良好的设计习惯,从端口的名称和端口模式就可以一这一良好的设计习惯,从端口的名称和端口模式就可以一这一良好的设计习惯,从端口的名称和端口模式就可以一这一良好的设计习惯,从端口的名称和

50、端口模式就可以一目了然地判定信号的用途、性质、来源和去向,十分方便。目了然地判定信号的用途、性质、来源和去向,十分方便。目了然地判定信号的用途、性质、来源和去向,十分方便。目了然地判定信号的用途、性质、来源和去向,十分方便。对于一个大型设计任务,大家协同工作,这样的描述不会对于一个大型设计任务,大家协同工作,这样的描述不会对于一个大型设计任务,大家协同工作,这样的描述不会对于一个大型设计任务,大家协同工作,这样的描述不会引起歧义。另一方面,指定满足端口性能的最基本模式,引起歧义。另一方面,指定满足端口性能的最基本模式,引起歧义。另一方面,指定满足端口性能的最基本模式,引起歧义。另一方面,指定满

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com