《VHDL 数字电路设计教程》电工版/第7章:信号和变量

7.1    处理静态数据——GENERICCONSTANT

 

对象GENERIC(通用属性)CONSTANT(常量)
语法结构GENERIC (parameter_name: parameter_type := parameter_value);CONATANT 常量名: type := 值;
功能指定常规参数(静态确定默认值(静态
范围全局全局
用途GENERIC语句必须在ENTITY即实体中进行声明,且可指定多个参数。常量可以在包集实体结构体中声明,即有在哪一级声明,该常量对于该级所包含的所有描述是全局的。

7.2    处理非静态参数——SIGNALVARIABLE

       

  •     信号定义的一般格式如下:
SIGNAL name: type [range] [ := initial_value];

    例

SIGNAL control: BIT := '0';
SIGNAL count: INTEGER RANGE 0 TO 100;
SIGNAL y: STD_LOGIC_VECTOR (7 DOWNTO 0);

    注意:

    ①VHDL中的信号表示的是逻辑电路中的“硬”连线,既可以用于电路单元的输入\输出端口,也可以用于电路内部各单元的连接

    ②对信号赋初始值的操作是不可综合的。

    ③进程中只允许对一个信号进行一次赋值操作

  •     变量说明的格式如下:
VARIABLE name: type [range][ := 初始值];

    例

VARIABLE control: BIT := '0';
VARIABLE count: INTEGER RANGE 0 TO 100;
VARIABLE y: STD_LOGIC_VECTOR (7 DOWNTO 0) := "10001000";

    注意:

    与信号一样,对变量赋初始值的操作也是不可综合的。

7.3    寄存器的数量

    编译器对不同风格的代码进行编译时产生寄存器的数量会不同,故代码优化的目的不仅是为了解使用什么方法可以减少寄存器的数量,更是为了知道代码是否可以实现预期的结果。

  •     对于信号:

    当一个信号的赋值是以另一个信号的跳变为条件时,或者说当发生同步赋值时,该信号经过编译后就会生成寄存器。(这样的同步赋值只能在进程、函数或过程中出现,一般跟在 IF signal'EVENT...WAIT UNTIL...等语句之后。

  •      对于变量:

    ①如果变量的值没有被进程(函数或者过程)以外的代码调用,那么不一定会生成寄存器。

    ②如果一个变量是在一个信号跳变时被赋值,并且该值最终又被赋给了另外的信号(信号是全局的,可以进行数值传递),那么综合后就会产生寄存器。

    ③如果一个变量在还没有进行赋值操作时已被使用,那么也会在综合时产生寄存器。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值