[2017年整理]VHDL必须掌握的知识点和相关例题

上传人:豆浆 文档编号:910657 上传时间:2017-05-21 格式:DOC 页数:7 大小:84.50KB
返回 下载 相关 举报
[2017年整理]VHDL必须掌握的知识点和相关例题_第1页
第1页 / 共7页
[2017年整理]VHDL必须掌握的知识点和相关例题_第2页
第2页 / 共7页
[2017年整理]VHDL必须掌握的知识点和相关例题_第3页
第3页 / 共7页
[2017年整理]VHDL必须掌握的知识点和相关例题_第4页
第4页 / 共7页
[2017年整理]VHDL必须掌握的知识点和相关例题_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《[2017年整理]VHDL必须掌握的知识点和相关例题》由会员分享,可在线阅读,更多相关《[2017年整理]VHDL必须掌握的知识点和相关例题(7页珍藏版)》请在金锄头文库上搜索。

1、VHDL 总复习必须要掌握的知识点和相关例题1 VHDL 的全称以及利用 VHDL 设计硬件电路所具有的特点Very High Speed Integrated Circuit Hardware Description Language (超高速集成电路硬件描述语言) (1) 设计文件齐全、方法灵活、支持广泛(2) 系统硬件描述能力强(3) VHDL 语言可以与工艺无关编程(4) VHDL 语言标准、规范、易于共享和复用2 VHDL 语言的基本设计实体和完整的 VHDL 语言程序的结构一个 VHDL 语言的基本设计实体由实体说明和构造体两个部分构成;一个完整的VHDL 语言程序包含 5 个部分

2、:实体、构造体、配置、包集合(程序包)和库。3进程(PROCESS)语句的结构主要特点:并发语句,由敏感信号量启动;内部的语句顺序执行,进程不能嵌套。4VHDL 语言子程序的结构VHDL 语言子程序有两种类型:过程、函数1) 过程(Procedure)在程序包中定义的格式(用户自定义过程的设计方法):PACKAGE 包集合名 ISPROCEDURE 过程名(参数 1,参数 2,) END 包集合名; PACKAGE BODY 包集合名 ISPROCEDURE 过程名(参数 1,参数 2,)IS定义语句BEGIN顺序处理语句;END 过程名;END 包集合名; 过程调用的方法:过程名(参数 1,

3、参数 2,) ;过程调用语句属于并发语句。2) 函数(Function)在程序包中定义的格式(用户自定义函数的设计方法):PACKAGE 包集合名 ISFUNCTION 函数名(参数 1,参数 2,) RETURN 数据类型名 END 包集合名; PACKAGE BODY 包集合名 ISFUNCTION 函数名(参数 1,参数 2,) RETURN 数据类型名 IS(变量)定义语句BEGIN顺序处理语句;RETURN 变量名; END 函数名;END 包集合名; 函数调用的方法:出现于语句的表达式中。5过程与函数的主要区别函数只包含有输入参数,只有一个返回值;过程即包含有输入参数,也包含输出参

4、数或输入输出参数,可以有多个返回值,这些返回值通过过程中定义的输出参数带回。6进程和子程序中使用的语句进程中和子程序的所有语句按顺序执行, 只能使用顺序描述语句。7VHDL 语言中客体的概念及使用范围VHDL 语言中可以赋予一个值的对象称为客体;客体主要包括三种:信号、常数、变量;信号和常数为全局量,变量为局部量。8信号和变量的区别及作用范围信号和变量值的代入不仅形式不同,而且操作过程也不相同。变量的赋值使用赋值符“:=”,信号的代入使用代入符“:=” 。变量的赋值在赋值语句执行时立即生效,信号的代入在代入语句执行时并不立即发生,代入语句的处理和实际的代入过程是分开进行的。实际的代入过程在进程

5、(PROCESS)或子程序(SUBPROGRAM)语句执行完毕时发生,与代入语句的处理存在延时。变量是局部量,作用范围是进程和子程序;信号是全局量,作用范围是构造体、实体和程序包。例:ARCHITECTURE behave OF xinhao ISP1:PROCESS(A,B,C,D)BEGIN Dcntints(i),clr=clr,d=cntints(i+1),q=count(i),qb=cntints(i+1);END GENERATE;END one;13VHDL 语言的命名规则注意:名字的最前面应该是英文字母,不能连续使用下划线_,名字的最后也不能使用_。14VHDL 语言的数值类属

6、性描述数值类属性用来得到数组、一般数据或程序块的有关值。例: T LEFT 得到数值类或子类区间的最左端的值 T RIGHT 得到数值类或子类区间的最右端的值 T HIGH 得到数值类或子类区间的高端值 T LOW 得到数值类或子类区间的低端值15 VHDL 语言的信号属性函数此类描述函数用于获得信号的行为信息。例: sEVENT 如果事件发生,则返回“真”值,否则返回“假”值。 sLAST_EVENT返回从前一个事件发生到现在所经历的时间值。 sLAST_VALUE返回信号最后一次改变以前的值。 16数值系统的定义方法,各种状态的含义例:九态数值系统由三种强度值和三种逻辑值组成:强度值:Z

