VHDL的语法

1、数据类型和对象

        对象:

        信号(Signal)、变量(Variable)、常量(Constant)和文件(File)。

SIGNAL signal_name : signal_type [ :=initial_value ] ;

        类型:

VHDL的语法_第1张图片

自定义类型:

--自定义数组
TYPE 数据类型名 IS ARRAY 范围 OF 原数据类型名;

2、std_logic

        是长度为1的逻辑 与bit 相似,只是 bit 只能是'0 ’和'1‘ 而 std_logic有以下九种状态:U'--初始值,'X'--不定,'0'--0,'1'--1,'Z'--高阻,'W'--弱信号不定,'L'--弱信号0,'H'--弱信号1,'-'--不可能的情况。

3、Assert and Report

        用来在控制台上输出信息。可以是并发或顺序。

VHDL的语法_第2张图片

        The basic syntax of a report statements in VHDL is:

assert  report  severity ;

        The message string obviously has to be a string. The severity level has the datatype std.standard.severity_level. Possible values are: note, warning, error, failure.

        例如:

    assert ;    //默认note
    assert  severity ;
    assert  report ;    //默认note
    assert  report  severity ;
assert WIDTH > 0
	report "Generic WIDTH must be greater than zero"
	severity ERROR;

4、entity

 ENTITY 实体名 IS
    [GENERIC(参数表);]
    [PORT(端口表);]
  [BEGIN
    实体语句部分;]
  END [ENTITY] [实体名];

        其中,GENERIC 是用于说明设计实体和其外部环境通信的对象,规定端口的大小、实体中子元件的数目、实体的延时特性等。只能用整数类型表示,如整型、时间型等,其他类型的数据不能逻辑综合。格式如下:

GENERIC ([CONSTANT]属性名称:[IN]子类型标识[:=静态表达式],……);

5、Architecture

        定义了设计单元具体的功能,描述了该基本设计单元的行为、 元件和内部的连接关系。

        用 VHDL 来描述都至少需要包括两个部分,即实体申明(Entity Declaration)和结构体(Architecture)。其中实体申明用于说明模块的端口,而结构体用于描述模块的功能。一个实体可以有多个结构体。一般结构体跟在实体后。

  ARCHITECTURE 结构体名 OF 实体名 IS
  [定义语句]    /*用于对结构体内部所使用的信号、常数、数据类型和函数等进行定义。*/
  BEGIN
  [并行处理语句]
  END 结构体名;

6、generate

        属于Concurrent Statement。用来产生多个相同的结构和描述规则结构,如阵列、元件例化和进程。

/*for...generate*/
label: for parameter in range generate
	concurrent statements
end generate label;
/*if...generate常嵌套在for...generate里,格式为for改成if。*/

7、process

        进程语句是一种并发处理语句,在一个结构体中多个 PROCESS 语句可以同时并行运行(相当于多个 CPU 同时运作)。PROCESS 语句是 VHDL 语言中描述硬件系统并发行为的最基本语句。

        PROCESS 语句归纳起来有如下几个特点:

        • 它可以与其他进程并发运行,并可存取结构体或实体号中所定义的信号;

        • 进程结构中的所有语句都是按顺序执行的;

        • 为启动进程,在进行结构中必须包含一个显式的敏感信号量表或包含一个 WAIT 语句;

        • 进程之间的通信是通过信号量传递来实现的。

[进程名]:PROCESS(信号 1,信号 2,…)
BEGIN
…
END PROCESS;

8、赋值

        “<=”,修改一个信号的状态,如果此语句是在一个进程中,那么它是一个顺序语句,反之如果它是在进程外面(和进程并列关系),那么它就是一个并行赋值的语句。

        “=>”,为映射赋值符号。例如:

signal a, b : std_logic_vector(3 downto 0);
a <= (0 => ‘1’, 2 => '1', others => '0'); -- a = ”0101”
b <= (others => ‘1’); -- b = “1111”;

9、属性

        S'EVENT,如果当前的△时间期间发生了事件返回真,否则返回假(信号是否有值的变化)

VHDL语法学习笔记:一文掌握VHDL语法 - 云+社区 - 腾讯云

 FPGA学习笔记06-VHDL语法基础-生成语句(generate) - 伊可的博客 - 博客园

你可能感兴趣的:(学习下FPGA,vhdl)