Verilog语言规则.ppt

上传人:wuy****n92 文档编号:70790484 上传时间:2023-01-28 格式:PPT 页数:66 大小:1.59MB
返回 下载 相关 举报
Verilog语言规则.ppt_第1页
第1页 / 共66页
Verilog语言规则.ppt_第2页
第2页 / 共66页
点击查看更多>>
资源描述

《Verilog语言规则.ppt》由会员分享,可在线阅读,更多相关《Verilog语言规则.ppt(66页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、第第9章章 Verilog语言规则语言规则9.1 9.1 文字规则文字规则整数和实常数整数和实常数 Verilog Verilog 语言中常数可以是整数、实数和字符串:语言中常数可以是整数、实数和字符串:整数可以标明位数也可以不标明位数,表示方法:整数可以标明位数也可以不标明位数,表示方法:位宽位宽进制数字进制数字 其中位宽表明该数用二进制的几位来表示其中位宽表明该数用二进制的几位来表示 进制可以是二(进制可以是二(b b)、八()、八(O O)、十()、十(d d)或十六(或十六(h h)进制)进制 数字可以是所选基数的任何合法的值包括数字可以是所选基数的任何合法的值包括 不定值不定值 x

2、x 位和高阻值位和高阻值 z z(?)。(?)。如如:64hff01 8b1101_0001 h83a-8d5:64hff01 8b1101_0001 h83a-8d5 实常数可以用十进制表示也可以用科学浮点数表示,实常数可以用十进制表示也可以用科学浮点数表示,如:如:32e-4 32e-4(表示(表示0.00320.0032)4.1E3(4.1E3(表示表示 4100 4100)4 4个个1616进制数进制数共共6464位位下划线不能出现在位下划线不能出现在位宽和进制间宽和进制间位宽可以缺省,由机器位宽可以缺省,由机器系统决定!系统决定!负数写在前面负数写在前面文字规则文字规则字符串字符串

3、Verilog Verilog 语语言言中中,字字符符串串常常常常用用于于表表示示命命令令内内需需要要显显示的信息。示的信息。用用“”括括起起来来的的一一行行字字符符串串,换换新新一一行行用用 “n”“n”字符字符,与与 C C 语言一致。语言一致。在在字字符符串串中中可可以以用用 C C 语语言言中中的的各各种种格格式式控控制制符符,如如t,”,t,”,在在字字符符串串中中可可以以用用 C C 语语言言中中的的各各种种数数值值型型式式控控制制符符(有些不同有些不同),如:,如:%b(%b(二二进进制制),),%o(%o(八八进进制制),%d(%d(十十进进制制),),%h(%h(十十六六进制

4、进制),%t(),%t(时间类型时间类型),%s(%s(字符串类型字符串类型)文字规则文字规则标识符标识符五、标识符五、标识符 任任何何用用Verilog Verilog HDLHDL语语言言描描述述的的“东东西西”都都通通过过其其名名字字来来识识别别,这个名字被称为这个名字被称为标识符标识符。如源文件名、模块名、端口名、变量名、常量名、实例名等。如源文件名、模块名、端口名、变量名、常量名、实例名等。标标识识符符可可由由字字母母、数数字字、下下划划线线和和$符符号号构构成成;但但第第一一个个字字符符必须是字母或下划线,不能是数字或必须是字母或下划线,不能是数字或$符号符号!在在Verilog

5、Verilog HDLHDL中变量名是区分大小写的!中变量名是区分大小写的!合法合法的名字:的名字:A_99_ZReset_54MHz_Clock$Module 不合法不合法的名字:的名字:123a$datamodule7seg.v标识符标识符不能与不能与关键字关键字同名!同名!9.2 数据类型数据类型一、数据类型一、数据类型数据类型是用来表示数字电路中的数据存储和传送单元。数据类型是用来表示数字电路中的数据存储和传送单元。Verilog Verilog HDLHDL中共有中共有19种数据类型;种数据类型;其中其中4个最基本的数据类型为:个最基本的数据类型为:integerinteger型型p

6、arameterparameter型型regreg型型wirewire型型 其其 它它 数数 据据 类类 型型:largelarge型型、mediummedium型型、scalaredscalared型型、smallsmall型型、timetime型型、tritri型型、tri0tri0型型、tri1tri1型型、triandtriand型型、triortrior型型、triregtrireg型型、vectoredvectored型、型、wandwand型、型、worwor型等型等二、常量二、常量在程序运行过程中,其值不能被改变的量,称为在程序运行过程中,其值不能被改变的量,称为常量常量。数字

7、数字(包括整数,x和z值,负数)parameterparameter常量常量(或称符号常量)9.2 数据类型数据类型三、变量三、变量在程序运行过程中,其值可以改变的量,称为在程序运行过程中,其值可以改变的量,称为变量变量。其数据类型有其数据类型有1919种,常用的有种,常用的有3 3种:种:网络型(nets type)寄存器型(register type)数组(memory type)s型变量型变量定义定义输出始终随输入的变化而变化的变量输出始终随输入的变化而变化的变量。表示结构实体(如门)之间的表示结构实体(如门)之间的物理物理连接。连接。常用常用netsnets型变量:型变量:wire,t

8、ri:连线类型(两者功能一致)wor,trior:具有线或特性的连线(两者功能一致)wand,triand:具有线与特性的连线(两者功能一致)tri1,tri0:上拉电阻和下拉电阻supply1,supply0:电源(逻辑1)和地(逻辑0)netsnets型变量型变量不能储存值!不能储存值!9.2 数据类型数据类型wire型变量型变量最常用的nets型变量,常用来表示以assign语句赋值的组合逻辑信号。模块中的输入/输出信号类型缺省为wire型。可用做任何方程式的输入,或“assign”语句和实例元件的输出。wirewire 数据名数据名1,1,数据名数据名2,2,数据名数据名n;n;wir

9、en-1:0wiren-1:0 数据名数据名1,1,数据名数据名2,2,数据名数据名m;m;或或 wiren:1wiren:1 数据名数据名1,1,数据名数据名2,2,数据名数据名m;m;每条总线位宽为n共有m条总线wirewire型向量(总线)型向量(总线)格式格式格式格式9.2 数据类型数据类型定定义义对对应应具具有有状状态态保保持持作作用用的的电电路路元元件件(如如触触发发器器、寄寄存存器器等等),常常用用来来表表示示过过程程块块语语句句(如如initialinitial,alwaysalways,tasktask,functionfunction)内的指定信号)内的指定信号 。常用常用

10、registerregister型变量:型变量:reg:常代表触发器integer:32位带符号整数型变量real:64位带符号实数型变量time:无符号时间变量纯数学的纯数学的抽象描述抽象描述2.register2.register型变量型变量9.2 数据类型数据类型registerregister型变量与型变量与netsnets型变量的根本区别是:型变量的根本区别是:vregisterregister型型变变量量需需要要被被明明确确地地赋赋值值,并并且且在在被被重重新新赋赋值值 前一直保持原值。前一直保持原值。vregisterregister型型变变量量必必须须通通过过过过程程赋赋值值语

11、语句句赋赋值值!不不能能通通过过assignassign语句赋值!语句赋值!v在过程块内被赋值的每个信号必须定义成在过程块内被赋值的每个信号必须定义成registerregister型!型!9.2 数据类型数据类型reg型变量型变量定定义义在在过过程程块块中中被被赋赋值值的的信信号号,往往往往代代表表触触发发器器,但但不一定不一定就是触发器(也可以是组合逻辑信号)!就是触发器(也可以是组合逻辑信号)!regreg 数据名数据名1,1,数据名数据名2,2,数据名数据名n;n;regn-1:0regn-1:0 数据名数据名1,1,数据名数据名2,2,数据名数据名m;m;或或 regn:1regn:

12、1 数据名数据名1,1,数据名数据名2,2,数据名数据名m;m;每个向量位宽为n共有m个reg型向量 例例 reg4:1 regc,regd;/reg4:1 regc,regd;/regc,regdregc,regd为为4 4位宽的位宽的regreg型向量型向量regreg型向量(总线)型向量(总线)格式格式格式格式9.2 数据类型数据类型用用regreg型变量生成型变量生成组合逻辑组合逻辑举举例例:module rw1(a,b,out1,out2);input a,b;output out1,out2;reg out1;wire out2;assign out2=a;always(b)out

13、1=b;endmoduleaout2BUFFbINVout1过程赋值语句过程赋值语句连续赋值语句连续赋值语句电平触发电平触发Verilog中中reg与与wire的区别的区别regreg型变量既可生成触发器,也可型变量既可生成触发器,也可生成组合逻辑;生成组合逻辑;wirewire型变量只能型变量只能生成组合逻辑。生成组合逻辑。9.2 数据类型数据类型用用regreg型变量生成型变量生成触发器触发器举举例例:module rw2(clk,d,out1,out2);input clk,d;output out1,out2;reg out1;wire out2;assign out2=d&out1;

14、always(posedge clk)begin out1 b)&(bc)ab)&(bc)可简写为:可简写为:ab&bc ab&bc (a=b)|(x=y)a=b)|(x=y)可简写为:可简写为:a=b|x=y a=b|x=y (!a)|(ab)!a)|(ab)可简写为:可简写为:!a|ab!a|ab为为提提高高程程序序的的可可读读性性,明明确确表表达达各各操操作作符符之之间间的优先关系,建议使用的优先关系,建议使用括号括号!为为提提高高程程序序的的可可读读性性,明明确确表表达达各各操操作作符符之之间间的优先关系,建议使用的优先关系,建议使用括号括号!9.3 9.3 操作符操作符三、位操作符三

15、、位操作符双双目操作符目操作符单单目操作符目操作符位位运运算算其其结结果果与与操操作作数数位位数数相相同同。位位操操作作符符中中的的双双目目操操作作符符要要求对两个操作数的相应位求对两个操作数的相应位逐位逐位进行运算。进行运算。两两个个不不同同长长度度的的操操作作数数进进行行位位运运算算时时,将将自自动动按按右右端端对对齐齐,位位数少的操作数会在高位用数少的操作数会在高位用0 0补齐。补齐。例例 若若A=5b11001A=5b11001,B=3b101B=3b101,则则A&B=A&B=(5b110015b11001)&(5b5b0000101101)=5b00001=5b00001 9.3

16、9.3 操作符操作符 例例&操作符和操作符和&(按位与)的区别(按位与)的区别&运算的结果为运算的结果为1 1位的逻辑值位的逻辑值注意注意&和和&的区别!的区别!被认为是被认为是 1b1b1 1被认为是被认为是 1b1bx x逻辑与结果为逻辑与结果为 1b1bx x9.3 9.3 操作符操作符四、关系操作符四、关系操作符双双目操作符目操作符括号内先运算!括号内先运算!算术运算先运算!算术运算先运算!运运算算结结果果为为1 1位位的的逻逻辑辑值值1 1或或0 0或或x x。关关系系运运算算时时,若若关关系系为为真真,则则返返回回值值为为1 1;若若声声明明的的关关系系为为假假,则则返返回回值值为

17、为0 0;若若某某操操作作数数为为不不定定值值x x,则返回值为,则返回值为x x。所有的关系操作符优先级别相同。所有的关系操作符优先级别相同。关系操作符的优先级关系操作符的优先级低于低于算术操作符。算术操作符。例例 asize-1 asize-1等同于:等同于:a(size-1)a(size-1)size-size-(1a1a)不等同于:不等同于:size-1size-1an An 或或 An A3=4b 4b10013=4b0000001 1;4b10014=4b 4b10014=4b00000000 4b10011=5b1001 4b10011=5b10010 0;4b10012=6b1

18、001 4b10012=6b10010000;16=32b1 1b)&(bc)ab)&(bc)(a=b)|(x=y)a=b)|(x=y)(!a)|(ab)!a)|(ab)9.4 基本语句基本语句表表3-4 Verilog HDL的语句的语句9.4 基本语句基本语句一、一、initialinitial语句语句initialinitial beginbegin 语句语句1 1;语句语句2 2;语句语句n n;endendMAX+PLUS 和和Quartus 均不支持均不支持!格式格式格式格式 利用利用initial语句生成激励波形。语句生成激励波形。initial begin inputs=b00

