第七章带电粒子和电磁场的相互作用.ppt

上传人:bao****ty 文档编号:143807053 上传时间:2020-09-02 格式:PPT 页数:56 大小:1.06MB
返回 下载 相关 举报
第七章带电粒子和电磁场的相互作用.ppt_第1页
第1页 / 共56页
第七章带电粒子和电磁场的相互作用.ppt_第2页
第2页 / 共56页
第七章带电粒子和电磁场的相互作用.ppt_第3页
第3页 / 共56页
第七章带电粒子和电磁场的相互作用.ppt_第4页
第4页 / 共56页
第七章带电粒子和电磁场的相互作用.ppt_第5页
第5页 / 共56页
点击查看更多>>
资源描述

《第七章带电粒子和电磁场的相互作用.ppt》由会员分享,可在线阅读,更多相关《第七章带电粒子和电磁场的相互作用.ppt(56页珍藏版)》请在金锄头文库上搜索。

1、第5章 Verilog语法与要素,主要内容,5.1 Verilog语言要素 5.2 常量 5.3 数据类型 5.4 参数 5.5 向量 5.6 运算符,5.1 Verilog语言要素,Verilog 程序由符号流构成,符号包括 空白符(White space) 注释(Comments) 操作符(Operators) 数字(Numbers) 字符串(Strings) 标识符(Identifiers) 关键字(Keywords)等,空白符和注释,空白符(White space) 空白符包括:空格、tab、换行和换页。空白符使代码错落有致,阅读起来更方便。在综合时空白符被忽略。 注释(Comment

2、) 单行注释:以“/”开始到本行结束 多行注释:多行注释以“/*”开始,到“*/”结束,标识符(Identifiers),标识符(Identifiers) Verilog中的标识符可以是任意一组字母、数字以及符号“$”和“_”(下划线)的组合,但标识符的第一个字符必须是字母(az,AZ)或者下划线。另外,标识符是区分大小写的。,Examples:,count COUNT /COUNT与count是不同的 _A1_d2 /以下划线开头 R56_68 FIVE,标识符(Identifiers),判断下列哪些标识符是合法的,哪些标识符是不合法的? 30cout ,Cout ,8sum,a*b,_da

3、da,wait,initial, $latch,out*,转义标识符:以“”开头,以空白符结尾,可以包含任何字符。比如:7400 #sel 注意:反斜线和结束空白符不是转义标识符的一部分,所以标识符“OutGate”和标识符“OutGate”恒等。,关键字(Keywords),Verilog语言内部已经使用的词称为关键字或保留字,这些保留字用户不能作为变量或节点名字使用。 关键字都是小写的。比如:AIWAYS(标识符),不是关键字,它与关键字always是不同的。 附录A和附录B列出了verilog语言中的所有关键字。, 整数 实数 字符串,5.2 常量,程序运行中,值不能被改变的量称为常量(

4、constants),Verilog中的常量主要有如下3种类型:,整数(integer),整数按如下方式书写: +/- 即 +/- size 为对应二进制数的宽度;base为进制;value是基于进制的数字序列。 进制有如下4种表示形式: 二进制(b或B) 十进制(d或D或缺省) 十六进制(h或H) 八进制(o或O),Examples:,8b11000101 /位宽为八位的二进制数11000101 8hd5 /位宽为八位的十六进制数d5; 5O27 /5位八进制数 4D2 /4位十进制数2 4B1x_01 /4位二进制数1x01 5Hx /5位x(扩展的x),即xxxxx 4hZ /4位z,即

5、zzzz 8h2A /*在位宽和之间,以及进制和数值之间允许出现空格,但和进制之间,数值间是不允许出现空格的,比如8h2A、8h2A等形式都是不合法的写法 */,整数(integer),整数(integer),整数的书写规则: 1.较长的数之间可用下划线分开16b1010_1101_0010_1001 2.当十进制不说明位宽时,默认值为32位。 3.x(或z)在二进制中代表1位x(或z),在八进制中代表3位x(或z),在十六进制中代表4位x(或z),它代表的宽度取决于所用的进制。 4.如果没有定义一个整数的位宽,其宽度为相应值中的定义的位数。,整数(integer),5.如果定义的位宽比实际的

6、位数长,通常在其左边补零。但如果数最左边一位为x(或z),那么就相应地在左边补x或z。如果定义的位宽比实际的位数小,裁掉左边的位。 6.“?”是高阻态z的另一种表示符号。在数字的表示中,字符“?”和z是完全等价的,可以互相代替。 7.整数可以带正负号,并且正负号应写在最左边。负数通常表示二进制补码的形式。 8.当位宽与进制缺省时表示的是十进制数。 9.在位宽和之间,以及进制和数字之间允许出现空格,但是和进制之间以及数值之间不允许出现空格。,整数(integer),下列数字的表示是否正确? 6d18 3 b001 Bx0 4d-4 5b0 x110 (3+2)b10 da30 10d2 hzF,

7、实数(Real)有下面两种表示法。 十进制表示法。例如: 2.0 0.1 /以上2例是合法的实数表示形式 2. /非法:小数点两侧都必须有数字 科学计数法。例如: 43_5.1e2 /其值为43510.0 9.6E2 /960.0 (e与E相同) 5E-4 /0.0005,实数(Real),实数(Real),实数转换为整数的方法:四舍五入 42.466,42.45 /转换为整数为42 92.5,92.699 /转换为整数为93 -16.62 /转换为整数为-17 -26.26 /转换为整数为-26,字符串(Strings),字符串是双引号内的字符序列。字符串不能分成多行书写。例如: “INTE

