VHDL语言设计入门.ppt
《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:-
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VHDL 语言 设计 入门
限制150内