VHDL语言使用标识符的法则
瑾年Invader 2022-05-24

  VHDL中的标识符可以是常数、变量、信号、端口、子程序或参数的名字。使用标识符要遵守如下法则:

  ·标识符由字母(A…Z;a…z)、数字和下划线字符组成。

  ·任何标识符必须以英文字母开头。

  ·末字符不能为下划线。

  ·不允许出现两个连续下划线。

  ·标识符中不区分大小写字母。

  ·VHDL定义的保留子或称关键字,不能用作标识符。

  ·VHDL中的注释由两个连续的短线(--)开始,直到行尾。

  以下是非法标识符:

  -Decoder —起始不能为非英文字母

  3DOP —起始不能为数字

  Large#number —“#”不能成为标识符的构成符号

  Data__bus —不能有双下划线

  Copper_ —最后字符不能为下划线

  On —关键字不能用作标识符。

  注:在AHDL语言中标识符要区分大小写,但在VHDL语言中不区分大小写。所以写程序时,一定要养成良好的书写习惯,应用关键字时用大写,自己定义的标识符用小写。

  标识符表示的几种数据对象的详细说明如下:

  1) 常数(Constant )

  常数是一个固定的值,主要是为了使设计实体中的常数更容易阅读和修改。常数一被赋值就不能在改变。一般格式:

  CONSTANT 常数名:数据类型:=表达式;

  例:CONSTANT Vcc: REAL: =5.0;

  —设计实体的电源电压指定

  常数所赋得值应与定义的数据类型一致。

  常量的使用范围取决于它被定义的位置。程序包中定义的常量具有最大的全局化特性,可以用在调用此程序包的所有设计实体中;设计实体中某一结构体中定义的常量只能用于此结构体;结构体中某一单元定义的常量,如一个进程中,这个常量只能用在这一进程中。

  2) 变量(Variable)

  变量是一个局部变量,它只能在进程语句、函数语句和进程语句结构中使用。用作局部数据存储。在仿真过程中。它不像信号那样,到了规定的仿真时间才进行赋值,变量的赋值是立即生效的。变量常用在实现某种算法的赋值语句中。

  一般格式:

  VARIABLE 变量名 数据类型 约束条件:=表达式;

  例:VARIABLE x,y:INTEGER; —定义x,y为整数变量

  VARIABLE count: INTEGER RANGE0 TO255:=10; —定义计数变量范围

  变量的适用范围仅限于定义了变量的进程或子程序中。若将变量用于进程之外,必须该值赋给一个相同的类型的信号,即进程之间传递数据靠的信号。

  变量赋值语句的语法格式如下:

  目标变量:=表达式;

  变量赋值符号是“:=”。赋值语句右方的表达式必须是一个与目标变量有相同数据类型的数值。变量不能用于硬件连线和存储元件。

  3) 信号(Signal)

  信号是描述硬件系统的基本数据对象,它类似于连接线,它除了没有数据流动方向说明以外,其它性质与实体的端口(Port)概念一致。变量的值可以传递给信号,而信号的值不能传递给变量。信号通常在构造体、包集合和实体中说明。信号说明格式为:

  SIGNAL 信号名: 数据类型;

  信号初始值的设置不是必需的,而且初始值仅在VHDL的行为仿真中有效。

 

  1. 变量

  变量只能在进程、函数和过程中使用,一旦赋值立即生效。

  例:VARIABLE x, y: INTEGER;

  VARIABLE count: INTEGER RANGE 0 TO 255:=10;

  2. 信号

  信号除了没有方向的概念以外几乎和端口概念一致。

  例:SIGNAL sys_clk: BIT:=’0’;

  SIGNAL ground: BIT:=’0’

  在程序中,信号值输入信号时采用代入符”<=”,而不是赋值符“:=”,同时信号可以附加延时。

  信号传送语句:

  s1<=s2 AFTER 10ns

  信号是一个全局量,可以用来进行进程之间的通信

  3. 信号与变量的区别:

  信号赋值可以有延迟时间,变量赋值无时间延迟;

  信号除当前值外还有许多相关值,如历史信息等,变量只有当前值;

  进程对信号敏感,对变量不敏感;

  信号可以是多个进程的全局信号,但变量只在定义它之后的顺序域可见;

  信号可以看作硬件的一根连线,但变量无此对应关系。

  例:ENTITY reg1 IS

  PORT ( d : in BIT;

  clk : in BIT;

  q : out BIT);

  END reg1;

  ARCHITECTURE reg1 OF reg1 IS

  SIGNAL a, b : BIT;

  BEGIN

  PROCESS (clk)

  BEGIN

  IF clk=‘1’ AND clk’event THEN

  a <= d;

  b <= a;

  q <= b;

  END IF;

  END PROCESS;

  END reg1;

  ENTITY reg1 IS

  PORT ( d : in BIT;

  clk : in BIT;

  q : out BIT);

  END reg1;

  ARCHITECTURE reg1 OF reg1 IS

  BEGIN

  PROCESS (clk)

  VARIABLE a, b : BIT;

  BEGIN

  IF clk=‘1’ AND clk’event THEN

  a := d;

  b := a;

  q <= b;

  END IF;

  END PROCESS;

  END reg1;

