zl程序教程

您现在的位置是:首页 >  其他

当前栏目

03 verilog基础语法-模块结构

基础模块 结构 语法 03 Verilog
2023-09-14 09:16:17 时间

虚拟机:VMware-workstation-full-14.0.0.24051
环 境:ubuntu 18.04.1

一、学习内容(上半部分)

在这里插入图片描述

二、模块的结构

(1)Verilog HDL的模块结构

  • Verilog的基本设计单元是“模块 (block) ”
  • Verilog 模块的结构由在module和endmodule关键词之间的4个主要部分组成:
    在这里插入图片描述

(2)逻辑功能定义

在Verilog 模块中有3种方法可以描述电路的逻辑功能:

> assign语句

	如assign x = (b & ~c);
	assign语句又称连续赋值语句,常用于描述组合逻辑

> 门元件例化(instantiate)

	如and u_and2(f,a,b,c);
	其中and 是与门门元件的关键字,u_and3是例化的元件名。
	
	·  注1: 元件例化即是调用Verilog HDL提供的元件;
	·  注2:元件例化包括门元件例化和模块例化 ;
	·  注3: 每个实例的名称必须唯一。

> always块语句

always @(posedge clk) begin//当时钟上升沿到来时执行一遍块内语句
	if(load)begin
		out <= data; // 同步预置数据
	end
	else begin
		out <= data + 1 + cin; //1计数
	end
end

always块 语 句 常 用 于 描 述 时 序 逻 辑 , 也 可描 述 组 合 逻 辑 。 可 用 if-else 或case语句多种手段来表达逻辑关系 ,同时always和assign是并发执行的,因此always内不可包含assign语句。

  • 常见module模板
module <顶层模块名>(
	input 输入端口列表,
	output 输出端口列表
);
//1)使用assign语句定义逻辑功能
	wire	结果信号名;
	assign <结果信号名> = 表达式;

//2)使用always块定义逻辑功能
always@(<敏感信号列表>begin
	xxx;
end

//3)子模块例化
<module_name><instance_name>(
	.module_port(inst_port),
	.module_port(inst_port)
	);
endmodule

(3)Verilog关键字

关键字是verilog语法规定的,用来组织语言结构或元件,因此用户自定义的变量等不能与关键字重复,下面是Verilog HDL的关键字,红色为常用的关键字。
在这里插入图片描述

(4)标识符

在这里插入图片描述

三、小结

在这里插入图片描述


作者:xlinxdu
版权:本文版权归作者所有
转载:欢迎点赞、评论和转载,但未经作者同意,必须保留此段声明,必须在文章中给出原文连接。