Xilinxfpga语句与操作符_第1页
Xilinxfpga语句与操作符_第2页
Xilinxfpga语句与操作符_第3页
Xilinxfpga语句与操作符_第4页
Xilinxfpga语句与操作符_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Xilinx ConfidentialXilinx-FPGA/PLD: 语句和操作符语句和操作符B603教室沈沛意、张亮沈沛意、张亮 西安电子科技大学-软件学院西安电子科技大学-软件学院后仿真后仿真西安电子科技大学-软件学院Presentation Name 3Using Objects in VHDL bodiesBodyConcurrentSequentialDeclareAssign to UseDeclareAssign to UseObjectsSignalYesYesYesNoYesYesVariableNoNoYesYesYesYesConstantYes-YesYes-YesF

2、ileYes-YesYes-YesRecap:Objects in VHDL bodies西安电子科技大学-软件学院Presentation Name 4Recap:Demoslibrary IEEE;use IEEE.STD_LOGIC_1164.all;use IEEE.STD_LOGIC_ARITH. all;use IEEE.STD_LOGIC_UNSIGNED. all;entity ALU isport( OP_CODE: in STD_LOGIC_VECTOR(1 downto 0); A,B: in STD_LOGIC_VECTOR(3 downto 0); C_IN: in

3、STD_LOGIC; EN: in STD_LOGIC; Y: out STD_LOGIC_VECTOR(2 downto 0);end ALU;architecture RTL of ALU is constant ADD: STD_LOGIC_VECTOR(2 downto 0):= 000; constant ADD_C: STD_LOGIC_VECTOR(2 downto 0):= 001; constant SUB: STD_LOGIC_VECTOR(2 downto 0):= 010; constant SUB_C: STD_LOGIC_VECTOR(2 downto 0):= 0

4、11;signal OP_CODE_CI : STD_LOGIC_VECTOR(2 downto 0 );- ?end architecture RTL;西安电子科技大学-软件学院Presentation Name 5begin OP_CODE_CI TEMPY := A + B ; when ADD_C= TEMPY := A + B + 1; when SUB= TEMPY := A + not B ; when SUB_C= TEMPY := A + not B + 1; when others = TEMPY := (others = X );end case;end if;Y= TE

5、MPY;end process;西安电子科技大学-软件学院Presentation Name 6Type conversion procedure: converting bytes to integers:PROCEDURE byte_to_integer (lb: IN byte; oi: OUT INTEGERS) IS; VARIABLE result: INTEGER := 0;BEGIN FOR i IN 0 TO 7 LOOP IF ib(i) = 1 THEN result := result +2 * i; END IFEND byte_to_integers; 西安电子科技

6、大学-软件学院Presentation Name 7Fulladder : FUNCTION fadd () RETURN BIT_VECTOR IS VARIABLE sc : BIT_VECTOR(1 DOWNTO 0);BEGIN sc(1) := a XOR b XOR c; sc(0) := (a AND b) OR (a AND c ) OR (b AND c); RETURN sc;END -ENTITY fulladder IS PORT(a,b,cin: IN BIT; sum, cout: OUT BIT);END fulladder;-ARCHITECTURE my_be

7、havioral OF fulladder ISBEGIN (sum, cout) = fadd(a,b,cin);END my_behavioral;西安电子科技大学-软件学院Presentation Name 8一、操作符及优先级一、操作符及优先级类型操作符优先级逻辑运算符andorNandnorxorxnor最低关系运算符=/=移位运算符sllsrlSlasrarolror加减、并置运算符+-&符号运算符+-乘法运算符*/Modrem其它运算符*absNot最高西安电子科技大学-软件学院Presentation Name 9singal COUNTER: INTEGER rang

8、e 0 to 9; -正确signal _USR_COUNTER: STD_LOGIC_VECTOR(7 downto 0);-错误,标识符必须以英文字母开头,不能以下划线开头signal 2_STATE: BIT_VECTOR(5 downto 0);-错误,标识符必须以英文字母开头,不能以数字开头signal SIG_A: STD_LOGIC;-错误,标识符中不能出现连续的两个下划线signal SIG_A_: STD_LOGIC;-错误,标识符中最后一个字符不能是下划线signal TYPE: STD_LOGIC; -错误,标识符不区分大小写,而保留字不能用作标识符二、二、VHDL标识符

9、命名标识符命名西安电子科技大学-软件学院Presentation Name 10(1). 进程语句进程语句(process)定义:进程表示一个处理过程,在一个结构体内可以包含多个进程。特性:进程与进程之间是并行的,进程内部包含一组顺序描述语句,进程内部的语句是按先后次序顺序执行的。语法结构: 进程标签: process (敏感变量列表) 声明语句; begin 顺序描述语句; end process 进程标签;说明:如果process描述的是时序电路时序电路,则敏感列表中必须包含时钟信必须包含时钟信号号;如果process描述的是逻辑电路逻辑电路,则敏感变量列表中应包含全部的敏感信号敏感信号,

10、否则会引起仿真结果和综合结果不一致的现象。三、三、Signals and Variables in VHDL bodies (concurrent and sequential)西安电子科技大学-软件学院Presentation Name 11(2). 直接信号带入语句直接信号带入语句定义:直接信号带入语句即指信号带入语句。信号带入语句既可以在process语句中使用,作为顺序描述语句的构成部分,也可以在也可以在process外部使用,作为并发语句外部使用,作为并发语句。Process(B,C,D,F) A=B and D;A=B and C;B=F;E=B and C;End process

11、;说明:直接信号带入语句在进程外使用时与一个单独的进直接信号带入语句在进程外使用时与一个单独的进程是等价的程是等价的,它可以看作是进程语句的一种简化写法。 单纯的直接信号代入语句是可综合的,通常综合的结果为组合逻辑或连线。B 被赋值为被赋值为 “F”, A 和和E 被赋值为被赋值为 “F and C”西安电子科技大学-软件学院Presentation Name 12多驱动直接信号带入语句(多驱动描述语句)多驱动直接信号带入语句(多驱动描述语句)如果信号在多个进程中被赋值,这些驱动器的结果将会被连接在一起,而形成多驱动的情况。有一些综合器在遇到这种情况时将会报错。信号在这种情况下的赋值情况与底层

12、电路的实现方法有关。西安电子科技大学-软件学院Presentation Name 13VHDL中没有定义在这种情况下,目标信号应该如何取值,因此,有一些综合器在遇到这种情况时会报错。多驱动描述语句的判决函数可以用于解决这一问题。之前在介绍标准逻辑类型这一数据类型时,曾给出过一个判决函数,这一判决函数在IEEE的STD_LOGIC_1164数据包中。 西安电子科技大学-软件学院Presentation Name 14西安电子科技大学-软件学院Presentation Name 15西安电子科技大学-软件学院Presentation Name 16当遇到多驱动输出的问题时,就可以使用这个判决函数来

13、告知系统如何处理最终的驱动结果。例如上图中,如果A的值为0,B的值为Z,那么这两个值形成一个矢量,作为参数传给resolved函数,经过resolved函数处理后,给出最终的驱动值为0。用户也可以按照类似的步骤定义自己的判决函数。目前,在一些公司的综合器中已经预定义了一些判决函数,只要形成多驱动的多个信号满足判决函数的参数格式,综合器会自动给出多驱动的最终结果。因此,在硬件建模时,要尽量避免多驱动的情况发生要尽量避免多驱动的情况发生,因为多驱动的赋值结果往往与设计者想像的不同。 西安电子科技大学-软件学院Presentation Name 17(3). 条件式信号代入语句条件式信号代入语句 定

14、义:条件式信号带入语句是if/else顺序描述语句的并发表示形式 语法结构: 目标信号 = 表达式1 when 条件1 else 表达式2 when 条件2 else 表达式n when 条件n else 表达式m; 说明:条件1、条件2条件n的返回值都是布尔量,条件条件表达式在执行过程中表达式在执行过程中顺序顺序对这些布尔量进行判断对这些布尔量进行判断。 注意注意,条件式代入语句是有优先级的,即使有多个条件表条件式代入语句是有优先级的,即使有多个条件表达式的返回值为真,也只有第一个满足的条件对应的表达达式的返回值为真,也只有第一个满足的条件对应的表达式会被执行式会被执行。 条件式代入语句是可

15、以综合的,综合后的电路为组合逻辑电路。西安电子科技大学-软件学院Presentation Name 18(4). 选择式信号代入语句选择式信号代入语句 定义:选择式信号代入语句是case顺序语句的并发表现形式。 语法结构: with 选择表达式选择表达式 select 目标信号 = 表达式1 when 选择条件1; 表达式2 when 选择条件2; 表达式n when 选择条件n; 说明:这里的选择条件不是布尔量,而是选择表达式有可能的值,并且全部选择条件的合集应该是选择表达式可能取的所有值,其选择是没有优先级的。 在定义选择条件时要注意以下两点: 1. 任意两个选择条件不能有重叠的部分; 2

16、. 如果最后一个选择条件不是“others”,那么所有选择条件的合集必须覆盖选择表达式可能取的全部值。 选择式信号代入语句综合后的结果与case语句类似,是一个多路选择器,多路信号之间是并行的。西安电子科技大学-软件学院Presentation Name 19(5). 块语句块语句 定义:与进程语句相对应的一种并发语句描述结构。 特性:一个结构体中可以有多个块语句。进程内部的描述语句是顺序一个结构体中可以有多个块语句。进程内部的描述语句是顺序执行的,而块语句内部的描述语句都是并行执行的执行的,而块语句内部的描述语句都是并行执行的。 语法结构 块标签:(卫士表达式) 块头语句; 声明语句; be

17、gin 并发描述语句; end block 快标签; 说明: 1). 卫士表达式返回的是一个布尔类型的量,这个量用于控制块中的卫士语句是否执行。卫士语句在赋值符号之后会有guard关键字,如B = guard A;只有卫士表达式返回真值时,卫士语句才会进行赋值 2). 声明语句用于声明块内部使用的局部变量西安电子科技大学-软件学院Presentation Name 20四、四、Concurrent and sequential structures五、五、VHDL中的描述语句中的描述语句-顺序描述语句顺序描述语句(1)ifelseend if 结构 if (条件表达式) then 描述语句1;

