预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共64页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第二章VHDL语言程序的基本结构本章内容:完整VHDL语言程序结构2.1VHDL语言设计的基本单元及其构成outputnVHDL语言程序设计的基本单元architectureconnectofmuxis signaltmp:bit; begin cale:process(d0,d1,sel)is variabletmp1,tmp2,tmp3:bit; begin tmp1:=d0andsel; tmp2:=d1and(notsel); tmp3:=tmp1ortmp2; tmp<=tmp3; q<=tmpafterm; endprocess; endarchitectureconnect; 1.实体说明VHDL语言不区分大小写; 除了第一行entity…is以外,每一句以分号“;”结束; 编写程序时,一行可以含若干句(以分号间隔),一句也可以写若干行; 在一句结束后,可以在“--”符号后接说明文字,有助于理解程序,不会对编译产生影响; 单词之间必须使用空格; 并列信号间使用逗号; 根据不同的层次关系最好设定不同的缩进。generic([类属常量名:类型[:=静态表达式]; …… [类属常量名:类型[:=静态表达式]);3)端口说明格式:端口说明语法要点(2)端口方向:定义外部引脚的信号方向是输入还是输出。(3)端口数据类型例2-1 entitymuis port(d0,d1,sel:inbit; q:outbit; bus:outbit_vector(7downto0)); endmu; 2.构造体(结构体)2)构造体的命名3)定义语句位于is--begin之间:4)并行处理语句并行语句 练习练习2.2VHDL语言构造体的子结构描述1.块语句结构描述2)块和子原理图的关系3)块内语句的并发性 begin到endblockcale之间的语句为并发执行语句。 4)卫式块(guardedblock) 实现块的执行控制:当某种条件满足时,块语句执行;否则,块语句不执行。 entitylatchis port(d,clk:inbit; q,qb:outbit); endentitylatch; 2.进程语句结构描述2)进程内部语句的顺序性 进程结构中的语句是按顺序一条一条向下执行的,与C语言的执行一样。 3)进程的启动 敏感量列表中任意一个信号发生变化就可以启动这个进程的执行。 a例:具有两个进程的构造体a:process(event_a,to_a)is begin if(event_a’eventandevent_a=’1’) or (to_a’eventandto_a=’1’)then to_b<=‘1’after20ns, ‘0’after30ns; endif; endprocessa;两个进程a,b3.子程序语句结构描述1)过程语句(3)procedure语法要点c在主程序中,函数调用通常在表达式中,过程调用通常在语句中;调用结束时,输出量将赋值给调用时指定的信号或变量; d过程内部可以定义局部使用的类型、常量、变量、函数、过程,不能定义信号; e过程可以进行并行调用,也可以进行顺序调用;并行过程的参量应该为信号量;顺序过程的参量为变量,可以利用顺序赋值语句将输出结果传递给信号量;(4)过程语句及过程调用举例2)函数语句(2)函数调用格式 c函数应用时,为了返回函数值,可在函数体中设置变量,在函数执行过程中为该变量赋值;然后用return语句将该变量返回(赋值给函数名);该变量应与规定的返回类型一致;在一次调用中,只有一个返回语句带回函数值; d函数内部可以定义局部使用的类型、常量、变量、函数、过程;但不能定义信号; e函数的可执行部分由顺序语句构成;不包含信号代入语句; f函数通常在代入语句的表达式中调用,函数返回类型应与该表达式类型一致;(4)函数语句及函数调用举例(4)函数语句及函数调用举例2.3包集合、库及配置1)库的使用每个实体都应独立进行库的说明;库的说明应该在实体之前;经过说明后,实体和结构体就可以调用库中的资源。例: libraryieee; useieee.std_logic_1164.all;使用标准逻辑量的定义和运算; useieee.std_logic_unsigned.all;无符号数算术运算的定义; useieee.std_logic_arith.all;使用符号数算术运算的定义; (2)std库: std库是VHDL的标准库,含有“standard”包集合和“textio”包集合,使用包集合“standard”时不需要说明,“textio”包集合需进行说明; 例: librarystd; usestd.textio.all;(3)asic库: 由各公司提供,存放与逻辑门一一