EDA技术及实践(第3章)_第1页
EDA技术及实践(第3章)_第2页
EDA技术及实践(第3章)_第3页
EDA技术及实践(第3章)_第4页
EDA技术及实践(第3章)_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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组合电路描述entity

mux21a

isport(a,b:

in

bit;

s:

in

bit;

y:

out

bit);end;architecture

one

of

mux21a

isbegin

y<=a

when

s='0'

else

b;end;3.1.2

VHDL结构实体:描述了电路器件的外部情况和各信号端口的基本性质。entity

mux21a

isport(a,b:

in

bit;

s:

in

bit;

y:

out

bit);end;实体名实体名是标识符,可以由设计者自定,好的实体名应该体现器件的基本功能。3.1.2

VHDL结构端口语句:用来描述电路的端口及端口信号的性质。port(

a,b

:

in

bit

;

s

:

in

bit

;

y

:

out

bit

);端口信号名可以自定义。端口信号名端口模式数据类型限定了数据对象的取值范围和数值类型,即对其传输或存储的数据做明确界定。数据类型端口模式用于定义端口上数据流动的方向。3.1.2

VHDL结构可综合的端口模式有4种:(1)IN——输入端口;(2)OUT——输出端口;(3)INOUT——双向端口;(4)BUFFER——缓冲端口;3.1.2

VHDL结构数据类型BIT:取值范围是逻辑位‘1’和‘0’;可以参与逻辑运算或算数运算;bit_vector(1downto0);axmuxcbds23.1.2

VHDL结构结构体的一般表达式如下:architecture<结构体名>of<所对应实体名>is[说明语句]

begin功能描述语句end;3.1.2

VHDL结构architectureoneofmux21aisbegin y<=awhens='0'else b;end;赋值符号<=表示输入端口a的数据向输出端口y传输;数据比较符由“=”连接的表达式的数据类型是BOOLEAN类型,其取值分别为TRUE和FALSE。3.1.2

VHDL结构条件信号赋值语句:when_else赋值目标<=表达式when赋值条件

else

表达式when赋值条件

else

……

表达式;

y<=awhen(s=“00”)else bwhen(s=“01”)else cwhen(s=“10”)else d;aycbdsmux2注意

1、条件测试具有顺序性;2、各赋值条件可以同时成立;3、至少有一个ELSE,即至少是两分支;3.1.2

VHDL结构选择信号赋值语句:with_select_whenwith 选择表达式 select赋值目标<=表达式when 选择值,

表达式when 选择值,

……,

表达式when 选择值;

with sselect y<=awhen “00”, bwhen “01”,

cwhen “10”, dwhen others;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简单信号赋值语句

赋值目标<=表达式;entity

mux21a

isport(a,b,s:

in

bit;

y:

out

bit);end;architecture

one

of

mux21a

issignald,e:bit;begin

d<=a

and(not

s);e<=bands; y<=dore;end;赋值符号两侧的数据类型必须一致!3.1.4逻辑操作符运算符功能AND与OR或NAND与非NOR或非XOR异或XNOR同或NOT非3.1.5if语句architecture

one

of

mux21a

isbegin

ifs=‘0’theny<=a;

elsey<=b;

end

if;

end;architecture

one

of

mux21a

isbegin

process(a,b,s) begin

ifs=‘0’theny<=a;

elsey<=b;

end

if;

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 选择值

……

表达式when others;组合电路都是由完整条件语句构成的!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.1

D触发器实体描述:entity

dff1

isport(d:

in

bit;

clk:

in

bit;

q:

out

bit);end;3.2.1

D触发器entity

dff1

isport(d:

in

std_logic;

clk:

in

std_logic;

q:

out

std_logic);end;libraryieee;useieee.std_logic_1164.all;entity

dff1

isport(d:

in

std_logic;

clk:

in

std_logic;

q:

out

std_logic);end;3.2.1

D触发器标准逻辑位数据类型:STD_LOGICTYPEBITIS(‘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.1

D触发器结构体描述:请叙述D触发器的功能。当时钟脉冲CLK的上升沿到来时,输入端D的值赋给输出端Q。上升沿的表达方法是:CLK’EVENTANDCLK=‘1’EVENT叫做信号属性函数,其用法是:<信号名>’ENENT含义是:信号的取值在一个极小时间段内发生变化。3.2.1

D触发器architecture

one

of

dff1

isbegin

if

clk'event

and

clk='1'

then

q<=d;

endif;

end;architecture

one

of

dff1

isbegin

process(d,clk)

begin

if

clk'event

and

clk='1'

then

q<=d;

endif;

endprocess;end;完整条件语句?3.2.1

D触发器(图)3.2.1

D触发器architecture

one

of

dff1

issignalq1:std_logic;begin

process(d,clk)

begin

if

clk'event

and

clk='1'

then

q1<=d;

endif;

endprocess;q<=q1;end;3.2.1

D触发器3.2.1

D触发器信号定义和数据对象格式:signal

信号名:数据类型;内部节点信号的定义位置: architecture

one

of

dff1

is signalq1:std_logic; begin

……定义q1的目的是为了在设计更大的电路时使用由此引入的节点。3.2.1

D触发器

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论