您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > Verilog-HDL-语法要素学习要点
VerilogHDL语法要素学习要点NAME:DustinDATE:xxxx/xx/x目录CONTENTS一.入门指南二.VerilogHDL基本知识三.数据类型四.参数和向量五.运算符01入门指南1.1模块和端口模块是VerilogHDL设计中的基本功能块,用于描述某个设计的功能或结构,以及它与其他模块进行通信的端口。端口是模块与外部环境交互的接口和通道(例如IC芯片的输入输出引脚),对模块的调用只能通过其端口进行。例:建立一个半加器电路的模块,可使用如下代码进行描述:在VerilogHDL中可使用以下方式描述电路结构:内置门原语(门级)开关级原语(晶体管级)用户定义的原语(门级)模块实例(创建层次结构描述电路)例:2选1数据选择器(MUX)电路,使用内置门原语对2选1MUX的结构进行门级风格描述:1.2门级(结构)风格的描述1.3数据流风格的描述最基本的机制:使用连续赋值语句在连续赋值语句中,线网类型变量被赋予某个值,右边表达式的操作数无论何时发生变化,表达式都重新计算,计算结果被赋予左边表达式的线网类型变量。各assign语句是并行执行的,即各语句的执行与语句的编写顺序无关。例:2选1数据选择器(MUX)电路,使用数据流描述方式描述:1.4行为风格的描述抽象层次更高的设计风格,是为了综合和仿真的目的而进行的,常用于复杂数字系统的顶层逻辑设计。使用initial语句(只执行一次)和always语句(重复执行)进行行为风格的设计。只有变量类型数据能够在这两种语句中被赋值,所有initial语句和always语句在0时刻开始并发执行。例:2选1数据选择器(MUX)电路,要求使用行为风格描述方式建模:02VerilogHDL基本知识2.1标识符和关键字①标识符(Identifier)任意一组字母、数字、$符号和_(下划线)符号的组合区分大小写第一个字符必须是字母或者下划线,不能以数字和$符号开始如:Max,MIN(与Min不同),Four$,_Y2011②转义标识符以\(反斜线)符号开头,以空格、制表符或换行符结尾,反斜线和结束空格并不是转义标识符的一部分③关键字VerilogHDL中预留的表示特定含义的保留标识符全部是小写2.2编写格式①格式自由格式(代码可以在一行内编写,也可以跨越多行编写)空格、制表符和空白行没有特殊意义②注释第一种注释形式:行尾注释第二种注释形式:可以跨行2.3常量①整数型指定位宽的基数格式格式:+/-size‘basevalue有s(或S):作为有符号数处理,否则作无符号数处理o或O表示八进制,b或B表示二进制,d或D表示十进制,h或H表示十六进制问号(?)可以代替值z,可以提高程序可读性2.3.1整数型常量2.3常量②实数③字符串字符串是双引号内的字符序列,不能分成多行书写用ASCII值(8位)表示的字符可看作是无符号整数,因此字符串是ASCII值的序列例:为了存储字符串“Operation”(9个字符长度),变量需要8*9位03数据类型3.1线网型(Net)特点:体现了结构实体(如门级元件)之间的物理连接关系值由驱动元件的值决定,缺省值为z(高阻)表示硬件单元之间的连接,就像真实电路中一样由其连接器件的输出端连续驱动默认的线网位宽为1wire类型最为常用例:对某个信号的线网类型不予以声明,则线网类型被缺省地设置为1位的wire型线网3.2变量型(Variable)特点:是数据存储单元的抽象在下一次赋值前,变量的值保持不变5种不同的变量类型(1)寄存器(reg)变量类型对应具有状态保持作用的硬件电路,如触发器、锁存器等声明形式:reg[msb:lsb]reg1,reg2,...regN;变量名全部用小写字母变量可以取任意长度,变量中的值通常被解释为无符号数3.2变量型(Variable)(2)整型(Integer)变量类型说明形式:integerinteger1,integer2,...[msb:1sb]intergerN;一个整数最少有32位(3)时间(time)类型用于存储和处理时间,常与系统函数$time一起使用(4)实数(real)和实数时间(realtime)类型3.2数组类型(Array)(1)数组可以用一条数组语句声明线网和变量的(一维或多维)数组数组的元素可以是标量或者向量(也有称矢量)可用不同类型数组元素来定义数组3.2数组类型(Array)(2)存储器由reg变量组成的数组(一维)定义方式:reg[msb:1sb]memory1[upper1:lower1],memory2[upper2:lower2],...;n个1位reg变量和1个n位存储器是不同的存储器赋值不能在一条赋值语句中完成,但是变量可以。因此在存储器被赋值时,需要由一个数组索引来指定。可以通过分别对存储器中每个字赋值的方法给存储器赋值04参数和向量4.1参数(1)参数参数是一个常量可使用关键字parameter在模块内定义常数(常用作定义延迟和变量的宽度)参数被赋值一次后不能像变量一样重新赋值可用defparam重新定义参数(2)参数与宏定义(`define)参数是局部的,只在其定义的模块内部起作用,参数的定义在模块内部,语句结束需写上分号(;)宏定义是全局的,这对同时编译的多个文件起作用。定义在模块外部,语句结束时不写分号。4.2向量(1)宽度为1位的变量称为标量,线宽大于1位的变量(包括net和variable型)称为向量(2)位选和域选位选:从向量中抽取特定的位。形式:net_or_reg_vector[bit_select_expr]域选:在向量中选择连续的若干位。形式:net_or_reg_vector[a:b]4.2向量(3)存储器和数组元素存储器元素(单元)是指从存储器中选择一个字形式:memory[word_address]05运算符5运算符①算术操作符(1)整数除法截断小数部分。如“7/4”的运算结果为1(2)取模操作符求出与第一个操作符符号相同的余数。“-7%4”结果为–3(3)任意操作数是X或Z,则结果为X。如“'b110x+'b111”结果为'bxxxx(4)算术操作结果的位宽由最大操作数的位宽决定(5)结果的长度由操作符左端目标长度决定moduletest1(pa,pb,sum);output[4:1]sum;outputreg[3:1]pb=3'b011;outputreg[2:1]pa=2'b10;assignsum=pa+pb;//使用4位endmodule//进行5运算符(6)表达式中整数数值的使用在表达式被机器编译后,一个十进制格式的负整数被编译为有符号的二进制补码格式,一个无符号基数格式的负整数被编译成无符号数。inegera;………….a=-12/3a=-’d12/3a的值为多少?答案:-4;1431655761;5运算符(7)有符号数和无符号数线网、reg寄存器变量、没有符号标记s的基数格式整数作无符号数处理整型变量、十进制形式的整数、有符号的线网、有符号的reg寄存器变量、有符号标记s的基数格式整数作有符号数处理该行错误,实际答案为-125运算符对reg寄存器变量:moduletest1(pa,pb,a,sum);outputintegera=-'d12;outputreg[0:5]pa=-4'd12;outputintegerpb=-4'd12;output[0:5]sum=pa+pa;endmodule5运算符②关系操作符操作数中有一位为X或Z:结果为X例:“24”结果0,“26'hxF”结果为x操作数的位宽不同:位宽较小的操作数在高位方向(左方)补0例:“'b100='b0110”等价于“'b0100='b0110”,结果为1③相等操作符==(逻辑相等)!=(逻辑不等)===(全等)!==(非全等)5运算符④逻辑操作符&&(逻辑与)||(逻辑或)!(逻辑非)(对于向量操作,非0向量被作为1处理)⑤按位操作符~(一元非)&(二元与)|(二元或)^(二元异或)~^,^~(二元同或)5运算符⑥缩减操作符(也称“归约操作符”)在单一操作数的所有位上操作,并产生1位结果。包括6种:(1)&(缩减与):操作数中只要有任一位为0,则结果为0;操作数中只要有任一位为x或z,则结果为x。(2)~&(缩减与非):与&(缩减与)相反(3)|(缩减或):操作数中只要有任一位为1,则结果为1;操作数中只要有任一位为x或z,则结果为x(4)~|(缩减或非):与|(缩减或)相反(5)^(缩减异或):操作数中只要有任一位为x或z,则结果为x;操作数中只要有偶数个1,则结果为0;否则结果为1。可用于确定向量中是否存在x位(6)~^(缩减异或非):与^(缩减异或)相反5运算符⑦移位操作符逻辑移位(逻辑左移,逻辑右移)算术移位(算术左移,算术右移)可用于指数运算例:计算210→→“32’b110”5运算符⑧条件操作符(根据条件表达式的值选择表达式)形式:cond_expr?expr1:expr2例:当表达式length20为真时,由long驱动level;为假时,由short驱动level;当length值为x时,则由一个未知值驱动level⑨拼接和复制操作符:将多个表达式连接起来合并成一个表达式PPT模板下载:行业PPT模板:节日PPT模板:素材下载:背景图片:图表下载:优秀PPT下载:教程:教程:教程:资料下载:课件下载:范文下载:试卷下载:教案下载:论坛:!
本文标题:Verilog-HDL-语法要素学习要点
链接地址:https://www.777doc.com/doc-7101519 .html