【FPGA】Verilog设计简介

Verilog是一种硬件描述语言,始于1983年,用于数字电路的设计和仿真。它由模块构成,每个模块包含输入输出端口定义和逻辑功能描述。Verilog支持多种数据类型和操作符,包括常量、参数和各种逻辑状态。该语言在1995年成为IEEE标准,并不断演化,如Verilog-2001标准。
摘要由CSDN通过智能技术生成

目录

1.Verilog简介

2.Verilog设计举例

3.Verilog程序的特点 

4.Verilog模块的结构 

5.Verilog语言要素

6.常量

7.参数


1.Verilog简介

Verilog语言是1983年由GDA(Gateway Design Automation)公司的Phil Moorby首创的,之后Moorby又设计了Verilog-XL仿真器,Verilog-XL仿真器大获成功,也使得Verilog语言得到推广使用。
1989年,Cadence收购了GDA
1990年,Cadence公开发表了Verilog HDL,并成立了OVI组织(Open Verilog International)专门负责Verilog HDL的发展。
Verilog于1995年成为IEEE标准,称为IEEE Standard 1364-1995(Verilog-1995)
IEEE“1364-2001”标准(Verilog-2001)也获得了通过,多数综合器、仿真器都已经支持Verilog-2001标准


2.Verilog设计举例

3.Verilog程序的特点 

(1)Verilog程序是由模块构成的。每个模块的内容都嵌在module和endmodule两个关键字之间;每个模块实现特定的功能;模块是可以进行层次嵌套的。
(2)每个模块首先要进行端口定义,并说明输入和输出口(input、output或inout),然后对模块的功能进行逻辑描述。
(3)Verilog程序书写格式自由,一行可以写几个语句,一个语句也可以分多行写。
(4)除了endmodule等少数语句外,每个语句的最后必须有分号。
(5)可以用 /*……*/ 和 //…… 对Verilog程序作注释。好的源程序都应当加上必要的注释,以增强程序的可读性和可维护性。
 

4.Verilog模块的结构 

module AOI (A,B,C,D,F);  //模块名为AOI

input A,B,C,D;    //模块的输入端口为ABCD

output F;    //模块的输出端口为F

wire A,B,C,D,F;     //定义信号的数据类型

assign  F= ~((A&B)|(~(C&D)));   //逻辑功能描述

endmodule

      该程序的第1行为模块的名字、模块的端口列表;第2、3行为输入输出端口声明,第4行定义了端口的数据类型;在第5行中对输入、输出信号间的逻辑关系进行了描述。  

module  <顶层模块名> (<输入输出端口列表>);
output  输出端口列表;         //输出端口声明
input   输入端口列表;         //输入端口声明
/*定义数据,信号的类型,函数声明*/
reg  信号名;
//逻辑功能定义
assign <结果信号名>=<表达式>;    //使用assign语句定义逻辑功能
//用always块描述逻辑功能
always @ (<敏感信号表达式>)
  begin
   //过程赋值
   //if-else,case语句
   //while,repeat,for循环语句
   //task,function调用
  end 
//调用其他模块
 <调用模块名module_name > <例化模块名> (<端口列表port_list >);
//门元件例化
 门元件关键字 <例化门元件名> (<端口列表port_list>);
endmodule
 

5.Verilog语言要素

Verilog 程序由符号流构成,符号包括
空白符(White space)
注释(Comments)
操作符(Operators)
数字(Numbers)
字符串(Strings)
标识符(Identifiers)
关键字(Keywords)等

空白符(White space)
空白符包括:空格、tab、换行和换页。空白符使代码错落有致,阅读起来更方便。在综合时空白符被忽略。
 注释(Comment)
◆ 单行注释:以“//”开始到本行结束,不允许续行
◆ 多行注释:多行注释以“/*”开始,到“*/”结束
 

标识符(Identifiers)
Verilog中的标识符可以是任意一组字母、数字以及符号“$”和“_”(下划线)的组合,但标识符的第一个字符必须是字母或者下划线。另外,标识符是区分大小写的。
 

6.常量

        程序运行中,值不能被改变的量称为常量(constants),Verilog中的常量主要有如下3种类型: 
整数
实数
字符串

Verilog有下面四种基本的逻辑状态。
◆ 0:低电平、逻辑0或逻辑非
◆ 1:高电平、逻辑1或“真”
◆ x或X:不确定或未知的逻辑状态
◆ z或Z:高阻态
Verilog中的所有数据类型都在上述4类逻辑状态中取值,其中x和z都不区分大小写,也就是说,值0x1z与值0X1Z是等同的。

7.参数

在Verilog语言中,用参数parameter来定义符号常量,即用parameter来定义一个标志符代表一个常量。参数常用来定义时延和变量的宽度。
其定义格式如下:
parameter 参数名1=表达式1,参数名2=表达式2,参数名3=表达式3, …… ;
例如:
parameter  sel=8,code=8'ha3;
//分别定义参数sel代表常数8(10进制),参数code代表常量a3(16进制)
 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Simuworld

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值