19、0000;#10 inputs=b011001;#10 inputs=b011011;#10 inputs=b011000;#10 inputs=b001000;end不可综合!不可综合!常用在测试文件中常用在测试文件中用途用途用途用途在仿真的初始状态对各变量进行在仿真的初始状态对各变量进行初始化初始化;在测试文件中在测试文件中生成激励波形生成激励波形作为电路的仿真信号。作为电路的仿真信号。9.4 基本语句基本语句parameter size=16;reg3:0 addr;reg reg1;reg7:0 memory0:15;initial begin reg1=0;for(addr=0;ad

20、drsize;addr=addr+1);memoryaddr=0;end 对各变量进行初始化。对各变量进行初始化。9.4 基本语句基本语句二、二、foreverforever语句语句无条件无条件连续执行连续执行foreverforever后面的语句或语句块。后面的语句或语句块。forever 语句语句forever begin end或或v常常用用在在测测试试模模块块中中产产生生周周期期性性的的波波形,作为形,作为仿真激励仿真激励信号。信号。v常用常用disable语句跳出循环!语句跳出循环!注:不同于注:不同于alwaysalways语句,不能独立写在程序中,语句,不能独立写在程序中,一般用

21、在一般用在initialinitial语句块中!语句块中!格式格式格式格式initial begin:Clocking clk=0;#10 forever#10 clk=!clk;endinitial begin:Stimulus disable Clocking;/停止时钟停止时钟 end 一般情况下一般情况下是不可综合的!常是不可综合的!常用在测试文件中用在测试文件中9.4.3 编译指示语句编译指示语句一、一、definedefine语句语句二、二、includeinclude语句语句三、三、timescaletimescale语句语句四、条件编译语句四、条件编译语句ifdef else

