EDA硬件描述语言VHDL之数据类型,顺序语句(二)

1、数据类型

   位数据类型BIT和位矢量类型BIT_VECTOR

       位数据类型BIT的取值范围是逻辑位‘1’和‘0’。位矢量类型BIT_VECTORBIT的数组类型

SIGNAL X,Y:BIT;
SIGNAL A,B:BIT_VECTOR(3 DOWNTO 0);

    标准逻辑位数据类型STD_LOGIC和标准逻辑位矢量类型STD_LOGIC_VECTOR

B : OUT  STD_LOGIC_VECTOR(7 DOWNTO 0) ;  
SIGNAL A :STD_LOGIC_VECTOR(1 TO 4);

   整数类型INTEGER

    使用整数时,综合器要求必须用RANGE子句为所定义的数限定范围,根据所限定的范围决定信号或变量的二进制的位数。

SIGNAL Q : INTEGER RANGE 15 DOWNTO 0;
--综合器自动将Q综合成4条信号线构成的总线方式信号:Q(3) 、Q(2)、Q(1)、Q(0)。

   布尔数据类型BOOLEAN

   布尔量不属于数值,不能用于计算,只能用于比较和判断,而且布尔类型是在数据比较中默认产生的。

TYPE BOOLEAN IS (FALSE,TURE);

  无符号型(UNSIGNED)、有符号型(SIGNED

   注意:STD_LOGICSTD_LOGIC_VECTOR类型的数据可以进行逻辑运算和关系运算,却不能直接进行算术运算;

              而UNSIGNEDSIGNED类型的数据可以进行算术运算和关系运算,但不能进行逻辑运算。

              这些数据类型使用前必须加入如下语句:          

 LIBRARY IEEE;
 USE IEEE.STD_LOGIC_ARITH.ALL;

示例:

VARIABLE var : UNSIGNED(0 TO 10) ;
SIGNAL   sig : UNSIGNED(5 DOWNTO 0) ;
VARIABLE var :SIGNED(0 TO 10);   --var(0)是符号位,代表负数

 其他预定义类型 (综合中不对应任何电路结构,主要用于仿真)

 字符(CHARACTER)类型

 实数(REAL)类型也称浮点数

 字符串(STRING)类型 

VARIABLE string_v : STRING (0 TO 7 ) ;
         string_v := “01100101" ;

2、顺序语句

        赋值语句:

          信号赋值和变量赋值区别

         赋值    变量 := 表达式;全局量(程序包、实体、结构体) ;  变量代表电路单元内部的操作,代表暂存的临时数据;

         赋值    信号 <= 表达式;  局部量 (进程、子程序);  信号代表电路单元、功能模块间的互联,代表实际的硬件连线。

         赋值行为不同:变量赋值是立即发生的,而信号赋值有延时。

         CASE语句:

           CASE语句属于顺序语句,必须放在进程PROCESS中使用。

CASE 表达式 IS
When 选择值 => 顺序语句;
When 选择值 => 顺序语句;
...
When OTHERS=> 顺序语句;
END CASE ;
-----例子
CASE sel IS
    WHEN  0  => z1<=“010”             --当sel=0时,执行对z1的赋值
    WHEN 13 => z2<=‘1’ ;             -- 当sel为1或3时选中
    WHEN 4 To 72  => z3<=‘011’;      -- 当sel为2、4、5、6或7时选中
    WHEN OTHERS => z4<=‘111’ ;        -- 当sel为8~15中任一值时选中
   END CASE ;

        PROCESS语句:

           PROCESS语句结构的一般表达格式如下:

 [进程标号: ] PROCESS [ ( 敏感信号参数表  ) ] [IS]
 [进程说明部分]
  BEGIN
      顺序描述语句
  END PROCESS [进程标号];

         并置操作符 &

          操作符&表示将操作数或数组合并起来形成新的数组。不是与的意思

            IF语句

IF 条件句 THEN
      顺序语句
    END  IF;

          其他语句:LOOP语句、NEXT语句(跳转功能)、EXIT语句(跳出循环)

3、  实例

         D触发器

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; 
ENTITY DFF1 IS
  PORT (CLK : IN STD_LOGIC;
           D : IN STD_LOGIC;
           Q : OUT STD_LOGIC );
 END;
 ARCHITECTURE bhv OF DFF1 IS
  SIGNAL Q1 : STD_LOGIC; 
 BEGIN
   PROCESS (CLK,Q1)
    BEGIN
     IF  CLK'EVENT AND CLK = '1'    -----上升沿检测常用表达式:CLK’EVENT AND CLK=‘1’
         THEN  Q1 <= D;    
     END IF; 
   END PROCESS;
    Q <= Q1;           
 END bhv;

           

 

 

 

 

 

 

 

 

 
  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值