7、- 高阻强度,R - 电阻强度, F-强强度逻辑值:0 - 逻辑“0” ,1 - 逻辑“0” , X -逻辑“X” 即: Z0,Z1,ZX,R0,R1,RX,F0,F1,FX可用枚举数据类型加以定义:例:四态数值系统的定义TYPE fourstate IS( X , 0, 1 , Z ) ;17采用有限状态机进行电路设计的基本方法有限状态机分为两类:Moore 型-输出信号仅与当前状态有关Mealy 型 -输出信号不仅与当前状态有关,还与所有的输入信号有关为了使综合工具可以将一个完整的 VHDL 源代码识别为有限状态机,必须还要遵循一定的描述规则规定,一个有限状态机的描述应该包括以下内容:至少

8、包括一个状态信号,它们用来指定有限状态机状态。状态转移指定和输出指定,它们对应于控制步的转移条件。时钟信号,它是用来进行同步的。同步或异步复位信号。描述方法: (1)三进程描述 1.状态逻辑描述;2.状态寄存器描述;3.输出逻辑描述。(2)双进程描述1.一个进程描述三个中的任何两个;2.另外一个用一个进程(3)单进程描述状态逻辑,状态寄存器,输出逻辑描述合用一个进程。 状态机中的状态可用枚举数据类型数据进行定义。18仿真 延时引入的原因和对并发语句仿真结果的影响用软件平台进行仿真,实际上对 VHDL 的“并发语句”也只能逐条地加以执行(处理) ,为了使语句的执行与硬件动作的结果一致,而与语句的

9、顺序无关,就必须引入 延时,这样,软件就可按照电路的实际结构确定仿真顺序,仿真也就真实地模拟了硬件的动作,并且其仿真结果与语句的顺序无关。因此,在进行 VHDL 程序设计时,对于构造体中的并发语句,设计者可以完全不考虑语句的顺序。19逻辑综合的概念与主要步骤逻辑综合就是将较高抽象层次的描述转换为较低抽象层次的描述一种方法(或者说过程) 。就现有的逻辑综合工具而言,所谓就是将 RTL 级的描述转换为门级网表的过程。主要步骤如下:1. RTL 描述转换为非优化的布尔等式描述2. 布尔等式优化3. 门级网表映射20运用 VHDL 语言和 FPGA 进行电路设计的主要步骤1 VHDL 程序设计2 VH

10、DL 程序编译3 VHDL 程序仿真4 生成网表文件(含器件选择、端口分配,第二次编译)5 下载 FPGA 器件例:1-365 进制计数器(计数器结果由三个 4 位二进制数输出,且计数器由时钟的上升沿触发, 计数器满时输出进位(溢出)脉冲,重新计数。 )计数范围:0-364,或 1-365 均可LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY bcd365count ISPORT ( clk,clr:IN STD_LOGIC;bcd1n :OUT STD_LOGIC_VECTOR(3

11、DOWNTO 0);bcd10n :OUT STD_LOGIC_VECTOR(3 DOWNTO 0);bcd100n:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);co :OUT STD_LOGIC:=0);END bcd365count;ARCHITECTURE one OF bcd365count ISSIGNAL bcd1ns,bcd10ns,bcd100ns:STD_LOGIC_VECTOR(3 DOWNTO 0);gp:PROCESS(clk,clr)BEGINIF clr =0 THENbcd1ns = 0001;ELSIF (clkEVENT AND clk=

12、1)THENIF (bcd100ns=3 AND bcd10ns=6 AND bcd1ns=5) THEN bcd1ns = 0001;ELSIF bcd1ns=9 THENbcd1ns = 0000;ELSEbcd1ns = bcd1ns+1; END IF;END IF;END PROCESS;sp:PROCESS(clk,clr)BEGINIF clr =0THENbcd10ns = 0000;ELSIF (clkEVENT AND clk=1)THENIF (bcd100ns=3 AND bcd10ns=6 AND bcd1ns=5)OR (bcd10ns=9 AND bcd1ns=9

13、) THEN bcd10ns = 0000;ELSIF bcd1ns=9 THENbcd10ns = bcd10ns+1; END IF;END IF;END PROCESS;bp:PROCESS(clk,clr)BEGINIF clr =0THENbcd100ns = 0000;ELSIF (clkEVENT AND clk=1)THENIF (bcd100ns=3 AND bcd10ns=6 AND bcd1ns=5) THEN bcd100ns = 0000;ELSIF (bcd10ns=9 AND bcd1ns=9)THEN bcd100ns = bcd100ns+1; END IF;END IF;END PROCESS;cp:PROCESS(bcd1ns,bcd10ns,bcd100ns)BEGINIF(bcd100ns=3)AND(bcd10ns=6)AND(bcd1ns=5)THENco = 1;ELSEco = 0; END IF;END PROCESS;bcd1n = bcd1ns;bcd10n = bcd10ns;bcd100n = bcd100ns;END one;

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

当前位置:首页 > 行业资料 > 其它行业文档

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