18、 else 描述语句2; end if; 说明:条件表达式的结果也是一个布尔量,如果布尔量的值为真,则执行描述语句1,否则执行描述语句2。该结构最典型的应用时二选一的多路选择器,也经常用于缓冲输出。pifelsifelseend if语句 if (条件表达式1) then 描述语句1; elsif (条件表达式2) then 描述语句2; else 描述语句n; end if; 说明:该结构下的所有条件表达式的结果均为布尔量,如果条件表达式1为真,则执行描述语句1;否则,如果条件表达式2为真,执行描述语句2;否则,如果所有条件表达式的结果均为假,则执行描述语句n。在该结构中,条件选择是有优先级

19、的。多个条件表达式在该结构中,条件选择是有优先级的。多个条件表达式之间可以有重叠的部分,但是,只有最高优先级的真值表达式对应之间可以有重叠的部分,但是,只有最高优先级的真值表达式对应的描述语句会被执行的描述语句会被执行。该结构多用于具有优先顺序的选择逻辑电路西安电子科技大学-软件学院Presentation Name 23process( CLK) beginif rising_edge( CLK) then Q=A and B; end if;end process;时序电路中信号代入的综合结果信号的赋值方法与最终综合的电路之间的关系信号的赋值方法与最终综合的电路之间的关系西安电子科技大学-

