版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
EDA技术实用教程第9章VHDL基本语句9.1.4
LOOP语句(1)单个LOOP语句,其语法格式如下:[LOOP标号:]LOOP顺序语句END
LOOP[LOOP标号];LOOP(2)FOR_LOOP语句,语法格式如下:[LOOP标号:]
FOR
循环变量
IN
循环次数范围顺序语句END
LOOP
[LOOP标号];用法示例如下:...L2:
LOOPa
:=a+1;EXIT
L2WHENa>10;--当a大于10时跳出循环END
LOOP
L2;...功能:循环语句。使所包含的一组顺序语句被循环执行
其执行次数可以由循环参数决定。有两种常用表达方式:【例9-4】8位奇偶效验电路LIBRARY
IEEE;USE
IEEE.STD_LOGIC_1164.ALL;ENTITY
p_check
ISPORT
( a
:
IN STD_LOGIC_VECTOR
(7
DOWNTO
0);y
:
OUT
STD_LOGIC
);END
p_check;ARCHITECTURE
opt
OF
p_check
ISSIGNAL
tmp
:STD_LOGIC
;BEGINPROCESS(a)BEGINtmp
<='0';FOR
n
IN
0
TO
7
LOOPtmp
<=
tmp
XOR
a(n);END
LOOP
;y
<=
tmp;END
PROCESS;END
opt;N为临时变量,loop语句的局部变量,不需要预先定义,但循环次数必须是常数1
111
0
0
1
1
0
1
01
1
1
0
1
1
0
010
1
1
0
1
00
0
00最终结果:
TMP=0,偶数个11
0
1
1
0
0
1
10
0
1
0
0
0
1
01
0最终结果:
TMP=1,奇数个1奇偶效验过程演示【例9-5】SIGNAL
a,
b,
c
:
STD_LOGIC_VECTOR
(1
TO
3);...FOR
n
IN
1
To
3
LOOPa(n)
<=
b(n)
AND
c(n);END
LOOP;此段程序等效于顺序执行以下三个信号赋值操作:a(1)<=b(1)
AND
c(1);a(2)<=b(2)
AND
c(2);a(3)<=b(3)
AND
c(3);循环3次,电路执行了三次。9.1.5
NEXT语句NEXT;
--第一种语句格式NEXT
LOOP标号;
--
第二种语句格式NEXTLOOP标号
WHEN
条件表达式;
--
第三种语句格式第一种语句格式:当loop语句执行到NEXT时,立即结束本次循环,跳回到本次循环的loop语句处,开始下一次循环。N1TO8LOOP0';=c);:=
'0';【例9-6】...L1:FORcnt_valueIs1:a(cnt_value)
:=
'NEXT
WHEN
(bs2:a(cnt_value
+
8
)ENDLOOP
L1;【例9-7】...L_x:
FORcnt_vs1:
a(cnt_vak:=0;L_y:LOOPalue
IN
1
TO
8
LOOPlue):=
'0';s2:
b(k)
:=
'0';NEXT
L_x
WHEN(e>f);s3:
b(k+8)
:=
'0';k
:=k+1;NEXT
LOOP
L_y
;NEXT
LOOP
L_x
;...第二种语句格式:用于多重loop循环语句,可以直接跳转到指定标号的loop语句处。第三种语句格式:分句“WHEN
条件表达式”是执行
NEXT语句的条件。若表达式结果为真,则执行NEXT语句,进入跳转操作,否则继续向下执行。9.1.6
EXIT语句EXIT;EXIT
LOOP标号;EXIT
LOOP标号WHEN
条件表达式;--第一种语句格式--第二种语句格式--第三种语句格式【例9-8】SIGNAL
a,
b
:
STD_LOGIC_VECTOR
(1
DOWNTO
0);SIGNAL
a_less_then_b
:
Boolean;...--设初始值--
a
>
b--
a
<
ba_less_then_b
<=
FALSE
;FOR
i
IN
1
DOWNTO
0
LOOPIF
(a(i)='1'
AND
b(i)='0')
THENa_less_then_b
<=
FALSE
;EXIT
;ELSIF
(a(i)='0'
AND
b(i)='1')
THENa_less_then_b
<=
TRUE
;EXIT;NULL;ELSEEND
IF;END
LOOP;--当i=1时返回LOOP语句继续比较2.条件信号赋值语句赋值目标<=表达式WHEN
赋值条件ELSEELSE表达式WHEN
赋值条件...表达式;9.2.1
并行信号赋值语句图9-1
例9-18的逻辑电路图【例9-18】ENTITY mux
ISPORT
(
a,b,c
:
IN
BIT
;p1,p2
:
IN
BIT
;z :
OUT
BIT
);END;ARCHITECTURE
behv
OF
muxISBEGINz
<=
a
WHEN
p1
=
'1'
ELSEb
WHEN
p2
=
'1'
ELSEc
;END;3.选择信号赋值语句WITH
选择表达式SELECT赋值目标信号<=表达式WHEN
选择值表达式WHEN
选择值...表达式WHEN
选择值;9.2.1
并行信号赋值语句注意:选择语句不能应用于进程之中,它是并行语句。其功能类似于CASE语句。功能:当“选择表达式”=“选择值”时,将对应的WHEN之前的“表达式”的值传送给“赋值目标信号”。【例9-19】LIBRARY
IEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY
decoder
ISPORT
( a,
b,
c
:IN
STD_LOGIC;IN
STD_LOGIC;data1,data2
:dataout :
OUT
STD_LOGIC
);ENDdecoder;ARCHITECTURE
concunt
OF
decoder
ISSIGNAL
instruction
: STD_LOGIC_VECTOR(2
DOWNTO
0)
;BEGINinstruction
<=
c
&
b
&
a
;WITH
instructionSELECTdataout
<=data1AND
data2WHEN"000",data1OR
data2WHEN"001",data1NAND
data2WHEN"010",data1NOR
data2WHEN"011",data1XOR
data2WHEN"100",data1XNOR
data2WHEN"101",'Z'WHENOTHERS;END
concunt
;...WITH
selt
SELECTmuxout
<=
a
WHEN0|1
,b
WHEN
2
TO
5
,--0或1--2或3,或4或5WHEN
6
,WHEN
7
,'Z'
WHEN
OTHERS
;...9.2.1
并行信号赋值语句3.选择信号赋值语句下例是一个列出选择条件为不同取值范围的4选1多路选择器,当不满足条件时,输出呈高阻态。9.2.5
生成语句[标号:]FOR循环变量IN
取值范围GENERATE说明BEGIN并行语句ENDGENERATE[标号];[标号:]IF条件
GENERATE说明
Begin并行语句ENDGENERATE[标号];四部分组成的:(1)生成方式(2)说明部分(3)并行语句(4)标号表达式TO
表达式;--递增方式,如1
TO
5表达式
DOWNTODOWNTO
表达式
1;--
递减方式,如5取值范围的语句格式,有两种形式:C
O
M
PI
NP
U
TO
U
T
P
U
Ta
[
0
]b
[
0
]a
[
1
]b
[
1
]a
[
7
]b
[
7
]C
O
M
PI
NP
U
T O
U
T
P
U
T.
.
.C
O
M
PI
NP
U
T O
U
T
P
U
T图9-2
生成语句产生的8个相同的电路模块【例9-25】...COMPONENT
compPORT
(x
:
IN
STD_LOGIC
;y
:
OUT
STD_LOGIC
);END
COMPONENT
;SIGNAL
a
,b:STD_LOGIC_VECTOR(0
TO
7);...gen
:
FOR
i
IN
a’RANGE
GENERATEu1:
comp
PORT
MA
(x=>a(i),y=>b(i));END
GENERATEgen,...结构体说明部分结构体并行语句部分【例9-26】D锁存器LIBRARY
IEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITY
LatchISPORT(
D
:
IN
STD_LOGIC;ENA
:
IN
STD_LOGIC;Q
:
OUTSTD_LOGIC
);END
ENTITY
Latch
;ARCHITECTURE
one
OF
Latch
ISSIGNAL
sig_save
:
STD_LOGIC;BEGINPROCESS
(D,
ENA)BEGINIF ENA
=
'1'
THEN sig_save
<=
D
;END
IF
;Q
<=
sig_save
;END
PROCESS
;END
ARCHITECTURE
one;【例9-27】带三态门输出控制电路的8D锁存器LIBRARY
IEEE;USE
IEEE.STD_LOGIC_1164.ALL;ENTITY
SN74373
ISPORT
(D
:
IN
STD_LOGIC_VECTOR(
8
DOWNTO
1
);OEN
,G
:
IN
STD_LOGIC;Q
:
OUT
STD_LOGIC_VECTOR(8
DOWNTO
1));END
ENTITY
SN74373;ARCHITECTURE
two
OF
SN74373
ISSIGNAL
sigvec_save
:
STD_LOGIC_VECTOR(8
DOWNTO
1);BEGINPROCESS(D,
OEN,
G
,
sigvec_save)BEGINIF
OEN
=
'0'
THEN Q
<=
sigvec_save;ELSE Q
<=
"ZZZZZZZZ";END
IF;IF
G
=
'1'
THEN Sigvec_save
<=
D;END
IF;END
PROCESS;END
ARCHITECTURE
two;接下页ARCHITECTURE
one
OF
SN74373
ISCOMPONENT
LatchPORT
(D,
ENA
:
IN
STD_LOGIC;Q
:
OUT
STD_LOGIC
);END
COMPONENT;SIGNAL
sig_mid
:
STD_LOGIC_VECTOR(
8
DOWNTO
1
);BEGINGeLatch
:
FOR
iNum
IN
1
TO
8
GENERATELatchx
:
Latch
PORT
MAP(D(iNum),G,sig_mid(iNum));END
GENERATE;Q
<=
sig_mid WHEN
OEN
=
'0'
ELSE"ZZZZZZZZ"; --当OEN=1时,Q(8)~Q(1)输出状态呈高阻态END
ARCHITECTURE
one;【例9-28】LIBRARY
IEEE;USE
IEEE.STD_LOGIC_1164.ALL;ENTITY
d_ff
ISPORT
( d,
clk_s
:
IN
STD_LOGIC
;q
:
OUT
STD_LOGIC
;nq
:
OUT
STD_LOGIC
);END
ENTITY
d_ff;ARCHITECTURE
a_rs_ff
OF
d_ff
ISBEGINbin_p_rs_ff
:
PROCESS(CLK_S)接下页BEGINIF
clk_s
=
'1'
AND
clk_s'EVENTTHENnq
<=
NOT
d;q
<=
d
;END
IF;END
PROCESS;END
ARCHITECTURE
a_rs_ff;LIBRARY
IEEE;USE
IEEE.STD_LOGIC_1164.ALL;ENTITY
cnt_bin_n
isGENERIC
(n
:
INTEGER
:=
6);PORT
(q
:
OUT
STD_LOGIC_VECTOR
(0
TO
n-1);in_1
:
IN STD_LOGIC
);END
ENTITY
cnt_bin_n;ARCHITECTURE
behv
OF
cnt_bin_n
ISCOMPONENT
d_ffPORT(d,
clk_s
: IN
STD_LOGIC;Q,
NQ
:
OUT
STD_LOGIC);END
COMPONENT
d_ff;SIGNAL
s
:
STD_LOGIC_VECTOR(0
TO
n);BEGINs(0)
<=
in_1;q_1
:
FOR
i
IN
0
TO
n-1
GENERATEdff
:
d_ff
PORT
MAP
(s(i+1),
s(I),
q(i),
s(i+1));END
GENERATE;END
ARCHITECTURE
behv;FD11D0
Q0FD11D0
Q0FD11D0
Q0nqnqnqclkclkclki=1s(n)s(2)s(1)s(0)i=n-1qn-1q1i=0
q0......图9-3 6
位二进制计数器原理图语句“NOT(clock’STABLEANDclock='1')”的表达方式是不可综合的。9.3
属性描述与定义语句综合器支持的属性有:LEFT、RIGHT、HIGH、LOW、RANGE、REVERSRANGE、LENGTH、EVENT及STABLE。1.信号类属性以下两语句的功能是一样的。(
NOT
clock’STABLE
AND
clock='1')(clock’EVENT
AND
clock
='1')注意:2.数据区间类属性【例9-29】...SIGNAL
range1
:
IN
STD
LOGIC
VECTOR
(0
TO
7)
;...FOR
i
IN
range1'RANGE
LOOP...3、数值类属性...PROCESS
(clock,
a,
b);TYPE
obj
IS
ARRAY
(0
TO
15)
OF
BIT
;:
INTEGER
;SIGNAL
ele1,
ele2,
ele3,
ele4BEGINele1
<=
obj’RIGNT
;ele2<=obj’LEFT;ele3<=obj’HIGH;ele4<=obj’LOW;...【例9-30】LIBRARY
IEEE;--PARITYGENERATORUSEIEEE.STD_LOGIC_1164.ALL;ENTITY
parity
ISGENERIC
(bus_size
:
INTEGER
:=
8
);PORT
(input_bus
:
IN
STD_LOGIC_VECTOR(bus_size-1DOWNTO
0);even_numbits,
odd_numbits
:
OUT
STD_LOGIC
)
;END
parity
;ARCHITECTURE
behave
OF
parityISBEGINPROCESS
(input_bus)VARIABLE
temp:
STD_LOGIC;BEGINtemp
:=
'0';FOR
i
IN
input_bus'LOW
TO
input_bus'HIGH
LOOPtemp
:=
temp
XOR
input_bus(
i
)
;END
LOOP
;odd_numbits
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护理科研论文的撰写与评价
- 2026年抗日民族英雄杨靖宇课件
- 医学课件-女性健康知识讲座完整版3
- 2026沙尘试验箱校准规范
- (医学课件)冷热疗法-
- 执业医师插鼻管操作评分
- 2026年家无长物成语故事简朴生活主题教案
- 2026年失之东隅成语故事得失转换思辨教案
- 2026年不得要领成语故事抓重点思维训练教案
- 2026 年小学《蜂》劳者咏叹沉浸式思辨课堂教案
- 2026年全国保密教育线上培训考试题(含答案)
- 人行天桥钢结构安装施工方案
- (高清版)DG∕TJ 08-2342-2020 地下式污水处理厂设计标准
- 自然纹路美术课件
- 榆林市幼儿园分类评估管理办法
- 沥青路面专题培训
- 300个文言实词汇编(含课内句子)中
- 仓库盘点中出现问题与解决方法
- 天御6000单向安全隔离用户使用手册
- Unit 1 Section AToward a brighter future for all中学英语课件
- GB/T 2423.22-2012环境试验第2部分:试验方法试验N:温度变化
评论
0/150
提交评论