22、endififdef else endif内容概要内容概要一、一、definedefine语句语句宏宏定定义义语语句句用用一一个个指指定定的的标标志志符符(即即宏宏名名)来来代代表表一个字符串(即宏内容)。一个字符串(即宏内容)。definedefine 标志符(即宏名)字符串(即宏内容)标志符(即宏名)字符串(即宏内容)例例 define IN ina+inb+inc+inddefine IN ina+inb+inc+ind宏展开宏展开在编译预处理时将宏名替换为字符串的过程。在编译预处理时将宏名替换为字符串的过程。“编编译译预预处处理理”是是Verilog Verilog HDLHDL编编译

23、译系系统统的的一一个个组组成成部部分分。编编译译预预处处理理语语句句以以西西文文符符号号“”开开头头注注意意,不不是是单单引引号号“”!在在编编译译时时,编编译译系系统统先先对对编编译译预预处处理理语语句句进进行行预预处处理理,然然后后将将处理结果和源程序一起进行编译。处理结果和源程序一起进行编译。格式格式格式格式9.4.3 编译指示语句编译指示语句宏宏名名可可以以用用大大写写字字母母,也也可可用用小小写写字字母母表表示示;但但建建议议用用大大写写字字母母,以以与变量名相区别。与变量名相区别。definedefine语语句句可可以以写写在在模模块块定定义义的的外外面面或或里里面面。宏宏名名的的