8、RNAL ERROR” “this is an example for Verilog HDL” 字符串的作用主要是用于仿真时,显示一些相关的信息,或者指定显示的格式。 字符串属于reg型变量,其宽度为字符串中字符的个数乘以8。如:“Hello world!”,字符串(Strings),比如:123 八进制数123对应的ASCII字符,5.3 数据类型,Verilog有下面四种基本的逻辑状态。 0:低电平、逻辑0或逻辑非 1:高电平、逻辑1或“真” x或X:不确定或未知的逻辑状态 z或Z:高阻态 Verilog中的所有数据类型都在上述4类逻辑状态中取值,其中x和z都不区分大小写,也就是说,值0

9、 x1z与值0X1Z是等同的。,数据类型(Data Type)是用来表示数字电路中的物理连线、数据存储和传输单元等物理量的。,数据类型,Verilog中的变量分为如下两种数据类型: net型 variable型 net型中常用的有wire、tri; variable型包括reg、integer等。 注意:在Verilog-1995标准中,variable型变量称为register型;在Verilog-2001标准中将register一词改为了variable,以避免初学者将register和硬件中的寄存器概念混淆起来。,5.3.1 net型,net型变量包括多种类型:,wire型,wire是最

10、常用的net型变量。 wire型变量的定义格式如下: wire 数据名1,数据名2,数据名n; 例如: wire a,b; /定义了两个wire型变量a和b wiren-1:0 数据名1,数据名2,数据名i; 或者wiren:1 数据名1,数据名2,数据名i;,Examples:,wire7:0 databus; /databus的宽度是8位 wire19:0 addrbus; /addrbus的宽度是20位,5.3.2 Variable型,variable型变量必须放在过程语句(如initial、always)中,通过过程赋值语句赋值;在always、initial等过程块内被赋值的信号也必

11、须定义成variable型。 注意:variable型变量并不意味着一定对应着硬件上的一个触发器或寄存器等存储元件,在综合器进行综合时,variable型变量会根据具体情况来确定是映射成连线还是映射为触发器或寄存器。,reg型,reg型变量是最常用的一种variable型变量。定义格式如下: reg 数据名1,数据名2,数据名n; reg a,b; /定义了两个reg型变量a,b regn-1:0 数据名1,数据名2,数据名i; regn:1 数据名1,数据名2,数据名i;,Examples:,reg7:0 qout; /定义qout为8位宽的reg型向量 reg8:1 qout;,reg型,

12、例:reg型变量的综合。 module abc(a,b,c,f1,f2); input a,b,c; output f1,f2; reg f1,f2; always (a or bor c) begin f1=ab; f2=f1c; /f1和f2综合时不会映射为寄存器 end endmodule,integer型,integer型多用于表示循环变量,如来表示循环的次数等。 integer型变量的定义与reg型变量相同。,Examples:,integer i,j; integer31:0 d;,注意:intrger型变量不能作为访问向量。例如,对于上面的 integer型变量d,d6和d16:

13、10是非法的。,5.4 参数(parameter),在Verilog语言中,用参数parameter来定义符号常量,即用parameter来定义一个参数名代表一个常量。参数常用来定义时延和变量的宽度。 其定义格式如下: parameter 参数名1=表达式1,参数名2=表达式2,参数名3=表达式3, ; 例如: parameter SEL=8,CODE=8ha3; /分别定义参数SEL代表常数8(10进制),参数CODE代表常量a3(16进制),【例5.2】 采用参数定义的数据比较器 module compare_w(a,b,larger,equal,less); parameter SIZE

14、=6; /参数定义 inputSIZE-1:0 a,b; output larger,equal,less; wire larger,equal,less; assign larger=(ab); assign equal=(a=b); assign less=(ab); endmodule,【例5.3】 采用参数定义的加法器 module add_w(a,b,sum); parameter MSB=15; /参数定义 inputMSB:0 a,b; outputMSB+1:0 sum; assign sum=a+b; endmodule,【例5.4】 采用参数定义的二进制计数器 module

15、 count_w(en,clk,reset,out); input clk,reset,en; parameter WIDTH=8; /参数定义 outputWIDTH-1:0 out; regWIDTH-1:0 out; always (posedge clk or negedge reset) if(!reset) out=0; else if(en) out=out+1; endmodule,【例5.5】 采用参数定义的约翰逊计数器 module johnson_w(clk,clr,qout); input clk,clr; parameter WIDTH=8; /参数定义 output

16、 reg(WIDTH-1):0 qout; always (posedge clk or posedge clr) begin if(clr) qout=0; else begin qout=qout1; qout0=qoutwidth-1; end end endmodule,5.5 向量,1标量与向量 宽度为1位的变量称为标量,如果在变量声明中没有指定位宽,则默认为标量(1位)。举例如下: wire a; /a为标量 reg clk; /clk为标量reg型变量 线宽大于1位的变量(包括net型和variable型)称为向量(vector)。向量的宽度用下面的形式定义: msb : lsb wire3:0 bus; /4位的总线 reg7:0 ra,rb; reg0:7 rc;,2位选择和域选择 在表达

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号