20.3.3VHDL语言简介 - VHDL语言简介-1_第1页
20.3.3VHDL语言简介 - VHDL语言简介-1_第2页
20.3.3VHDL语言简介 - VHDL语言简介-1_第3页
20.3.3VHDL语言简介 - VHDL语言简介-1_第4页
20.3.3VHDL语言简介 - VHDL语言简介-1_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

10.9VHDL语言

---1.2选一选择器LIBRARYIEEE------------------------1USEIEEE.STD_LOGIC_1164.ALL;ENTITYmux21IS------------------------2PORT(a,b:INSTD_LOGIC;s:INSTD_LOGIC;y:OUTSTD_LOGIC);ENDENTITYmux21;ARCHITECTUREfxn_bodyOFmux21IS------------------------3BEGINy<=aWHENs='0'ELSEb;ENDARCHITECTUREfxn_body;10.9.12选一选择器以下解释上面5个例子中出现的语法现象:①

实体

但应注意,不应用中文或者数字开头的名字,如74LS138;也不能和EDA工具库中定义好的元件名重名,如or2、latch。

端口的输入/输出模式指的是端口上数据的流动方向和方式,有4种类型:IN、OUT、INOUT、BUFFER。可以省略,默认的端口模式是IN。③信号传输(赋值)符号在例4.1中,表达式“y<=a”表示信号a向信号y赋值,物理含义是输入端口a的数据向输出端口y传输。VHDL要求赋值符号两边的信号的数据类型必须一致。④逻辑操作符AND、OR、NOT它们是AND(与)、OR(或)、NOT(非)、NAND(与非)、NOR(或非)、XOR(异或)、XNOR(同或)。信号在这些操作符的作用下,可以形成组合电路。

⑤IF–THEN条件语句IF–THEN–ELSE表达的VHDL顺序语句的方式,VHDL的顺序语句同样可以描述并行运行的组合电路。⑥文件取名和存盘最好与文件实体名相同;文件后缀扩展名必须为.vhd,如adder_f.vhd。但考虑到某些EDA软件的限制和VHDL程序的特点,在元件(例如语句中的被调用文件)调用中,其元件名与文件名是等同的。因此,程序的文件名应该与该程序的实体名相同,文件名不分大小写。

⑦PROCESS进程语句由PROCESS引导的语句称为进程语句,在VHDL中,所有合法的顺序语句都必须放在进程语句中。例如,IF–THEN–ELSE–END。在一个结构体中可以包含任意个进程语句,所有的进程语句都是并行语句,而由任一进程PROCESS引导的语句结构属于顺序语句。2.D触发器设计--例7ARCHITECTUREbhvOFDFF1ISBEGINPROCESS(CLK)BEGINIFCLK'EVENTANDCLK='1'THENQ<=D;ENDIF;ENDPROCESS;ENDbhv;(1)上升沿检测表示“IFCLK'EVENTANDCLK='1'”用来检测时钟的上升沿,当上升沿到来的时候,该表达式为“TRUE”。该句中“EVENT”为信号的属性,VHDL用“信号'EVENT”来测定某信号的跳变边沿。

(2)不完整条件语句这样既浪费了逻辑资源,又降低了电路的工作速度,影响了电路的可靠性。因此,设计者应尽量避免此类电路的出现。(3)用VHDL实现时序电路时不同的表达形式利用了一条WAIT–UNTIL语句,来实现时序电路的设计。它的含义是:当CLK当前值不是‘1’时,就等待并保持Q值不变;直到CLK为'1'时,才对Q进行更新。VHDL语言要求,当进程中使用WAIT语句的时候,就可以不用列出敏感信号。当CLK为'0'时,进程一直处于等待状态,直到发生一次'0'到'1'的跳变,才启动了进程。而又满足了IF条件语句的条件,对Q进行赋值更新,而此前Q一直保持原值不变,直到下一次上升沿的到来。利用了rising_edge()这个预定义的函数来检测上升沿;falling_edga检测下降沿。边沿触发D触发器电平触发D触发器A0

A1

A2Y0

Y1

Y2

Y3

Y4

Y5

Y6

Y70

0

01

0

0

0

0

0

0

00

0

10

1

0

0

0

0

0

00

1

00

0

1

0

0

0

0

00

1

10

0

0

1

0

0

0

01

0

00

0

0

0

1

0

0

01

0

10

0

0

0

0

1

0

01

1

00

0

0

0

0

0

1

01

1

10

0

0

0

0

0

0

13-8编码器的真值表2.译码器与编码器

3-8译码器的仿真结果

(3)信号的合并

SEL(0)<=EN; SEL(1)<=A(0); SEL(2)<=A(1); SEL(3)<=A(2);表示信号的合成操作,它是把输入信号合成为一个位矢量信号。语句“SEL<=A&EN;”由A和EN组成了一个4位的位矢量SEL。并置操作符“&”表示将操作数(如'0','1')或者数组合并起来形成新的数组,如'1'&'0'&'0'的结果为"100","VH"&"DL"的结果为"VHDL"。

编码器

例如8×3编码器(八–三编码器)。和译码器一样,有了编码器的外部管脚配置图,就能够做ENTITY的定义,再根据编码器的真值表和译码器一样使用查表法方法。

8×3编码器框图8

–3编码器的真值表Y0

Y1

Y1

Y3

Y4

Y5

Y6

Y7A0

A1

A21

0

0

0

0

0

0

00

0

00

1

0

0

0

0

0

00

0

10

0

1

0

0

0

0

00

1

00

0

0

1

0

0

0

00

1

10

0

0

0

1

0

0

01

0

00

0

0

0

0

1

0

01

0

10

0

0

0

0

0

1

01

1

00

0

0

0

0

0

0

11

1

18×3编码器仿真时序图数码比较器

数字比较器的设计,通常是依据两组二进制数码的数值大小来做比较,即a>b、a=b、a<b,这三种情况仅有一种其值为真。需要注意的是比较器的电路有三个输出端口。

程序A使用的IF–THEN是顺序执行语法,因此当IF判别式为真时,程序就立即跳离IF语法结构,不再处理其他ELSEIF区段的程序。因此在输出信号AGTB、AGQB

温馨提示

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

评论

0/150

提交评论