VHDL语法格式Word文档格式.docx
- 文档编号:19169069
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:29
- 大小:46.39KB
VHDL语法格式Word文档格式.docx
《VHDL语法格式Word文档格式.docx》由会员分享,可在线阅读,更多相关《VHDL语法格式Word文档格式.docx(29页珍藏版)》请在冰豆网上搜索。
运算符
算术运算+,-,*
并置运算&
关系运算=,/=,<
<
=,>
>
=
逻辑运算and,or,not,nand,nor,xor,xnor
语句
并行语句
⑴信号赋值语句
简单信号赋值语句信号<
选择信号赋值语句with选择表达式select
信号<
=表达式1when选择值1,
表达式2when选择值2,
......
表达式nwhenothers;
条件信号赋值语句信号<
=表达式1when条件关系式1else
表达式2when条件关系式2else
表达式nwhen条件nelse
表达式;
⑵过程调用语句过程(实参);
⑶函数调用语句信号<
=函数(实参);
⑷元件例化语句
元件声明component元件实体--将一个实体声明为元件
port(端口声明);
endcomponent;
元件引用
按位置引用标号:
元件实体portmap(连接端口1,连接端口2,...);
按名称引用标号:
元件实体portmap(元件端口1>
=连接端口1,元件端口2>
=连接端口2,...);
⑸生成语句格式1[标号:
]for循环变量in取值范围generate
声明语句,
begin
并行语句,
endgenerate[标号];
取值范围:
表达式to表达式;
--递增方式,如1to5
表达式downto表达式;
--递减方式,如5downto1
格式2[标号:
]if条件关系式generate
声明语句;
endgenerate[标号],
⑹块语句块标号:
block[(保护条件)]
接口声明;
类属声明;
并行语句;
--被保护的变量前需加上保留字guarded
endblock块标号;
带保护的块语句举例:
entitylatchis
port(d,clk:
inbit;
q,qb:
outbit
);
endlatch;
achetectirelatch_guardoflatchis
b1:
block(clk='
1'
)
q<
=guardeddafter5ns;
qb<
=guardednot(d)after7ns;
endblockb1;
endlatch_guard
⑺进程语句[标号:
]process(敏感信号)
[声明语句;
]--常量,变量,信号
begin
顺序语句;
endprocess[标号:
];
顺序语句
⑴赋值语句--在进程中
信号<
变量:
⑵流程控制语句
if语句
格式1:
if条件关系式then
endif;
格式2:
顺序语句;
else
endif;
格式3:
if条件关系式1then
elsif条件关系式2then
case语句--case语句中,条件值有3种形式:
值,值1|值2|...|值n,值TO值
--最后一行的顺序语句若为null,则有意引入锁存器
case条件表达式is
when条件值=>
whenothers=>
endcase;
for_loop语句[标号]:
for循环变量in值to值loop;
顺序语句;
endloop[标号];
时钟边沿描述
上升沿时钟'
eventand时钟='
|rising_edge(时钟)
下降沿时钟'
eventand时钟='
0'
|falling_edge(时钟)
程序基本结构
--主程序与元件程序在同一文件work1.vhd中,
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
useieee.std_logic_arith.all;
--主程序
entity实体名is--实体名必须与文件名相同
port(端口声明;
endentitywork1;
architecturestrucofwork1is
[声明语句;
]--常量,变量,信号,元件,函数等
begin
并行语句;
endarchitecturestruc;
电路描述方式
行为描述方式
以用状态机描述电路为典型
数据流(寄存器)描述方式
即用逻辑表达式描述电路
结构描述方式
以用元件复用的方式描述电路为典型
下篇复合元素和状态机
元件----------1单文件元件
2多文件元件
函数----------3单文件函数
4多文件函数
过程----------5单文件过程
6多文件过程
moorl状态机--7二进程moorl状态机
8三进程moorl状态机
meaky状态机--9二进程mealy状态机
10三进程mealy状态机
状态机实例----11交通灯之一
12交通灯之二
附录----------13状态转移图
14用户库的格式和用法
单文件元件
entitywork1is
port(r,s,t,u:
instd_logic;
v:
outstd_logic
componentym--将实体ym声明为元件
port(a,b:
c:
endcomponentym;
componenthm--将实体hm声明为元件
endcomponenthm;
signaltemp1,temp2:
std_logic;
u1:
ymportmap(r,s,temp1);
--元件例化
u2:
ymportmap(t,u,temp2);
u3:
hmportmap(temp1,temp2,v);
--ym元件实体定义程序
entityymis
endentityym;
architectureym1ofymis
c<
=aandb;
endarchitectureym1;
--hm元件实体定义程序
entityhmis
endentityhm;
architecturehm1ofhmis
=aorb;
endarchitecturehm1;
多文件元件
--主程序文件和定义元件的程序文件都要添加到工程中
--主程序文件zhu_map.vhd,不需要声明用户库文件
entityzhu_mapis
endentityzhu_map;
architectureniuofzhu_mapis
componentym
componenthm
endarchitectureniu;
--定义元件实体的程序文件
单文件函数
useieee.std_logic_signed.all;
entityfuncis
port(din1,din2:
instd_logic_vector(0to3);
dout:
outstd_logic_vector(0to3)
endentity;
architectureaoffuncis
--定义函数
functionls_xj(d1,d2:
instd_logic_vector(0to3)
)returnstd_logic_vectoris
variabletemp:
std_logic_vector(0to3);
temp:
=d1+d2;
returntemp;
endfunction;
--定义函数结束
dout<
=ls_xj(din1,din2);
--调用函数
endarchitecture;
多文件函数
--主程序文件和定义函数的程序文件都要添加到工程中
--主程序文件zhu_func.vhd,必须声明用户库文件
usework.use_func.all;
--use_func.vhd作为用户库
entityzhu_funcis
end;
architectureniuofzhu_funcis
--调用函数
--定义函数的文件fu_func.vhd
packageuse_funcis--声明
functionls_xj(d1,d2:
)returnstd_logic_vector;
enduse_func;
packagebodyuse_funcis--程序体
=d1andd2;
单文件过程
entitycall_proceis
port(d1:
inintegerrange0to31;
d2:
fout:
outintegerrange0to31);
end;
architectureaofcall_proceis
--过程定义
procedurejfq(din1,din2:
dout:
outintegerrange0to31
)is
=din1+din2;
--过程定义结束
begin
process(d1,d2)
variablefo:
integerrange0to31;
jfq(d1,d2,fo);
--调用过程
fout<
=fo;
endprocess;
多文件过程
--主程序文件和定义过程的程序文件都要添加到工程中
--主程序文件zhu_proc.vhd,必须声明用户库文件
usework.use_proc.all;
--use_proc.vhd作为用户库
entityzhu_procis
port(d1,d2:
architectureniuofzhu_procis
--定义过程的文件fu_proc.vhd
packageuse_procis--声明
procedurejfq(din1:
inintegerrange0to31;
din2:
enduse_proc;
packagebodyuse_procis--程序体
procedurejfq(din1,din2:
endjfq;
二进程moorl状态机
entitymoorl_1is
port(reset:
clock:
din:
outstd_logic_vector(2downto0)
architecturestatemachineofmoorl_1is
typestate_typeis(s0,s1,s2,s3);
signalstate:
process(reset,clock)--变换状态
ifreset='
then
state<
=s0;
elsifrising_edge(clock)then
casestateis
whens0=>
ifdin='
=s1;
whens1=>
=s2;
whens2=>
=s3;
whens3=>
else
endcase;
process(state)--输出
="
001"
;
011"
101"
111"
三进程moorl状态机
entitymoorl_2is
outstd_logic_vector(2downto0)
architecturestatemachineofmoorl_2is
signalpresentstate:
signalnextstate:
process(reset,clock)--更新当前状态
presentstate<
elsifrising_edge(clock)then
=nextstate;
process(presentstate,din)--生成下一个状态
casepresentstateis
nextstate<
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VHDL 语法 格式