第6章FPGA结构语句、系统任务、函数语句和显示系统任务要点分析.ppt

第6章FPGA结构语句、系统任务、函数语句和显示系统任务要点分析.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
函数的使用规则 与任务相比较函数的使用有较多的约束,下面给出的是函数的使用规则: 1?函数的定义不能包含有任何的时间控制语句,即任何用#、@标识的语句。 2函数不能启动任务。 3?定义函数时至少要有一个输入参量。 在函数的定义中必须有一条赋值语句给函数中的一个内部变量赋以函数的结果值,该内部变量具有和函数名相同的名字。 例子中定义了一个可进行阶乘运算的名为factorial的函数,该函数返回一个32位的寄存器类型的值。 module tryfact;//函数的定义 function[31:0] factorial; input[3:0]operand; reg[3:0]index; begin factorial = operand? 1 : 0; for(index=2;index=operand;index=index+1) factorial = index * factorial; end endfunction //函数的测试----------------------------- reg[31:0]result; reg[3:0]n; initial begin result=1; for(n=2;n=9;n=n+1) result = n * factorial(n)/((n*2)+1); $display(Finalresult=%d,result); end endmodule//模块结束 6.3、 系统函数 Verilog 语言为某些常用的操作提供了标准的系统任务(也称系统函数): 这些系统函数(任务)提供了屏幕显示、动态监视、暂停和结束仿真等功能。在Verilog HDL语言中每个系统函数前面都用一个标识符$来加以确认。下面对一些常用的系统函数逐一加以介绍。 1. $display和$write任务 格式: $display(p1,p2,....pn); $write(p1,p2,....pn);? 这两个系统任务的作用是用来输出信息,即将参数p2到pn按参数p1给定的格式输出。参数p1通常称为“格式控制”,参数p2至pn通常称为“输出表列”。这两个任务的作用基本相同。$display自动地在输出后进行换行,$write则不是这样。如果想在一行里输出多个信息,可以使用$write。在$display和$write中,其输出格式控制是用双引号括起来的字符串,它包括两种信息: (1)格式说明,由%和格式字符组成。它的作用是将输出的数据转换成指定的格式输出。格式说明总是由“%”字符开始的。表一中给出了常用的几种输出格式。 输出格式 说明 %h或%H 以十六进制数的形式输出 %d或%D 以十进制数的形式输出 %o或%O 以八进制数的形式输出 %b或%B 以二进制数的形式输出 %c或%C 以ASCII码字符的形式输出 %v或%V 输出网络型数据信号强度 %m或%M 输出等级层次的名字 %s或%S 以字符串的形式输出 %t或%T 以当前的时间格式输出 %e或%E 以指数的形式输出实型数 %f或%F 以十进制数的形式输出实型数 %g或%G 以指数或十进制数的形式输出实型数 普通字符:即需要原样输出的字符。其中一些特殊的字符可以通过表二中的转换序列来输出。下面表中的字符形式用于格式字符串参数中,用来显示特殊的字符。 换码序列 功能 \n 换行 \t 横向跳格(即跳到下一个输出区) \\ 反斜杠字符\ \ 双引号字符 \o 1到3位八进制数代表的字符 %% 百分符号% 在$display和$write的参数列表中,其“输出表列”是需要输出的一些数据,可以是表达式。下面举几个例子说明一下。 [例1]:module disp; initial begin $display(\\\t%%\n\\o123); end endmodule? 输出结果为 \ % S 从上面的这个例子中可以看到一些特殊字符的输出形式(八进制数123就是字符S)。 [例2]:module disp; reg[31:0] rval; initial begin rval=101; $display(rval=%h hex %d decimal, rval, rval); $display(rval=%o octal %b binary, rval, rval); end endmodule 其输出结果为: rvalhex 101 decimal rval=00000000145octal 00000000000000000000000001100101 binary 输出

文档评论(0)

挺进公司 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档