Verilog语言知识学习快速基础学习
- 格式:ppt
- 大小:686.36 KB
- 文档页数:59
verilog 基本语法Verilog基本语法Verilog是一种硬件描述语言,用于描述数字电路的行为和结构。
它具有强大的建模能力,能够描述复杂的数字系统,并用于逻辑设计和硬件验证。
本文将介绍Verilog的基本语法,以帮助读者对这种语言有一个基本的了解。
1. 模块声明在Verilog中,所有的设计都是通过模块来实现的。
模块是Verilog 的基本组织单位,类似于其他编程语言中的函数或类。
模块声明由关键字module开头,后面跟着模块的名称和输入输出端口的定义。
例如:module my_module(input a, b, output c);// 模块的主体endmodule2. 端口声明在模块声明中,使用关键字input和output来声明输入和输出端口。
输入端口用于接收信号,输出端口用于输出信号。
端口可以是单个的信号,也可以是信号的数组。
例如:input a, b; // 单个输入端口output c; // 单个输出端口input [7:0] d; // 输入信号的数组3. 信号声明在Verilog中,使用关键字wire、reg、integer等来声明信号。
wire用于声明连续的信号,reg用于声明时序的信号,integer用于声明整数变量。
例如:wire a, b; // 连续信号reg [7:0] c; // 时序信号,有8位integer d; // 整数变量4. 时钟和复位在数字电路中,时钟和复位信号是非常重要的。
在Verilog中,可以使用关键字input来声明时钟和复位信号,并在模块的输入端口中定义。
例如:input clk; // 时钟信号input rst; // 复位信号5. 运算符Verilog支持各种运算符,包括算术运算符、逻辑运算符、位运算符等。
算术运算符用于执行加减乘除等操作,逻辑运算符用于执行与或非等逻辑操作,位运算符用于执行位操作。
例如:a =b + c; // 加法运算d = ~(a & b); // 与运算和非运算6. 控制结构在Verilog中,可以使用if语句、case语句等控制结构来实现条件判断和多路选择。
Verilog基础:1.间隔符:空格〔\b〕,Tab〔\t〕,换行符〔\n〕,换页符。
2.注释:/**/ //3.标识符,关键词:标识符由英文字母、数字、$符、下划线组成,以英文字母或下划线开头。
4.逻辑值:0:逻辑假1:逻辑真x或X:不确定状态z或Z:高阻态5.常量:<1>格式:<+/-><位宽>’<基数符号><数值>b/o/d/h:二、八、十、十六进制<2>数字可加下划线:8’b1001_1001表示8位二进制数10011001<3>科学计数:5E-4: 5*10^4<4>利用参数定义语句来定义一个标识符表示常量:parameter 参数名1=常量1,参数名2=常量2;例:parameter BIT=1,BYTE=8;6.字符串:双撇号内的字符序列,不能分多行书写,表达式或赋值语句中字符串要换成无符号整数,用8位ASCII码表示,一个8位ASCII码表示一个字符变量的数据类型:1.线网〔net type〕类型:线网类被定义后假设没有被元件驱动,则默认值为高阻态关键词:wire:wire[n-1:0]变量名1,变量名2,…,变量名n;除wire外还有wand、wor、tri、triand、trior、trireg2.寄存器类型:寄存器型变量只能在initial或always内被赋值,没被赋值默认为x状态。
4种类型的寄存器变量:<1>reg:行为描述中对寄存器型变量说明<2>integer:32位有符号整数型<3>real:64位有符号实型变量〔默认值是0〕<4>time:64位无符号时间型①reg:格式:reg[n-1:0]变量名1,…,变量名n;例:integer counter;initial //initial是过程语句结构,赋值给寄存器类型变量counter=-1;③real:通常用于对实数型常量进行储存运算例:real delta;initialbegindelta=4e10;delta=2.13endinteger i;initial i=delta; //i得到的值为2④time:主要用于储存仿真时间,只储存无符号整数,常调用系统函数$time例:time current_time;initialcurrent_time=$time;Verilog 基本结构module 模块名〔端口名1,端口名2,…〕端口类型说明〔input,output,inout〕//inout是双向端口参数定义;//将常量用符号常量代替,非必须结构数据类型定义〔wire,reg等〕实例化底层模块和基本门级元件;连续赋值语句〔assign〕;过程块结构〔initial和always〕;行为描述语句;endmodule描述方式:①结构描述方式:调用其他已定义好的底层模块对整个电路进行描述,或直接调用基本门级元件描述。
共41页资源类别: HDL 语言内部公开1.0密级版本文档编号文档中心Verilog HDL 入门教程(仅供内部使用)yyyy/mm/dd日期:批准:日期:中研基础批准:2004.8.3日期:中研基础拟制:版权所有 不得复制修订记录初稿完成1.002004.8.3作者描述修订版本日期绝密请输入文档编号Verilog HDL 入门教程2004-08-16第2页,共41页版权所有,侵权必究目 录285 结构建模..............................................................274.8 case 语句. (25)4.7 条件语句 (25)4.6.6 连接运算符 (25)4.6.5 条件运算符 (24)4.6.4 按位逻辑运算符 (23)4.6.3 逻辑运算符 (22)4.6.2 关系运算符 (21)4.6.1 算术运算符 (21)4.6 运算符和表达式 (20)4.5.2 寄存器类型 (20)4.5.1 线网类型 (20)4.5 数据类型 (18)4.4.2 常量 (18)4.4.1 值集合 (18)4.4 数字值集合 (18)4.3 格式 (17)4.2 注释 (17)4.1.3 书写规范建议 (17)4.1.2 关键词 (17)4.1.1 定义 (17)4.1 标识符 (17)4 Verilog HDL 基本语法....................................................163.3.4 混合设计描述.. (15)3.3.3 行为描述方式 (14)3.3.2 数据流描述方式 (12)3.3.1 结构化描述方式 (12)3.3 三种建模方式 (11)3.2 时延 (11)3.1.3 模块语法 (10)3.1.2 模块的结构 (9)3.1.1 简单事例 (9)3.1 模块 (9)3 Verilog HDL 建模概述.....................................................72.4.2 能力. (7)2.4.1 历史 (7)2.4 Verilog HDL 简介 (6)2.3 设计方法学 (6)2.2 硬件描述语言 (5)2.1 数字电路设计方法 (5)2 HDL 设计方法学简介......................................................51 前言...................................................................绝密请输入文档编号Verilog HDL 入门教程2004-08-16第3页,共41页版权所有,侵权必究4010 附录A Verilog 保留字...................................................399 习题..................................................................398 其他方面..............................................................377.4 行为建模具体实例...................................................367.3 过程赋值语句......................................................357.2 顺序语句块........................................................357.1 简介.............................................................357 行为建模..............................................................346.3 数据流建模具体实例.................................................346.2 阻塞赋值语句......................................................346.1 连续赋值语句......................................................346 数据流建模............................................................315.4 结构化建模具体实例.................................................295.3 实例化语句........................................................285.2 模块端口..........................................................285.1 模块定义结构......................................................绝密请输入文档编号Verilog HDL 入门教程2004-08-16第4页,共41页版权所有,侵权必究Verilog HDL 入门教程关键词:摘 要:本文主要介绍了Verilog HDL 语言的一些基本知识,目的是使初学者能够迅速掌握HDL设计方法,初步了解并掌握Verilog HDL 语言的基本要素,能够读懂简单的设计代码并能够进行一些简单设计的Verilog HDL 建模。
verilog语⾔⼊门教程module a(b, c, d,...z);//module: 模块头 a:模块名(b,c,d,...z):端⼝列表input b;//输⼊声明input wire c;//输⼊声明线⽹类型⽤wire,wire可省略input wire [7:0] d;//[7:0]:输⼊总线位宽0~7所以是8bit总线output e;//输出声明output [7:0] f;//输出总线位宽说明,默认为wire类型,此处省略wireoutput reg [7:0] f;//输出总线寄存器类型⽤reg ...//为了篇幅⼩⼀些省略e~y的声明,实际代码中不可省略assign d = a & b;//assign语句也叫数据流建模语句也叫连续赋值语句,后⾯接的是组合逻辑assign e = (f < g)? 1 : 0;//三⽬运算符always @ (posedge a or negedge b or posedge c...)//always语句,posedge为上升沿触发,negedge为下降沿触发,后⾯接信号表⽰当这个信号上升沿或下降沿时执⾏下⾯的程序begin//begin...end 相当于()if(!b)//if语句beginh <= 4'b0000;//⾮阻塞赋值语句⽤<=,4'b0000表⽰位宽为4,⼆进制表⽰的数0000i <= 32'haabbccdd;//此处表⽰32位宽,16进制表⽰的数aabbccddendelse//else表⽰分⽀case(j)//case语句0 : k <= k + 1'b1;//verilog中没有⾃加的表⽰,所以⽤k = k + 1'b11 : if(k<m) begin l <= 8'd7;j <= 2; end// j <= 2表⽰下⼀个时钟沿触发后跳到2:语句2 : m < = 4'b0001 << 2;//<<移位符号default: j <=0; //default语句表⽰当j取值不是上⾯列出的0,1,2时⾛这条语句endcase//case多路分⽀语句结束标志end//整个always循环结束标志endmodule//整个模块结束标志。