基于VHDL的子程序设计与实现

基于VHDL的子程序设计与实现

子程序

函数(function)和过程(procedure)统称为子程序(subprogram)。

  • 子程序与进程的相同点: 内部包含的都是顺序描述代码,使用相同的顺序描述语句,如if,case和loop (wait语句除外)。

  • 子程序与进程语句的区别:

    在使用目的上:
    进程可以直接在主代码中使用;而子程序一般在建库时使用,以便代码重用和代码共享。当然子程序也是可以在主代码中直接建立和使用的。
    在使用方法上:

    1. 子程序不能从结构体的其余部分直接读写信号,所有通信都是通过子程序的接口来完成的;进程可以直接读写结构体内的其它信号
    2. 程序中不允许使用wait语句。
子程序的存放位置:

Package、 Architecture、 Process

子程序与硬件规模:

与普通软件中子程序调用的区别:

  • 普通软件子程序调用增加处理时间;
  • VHDL中每调用一次子程序,其综合后都将对应一个相应的电路模块。子程序调用次数与综合后的电路规模成正比。
  • 设计中应严格控制子程序调用次数。
子程序的类型:
  • 过程(Procedure): 0 个或多个 in、inout、或 out 参数。可获得多个返回值。
  • 函数(Function): 0 个或多个 in 参数,一个 return 值。只能获得一个返回值。
  • 过程可作为一种独立的语句结构而单独存在,函数通常作为表达式的一部分来调用。
  • 子程序包含两部分:子程序声明和子程序主体。
  • 每次调用子程序时,都要首先对其进行初始化,即一次执行结束后再调用需再次初始化。因此,子程序内部的值是不能保持的。

接下来分两部分介绍子程序的实现方法

函数(function)—基于VHdl函数重载方法程序实现

过程(procedure)—基于VHDL数据分流方法程序实现

你可能感兴趣的:(FPGA程序设计)