20、软件学院Presentation Name 24entity CNT_1 isport( CLK, D: in BIT; Q: out INTEGER range 0 to 9);end CNT_1;西安电子科技大学-软件学院Presentation Name 25-方法A:architecture W of CNT_1 isbeginprocess( CLK)begin if rising_edge( CLK) thenQ= Q + 1; end if;end process;end W;Wrong!entity CNT_1 isport( CLK, D: in BIT; Q: out IN

21、TEGER range 0 to 9);end CNT_1;西安电子科技大学-软件学院Presentation Name 26Yes!entity CNT_1 isport( CLK, D: in BIT; Q: out INTEGER range 0 to 9);end CNT_1;-方法B:architecture RTL of CNT_1 issignal INTRNL_CNT: INTEGER range 0 to 9;beginprocess( CLK) begin if rising_edge( CLK) thenINTRNL_CNT= INTRNL_CNT + 1; end if

22、;end process;Q= INTRNL_CNT;end RTL;西安电子科技大学-软件学院Presentation Name 27?entity CNT_1 isport( CLK, D: in BIT; Q: out INTEGER range 0 to 9);end CNT_1;-方法C:architecture RTL of CNT_1 issignal INTRNL_CNT: INTEGER range 0 to 9;beginprocess( CLK) begin if rising_edge( CLK) thenINTRNL_CNT= INTRNL_CNT + 1;Q= IN

23、TRNL_CNT; end if;end process;end RTL;西安电子科技大学-软件学院Presentation Name 28?entity CNT_1 isport( CLK, D: in BIT; Q: out INTEGER range 0 to 9);end CNT_1;-方法D:architecture RTL of CNT_1 issignal INTRNL_CNT: INTEGER range 0 to 9;beginprocess( CLK) begin if rising_edge( CLK) thenINTRNL_CNT= INTRNL_CNT + 1; en

24、d if; Q 描述语句1; when 选择值2 = 描述语句2; when 选择值n = 描述语句n; end case; 说明:选择表达式的值可以是整数类型、枚举类型以及任意用枚 举结构定义的其他类型,如std_logic_vector; 选择值可以是单个值、多个值、范围以及others,并且选择值之间没有优先级,地位对等,故不能出现重叠部分;此外,选择值的并集必须将选择表达式可能的值全部包括在内,否则,必须以“when others”语句结束。 该结构常常用于多路选择器。(3). Loop语句功能:循环控制语句,能使被控制的代码规律地循环执行,常用于对复杂电路进行建模。语法结构: 循环标签: 循环类别 loop 顺序描述语句; next 循环标签 when 条件表达式; exit 循环标签 when 条件表达式; end loop 循环标签; 说明:next语句和exit语句的语法结构相同,同样都是要跳出循环标签指定的循环语句,但在使用时有明显区别。Next语句只跳出本次循环,在跳出本次循环后,继续执行下一次循环;而exit语句是跳出整个循环语句,跳出循环语句后,继续执行循环体外的其他语句(4)Whileloop语句 whileloop语句含有一个条件表达式,用于控制循环过程,该循环式可以是任意布尔表达式,语法结构如

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论