EDA技术及实践(第3章)详解

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

VHDL基础第三章3.1硬件描述语言概述VHDL:VHSIC(VeryHighSpeedIntegratedCircuit)HDLHDL:HardwareDescribeLangaugeVHDL具有与具体硬件电路无关和与设计平台无关的特性,并且具有良好的电路行为描述和系统描述的能力;学习HDL的几点重要提示•1.了解HDL的可综合性问题•HDL可以用来系统仿真和硬件实现。如果程序只用于仿真,那么几乎所有的语法和编程方法都可以使用。但如果我们的程序是用于硬件实现(例如:用于FPGA设计),那么我们就必须保证程序“可综合”(程序的功能可以用硬件电路实现)。学习HDL的几点重要提示•2.用硬件电路设计思想来编写HDL•学好HDL的关键是充分理解HDL语句和硬件电路的关系。编写HDL,就是在描述一个电路,我们写完一段程序以后,应当对生成的电路有一些大体上的了解,而不能用纯软件的设计思路来编写硬件描述语言。学习HDL的几点重要提示•3.语法掌握贵在精•30%的基本HDL语句就可以完成95%以上的电路设计,很多生僻的语句并不能被所有的综合软件所支持,在程序移植或者更换软件平台时,容易产生兼容性问题,也不利于其他人阅读和修改。建议多用心钻研常用语句,理解这些语句的硬件含义。3.1.1组合电路描述•entitymux21ais•port(a,b:inbit;•s:inbit;•y:outbit);•end;•architectureoneofmux21ais•begin•y=awhens='0'elseb;•end;3.1.2VHDL结构•实体:描述了电路器件的外部情况和各信号端口的基本性质。•entitymux21ais•port(a,b:inbit;•s:inbit;•y:outbit);•end;实体名实体名是标识符,可以由设计者自定,好的实体名应该体现器件的基本功能。3.1.2VHDL结构•端口语句:用来描述电路的端口及端口信号的性质。•port(a,b:inbit;•s:inbit;•y:outbit);端口信号名可以自定义。端口信号名端口模式数据类型限定了数据对象的取值范围和数值类型,即对其传输或存储的数据做明确界定。数据类型端口模式用于定义端口上数据流动的方向。3.1.2VHDL结构•可综合的端口模式有4种:(1)IN——输入端口;(2)OUT——输出端口;(3)INOUT——双向端口;(4)BUFFER——缓冲端口;3.1.2VHDL结构•数据类型BIT:取值范围是逻辑位‘1’和‘0’;•可以参与逻辑运算或算数运算;•bit_vector(1downto0);axmuxcbds23.1.2VHDL结构•结构体的一般表达式如下:•architecture结构体名of所对应实体名is•[说明语句]begin功能描述语句end;3.1.2VHDL结构architectureoneofmux21aisbeginy=awhens='0'elseb;end;赋值符号=表示输入端口a的数据向输出端口y传输;数据比较符由“=”连接的表达式的数据类型是BOOLEAN类型,其取值分别为TRUE和FALSE。3.1.2VHDL结构•条件信号赋值语句:when_else赋值目标=表达式when赋值条件else表达式when赋值条件else……表达式;y=awhen(s=“00”)elsebwhen(s=“01”)elsecwhen(s=“10”)elsed;aycbdsmux2注意1、条件测试具有顺序性;2、各赋值条件可以同时成立;3、至少有一个ELSE,即至少是两分支;3.1.2VHDL结构•选择信号赋值语句:with_select_whenwith选择表达式select赋值目标=表达式when选择值,表达式when选择值,……,表达式when选择值;withsselecty=awhen“00”,bwhen“01”,cwhen“10”,dwhenothers;aymuxcbds2注意1、条件测试不分先后;2、各赋值条件不能重复;3、不允许存在条件涵盖不全的现象;上机练习:•分别用when_else语句和with_select_when语句实现4选1数据选择器,要求完成设计输入、编译和仿真。•仿真时注意输入信号波形编辑的原则是a、b、c、d有所不同,两个选择输入端按00、01、10、11四种情况出现即可。•请启动Tools→RTLViewer观察不同语句所对应电路结构有何不同;注意事项:•1、新建文件时,选择vhdlfile选项;•2、保存文件时,文件名必须和实体名一致;with_select_whenwhen_else问题•已经学了哪两个语句,其基本格式如何?有什么区别?实现四选一数据选择器时硬件逻辑电路是否相同?3.1.3简单信号赋值语句•赋值目标=表达式;entitymux21aisport(a,b,s:inbit;y:outbit);end;architectureoneofmux21aissignald,e:bit;begind=aand(nots);e=bands;y=dore;end;赋值符号两侧的数据类型必须一致!3.1.4逻辑操作符运算符功能AND与OR或NAND与非NOR或非XOR异或XNOR同或NOT非3.1.5if语句architectureoneofmux21aisbeginifs=‘0’theny=a;elsey=b;endif;end;architectureoneofmux21aisbeginprocess(a,b,s)beginifs=‘0’theny=a;elsey=b;endif;endprocess;end;3.1.5if语句•If语句的结构(1):–If条件句then顺序语句;–else顺序语句;–endif;•这是一个两分支结构,包含了所有可能的条件,是完整条件语句;3.1.5if语句•If语句的结构(2):–If条件句then顺序语句;–elsIf条件句then顺序语句;–elsIf条件句then顺序语句;–……–else顺序语句;–endif;•这是一个多分支结构,包含了所有可能的条件,是完整条件语句;3.1.6组合电路和完整条件语句赋值目标=表达式when赋值条件else表达式when赋值条件else……表达式;with选择表达式select赋值目标=表达式when选择值表达式when选择值……表达式whenothers;3.1.7进程语句•进程的基本格式:•[进程标号:]PROCESS[(敏感信号表)][IS]说明区BEGIN顺序语句ENDPROCESS[进程标号];敏感信号敏感信号是这样的信号:它的变化可以启动进程。通常要求将进程中的所有输入信号都放入敏感信号表中。上机练习:If条件句then顺序语句;elsIf条件句then顺序语句;elsIf条件句then顺序语句;……else顺序语句;endif;•用上面结构实现4选1数据选择器,要求完成设计输入、编译和仿真,并思考该语句是不是完整条件语句。•请启动Tools→RTLViewer观察对应电路结构的特点,跟以前的练习比较,与哪个语句实现的电路结构相同;3.2时序电路的描述•时序电路是数字逻辑中必不可少的组成部分,下面以典型的时序元件D触发器为例来说明时序电路的VHDL规则,从而得出时序电路描述的一般规律和设计方法。3.2.1D触发器•实体描述:entitydff1isport(d:inbit;clk:inbit;q:outbit);end;3.2.1D触发器entitydff1isport(d:instd_logic;clk:instd_logic;q:outstd_logic);end;libraryieee;useieee.std_logic_1164.all;entitydff1isport(d:instd_logic;clk:instd_logic;q:outstd_logic);end;3.2.1D触发器•标准逻辑位数据类型:STD_LOGIC–TYPEBITIS(‘0’,’1’);--只有两种取值–TYPESTD_LOGICIS(‘U’,’X’,’0’,’1’,’Z’,’W’,’L’,’H’,’-’);•涉及库和标准程序包–LIBRARYWORK;–LIBRARYSTD;–USESTD.STANDARD.ALL;–LIBRARYIEEE;–USEIEEE.STD_LOGIC_1164.ALL;STD_LOGIC数据类型在数字器件中实现的只有其中的4~5种值,即’X’,’0’,’1’,’Z’,其他值通常不可综合。3.2.1D触发器•结构体描述:请叙述D触发器的功能。–当时钟脉冲CLK的上升沿到来时,输入端D的值赋给输出端Q。–上升沿的表达方法是:•CLK’EVENTANDCLK=‘1’EVENT叫做信号属性函数,其用法是:信号名’ENENT含义是:信号的取值在一个极小时间段内发生变化。3.2.1D触发器architectureoneofdff1isbeginifclk'eventandclk='1'thenq=d;endif;end;architectureoneofdff1isbeginprocess(d,clk)beginifclk'eventandclk='1'thenq=d;endif;endprocess;end;3.2.1D触发器•(图)3.2.1D触发器architectureoneofdff1issignalq1:std_logic;beginprocess(d,clk)beginifclk'eventandclk='1'thenq1=d;endif;endprocess;q=q1;end;3.2.1D触发器3.2.1D触发器•信号定义和数据对象–格式:signal信号名:数据类型;–内部节点信号的定义位置:architectureoneofdff1issignalq1:std_logic;begin……定义q1的目的是为了在设计更大的电路时使用由此引入的节点。3.2.1D触发器architectureoneofdff1isbeginprocess(d,clk)variableq1:std_logic;beginifclk'eventandclk='1'thenq1:=d;endif;q=q1;endprocess;end;3.2.1D触发器3.2.1D触发器•数据对象:在vhdl中数据对象相当于一种容器,它能够接受不同数据类型的赋值。•在vhdl中,数据对象有三种:即信号、变量、常量。•在vhdl中,被定义的标识符必须被确定为某数据对象,同时还必须被定义为某种数据类型。•问题:引入时序电路结构的必要条件是什么?(跟组合电路相比较而言)3.2.2不完整条件语句和时序电路•例:数值比较器entitycompisport(a,b:inbit;y:outbit);end;architectureoneofcompisbeginprocess(a,b)beginifabtheny='1';elsifabtheny='0';endif;endprocess;end;3.2.2不完整条件语句和时序电路3.2.2不完整条件语句和时序电路ifabtheny='1';elsifabtheny='0';endif;ifabtheny='1';elsey='0';endif;3.2.2不完整条件语句和时序电路3.2.2不完整条件语句和时序电路•结论:–引入时序电路结构的必要条件是:不完整条件语句的出现,而与电路中是否存在clk‘eventandclk=‘1’语句没有关系;–不完整条件语句不局限于if语句;•3.2.3节时序电路的不同表述方法自己看。3.2.3计数器的设计•四位二进制加法计数器的功能描述:clkCQ[3..0]counter•CQ端初值为0,CLK上升沿有效;•当CLK端上升沿到来时,输出端加1。LIBRARYIEEE;

1 / 64
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功