zoukankan      html  css  js  c++  java
  • VHDL硬件描述语言(二)——子程序

    在VHDL语言中,子程序包括函数和过程。一般被定义在程序包里面。

    函数

    函数在VHDL中可以用于求值,函数的特征是多个输入,一个输出。这和普通的软件程序设计语言没有什么区别。函数定义的形式如下:

    FUNCTION 函数名(参数列表) RETURN 数据类型        --函数首
    FUNCTION 函数名(参数列表) RETURN 数据类型 IS     --函数体
        [说明部分]        --可有可无    
        BEGIN
        函数实现;
    END FUNCTION 函数名;
    

    当函数定义在程序包里的时候,函数首类似于软件语言的函数声明,它一般放在程序包首,而函数体放在程序包体;当函数定义在结构体里的时候,可以省略函数首,但是只能在本文件使用该函数。例如,我们定义一个程序包里的函数如下:

    LIBRARY IEEE;
    USE IEEE.STD_LOGIC_1164.ALL;
    PACKAGE mypack IS		--程序包首
    	FUNCTION	max(a,b: IN STD_LOGIC) RETURN STD_LOGIC;	--函数首
    END;		--程序包首结束
    PACKAGE BODY mypack IS		--程序包体
    	FUNCTION max(a,b:IN STD_LOGIC) RETURN STD_LOGIC IS
    	BEGIN
    		IF a > b THEN RETURN a;
    		ELSE RETURN b;
    		END IF;
    	END FUNCTION max;
    END;
    

    函数的使用也和软件语言类似。例如我们使用上面定义的程序包里的max函数。如下:

    LIBRARY IEEE;
    USE IEEE.STD_LOGIC_1164.ALL;
    USE WORK.mypack.ALL;		--调用刚才自己写的包
    ENTITY cmp4 IS		--定义实体
    	PORT(in1,in2,in3,in4:IN STD_LOGIC;
    		 out1,out2:OUT STD_LOGIC);
    END cmp4;
    ARCHITECTURE behavior_cmp4 OF cmp4 IS
    	BEGIN
    	out1 <= max(in1,in2);
    	out2 <= max(in3,in4);
    END behavior_cmp4;
    

    过程

    过程没有返回值,过程可以多输入,多输出。过程的定义格式如下:

    PROCEDURE 过程名(参数列表)		--过程首
    PROCEDURE 过程名(参数列表) IS	--过程体
    	[说明部分]
    	BEGIN
    	过程实现;
    END PROCEDURE 过程名;

    过程的调用和函数是类似的,只不过没有返回值而已。

  • 相关阅读:
    主机无法ping通网关,但可以ping通局域网内的其他主机
    linux下安装mysql
    国内python源
    在vue中引入element-ui时报错
    在windows上部署vue
    linux上部署vue开发环境
    vue插件之vue-router路由基本使用
    vue监听属性变化
    vue过滤器
    vue组件的使用
  • 原文地址:https://www.cnblogs.com/zy666/p/10504234.html
Copyright © 2011-2022 走看看