24、有有效效范范围围为为定定义义命令之后到源文件结束。命令之后到源文件结束。在引用已定义的宏名时,必须在其前面加上符号在引用已定义的宏名时,必须在其前面加上符号“”!使用宏名代替一个字符串,可简化书写,便于记忆,易于修改。使用宏名代替一个字符串,可简化书写,便于记忆,易于修改。预预处处理理时时只只是是将将程程序序中中的的宏宏名名替替换换为为字字符符串串,不不管管含含义义是是否否正正确确。只只有在编译宏展开后的源程序时才报错。有在编译宏展开后的源程序时才报错。宏名和宏内容必须在同一行中进行声明宏名和宏内容必须在同一行中进行声明!关于宏定义的说明关于宏定义的说明关于宏定义的说明关于宏定义的说明v宏定义

25、的宏定义的作用作用:以一个简单的名字代替一个长的字符串或复杂表达式;以一个简单的名字代替一个长的字符串或复杂表达式;以一个有含义的名字代替没有含义的数字和符号。以一个有含义的名字代替没有含义的数字和符号。9.4.3 编译指示语句编译指示语句例例 module test;reg a,b,c,d,e,out;define expression a+b+c+d;assign out=expression+e;经过宏展开后,经过宏展开后,assignassign语句为语句为:assign out=a+b+c+d;+e;/出现语法错误!出现语法错误!宏定义不是宏定义不是Verilog HDLVerilo

26、g HDL语句,不必在行末加分号!语句,不必在行末加分号!如果加了分号,会连分号一起置换!如果加了分号,会连分号一起置换!错误!错误!9.4.3 编译指示语句编译指示语句例例 module test;reg a,b,c;wire out;define aa a+b define cc c+aa /引用引用已定义的宏名已定义的宏名 aa 来定义宏来定义宏cc assign out=cc;经过宏展开后,经过宏展开后,assign语句为语句为:assign out=c+a+b;在进行宏定义时,可引用已定义的宏名,实现层层置换。在进行宏定义时,可引用已定义的宏名,实现层层置换。9.4.3 编译指示语句

