《匠人手记》推荐网上购书渠道:
  互动出版网(china-pub)   >>>
  当当网(dangdang)   >>>
  卓越亚马逊网    >>>
  淘宝网(taobao)   >>>
  更多购书渠道……   >>> 

设为首页加入收藏联系匠人管理入口21IC首页21IC博客21IC社区侃单片机回复的贴参与的贴

天气预报
百宝日历
载入中...

百宝专栏

载入中...
最新货色

载入中...

粉丝评论

载入中...

载入中...



百宝信息

载入中...

百宝流量

(2006-07-01开始)


匠人手记

VHDL语言中的信号、变量与常量异同比较
flanix 发表于 2007-4-4 14:44:00  阅读全文 | 回复(0) | 引用通告 | 编辑

VHDL语言中的信号、变量与常量异同比较

 

 

VHDL中,对象是指用来保持数据的一些客体单元。VHDL中的对象主要有4种:常量(CONSTANT)、变量(VARIABLE)、信号(SIGNAL)和文件(FILE)。本文主要讨论前面三种在实际应用中的异同点.传统的计算机高级语言(如C语言)也有常量与变量.在语法上它们有相似的地方.而对于信号却是硬件描述语言(本文指的是VHDL)中特有的元素.

1.            信号、变量与常量的意义

1.1信号是指在设计实体中数据交换的一种手段,采用信号对象可以把设计实体连接在一起形成模块。在硬件电路中代表一条硬件连线,有时信号会被综合成一个寄存器。

1.2变量主要是对暂时数据进行局部存储,它是一个局部量。

1.3 常量就是一个定值,对某些特定类型数据赋予的数值。定义一个常数主要是为了使设计实体中的某些量易于阅读和修改

2.            信号、变量与常量的声明

信号、变量与常量三者在使用前都必需先声明后使用,否则会产生编译错误。

   2.1信号的声明:SIGNAL 信号名 [,信号名……]:数据类型[:=表达式];

如:

SIGNAL clk:bit1;

SIGNAL reset:bit;

SIGNAL data_bus:bit_vector(7 DOWNTO 0);

在信号声明中可以同时进行赋初值,其赋值语法结构为

SIGNAL clk:bit:=‘0’;

SIGNAL reset:bit=‘1’;

SIGNAL data_bus:bit_vector(7 DOWNTO 0):=‘01000101”;

 

2.1变量的声明:VARIABLE 变量名 [,变量名……]:数据类型[:=表达式];

如:

VARIABLE i: interger RANGAE 0 TO 15:=0;

VARIABLE enable:bit;

            在变量说明中可以同时进行赋初值,其赋值语法结构为:

              如:

VARIABLE flag:bit:=‘1’;

VARIABLE data_buffer:bit_vector(7 DOWNTO 0):=‘01000101”;

2.1常量的声明:    CONSTANT 常量名[,常量名……]:数据类型:=表达式;

如:

CONSTATNT VCC:real:=5.0;

CONSTANT delay_time:time:=10 ns;

3.            信号、变量与常量的使用范围

3.1信号的使用范围

信号可以在architecture、package、entitiy中声明,是全局量可以在全局使用。

3.2变量的使用范围

变量可以在process、function、procedure中声明,也只能在process、function、procedur中使用不是全局变量。

3.3常量的使用范围

常量可以用于上面两种场合。

4.信号、变量与常量的使用差别

4.1从硬件电路系统来看,常量相当于电路中的恒定电平,如GND或VCC接口,而变量和信号则相当于组合电路系统中门与门间的连接及其连线上的信号值。

4.2从行为仿真和VHDL语句功能上看,二者的区别主要表现在接受和保持信号的方式、信息保持与传递的区域大小上。例如信号可以设置延时量,而变量则不能;变量只能作为局部的信息载体,而信号则可作为模块间的信息载体。变量的设置有时只是一种过渡,最后的信息传输和界面间的通信都靠信号来完成。

4.3从综合后所对应的硬件电路结构来看,信号一般将对应更多的硬件结构,但在许多情况下,信号和变量并没有什么区别。例如在满足一定条件的进程中,综合后它们都能引入寄存器。这时它们都具有能够接受赋值这一重要的共性,而VHDL综合器并不理会它们在接受赋值时存在的延时特性。

4.4虽然VHDL仿真器允许变量和信号设置初始值,但在实际运用中,VHDL综合器并不会把这些信息综合进去。这是因为实际的FPGA/CPLD芯片在上电后,并不能确保其初始状态的取向。因此,对于时序仿真来说,设置的初始值在综合时是没有实际意义的

4.5信号和变量是VHDL中重要的客体,他们之间的主要区别有:

·信号赋值至少要有δ延时;而变量赋值没有。

·信号除当前值外有许多相关的信息,如历史信息和投影波形;而变量只有当前值。

·进程对信号敏感而不对变量敏感。

·信号可以是多个进程的全局信号;而变量只在定义他们的顺序域可见(共享变量除外)。

·信号是硬件中连线的抽象描述,他们的功能是保存变化的数据值和连接子元件,信号在元件的端口连接元件。变量在硬件中没有类似的对应关系,他们用于硬件特性的高层次建模所需要的计算中。

 

 

通过前面的讨论,在使用VHDL设计FPGA/CPLD芯片时要灵活运用信号、变量与常量对象提高设计效率。

 

看《匠人手记》,与匠人同行!北航出版,正在热卖!

  • 标签:VHDL SIGNAL VARIABLE 
  • 发表评论:
    载入中...

    芯片专题

    器件专题

    软件专题

    硬件专题

    综合专题

    项目专题

    原创专题

    器件检测
    LCD LED
    按键 触摸键
    E2PROM
    电池 电机
    电阻 电容 电感

    指令系统
    软件算法
    编程规范
    滤波算法
    串行通讯

    PCB设计
    I2C PWM
    红外遥控
    充电技术
    中断 ADC 

    匠人手记
    匠人夜话
    网络心路
    一周热点串烧
    从零开始玩PIC
    DIY旋转时钟

    广告5号位 [投放]


    学习板、开发板、编程器、下载器、仿真器(查看详情……)

    广告3号位 [投放]

    站内搜索


    站外搜索


    百度  google
    mp3  歌词 
    图片  FLASH 
    知道  文档
    新闻  词典 
    地图  mp3 
    软件  天网 
    雅虎  爱问 
    搜狗  讯雷 
    网讯  华军 
    天空 

    21IC器件搜索
    百宝箱分站
  • 《匠人的百宝箱》21IC站
  • 《匠人的百宝箱》21IC笔记团队
  • 《匠人手记》21IC书友会
  • 《匠人的百宝箱》MCUBLOG站
  • 《匠人的百宝箱》MCUBLOG笔记团队
  • 《匠人的百宝箱》EDN站
  • 《匠人手记》EDN书友会
  • 《匠人的百宝箱》与非网站
  • 《匠人的百宝箱》新浪站
  • 《匠人的百宝箱》百度站
  • 《匠人的百宝箱》网易126站
  • 《匠人的百宝箱》网易163站
  • 《匠人的百宝箱》互动出版网站
  • 广告4号位 [投放]

     
     

    匠人原创

    推荐阅读

    往日酷贴