![VHDL主要描述语句课件_第1页](http://file4.renrendoc.com/view/38a20bc26310621faf4e651642653666/38a20bc26310621faf4e6516426536661.gif)
![VHDL主要描述语句课件_第2页](http://file4.renrendoc.com/view/38a20bc26310621faf4e651642653666/38a20bc26310621faf4e6516426536662.gif)
![VHDL主要描述语句课件_第3页](http://file4.renrendoc.com/view/38a20bc26310621faf4e651642653666/38a20bc26310621faf4e6516426536663.gif)
![VHDL主要描述语句课件_第4页](http://file4.renrendoc.com/view/38a20bc26310621faf4e651642653666/38a20bc26310621faf4e6516426536664.gif)
![VHDL主要描述语句课件_第5页](http://file4.renrendoc.com/view/38a20bc26310621faf4e651642653666/38a20bc26310621faf4e6516426536665.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第五章VHDL主要描述语句第五章VHDL主要描述语句主要内容概
述行为描述语句结构描述语句主要内容概述5.1
概
述VHDL中的描述语句了分为顺序语句(SequentialStatements)和并行语句
(ConcurrentStatements)两大基本系列。5.1概述VHDL中的描述语句了分为顺序语句(Sequ5.2
行为描述语句5.2.1赋值语句
赋值语句有两种,即信号赋值语句和变量赋值语句。每一种赋值语句都有三个基本组成部分,即赋值目标、赋值符号和赋值源。信号赋值语句和变量赋值语句的语法格式如下:
信号赋值目标
<=赋值源;
变量赋值目标:=赋值源;标识符、数组元素目标的赋值语句示例如下:SIGNALs1,s2:STD_LOGIC;SIGNALarray
1:STD_LOGIC_VECTOR(0TO3);PROCESS(s1)VARIABLEv1,v2:STD_LOGIC;BEGIN V1:=‘0’; V2:=‘1’; S1<=s1ANDs2; S2<=s1ORs2; array
1(0)<=V1; array
1(1)<=V2; array
1(2)<=S1; array
1(3)<=S2;
ENDPROCESS;5.2行为描述语句5.2.1赋值语句标识符、数组元素5.2.2
并行信号赋值语句1.一般信号赋值语句
信号赋值目标
<=延迟选项表达式延迟表达式;例5.1四位并行加法器的数据流描述。LIBRARY
IEEE;USE
IEEE.STD_LOGIC_1164.ALL;USE
IEEE.STD_LOGIC_UNSIGNED.ALL
ENTITYADD4IS
PORT(
A:IN
STD_LOGIC_VECTOR(3DOWNTO0);
B:IN
STD_LOGIC_VECTOR(3DOWNTO0);
CIN:IN
STD_LOGIC;
SUM:OUT
STD_LOGIC_VECTOR(
3DOWNTO0);
COUT:OUT
STD_LOGIC );ENDADD4;ARCHITECTUREADD4_concurntOFADD4IS--定义包含有进位的SUM信号SIGNALSUMINT:STD_LOGIC_VECTOR(
4DOWNTO0);BEGIN SUMINT<=('0'&A)+('0'&B)+("0000"&CIN)AFTER10ns; COUT<=SUMINT(4)AFTER15ns; SUM<=SUMINT(3DOWNTO0)AFTER15ns;ENDADD4_concurnt;5.2.2并行信号赋值语句1.一般信号赋值语句例5.1四5.2.2
并行信号赋值语句(续1)2.条件信号赋值语句
赋值目标
<=表达式WHEN
赋值条件ELSE
表达式WHEN
赋值条件ELSE
…
表达式;例5.23选1多路选择器的行为描述。5.2.2并行信号赋值语句(续1)2.条件信号赋值语句5.2.2
并行信号赋值语句(续2)2.条件信号赋值语句
例5.23选1多路选择器的行为描述。LIBRARY
IEEE;USEIEEE.STD_LOGIC
1164.ALL;
ENTITYmux31IS PORT(a,b,c:INSTD_LOGIC;
en1,en2:INSTD_LOGIC;
z:OUT
STD_LOGIC);ENDmux31;
ARCHITECTUREbehavioralOFmux31ISBEGIN Z<=aWHENen2='1'ELSE
bWHENen1='1'ELSE
c;ENDbehavioral;5.2.2并行信号赋值语句(续2)2.条件信号赋值语句5.2.2
并行信号赋值语句(续3)3.选择信号赋值语句
WITH
选择表达式SELECT
赋值目标信号<=表达式WHEN
选择值,
表达式WHEN
选择值,
…
表达式WHEN
选择值,
表达式WHEN
选择值;
例5.3简易的指令译码器设计。5.2.2并行信号赋值语句(续3)3.选择信号赋值语句例5.2.2
并行信号赋值语句(续4)3.选择信号赋值语句
例5.3简易的指令译码器设计。LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;
ENTITYDECODERIS PORT(A,B,C
:INSTD_LOGIC;
data1,data2:INSTD_LOGIC;
data_out
:OUTSTD_LOGIC);ENDDECODER;
ARCHITECTUREbehavioralOFDECODERIS SIGNALinstruction:STD_LOGIC_VECTOR(0TO2); BEGIN Instruction<=A&B&C;
WITHinstructionSELECT data_out<=NOTdata1
WHEN"000",
data1ANDdata2
WHEN"001",
data1ORdata2
WHEN"010",
data1NANDdata2
WHEN"011",
data1NORdata2
WHEN"100",
data1XORdata2
WHEN"101",
data1XNORdata2
WHEN"110",
‘Z’
WHEN
OTHERS;ENDbehavioral;5.2.2并行信号赋值语句(续4)3.选择信号赋值语句5.2.3顺序控制语句1.IF语句第一种形式:IF
条件THEN --顺序语句;
ELSE --顺序语句;ENDIF;第二种形式:IF
条件THEN
--顺序语句;
ENDIF;第三种形式:IF
条件THEN --顺序语句;
ELSIF条件THEN --顺序语句;
… ELSE --顺序语句;ENDIF;第四种形式:IF
条件THEN --顺序语句;
ELSIF条件THEN --顺序语句;
…ENDIF;5.2.3顺序控制语句1.IF语句第一种形式:第二种形1.IF语句(续1)例5.4采用两种不同IF语句结构实现同一结构和功能的数据选择器。ENTITYif_statementISPORT(A,B,C,X:IN
BIT_VECTOR(3DOWNTO0);Z:OUTBIT_VECTOR(3DOWNTO0));ENDif_statement;ARCHITECTUREexample1OFif_statementISBEGIN PROCESS(A,B,C,X) BEGIN Z<=A;
IF(X="1111")THEN
Z<=B;
ELSIF(X>"1000")THEN
Z<=C;
ENDIF; ENDPROCESS;
ENDexample1;1.IF语句(续1)例5.4采用两种不同IF语句结构实现1.IF语句(续2)例5.4采用两种不同IF语句结构实现同一结构和功能的数据选择器。ARCHITECTUREexample2OFif_statementISBEGINPROCESS(A,B,C,X)
BEGIN
IF(X="1111")THEN
Z<=B;
ELSIF(X>"1000")THEN
Z<=C;
ELSE
Z<=A;
ENDIF;ENDPROCESS;ENDexample2;1.IF语句(续2)例5.4采用两种不同IF语句结构实现1.IF语句(续3)例5.5利用IF语句的多分支嵌套实现四选一多路选择器。LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;
ENTITYMUX_41IS
PORT(S1,S0,A,B,C,D:INSTD_LOGIC;
Z:OUTSTD_LOGIC);ENDMUX_41;ARCHITECTUREBEHAV_MUX41OFMUX_41ISBEGINP1:PROCESS(S1,S0,A,B,C,D)
BEGIN
IFS1='0'ANDS0='0'THEN Z<=A;
ELSIFS1='0'ANDS0='1'THEN Z<=B;
ELSIFS1='1'ANDS0='0'THEN Z<=C;
ELSE Z<=D;
ENDIF;
ENDPROCESSP1;ENDBEHAV_MUX41;1.IF语句(续3)例5.5利用IF语句的多分支嵌套实现1.IF语句(续4)例5.6利用IF语句的多分支嵌套实现四选一多路选择器的错误示例。P1:PROCESS(S1,S0,A,B,C,D)
BEGIN
IFS1='0'ANDS0='0'THEN Z<=A;
ELSIFS1='0'ANDS0='1'THEN Z<=B;
ELSIFS1='1'ANDS0='0'THEN Z<=C;
ELSIFS1='1'ANDS0='1'THEN Z<=D;
ENDIF;
ENDPROCESSP1;1.IF语句(续4)例5.6利用IF语句的多分支嵌套实现5.2.3
顺序控制语句2.CASE语句CASE
表达式
ISWHEN
选择值_1=>顺序语句;WHEN
选择值_2|选择值_3=>顺序语句;WHEN
选择值_4TO选择值_N=>顺序语句;WHEN
OTHERS=>顺序语句;ENDCASE;选择值可以有四种不同的表达方式:单个普通数值,如选择值_1;并列数值,如选择值_2|选择值_3,表示取值为选择值_2或者选择值_3;数值选择范围,如选择值_4TO选择值_N,表示取值可以是该范围中的任意一个;混合方式,以上三种方式的混合。5.2.3顺序控制语句2.CASE语句CASE表达2.CASE
语句(续1)例5.7CASE语句描述的8线-3线编码器。LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;
ENTITY
encoder_83ISPORT(s:IN
STD_LOGIC_VECTOR(7DOWNTO0);z:OUT
STD_LOGIC_VECTOR(2DOWNTO0));ENDencoder_83;
ARCHITECTUREbehavioralOFencoder_83ISBEGIN PROCESS(s)
BEGIN CASEsIS
WHEN"11111110"=>z<="000"; WHEN"11111101"=>z<="001"; WHEN"11111011"=>z<="010"; WHEN"11110111"=>z<="011"; WHEN"11101111"=>z<="100"; WHEN"11011111"=>z<="101"; WHEN"10111111"=>z<="110"; WHEN"01111111"=>z<="111"; WHENOTHERS=>z<="XXX"; ENDCASE; ENDPROCESS;ENDbehavioral;2.CASE语句(续1)例5.7CASE语句描述的82.CASE
语句(续2)例5.8整型数据类型的范围。ENTITYrange_1IS
PORT(A,B,C,X:ININTEGERRANGE0TO15;
Z:OUTINTEGERRANGE0TO15);ENDrange_1;
ARCHITECTUREexampleOFrange_1ISBEGIN
PROCESS(A,B,C,X) BEGIN CASEXIS WHEN0=>Z<=A; WHEN7|9=>Z<=B; WHEN1TO5=>Z<=C; WHENOTHERS=>Z<=0; ENDCASE; ENDPROCESS;ENDexample;2.CASE语句(续2)例5.8整型数据类型的范围。E2.CASE
语句(续3)例5.9数组数据类型范围的错误用法。ENTITYrange_2ISPORT(A,B,C,X:IN
BIT_VECTOR(3DOWNTO0);
Z:OUT
BIT_VECTOR(3DOWNTO0));ENDrange_2;
ARCHITECTUREexampleOFrange_2ISBEGIN
PROCESS(A,B,C,X)
BEGIN CASEXIS
WHEN"0000"=>Z<=A;
WHEN"0111"|"1001"=>Z<=B;
--错误用法,数组元素没有大小关系
WHEN"0001"TO"0101"=>Z<=C;
WHENOTHERS=>Z<=0;
ENDCASE;
ENDPROCESS;ENDexample;2.CASE语句(续3)例5.9数组数据类型范围的错误5.2.3
顺序控制语句3.
LOOP语句FORLOOP的语句格式如下:LOOP标号:FOR循环变量IN循环次数范围LOOP顺序语句END
LOOPLOOP标号;WHILELOOP的语句格式如下:LOOP标号:WHILE循环控制条件LOOP顺序语句ENDLOOPLOOP标号;5.2.3顺序控制语句3.LOOP语句FORLOO3.
LOOP
语句(续1)例5.10FORLOOP语句使用示例。ENTITYfor_loopIS PORT(A:IN
INTEGERRANGE0TO3;
Z:OUTBIT_VECTOR(3DOWNTO0));ENDfor_loop;
ARCHITECTUREexampleOFfor_loopISBEGIN PROCESS(A) BEGIN Z<="0000"; FORiIN0TO3LOOP
IF(A=i)THEN
Z(i)<='1';
ENDIF; ENDLOOP; ENDPROCESS;ENDexample;3.LOOP语句(续1)例5.10FORLOOP语句3.
LOOP
语句(续2)例5.11利用LOOP语句将向量转化为整数输出。ENTITYconv_intISPORT(vect:IN
BIT_VECTOR(7DOWNTO0);
result:OUT
INTEGER);ENDconv_int;
ARCHITECTUREAOFconv_intISBEGIN
PROCESS(vect)
VARIABLEtmp:INTEGER;
BEGIN tmp:=0; FORiIN7DOWNTO0LOOP IF(vect(i)='1')THEN tmp:=tmp+2**i; ENDIF; ENDLOOP; result<=tmp;
ENDPROCESS;ENDA;ARCHITECTUREBOFconv_intISBEGIN
PROCESS(vect)
VARIABLEtmp:INTEGER;
VARIABLEi:INTEGER;
BEGIN tmp:=0; i:=vect'high WHILE(i>=vect'low)LOOP IF(vect(i)='1')THEN
tmp:=tmp+2**i; ENDIF; i:=i-1;--修改循环变量 ENDLOOP; result<=tmp;
ENDPROCESS;ENDB;3.LOOP语句(续2)例5.11利用LOOP语句将向5.2.3
顺序控制语句4.NEXT语句和EXIT语句NEXT的语句四种形式:NEXT;NEXTLOOP标号;NEXT
WHEN
条件表达式;NEXTLOOP标号WHEN
条件表达式;EXIT语句四种形式:EXIT;EXITLOOP标号;EXITWHEN
条件表达式;EXITLOOP标号WHEN
条件表达式;5.2.3顺序控制语句4.NEXT语句和EXIT语句N5.2.4NULL语句空语句不会执行任何操作,其语句格式为:NULL;例5.12NULL语句的应用示例。ENTITYEX_WAITIS
PORT(CNTL:IN
INTEGER
RANGE0TO31;
A,B:IN
STD_LOGIC_VECTOR(7DOWNTO0); Z:OUTSTD_LOGIC_VECTOR(7DOWNTO0));ENDEX_WAIT;
ARCHITECTUREarch_waitOFEX_WAITISBEGIN P_WAIT:PROCESS(CNTL)
BEGIN
Z<=A;
CASECNTLIS WHEN3|15=>Z<=AXORB;
WHENOTHERS=>NULL;
ENDCASE;
ENDPROCESSP_WAIT;ENDarch_wait;5.2.4NULL语句空语句不会执行任何操作,其语句格式5.2.5WAIT语句WAIT语句的语句格式有如下四种形式:WAITUNTIL
条件表达式;WAITFOR
时间表达式;WAITON
信号列表;WAIT;例5.13利用WAIT语句描述的D触发器模块。ENTITYFFIS
PORT(D,CLK:INBIT;
Q:OUTBIT);
ENDFF;ARCHITECTUREBEH_1OFFFIS
BEGIN
PROCESS
BEGIN
WAITUNTILCLK='1';
Q<=D;
ENDPROCESS;
ENDBEH_1;5.2.5WAIT语句WAIT语句的语句格式有如下四种形5.2.6
进程语句1.进程语句的格式进程标号:PROCESS(敏感信号参数列表
)
进程说明部分
BEGIN
顺序描述语句
ENDPROCESS
进程标号;2.进程设计要点同一结构体中的多个进程之间是并行运行的,但每一进程中的逻辑描述语句是顺序运行的。进程只能存在于结构体内。一个进程的执行是事件触发的,或者将可能的事件源列在敏感信号参数表中,或者直接使用WAIT语句来控制进程的执行。同一设计中的所有进程都是并行运行的,各进程彼此之间的通信是通过列于敏感信号参数表中的信号进行的。如果使用了标号,那末在进程结束语句中必须重复标号。5.2.6进程语句1.进程语句的格式5.2.6
进程语句(续1)3.进程语句设计实例例5.14进程中敏感信号参数表和IF语句的使用。LIBRARY
IEEE;USEIEEE.STD_LOGIC_1164.ALL;
ENTITYcomp_listIS
PORT(A,B,SEL:INSTD_LOGIC;
Z:OUTSTD_LOGIC);
ENDcomp_list;
ARCHITECTURERTLOFcomp_listIS
BEGIN
PROCESS(A,B,SEL)
BEGIN
IFSEL='1'THEN
Z<=A; ELSEZ<=B;
ENDIF;
ENDPROCESS;ENDRTL;5.2.6进程语句(续1)3.进程语句设计实例例5.13.进程语句设计实例(续2)例5.15无复位十进制加法计数器的描述。LIBRARYIEEE;
USE
IEEE.STD_LOGIC_1164.ALL;
ENTITYcounterIS
PORT(CLK:IN
STD_LOGIC;
Q:OUTINTEGERRANGE0TO15);
ENDcounter;
ARCHITECTUREAOFcounterIS
SIGNALcount:
INTEGERRANGE0TO15;
BEGIN
PROCESS(CLK)
BEGIN
IFCLK‘EVENTANDCLK=’1‘THEN
IF(count>=9)THEN
count<=0;
ELSE
count<=count+1;
ENDIF;
ENDIF;
ENDPROCESS;
Q<=count;
ENDA;3.进程语句设计实例(续2)例5.15无复位十进制加法计3.进程语句设计实例(续3)例5.16带异步复位、置位端的D触发器描述。LIBRARY
IEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYASYNC_FFIS
PORT(D,CLK,SET,RST:IN
STD_LOGIC;
Q:OUTSTD_LOGIC);
ENDASYNC_FF;
ARCHITECTUREAOFASYNC_FFIS
BEGIN
PROCESS(CLK,RST,SET)
BEGIN
IF(RST=‘1’)THEN
Q<=‘0’;
ELSIFSET=‘1’THEN
Q<=‘1’;
ELSIF(CLK‘EVENTANDCLK=’1‘)THEN
Q<=D;
ENDIF;
ENDPROCESS;
ENDA;ENDcounter;3.进程语句设计实例(续3)例5.16带异步复位、置位端3.进程语句设计实例(续4)例5.17移位寄存器的描述。--基本移位寄存器的描述LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;
ENTITYbasic_shift_registerIS
GENERIC ( num_stages:NATURAL:=16 );
PORT ( clk :INSTD_LOGIC; enable :INSTD_LOGIC; sr_in :INSTD_LOGIC; sr_out :OUTSTD_LOGIC );ENDENTITY;3.进程语句设计实例(续4)例5.17移位寄存器的描述。3.进程语句设计实例(续5)例5.17移位寄存器的描述。ARCHITECTURErtlOFbasic_shift_registerIS--为基本移位寄存器构造一个数组类型TYPEsr_lengthISARRAY((num_stages-1)DOWNTO0)OFSTD_LOGIC; --声明移位寄存器内部信号
SIGNALsr:sr_length;BEGIN
PROCESS(clk)
BEGIN
IF(clk'EVENTandclk='1')THEN
IF(enable='1')THEN
--左移一位,且最高位数据丢失
sr((num_stages-1)DOWNTO1)<=sr((num_stages-2)DOWNTO0);
sr(0)<=sr_in;--装载最低位的新数据
ENDIF;
ENDIF;
ENDPROCESS; --在最高位数据丢失前将其输出
sr_out<=sr(num_stages-1);ENDrtl;3.进程语句设计实例(续5)例5.17移位寄存器的描述。3.进程语句设计实例(续6)例5.17移位寄存器的描述。类属说明语句的一般书写格式如下:
GENERIC(
常数名:数据类型:设定值;
…
常数名:数据类型:设定值
);图5.8例5.17的时序仿真图3.进程语句设计实例(续6)例5.17移位寄存器的描述。3.进程语句设计实例(续7)例5.18二进制加法/减法计数器的描述。LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.NUMERIC_STD.ALL;
ENTITYbinary_up_down_counterIS
GENERIC(min_count:NATURAL:=0;
max_count:NATURAL:=255);
PORT(clk :INSTD_LOGIC; reset :INSTD_LOGIC; enable :INSTD_LOGIC; updown :INSTD_LOGIC; q :OUTINTEGERRANGEmin_countTOmax_count);
ENDENTITY;3.进程语句设计实例(续7)例5.18二进制加法/减法计3.进程语句设计实例(续8)例5.18二进制加法/减法计数器的描述。ARCHITECTURErtlOFbinary_up_down_counterIS
SIGNALdirection:INTEGER;--定义计数方向信号BEGIN
Proc1: PROCESS(updown)
BEGIN
IF(updown=‘1’)THEN
direction<=1;
ELSE direction<=-1;
ENDIF;
ENDPROCESSProc1;Proc2: PROCESS(clk)
VARIABLEcnt:INTEGERRANGEmin_countTOmax_count;
BEGIN
IF(clk'EVENTandclk='1')THEN
IFreset='1'THEN cnt:=0;--计数器复位
ELSIFenable=‘1’THEN
cnt:=cnt+direction;--加法/减法计数
ENDIF;
ENDIF; q<=cnt;--输出当前计数值
ENDPROCESSProc2;ENDrtl;3.进程语句设计实例(续8)例5.18二进制加法/减法计3.进程语句设计实例(续9)例5.18二进制加法/减法计数器的描述。例5.18的时序仿真图3.进程语句设计实例(续9)例5.18二进制加法/减法计5.3结构描述语句5.3.1元件例化语句
1.元件声明(ComponentDeclaration)
所有准备使用的元件都需要通过元件声明语句声明,并必须放置在当前设计结构体中关键字BEGIN之前。
COMPONENT例化元件名IS GENERIC(类属表
); PORT(例化元件端口名表
); ENDCOMPONENT;2.元件例化(ComponentInstantiation)
元件例化语句必须放置在当前设计结构体中关键字BIGIN之后的说明部分。
例化元件标号:例化元件名PORTMAP(端口映射表);5.3结构描述语句5.3.1元件例化语句5.3.1
元件例化语句(续1)例5.2216进制加法计数器的描述LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.NUMERIC_STD.ALL;
ENTITYcounter_16IS PORT(
Clk
:INSTD_LOGIC;
reset
:INSTD_LOGIC;
enable:INSTD_LOGIC;
out_q:OUTINTEGERRANGE0TO16 );ENDENTITY;5.3.1元件例化语句(续1)例5.2216进制加5.3.1
元件例化语句(续2)例5.2216进制加法计数器的描述ARCHITECTUREinstOFcounter_16IS
COMPONENTbinary_up_down_counterIS GENERIC(
min_count:NATURAL:=0;
max_count:NATURAL:=16--更改了最大计数值);
PORT(
clk
:INSTD_LOGIC;
reset
:INSTD_LOGIC;
enable
:INSTD_LOGIC;
updown
:INSTD_LOGIC:='1';--只保留加法计数
q
:OUTINTEGERRANGEmin_countTOmax_count );
ENDCOMPONENTbinary_up_down_counter;BEGINu1:binary_up_down_counterPORTMAP(
clk=>clk,reset=>reset,enable=>enable,q=>out_q);ENDinst;5.3.1元件例化语句(续2)例5.2216进制加5.3.1
元件例化语句(续3)例5.2216进制加法计数器的描述例5.22的时序仿真图5.3.1元件例化语句(续3)例5.2216进制加5.3.2
配置语句 CONFIGURATION
配置名OF
实体名IS FOR选配结构体名
配置说明
ENDFOR; END
配置名;例5.23一位全加器中配置语句的使用。LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;
ENTITYfulladder_cfgIS
PORT(a,b,ci:INSTD_LOGIC;S,co:OUTSTD_LOGIC);ENDfulladder_cfg;5.3.2配置语句 CONFIGURATION配置名O5.3.2
配置语句(续1)例5.23一位全加器中配置语句的使用。ARCHITECTUREbehavioralOFfulladder_cfgIS
--以下是一位全加器结构体行为描述BEGINS<='1'WHEN(a='0'ANDb='1'ANDci='0')ELSE'1'WHEN(a='1'ANDb='0'ANDci='0')ELSE'1'WHEN(a='0'ANDb='0'ANDci='1')ELSE'1'WHEN(a='1'ANDb='1'ANDci='1')ELSE'0';co<='1'WHEN(a='1'ANDb='1'ANDci='0')ELSE'1'WHEN(a='0'ANDb='1'ANDci='1')ELSE'1'WHEN(a='1'ANDb='0'ANDci='1')ELSE'1'WHEN(a='1'ANDb='1'ANDci='1')ELSE'0';ENDbehavioral;ARCHITECTUREDataflowOFfulladder_cfgIS
--以下是一位全加器结构体数据流描述BEGIN S<=aXORbXORci; co<=(aANDb)OR(bANDci)OR(aANDci);ENDDataflow;--以下是结构体的配置CONFIGURATIONfirstOFfulladder_cfgIS
FORbehavioral
ENDFOR;ENDfirst;ENDfulladder_cfg;5.3.2配置语句(续1)例5.23一位全加器中配置语5.3.2
配置语句(续2)例5.24四位串行加法器的结构描述。LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;--以下是四位串行加法器的实体描述ENTITYfulladder_4IS
PORT(ain,bin:INSTD_LOGIC_VECTOR(3DOWNTO0); Cin:INSTD_LOGIC;Sum:OUTSTD_LOGIC_VECTOR(3DOWNTO0); Count:OUTSTD_LOGIC);ENDfulladder_4;--以下是四位全加器结构体描述ARCHITECTUREinstOFfulladder_4IS
--
假定fulladder_cfg已在work目录中,且结构体没有配置
COMPONENTfulladder_cfgIS
PORT(a,b,ci:INSTD_LOGIC;
s,co:OUTSTD_LOGIC);
ENDCOMPONENT;SIGNALcarry:STD_LOGIC_VECTOR(3DOWNTO1);
--定义内部进位信号BEGIN u1:fulladder_cfgPORTMAP(a=>ain(0),b=>bin(0),ci=>cin,s=>sum(0),co=>carry(1));u2:fulladder_cfgPORTMAP(a=>ain(1),b=>bin(1),ci=>carry(1),s=>sum(1),co=>carry(2));u3:fulladder_cfgPORTMAP(a=>ain(2),b=>bin(2),ci=>carry(2),s=>sum(2),co=>carry(3));u4:fulladder_cfgPORTMAP(a=>ain(3),b=>bin(3),ci=>carry(3),s=>sum(3),co=>count);ENDinst;5.3.2配置语句(续2)例5.24四位串行加法器的结5.3.2
配置语句(续3)例5.24四位串行加法器的结构描述。--以下是一位全加器的结构体配置CONFIGURATIONselOFfulladder_4IS
FORinst
FORu1,u2:fulladder_cfg
USEENTITY
WORK.fulladder_cfg(behavioral);
ENDFOR;
FOROTHERS:fulladder_cfg--本例中为u3、u4
USEENTITYWORK.fulladder_cfg(Dataflow);
ENDFOR;
ENDFOR;ENDsel;5.3.2配置语句(续3)例5.24四位串行加法器的结5.3.3
生成语句生成语句的语句格式有如下两种形式:标号:FOR
循环变量取值范围GENERATE
说明语句
BEGIN
并行语句
END
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度汽车消费贷款分款及还款计划合同
- 2025年度材料运输车辆维护保养合同
- 2025年度智能仓储物流系统建设合同-@-3
- 城市供水保障措施计划
- 急诊医疗资源整合方案计划
- 班主任指引学生逐梦之路计划
- 注重细节提升工作质量计划
- 借助故事提升小班情感认知计划
- 班级评比机制的创新计划
- 学生社团活动指导方案计划
- 2024年医疗器械经营质量管理规范培训课件
- 中华人民共和国学前教育法-知识培训
- 2023年新高考(新课标)全国2卷数学试题真题(含答案解析)
- GB/T 19228.1-2024不锈钢卡压式管件组件第1部分:卡压式管件
- 2024年计算机二级WPS考试题库380题(含答案)
- 实现结构化:初中语文大单元教学设计的核心
- 上海小弄堂-电子小报
- FZ∕T 54088-2016 锦纶6全牵伸单丝
- 任务工单1纯电动汽车动力电池检查与维护
- 食品销售流程图零售
- 物理化学完整版答案
评论
0/150
提交评论