27、编译指示语句二、二、includeinclude语句语句文件包含文件包含语句语句一个源文件可将另一个源文件的全部内容包含进来。一个源文件可将另一个源文件的全部内容包含进来。includeinclude “文文件件名名”预处理后预处理后includeinclude “file2.v”“file2.v”Afile1.vBfile2.vABfile1.vMAX+PLUS II和和Quartus 都不支持!都不支持!通常用在测试文件中。通常用在测试文件中。将将file2.vfile2.v中全部内容复中全部内容复制插入到制插入到include include“file2.v”“file2.v”命令出现的

28、命令出现的地方地方格式格式格式格式9.4.3 编译指示语句编译指示语句避避免免程程序序设设计计人人员员的的重重复复劳劳动动!不不必必将将源源代代码码复复制制到到自自己己的的另另一一源源文件中,使源文件显得简洁。文件中,使源文件显得简洁。(1 1)可可以以将将一一些些常常用用的的宏宏定定义义命命令令或或任任务务(tasktask)组组成成一一个个文文件件,然然后后用用includeinclude语语句句将将该该文文件件包包含含到到自自己己的的另另一一源源文文件件中中,相相当当于于将将工业上的标准元件拿来使用。工业上的标准元件拿来使用。(2 2)当当某某几几个个源源文文件件经经常常需需要要被被其其

29、他他源源文文件件调调用用时时,则则在在其其他他源源文文件件中用中用includeinclude语句将所需源文件包含进来。语句将所需源文件包含进来。使用使用使用使用 includeinclude语句的好处语句的好处语句的好处语句的好处9.4.3 编译指示语句编译指示语句例例 用用includeinclude语句设计语句设计1616位加法器位加法器adderadder模块模块位拼接位拼接改变被引用模块改变被引用模块adderadder中的参数中的参数sizesize为为my_sizemy_size9.4.3 编译指示语句编译指示语句一一个个 includeinclude语语句句只只能能指指定定一一

30、个个被被包包含含的的文文件件;若要包含若要包含n n个文件,需用个文件,需用n n个个 includeinclude语句。语句。includeinclude语语句句可可出出现现在在源源程程序序的的任任何何地地方方。被被包包含含的的文文件件若与包含文件不在同一子目录下,必须指明其路径!若与包含文件不在同一子目录下,必须指明其路径!include“aaa.v”“bbb.v”include“aaa.v”“bbb.v”/非法!非法!include“parts/count.v”include“parts/count.v”/合法!合法!关于文件包含的说明关于文件包含的说明关于文件包含的说明关于文件包含的说

31、明 include“aaa.v”include“aaa.v”include“bbb.v”include“bbb.v”/合法!合法!9.4.3 编译指示语句编译指示语句可可将将多多个个includeinclude语语句句写写在在一一行行;在在该该行行中中,只只可可出现空格和注释行。出现空格和注释行。文件包含允许嵌套。文件包含允许嵌套。include“aaa.v”include“aaa.v”include“bbb.v”include“bbb.v”/合法!合法!includeinclude “file2.v”“file2.v”file1.vincludeinclude “file3.v”“file3

32、.v”file2.v(不包含不包含include include 命令命令)file3.v9.4.3 编译指示语句编译指示语句三、三、timescaletimescale语句语句时时间间尺尺度度语语句句用用于于定定义义跟跟在在该该命命令令后后模模块块的的时时间间单单位位和和时时间间精度。精度。timescaletimescale /时间时间单位单位用于定义模块中用于定义模块中仿真仿真时间和时间和延迟延迟时间的基准单位;时间的基准单位;时间时间精度精度用来声明该模块的用来声明该模块的仿真仿真时间时间和和延迟延迟时间时间的精确程度。的精确程度。在在同同一一程程序序设设计计里里,可可以以包包含含采采

33、用用不不同同时时间间单单位位的的模模块块。此此时时用用最小的时间精度值决定仿真的时间单位最小的时间精度值决定仿真的时间单位。格式格式格式格式MAX+PLUS II和和Quartus 都不支持!都不支持!通常用在测试文件中。通常用在测试文件中。9.4.3 编译指示语句编译指示语句 timescale 1ps/1ns /非法!非法!timescale 1ns/1ps /合法!合法!时时间间精精度度至至少少要要和和时时间间单单位位一一样样精精确确,时间精度值不能大于时间单位值时间精度值不能大于时间单位值!在在 timescaletimescale语语句句中中,用用来来说说明明时时间间单单位位和和时时

