已阅读5页,还剩58页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
太原理工大学 夏路易第1章 硬件描述语言VHDL数字系统设计分为硬件设计和软件设计, 但是随着计算机技术、超大规模集成电路(CPLD、FPGA)的发展和硬件描述语言(HDL, Hardware Description Language)的出现,软、硬件设计之间的界限被打破,数字系统的硬件设计可以完全用软件来实现,只要掌握了HDL语言就可以设计出各种各样的数字逻辑电路。1.1 老的硬件设计方法老的硬件设计方法有如下几个特征:(1) 采用自下而上的设计方法 使用该方法进行硬件设计是从选择具体元器件开始,并用这些元器件进行逻辑电路设计,从而完成系统的硬件设计,然后再将各功能模块连接起来,完成整个系统的硬件设计,(2) 采用通用逻辑元器件通常采用74系列和CMOS4000系列的产品进行设计(3) 在系统硬件设计的后期进行调试和仿真只有在部分或全部硬件电路连接完毕,才可以进行电路调试,一旦考虑不周到,系统设计存在较大缺陷,则要重新设计,使设计周期延长。(4) 设计结果是一张电路图当设计调试完毕后,形成电原理图,该图包括元器件型号和信号之间的互连关系等等。 老的硬件设计方法已经使用了几十年,是广大电子工程师熟悉和掌握的一种方法,但是现在这种方法老了,不仅方法老了,就连使用的元器件也老了。1.2 使用HTL的硬件设计方法 所谓硬件描述语言,就是利用一种人和计算机都能识别的语言来描述硬件电路的功能,信号连接关系及定时关系,它可以比电原理图更能表示硬件电路的特性。该方法有如下特征:(1) 支持自顶向下的设计方法 所谓自顶向下的设计方法就是从系统的总体要求出发,自顶向下分三个层次对系统硬件进行设计。 第一个层次是行为描述,所谓行为描述,实际就是对整个系统的数学模型的描述,在行为描述阶段,并不真正考虑其实际操作和算法怎么实现,而是考虑系统的结构和工作过程是否能达到系统设计规格书的要求。 第二个层次是数据流描述,又称为寄存器描述或RTL方式描述,该描述比行为描述更注重硬件的具体实现,通过该描述可以导出系统的逻辑表达式,为逻辑综合作准备,当然进行逻辑综合和逻辑综合工具的能力有关,当然设计人员还必须了解逻辑综合工具的说明和规定, 第三个层次为逻辑综合。该层次把RTL描述的程序转换成基本逻辑元件表示的文件,该文件就象老的设计方法中的电原理图。(2) 采用大量的ASIC芯片(3) 早期仿真以确定系统的可行性(4) 使设计更容易只需写出系统的HDL源程序文件,其它由计算机去做(5) 全部设计文件就是HDL源程序文件1.3 VHTL硬件设计语言 当前ASIC制造商都自己开发了HDL语言,但是都不通用,只有美国国防部开发的VHDL语言成为了IEEE. STD_1076标准,并在全世界得到了承认。该语言集成了各种HDL语言的优点,使数字系统设计更加简单和容易。VHDL语言是一个规模庞大的语言,在使用它之前完全学会它是很难的,本书介绍的只是VHDL语言的一部分。 1.4 VHDL语言的基本结构VHDL语言通常包含实体(Entity),构造体(Architecture),配置(Configuration),包集合(Package),和库(Library)五部分.其中实体用于描述所设计的系统的外部接口信号;构造体用于描述系统内部的结构和行为;建立输入和输出之间的关系;配置语句安装具体元件到实体结构体对,可以被看作是设计的零件清单;包集合存放各个设计模块共享的数据类型、常数和子程序等;库是专门存放预编译程序包的地方。如下详细介绍。1.4.1基本设计单元VHDL的基本设计单元就是实体,无论数字电路复杂还是简单,都是由实体和构造体组成。(1) 实体说明实体说明有如下结构:ENTITY 实体名 IS端口说明END 实体名;(VHDL语言中不分大小写字母)其中: 端口说明是对设计实体中输入和输出借口进行描述,格式如下: PORT(端口名(,端口名):方向 数据类型名; : : 端口名(,端口名):方向 数据类型名); 端口名是赋予每个系统引脚的名称,一般用几个英文字母组成。端口方向是定义引脚是输入还是输出,见下表:方向说明IN输入到实体OUT从实体输出输出INOUT双向BUFFER输出(但可以反馈到实体内部)LINKAGE不指定方向常用的端口数据类型有两种:BIT和BIT_VECTOR,当端口被说明为BIT时,只能取值“1”或“0”,当端口被说明为BIT_VECTOR时,它可能是一组二进制数。例: PORT(n0, n1, select: IN BIT; q: OUT BIT; bus: OUT BIT_VECTOR(7 DOWNTO 0);本例中,n0, n1, select 是输入引脚,属于BIT型,q是输出引脚,BIT型,bus 是一组8位二进制总线,属于BIT_VECTOR, 例: LIBRARY IEEE; USE IEEE.STD_LOGIC.1164.ALL; ENTITY mm IS PORT(n0,n1,select: IN STD_LOGIC; Q : OUT STD_LOGIC; Bus : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); END mm;在此例中端口数据类型取自IEEE标准库(该库中有数据类型和函数的说明),其中STD_LOGIC 取值为“0”,“1”,“X”和“Z”。因为使用了库所以在实体说明前要增加库说明语句。(2) 构造体 构造体是实体的一个重要部分,每一个实体都有一个或一个以上的构造体。1) 一般说明构造体格式如下:ARCHITECTURE 构造体名 OF 实体名 IS定义语句 内部信号,常数,数据类型,函数等的定义BEGIN 并行处理语句END 构造体名;例: ENTITY nax IS PORT(a0,a1 : IN BIT; Sel : IN BIT; Sh : OUT BIT); END nax; ARCHITECTURE dataflow OF nax IS BEGIN sh=(a0 AND sel) OR (NOT sel AND a1); END dataflow;构造体描述设计实体的具体行为,它包含两类语句:l 并行语句 并行语句总是在进程语句(PROCESS)的外部,该语句的执行与书写顺序无关,总是同时被执行l 顺序语句 顺序语句总是在进程语句(PROCESS)的内部,从仿真的角度,该语句是顺序执行的一个构造体包含几个类型的子结构描述,这些描述是:* BLOCK描述(块描述)* PROCESS描述(进程描述)* SUNPROGRAMS描述(子程序描述)2) BLOCK语句描述使用BLOCK语句描述的格式如下:块标号:BLOCK BEGIN : : END BLOCK 块标号:例: 二选一电路 ENTITY mux IS PORT (d0,d1,sel: IN BIT; q: OUT BIT); END mux; ARCHITECTURE connect OF mux IS SIGNAL tmp1,tmp2,tmp3: BIT; BEGIN cale: BLOCK BEGIN tmp1=d0 AND sel; tmp2=d1 AND (NOT sel); tmp3=tmp1 OR tmp2; q=tmp3; END BLOCK cale; END connect;在对程序进行仿真时,BLOCK中的语句是并行执行的,与书写顺序无关,这一点和构造体中直接写的语句是一样的。3) 进程(PROCESS)描述进程描述的格式如下:进程名:PROCESS(信号1,信号2,。)BEGIN : :END PROCESS 进程名;* 一般用于组合电路进程模式:_进程标记:PROCESS (_信号名, _信号名, _信号名)VARIABLE _变量名 : STD_LOGIC;VARIABLE _变量名 : STD_LOGIC;BEGIN- 指定信号- 指定变量- 过程调用- 如果语句- CASE语句- 循环语句END PROCESS _进程标记;* 用于时序电路进程模式:_进程标记:PROCESS (_信号名, _信号名, _信号名)VARIABLE _变量名 : STD_LOGIC;VARIABLE _变量名 : STD_LOGIC;BEGINWAIT UNTIL _时钟信号 = 1;- 指定信号- 指定变量- 过程调用- 如果语句- CASE语句- 循环语句END PROCESS _进程标记;例: ENTITY mux1 IS PORT (d0,d1,sel: IN BIT; q : OUT BIT); END mux1; ARCHITECTURE connect OF mux1 ISBEGIN cale: PROCESS(d0,d1,sel) VARIABLE tmp1,tmp2,tmp3 : BIT;-在进程中定义的变量 BEGIN tmp1:=d0 AND sel; -输入端口向变量赋值 tmp2:=d1 AND (NOT sel); tmp3:=tmp1 OR tmp2; q=tmp3; END PROCESS cale; END connect;在PROCESS中的语句是顺序执行的,这一点和BLOCK中的语句是不一样的。当PROCESS所带的信号量发生变化时,PROCESS中的语句就会执行一遍。4)子程序描述子程序的概念和其它高级程序中子程序的概念相同,在VHDL中有两种类型:l 过程(Procedure)l 函数(Function)1. 过程的格式:PROCEDURE 过程名(参数1,参数2。) IS定义变量语句BEGIN 顺序处理语句END 过程名;例: PROCEDURE vector_to_int (z : IN STD_LOGIC_VECTOR; x_flag : OUT BOOLEAN; q : IN INTEGER) IS BEGIN q:=0; x_flag:=FALSE; FOR i IN z RANGE LOOP q:=q*2; IF(z(i)=1) THEN q:=q+1; ELSEIF (z(i)/=10) THEN x_flag:=TRUE; END IF; END LOOP;END vector_to_int;在过程中,语句是顺序执行的。2函数函数的格式:FUNCTION 函数名(参数1,参数2。) RETURN 数据类型名 IS定义变量语句BEGIN 顺序处理语句RETURN 返回变量名;END 函数名;在VHDL 语言中函数的参数都是输入信号,例: FUNCTION min(x,y:INTEGER ) RETURN INTEGER ISBEGIN IF X RETURN 1; WHEN 1 = RETURN 0; WHEN Z = RETURN Z; END CASE; END invert;END logic该包使用例:USE logic.three_level_logic, logic.invert; /使用数据类型和函数两个项目ENTITY inverter IS PORT(x: IN three_level_logic ; y: OUT three_level_logic);END inverter;ARCHITECTURE inverter_body OF inverter ISBEGIN kk: PROCESS BEGIN Yset, b=qb, c=q) U2:nand2 PORT MAP(a=reset, b=q, c=qb)END rsff1;ARCHITECTURE rsff2 OF rs ISBEGIN q=NOT(qb AND set); qb=NOT(q AND reset);END rsff2两个构造体,可以用配置语句进行设置:CONFIGRATION rscon OF rs IS /选择构造体rsff1FOR rsff1END FOR;END rscon;1.4.3 VHDL中使用的数据类型和运算操作VHDL可以象其它高级语言一样定义数据类型,但还可以用户自己定义数据类型。(1) 信号、常量和变量信号:通常认为信号是电路中的一根线常数:可以在数字电路中代表电源、地线等等变量:可以代表某些数值1 常数常数的描述格式:CONSTANT 常数名:数据类型:=表达式例: CONSTANT Vcc: REAL:=5.0; CONSTANT DALY: TIME:=100ns; CONSTANT FBUS: BIT_VECTOR:=”0101”;2 变量变量只能在进程、函数和过程中使用,一旦赋值立即生效。变量的描述格式:VARIABLE 变量名:数据类型 约束条件:=表达式例: VARIABLE x, y: INTEGER; VARIABLE count: INTEGER RANGE 0 TO 255:=10;3 信号信号除了没有方向的概念以外几乎和端口概念一致。信号的描述格式:SIGNAL 信号名:数据类型 约束条件:=表达式例: SIGNAL sys_clk: BIT:=0; SIGNAL ground: BIT:=0在程序中,信号值输入信号时采用代入符”=”,而不是赋值符“:=”,同时信号可以附加延时。信号传送语句: s1=s2 AFTER 10ns信号是一个全局量,可以用来进行进程之间的通信4 信号与变量的区别信号赋值可以有延迟时间,变量赋值无时间延迟信号除当前值外还有许多相关值,如历史信息等,变量只有当前值进程对信号敏感,对变量不敏感信号可以是多个进程的全局信号,但变量只在定义它之后的顺序域可见 信号可以看作硬件的一根连线,但变量无此对应关系1.4.4 VHDL中的数据类型(1) 标准数据类型1 整数(INTEGER)范围:-2147483547-21474836462 实数(REAL)范围:-1.0E38-1.0E38 书写时一定要有小数。3 位(BIT)在数字系统中,信号经常用位的值表示,位的值用带单引号的1和0来表示明确说明位数值时:BIT(1)4位矢量(BIT_VECTOR) 位矢量是用双引号括起来的一组位数据 “010101”5 布尔量(BOOLEAN)只有“真”和“假”两个状态,可以进行关系运算6 字符(CHARACTER) 字符量通常用单引号括起来,对大小写敏感明确说明1是字符时:CHARACTER(1)7 字符串(STRING) 字符串是双引号括起来的一串字符: “laksdklakld”8 时间(TIME)时间的单位:fs,ps,ns,ms,sec,min,hr例: 10 ns整数数值和单位之间应有空格9 错误等级(SEVERITY LEVEL)用来表示系统的状态,它共有4种:NOTE(注意)WARNING(警告)ERROR(错误)FAILURE(失败)10. 大于等于零的整数(NATURAL)、正整数(POSITIVE)只能是正整数数据除定义类型外,有时还需要定义约束范围。例: INTEGER RANGE100 DOWNTO 0 BIT_ VECTOR (3 DOWNTO 0) REAL RANGE 2.0 TO 30.0(2) 用户定义的数据类型用户定义的数据类型的一般格式:TYPE 数据类型名 ,数据类型名 数据类型定义不完整的数据类型格式:TYPE 数据类型名 ,数据类型名;可由用户定义的数据类型为:* 枚举(ENUMERATED)格式:TYPE 数据类型名 IS(元素、元素、);例1: TYPE week IS(Sun,Mon,Tue,wed,Thu,Fri,Sat);例2: TYPE STD_LOGIC IS (U,X,0,1,Z,W,L,H,-);* 整数(INTEGER)格式:TYPE 数据类型名 IS 数据类型定义 约束范围例:TYPE digit IS INTEGER RANGE 0 TO 9* 实数(REAL)格式:TYPE 数据类型名 IS 数据类型定义 约束范围例:TYPE current IS REAL RANGE -1E4 TO 1E4* 数组(ARRAY)格式:TYPE 数据类型名 ISARRAY 范围 OF 原数据类型名;例:TYPE word IS ARRAY (1 TO 8) OF STD_LOGIC;TYPE word IS ARRAY (INTEGER 1 TO 8) OF STD_LOGIC;TYPE instruction IS (ADD,SUB,INC,SRL,SRF,LDA,LDB);SUBTYPE digit IS INTEGER 0 TO 9;TYPE indflag IS ARRAY (instruction ADD TO SRF) OF digit; 数组常在总线、ROM和RAM中使用。 * 时间(TIME)格式: TYPE数据模型名不副实 IS 范围 UNITS 基本单位 单位; END UNITS;TYPEtime RANGE 1E18 TO 1E18UNITS fs;ps=1000 fs;ns=1000 ps;us=1000 ns;ms=1000 us;sec=1000 ms;min=60 sec;hr=60 min;END UNITS;* 记录(RECODE)将不同的数据类型放在一块,就是记录类型数据格式:TYPE 数组类型名 IS RECORD 元素名:数据类型名; 元素名:数据类型名; : :END RECORD;例:TYPE bank IS RECORDaddr0: STD_LOGIC_VECTOR(7 DOWNTO 0);addr1: STD_LOGIC_VECTOR(7 DOWNTO 0);r0: INTEGER;END RECORD; 存取(ACCESS)文件(FILE)(3) 数据类型的转换数据类型转换函数有VHDL语言的包提供,例如:STD_LOGIC_1164,STD_LOGIC_ARITH等等转换函数见表:函数说明STD_LOGIC_1164包TO_STDLOGICVECTOR(A)TO_BITVECTOR(A)TO_LOGIC(A)TO_BIT(A)由BIT_VECTOR转换成STD_LOGIC_VECTOR由STD_LOGIC_VECTOR转换成BIT_VECTOR由BIT转换成STD_LOGIC由STD_LOGIC转换成BITSTD_LOGIC_ARITH包CONV_STD_LOGIC_VECTOR(A,位长)CONV_INTEGER(A)由INTEGER,UNSIGNED和SIGNED转换成STD_LOGIC_VECTOR由UNSIGNED和SIGNED转换成INTEGERSTD_LOGIC_UNSIGNED包CONV_INTEGERSTD_LOGIC_VECTOR转换成INTEGER例:由STD_BIT_VECTOR转换成INTEGERLIBRARYIEEEUSE IEEE.STD_LOGIC_1164.ALLUSE IEEE.STD_LOGIC_UNSIGNED.ALLENTITY add5 IS PORT(num: IN STD_LOGIC_VECTOR(2 DOWNTO 0); : : ); END add5;ARCHITECTURE rtl OF add5 ISSIGNAL in_num: INTEGER RANGE 0 TO 5; : :BEGIN In_num=CONV_INTEGER(num);END rtl;(5)有关BIT_VECTOR和STD_BIT_VECTOR 的语句例:SIGNAL a: BIT_VECTOR(11 DOWNTO 8);SIGNAL b: STD_LOGIC_VECTOR(11 DOWNTO 0);a=X”A8”; 十六进制可以赋予位矢量b=X”A8”; 十六进制不可以赋予逻辑矢量,所以此句错,逻辑量中只能赋予二进制b=TO_STDLOGICVECTOR(X”AF7”);十六进制变换b=TO_STDLOGICVECTOR(O”5177”); 八进制变换b=TO_STDLOGICVECTOR(B”1010_1111_0111”); 三位二进制变换 (6) IEEE标准“STD_LOGIC”和”STD_LOGIC_VECTOR”1993年制定的标准IEEE STD1164 对STD_LOGIC的值做如下规定:U初始值X不定0011Z高阻W弱信号不定L 弱信号0H 弱信号1-不可能情况1.4.5 VHDL语言的运算操作符优先级别类型操作符说明高低逻辑运算符AND逻辑与OR逻辑或NAND逻辑与非NOR逻辑或非XOR逻辑异或关系运算符=等号/=不等号大于=大于等于加、减、并置运算符+加-减&并置正负运算符+正-负乘除法运算符*乘/除MOD取模REM取余*指数ABS取绝对值NOT取反(1) 逻辑运算符要求运算符左右的数据类型必须相同,例:x=(a AND b) OR (NOT c AND d);x=b AND a AND d AND e;x=b OR c OR d OR e;x=a XOR d XOR e;a=(x1 AND x2) OR (y1 AND y2);(2) 算数运算符在使用乘法运算符时,应该特别慎重,因为它可以使逻辑门数大大增加。(3)关系运算符应该注意小于等于=和代入运算符的不同(从上下文区别)(4)并置运算符 并置运算符 ”&” 用于位连接, 例如: y(0)=b(0)&en y(1)=b(1)&en y(2)=b(2)&en y(3)=b(3)&en y(4)=a(0) y(5)=a(1) y(6)=a(2) y(7)=a(3)从上可以看出a,b是四位长度的矢量,而y的位长是7位,上述情况可以表示成: tmp_b=b AND (en&en&en&en);y= a&tmp_b;若是位连接,可以简单写为: tmp_b=b AND (en,en,en,en);1.4.5 VHDL语言构造体的描述方式 有三种描述方式:行为描述,RTL描述和ASIC描述,采用后两种描述方式可以进行逻辑综合。(1) 行为描述描述数字系统的行为,主要用于仿真和系统工作原理的研究。下面介绍一些专用语句。1) 代入语句格式: 信号量=敏感信号量表达式;例如: z=a NOR(b NAND c);该例中有三个敏感量,无论哪一个发生变化都可以使z变化。具有时间延迟的代入语句:a=b AFTER 10 ns表示当b发生变化10 ns后a才变化。例:与门电路 ENTITY and2 IS PORT(a,b : IN BIT; c : OUT BIT); END and2; ARCHITECTURE and2_behave OF and2 IS BEGIN c=a AND b; END and2_behave;2)延时语句VHDL中有两种延时语句:惯性延时和传输延时。*惯性延时 VHDL中惯性延时是缺省的,因为逻辑硬件电路总是有时间延迟的,若延迟时间是20ns,那末输入信号时间若小于20ns,则输出信号将不跟随输入信号的变化。 有时为使延迟时间更逼真实际电路,就专门设置惯性时间:b=a AFTER 10 ns;* 传输延时 传输延时常代表总线、连接线的延迟时间,该时间必须专门说明。该传输延时只对信号起纯延时作用。 例: b=TRANSPORT a AFTER 20 ns;(2) 数据流描述方式 数据流描述方式是一种可以进行逻辑综合的描述方式,由于要进行逻辑综合所以对使用的语句有一定的限制,VHDL中的每一个命令和语句都对逻辑综合能力进行了定义,要进行逻辑综合的设计实体就要使用有逻辑综合能力的命令和语句。例:四选一电路LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY mux42 IS PORT(input : IN STD_LOGIC_VECTOR(3 DOWNTO 0); Sel : IN STD_LOGIC_VECTOR(1 DOWNTO 0); Y : OUT STD_LOGIC);END mux42;ARCHITECTURE app OF mux42 IS BEGINyn1.b=n2,c=m); 1.4.6 VHDL语言的主要描述语句(1) 顺序描述语句顺序描述语句只能用在进程和子程序中,它和其他高级语言一样,其语句是按照语句的出现的顺序加以执行的.如下分别介绍有关的顺序描述语句.1. WAIT语句 进程在执行过程中总是处于两种状态:执行或挂起,进程的状态变化受等待语句的控制,当进程执行到等待语句,就被挂起,并等待再次执行进程.等待语句的格式:WAIT 无限等待 WAIT ON 敏感信号变化格式:WAIT ON 信号,信号例: PROCESS(a,b) BEGIN y=a AND b;END PROCESS;该例中的进程与下例中进程相同:例: PROCESSBEGIN y=a AND b; WAIT ON a,b;END PROCESS; WAIT UNTIL 直到条件满足格式: WAIT UNTIL 布尔表达式当进程执行到该语句时,被挂起;若布尔表达式为真时,进程将被启动.例: WAIT UNTIL (x*10)100)WAIT FOR等到时间到格式: WAIT FOR 时间表达式 当进程执行到该语句时,被挂起;等待一定的时间后,进程将被启动.例: WAIT FOR 20 ns*多条件WAIT 语句例: WAIT ON nmi,interrupt UNTIL (nmi=TRUE) OR (interrupt=TRUE) FOR 5 us 该等待有三个条件: 第一,信号nmi和interrupt 任何一个有一次刷新动作 第二, 信号nmi和interrupt 任何一个为真 第三, 等待5 us只要一个以上的条件被满足,进程就被启动.*超时等待若在程序中所设置的等待条件永远不会满足,则进程就永远不能启动,为防止进入无限等待情况,应做一些处理.2. 断言语句(ASSERT)格式: ASSERT 条件 REPORT 输出信息SEVERITY 级别执行到断言语句时,判断条件,若条件满足就继续执行,否则输出文字串和错误级别信息.例: ASSERT (tiaojian=1)REPORT “some thing wrong”SEVERITY ERROR;3. 信号代入语句 格式: 目的信号量=信号量表达式例: a=b;4. 变量赋值语句 格式: 目的变量:=表达式例: c:=a+d5. IF 语句1) IF的门闩控制格式:IF 条件 THEN 顺序执行语句 END IF; 例:IF (a=1) THENc顺序处理语句ENDCASE;其中WHEN的条件表达式可以有4种形式:WHEN 值=顺序处理语句WHEN 值|值|值|值=顺序处理语句WHEN 值TO 值=顺序处理语句WHEN OTHERS=顺序处理语句例: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY mux43 IS PORT(a,b,i0,i1,i2,i3 :IN STD_LOGIC; q : OUT STD_LOGIC); END mux43; ARCHITECTURE mux4_behave OF mux43 IS SIGNAL sel: INTEGER RANGE 0 TO 3; BEGIN nn: PROCESS(a,b,i0,i1,i2,i3) BEGIN sel=0; IF (a=1) THEN sel=sel+1; END IF; IF (b=1) THEN selqqqq=i3; END CASE; END PROCESS nn; END mux4_behave;7. LOOP语句格式一:标号: FOR循环变量 IN离散范围LOOP 顺序处理语句 END LOOP 标号;例: ASUM: FORi IN 1 TO 9 LOOP sum=1+sum; END LOOP ASUM;例:位奇偶校验电路 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY pc IS PORT(a : IN STD_LOGIC_VECTOR(7 DOWNTO 0); y : OUT STD_LOGIC); END pc; ARCHITECTURE behave OF pc IS BEGIN cbc: PROCESS(a) VARIABLE tmp: STD_LOGIC; BEGIN tmp:=0; FOR i IN 0 TO 7 LOOP tmp:=tmp XOR a(i); END LOOP; y=tmp; END PROCESS cbc; END behave;格式二: 标号: WHILE 条件 LOOP 顺序处理语句 END LOOP 标号; 在该语句中,如果条件为真,则进行循环,否则结束循环.例: sum:=0 abcd: WHILE (I10) LOOP sum:=I+sum; I:=I+1; END LOOP abcd;8. NEXT语句在L
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 社区聘用人员合同范本
- 社群广告推广合同范本
- 2025年专升本体育专业运动训练学试卷(含答案)
- 物业签订车位合同范本
- 美甲店如何签合同协议
- 灯光音响租赁合同范本
- 酒厂窖池租赁合同范本
- 药品研发劳动合同范本
- 维修电脑劳动合同范本
- 监控合同增加补充协议
- 2025宁夏回族自治区大学生乡村医生专项计划招聘工作人员13人考试笔试模拟试题及答案解析
- 学校食堂满意度测评及管理方案
- 2025安徽清水街道招聘就业专干6人笔试考试参考试题附答案解析
- 2025云南楚雄州元谋县国有资产投资管理有限公司及所属子公司合同制员工招聘13人考试笔试备考试题及答案解析
- 小学语文教师素养大赛知识素养试题
- 北京市海淀区2025-2026学年高三上学期期中地理试题 含解析
- 施工现场安全事故应急预案
- 2025版疾病控制护理护士培训大纲
- 2025年中级消防设施操作员《理论知识》题库必做200题(含答案)
- 特种设备重大事故隐患判定标准
- 北京第十三中学分校2023-2024学年九年级上学期期中物理试卷
评论
0/150
提交评论