对象:
信号(Signal)、变量(Variable)、常量(Constant)和文件(File)。
SIGNAL signal_name : signal_type [ :=initial_value ] ;
类型:
自定义类型:
--自定义数组
TYPE 数据类型名 IS ARRAY 范围 OF 原数据类型名;
是长度为1的逻辑 与bit 相似,只是 bit 只能是'0 ’和'1‘ 而 std_logic有以下九种状态:U'--初始值,'X'--不定,'0'--0,'1'--1,'Z'--高阻,'W'--弱信号不定,'L'--弱信号0,'H'--弱信号1,'-'--不可能的情况。
用来在控制台上输出信息。可以是并发或顺序。
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;
ENTITY 实体名 IS
[GENERIC(参数表);]
[PORT(端口表);]
[BEGIN
实体语句部分;]
END [ENTITY] [实体名];
其中,GENERIC 是用于说明设计实体和其外部环境通信的对象,规定端口的大小、实体中子元件的数目、实体的延时特性等。只能用整数类型表示,如整型、时间型等,其他类型的数据不能逻辑综合。格式如下:
GENERIC ([CONSTANT]属性名称:[IN]子类型标识[:=静态表达式],……);
定义了设计单元具体的功能,描述了该基本设计单元的行为、 元件和内部的连接关系。
用 VHDL 来描述都至少需要包括两个部分,即实体申明(Entity Declaration)和结构体(Architecture)。其中实体申明用于说明模块的端口,而结构体用于描述模块的功能。一个实体可以有多个结构体。一般结构体跟在实体后。
ARCHITECTURE 结构体名 OF 实体名 IS
[定义语句] /*用于对结构体内部所使用的信号、常数、数据类型和函数等进行定义。*/
BEGIN
[并行处理语句]
END 结构体名;
属于Concurrent Statement。用来产生多个相同的结构和描述规则结构,如阵列、元件例化和进程。
/*for...generate*/
label: for parameter in range generate
concurrent statements
end generate label;
/*if...generate常嵌套在for...generate里,格式为for改成if。*/
进程语句是一种并发处理语句,在一个结构体中多个 PROCESS 语句可以同时并行运行(相当于多个 CPU 同时运作)。PROCESS 语句是 VHDL 语言中描述硬件系统并发行为的最基本语句。
PROCESS 语句归纳起来有如下几个特点:
• 它可以与其他进程并发运行,并可存取结构体或实体号中所定义的信号;
• 进程结构中的所有语句都是按顺序执行的;
• 为启动进程,在进行结构中必须包含一个显式的敏感信号量表或包含一个 WAIT 语句;
• 进程之间的通信是通过信号量传递来实现的。
[进程名]:PROCESS(信号 1,信号 2,…)
BEGIN
…
END PROCESS;
“<=”,修改一个信号的状态,如果此语句是在一个进程中,那么它是一个顺序语句,反之如果它是在进程外面(和进程并列关系),那么它就是一个并行赋值的语句。
“=>”,为映射赋值符号。例如:
signal a, b : std_logic_vector(3 downto 0);
a <= (0 => ‘1’, 2 => '1', others => '0'); -- a = ”0101”
b <= (others => ‘1’); -- b = “1111”;
S'EVENT,如果当前的△时间期间发生了事件返回真,否则返回假(信号是否有值的变化)
VHDL语法学习笔记:一文掌握VHDL语法 - 云+社区 - 腾讯云
FPGA学习笔记06-VHDL语法基础-生成语句(generate) - 伊可的博客 - 博客园