34、间间精精度度参参量量值值的数字必须是的数字必须是整数整数。其有效数字为其有效数字为1 1、1010、100100;单单位位为为秒秒(s s)、毫毫秒秒(msms)、微微秒秒(usus)、纳纳秒秒(nsns)、皮秒(皮秒(psps)、毫皮秒()、毫皮秒(fs fs)。)。9.4.3 编译指示语句编译指示语句例例 timescale语句应用举例。语句应用举例。timescale 10ns/1ns/时间单位为时间单位为10ns,时间精度为,时间精度为1nsreg sel;initial begin#10 sel=0;/在在10ns 10时刻,时刻,sel变量被赋值为变量被赋值为0#10 sel=1;

35、/在在10ns 20时刻,时刻,sel变量被赋值为变量被赋值为1 end 9.4.3 编译指示语句编译指示语句9.4.4 任务和函数语句任务和函数语句三、三、tasktask和和functionfunction语句语句tasktask和和functionfunction语句分别用来由用户定义任务和函数。语句分别用来由用户定义任务和函数。任任务务和和函函数数往往往往是是大大的的程程序序模模块块中中在在不不同同地地点点多多次次用用到到的的相相同同的的程程序段。序段。利利用用任任务务和和函函数数可可将将一一个个很很大大的的程程序序模模块块分分解解为为许许多多较较小小的的任任务务和和函数,便于理解和调