声明: 本文转载自其它媒体或授权刊载,目的在于信息传递,并不代表本站赞同其观点和对其真实性负责,如有新闻稿件和图片作品的内容、版权以及其它问题的,请联系我们及时删除。(联系我们,邮箱:evan.li@aspencore.com )
0
评论
  • 相关技术文库
  • FPGA
  • 可编程
  • PLC
  • verilog
  • FPGA入门最难理解的地方

      1、不熟悉FPGA的内部结构,不了解可编程逻辑器件的基本原理  FPGA为什么是可以编程的?恐怕很多菜鸟不知道,他们也不想知道。因为他们觉得这是无关紧要的。

    06-28
  • CPLD大功率激光驱动电源系统组成及原理

    激光加工主要是利用CO:激光束聚焦在材料表 面使材料熔化,同时用与激光束同轴的压缩气体吹 走被熔化的材料,来完成所需轨迹图形的切割或者 相应工艺品表面的雕刻。激

    06-27
  • 基于DSP+FPGA的高速高精运动控制卡

      运动控制卡已经在数控机床、工业机器人、医用设备、绘图仪、IC电路制造设备、IC封装等领域得到了广泛运用,取得了良好的效果。目前运动控制卡大部分采用8051系

    06-27
  • FPGA硬件电路实现的测试仪系统

      随着微电子技术的发展,采用现场可编程门阵列(FPGA)进行数字信号处理得到了飞速发展。由于FPGA具有现场可编程的特点,可以实现专用集成电路,因此越来越受到

    06-27
  • 基于二模冗余的MIPS处理器系统

      引言  现场可编程门阵列(FieldProgrammableGateArray,FPGA)是基于SRAM的一种硬件电路可重配置电子逻辑器件,可通过将硬件描述

    06-20
  • 采用FPGA 实现高精度脉宽测量

      作者:史毅  测量领域以及仪表仪器领域中,对数字信号的测量主要便是对其信号脉冲宽度进行测量。目前使用最多的方式便是脉冲计数的方式,即通过高频时钟脉冲在待测信

    06-16
  • 基于NiosⅡ的单点自适应控制器设计

      为了提高道路交叉口通行能力,设计了一种单点交叉口自适应控制系统。系统采用SOPC方案,利用具有NiosⅡ软核的FPGA芯片设计了控制器的硬件,井利用遗传算法

    06-16
  • Verilog代码覆盖率(codecoverge)检查

      对于复杂的设计来说,Verilog代码覆盖率检查是检查验证工作是否完全的重要方法,代码覆盖率(codecoverge)可以指示Verilog代码描述的功能有

    06-15
  • 变频恒压供水系统控翻方案的设计与选择

      一、引言  在水源地内,多眼井星罗棋布在水库上。为了确保供水生产的安全、可靠、连续。针对水厂制水过程的特点和控制系统的功能要求,我们采用基于西门子PLC的恒

    06-10
  • 利用CPLD 来连接基于ARM 的嵌入式系统与CF 卡

      1引言  随着应用需求的不断提高,许多嵌入式系统在应用时都要求带有扩展的大容量存储器来存储数据。CF卡(CompactFlsahCard)由于价格便宜、存储

    06-09
  • FPGA设计的总功耗

      FPGA的功耗高度依赖于用户的设计,没有哪种单一的方法能够实现这种功耗的降低。目前许多终端市场对可编程逻辑器件设计的低功耗要求越来越苛刻。在消费电子领域,O

    06-06
  • 简述PLD设计步骤

      1.电路逻辑功能描述  PLD器件的逻辑功能描述一般分为原理图描述和硬件描述语言描述,原理图描述是一种直观简便的方法,它可以将现有的小规模集成电路实现的功能

    06-02
下载排行榜
更多
广告