36、试。函数,便于理解和调试。输入、输出和总线信号的值可以传入、传出任务和函数。输入、输出和总线信号的值可以传入、传出任务和函数。当当希希望望能能够够对对一一些些信信号号进进行行一一些些运运算算并并输输出出多多个个结结果果(即即有有多多个个输输出出变变量)时,宜采用任务结构。量)时,宜采用任务结构。常常常常利利用用任任务务来来帮帮助助实实现现结结构构化化的的模模块块设设计计,将将批批量量的的操操作作以以任任务务的的形形式独立出来,使设计简单明了。式独立出来,使设计简单明了。1.1.任务(任务(tasktask)task task ;端口及数据类型声明语句;端口及数据类型声明语句;其他语句;其他语句

37、;endtaskendtask (端口(端口1,1,端口端口2,2,););MAX+PLUS II不支持不支持但但Quartus Quartus 支持!支持!任务定义任务定义任务定义任务定义任务调用任务调用任务调用任务调用包含定时控制语句的包含定时控制语句的任务是不可综合的!任务是不可综合的!9.4.4 任务和函数语句任务和函数语句 任务的定义与调用。任务的定义与调用。task my_task;input a,b;inout c;output d,e;/执行任务工作相应的语句执行任务工作相应的语句 c=foo1;d=foo2;/对任务的输出变量赋值对任务的输出变量赋值 e=foo3;endta

38、skmy_task(v,w,x,y,z);任务定义任务定义任务调用任务调用 当当任任务务启启动动时时,由由v v、w w和和x x传入的变量赋给了传入的变量赋给了a a、b b和和c c;当当任任务务完完成成后后,输输出出通通过过c c、d d和和e e赋给了赋给了x x、y y和和z z。注注1 1:任务的定义与调用必须在一个任务的定义与调用必须在一个modulemodule模块内模块内!注注2 2:任任务务被被调调用用时时,需需列列出出端端口口名名列列表表,且且必必须须与与任务定义中的任务定义中的I/OI/O变量变量一一对应一一对应!注注3 3:一个任务可以调用其他任务和函数。:一个任务可

39、以调用其他任务和函数。9.4.4 任务和函数语句任务和函数语句 通过任务调用完成通过任务调用完成4个个4位二进制输入数据的冒泡排序。位二进制输入数据的冒泡排序。任务的定义任务的定义任务的调用任务的调用9.4.4 任务和函数语句任务和函数语句sort4.v的测试文件的测试文件$random为为系系统统任任务务,返返回回一个一个32位的带符号的随机数;位的带符号的随机数;一般用法为:一般用法为:$random%b其中其中b0,它给出了一个范围在,它给出了一个范围在-b+1b-1之间的随机数。之间的随机数。$random%15通过位拼接操作,通过位拼接操作,产生一个产生一个014之间的随机数之间的随

40、机数。9.4.4 任务和函数语句任务和函数语句9.4.4 9.4.4 任务和函数语句任务和函数语句sort4.v的仿真波形的仿真波形task_Top.wlf按从小到大按从小到大的顺序排序的顺序排序9.4.4 9.4.4 任务和函数语句任务和函数语句2.2.函数(函数(functionfunction)函函数数的的目目的的是是通通过过返返回回一一个个用用于于某某表表达达式式的的值值,来来响响应应输输入入信信号号。适于对不同变量采取同一运算的操作适于对不同变量采取同一运算的操作。函函数数在在模模块块内内部部定定义义,通通常常在在本本模模块块中中调调用用,也也能能根根据据按按模模块块层层次次分分级级

41、命命名名的的函函数数名名从从其其他他模模块块调调用用。而而任任务务只只能能在在同同一一模模块块内内定义与调用!定义与调用!function function 函数名;函数名;端口声明;端口声明;局部变量定义;局部变量定义;其他语句;其他语句;endfunctionendfunction缺省则返回1 1位regreg型数据函数定义函数定义函数定义函数定义可以综合!可以综合!9.4.4 9.4.4 任务和函数语句任务和函数语句 ()注注1 1:函函数数的的调调用用是是通通过过将将函函数数作作为为调调用用函函数数的的表表达达式式中中的的操作数操作数来实现的!来实现的!与函数定义中的输入变量对应!注注

42、2 2:函函数数在在综综合合时时被被理理解解成成具具有有独独立立运运算算功功能能的的电电路路,每每调调用用一一次次函函数数,相相当当于于改改变变此此电电路路的的输入,以得到相应的计算结果。输入,以得到相应的计算结果。function7:0 gefun;/函数的定义函数的定义 input 7:0 x;/进行运算进行运算 gefun=count;/赋值语句赋值语句 endfunctionassign number=gefun(rega);/对函数的调用对函数的调用函数调用函数调用函数调用函数调用内部寄存器内部寄存器9.4.4 9.4.4 任务和函数语句任务和函数语句函函数数的的定定义义不不能能包包

43、含含任任何何时时间间控控制制语语句句用用延延迟迟#、事事件件控控制制 或或等等待待waitwait标识的语句。标识的语句。函数不能启动(即调用)任务!函数不能启动(即调用)任务!定定义义函函数数时时至至少少要要有有一一个个输输入入参参量量!且且不不能能有有任任何何输输出出或或输输入入/输输出出双双向变量向变量。在在函函数数的的定定义义中中必必须须有有一一条条赋赋值值语语句句,给给函函数数中中的的一一个个内内部部寄寄存存器器赋赋以函数的结果值,该内部寄存器与函数同名。以函数的结果值,该内部寄存器与函数同名。函数的使用规则函数的使用规则函数的使用规则函数的使用规则9.4.4 9.4.4 任务和函数

44、语句任务和函数语句 例例 利用函数对一个利用函数对一个8 8位二进制数中为位二进制数中为0 0的位进行计数。的位进行计数。只有输入变量内部寄存器对应函数的输入变量9.4.4 9.4.4 任务和函数语句任务和函数语句count0s_function.vwf9.4.4 9.4.4 任务和函数语句任务和函数语句 例例 阶乘运算函数阶乘运算函数内部寄存器clk的上升沿触发同步运算函数的调用函数的调用函数名被赋予的值函数名被赋予的值就是函数的返回值!就是函数的返回值!函数定义函数定义函数定义函数定义9.4.4 9.4.4 任务和函数语句任务和函数语句tryfunct.vtryfunct.v的测试模块的测

45、试模块模块元件例化模块元件例化对各变量进行对各变量进行初始化,并生初始化,并生成激励波形成激励波形产生时钟波形产生时钟波形9.4.4 9.4.4 任务和函数语句任务和函数语句tryfuncttop.vtryfuncttop.v的仿真波形的仿真波形(用用ModelsimModelsim编译、仿真编译、仿真)n n的的 阶阶 乘乘 n!=n!=n n(n-1)(n-1)(n-2)(n-2)215 5的的阶乘阶乘5!=5x4x3x5!=5x4x3x2x1=1202x1=1209.4.4 9.4.4 任务和函数语句任务和函数语句表表3-5 3-5 任务与函数的区别任务与函数的区别9.5 用库元件实现结构描述用库元件实现结构描述 9.5 用库元件实现结构描述用库元件实现结构描述

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com