收藏 分销(赏)

第六讲-行为建模.ppt

上传人:Fis****915 文档编号:434295 上传时间:2023-09-23 格式:PPT 页数:82 大小:2.64MB
下载 相关 举报
第六讲-行为建模.ppt_第1页
第1页 / 共82页
第六讲-行为建模.ppt_第2页
第2页 / 共82页
第六讲-行为建模.ppt_第3页
第3页 / 共82页
第六讲-行为建模.ppt_第4页
第4页 / 共82页
第六讲-行为建模.ppt_第5页
第5页 / 共82页
点击查看更多>>
资源描述

1、第六讲第六讲 行为行为建模建模西安邮电学院通信工程系第第六讲六讲行为建模行为建模内容:v条件语句v分支语句v循环语句v任务与函数v禁止命名块和任务v常用系统任务和函数第一页,共八十二页。第六讲第六讲 行为行为建模建模西安邮电学院通信工程系条件语句(条件语句(ififelseelse)v语法1:if(条件表达式)块语句v条件表达式为逻辑真和逻辑1时执行块语句,其它如0、x、z均为条件不成立。v一条没有else语句的if语句映射到硬件上,形成的是一个锁存器。如:always(enableordada)if(enbale)out=data;enabledataout1dd0 xd第二页,共八十二页。

2、第六讲第六讲 行为行为建模建模西安邮电学院通信工程系条件语句(条件语句(ififelseelse)v语法2:if(条件表达式1)块语句1 else if(条件表达式2)块语句2 else if(条件表达式n)块语句n else 块语句n+1v常用于多路选择控制;v条件判断的先后顺序隐含条件的优先级关系;v注意有时电路设计不需要优先级(使用case语句描述可得到并行条件,综合器相关);v可以嵌套使用;v 如无块标识符,else语句与最近的if配对。第三页,共八十二页。第六讲第六讲 行为行为建模建模西安邮电学院通信工程系条件语句(条件语句(ififelseelse)v例:always(enable

3、ordada_aordata_b)/信号有变化执行if语句if(enable)out=data_a;/enable=1,执行elseout=data_b;/enable=0,执行v综合结果将产生一个二选一的多路选择器(MUX)。v等效于语句:assignout=(enable)?data_a:data_b;v条件要完备,否则产生锁存器。第四页,共八十二页。第六讲第六讲 行为行为建模建模西安邮电学院通信工程系条件语句(条件语句(ififelseelse)例:module dff_1(q,d,clear,clk);output q;input d,clear,clk;reg q;always(po

4、sedge clk)/时钟clk上升沿执行if语句操作 if(!clear)/时钟clk上升沿时刻,clear为0,q=0;/则输出q为0。else q=d;/时钟clk上升沿时刻,clear为1,d赋给q。endmodule同步清零D触发器描述第五页,共八十二页。第六讲第六讲 行为行为建模建模西安邮电学院通信工程系条件语句(条件语句(ififelseelse)例:module dff_2(q,d,clear,clk);output q;input d,clear,clk;reg q;always(negedge clear or posedge clk)if(!clear)/clear下升沿

5、时刻,clear为0,q=0;/则输出q为0。与clk无关。else q=d;/时钟clk上升沿时刻,clear为1,d赋给q。endmodule异步清零D触发器第六页,共八十二页。第六讲第六讲 行为行为建模建模西安邮电学院通信工程系条件语句(条件语句(ififelseelse)举例:异步清零8位计数器module dff_3(q,clear,clk);output q7:0;input clear,clk;reg q;always(negedge clear or posedge clk)if(!clear)/clear下升沿时刻,clear为0,q=8d0;/则输出q为0。与clk无关。e

6、lse q=q+1;/时钟clk上升沿时刻,clear为1,q+1赋给q。endmodule第七页,共八十二页。第六讲第六讲 行为行为建模建模西安邮电学院通信工程系分支语句(分支语句(casecase)v常用于译码和有限状态机的描述。分类:case、casez、casex。v语法:case(敏感表达式)值1:块语句1 值2:块语句2 值n:块语句ndefault:块语句n+1endcasev敏感表达式与各项值的比较是按位作全等比较。第八页,共八十二页。第六讲第六讲 行为行为建模建模西安邮电学院通信工程系分支语句(分支语句(casecase)v例:module demo_case(sig);in

7、put sig;always(sig)case(sig)1b1:$display(“signal value is 1”);1b0:$display(“signal value is 0”);1bx:$display(“signal is unknown”);1bz:$display(“signal is high impedence”);endcase endmodule第九页,共八十二页。第六讲第六讲 行为行为建模建模西安邮电学院通信工程系分支语句(分支语句(casecase)vcasez:忽略比较表达式两边的z部分vcasex:忽略比较表达式两边的x部分v举例:casez(r3:0)4b

8、011z:表达式1;/不比较Z 4b01xz:表达式2;/不比较Z default:表达式3;endcase第十页,共八十二页。第六讲第六讲 行为行为建模建模西安邮电学院通信工程系分支语句(分支语句(casecase)v例:always(selord1ord2ord3ord4)case(sel)2b00:out=d1;2b01:out=d2;2b10:out=d3;2b11:out=d4;endcase4选1多路选择器第十一页,共八十二页。第六讲第六讲 行为行为建模建模西安邮电学院通信工程系分支语句(分支语句(casecase)v例:moduledecode(sel,out);input2:0

9、sel;output7:0out;reg7:0out;always(sel)case(sel)3b000:out=8b0000_0001;3b001:out=8b0000_0010;3b010:out=8b0000_0100;3b011:out=8b0000_1000;3b100:out=8b0001_0000;3b101:out=8b0010_0000;3b110:out=8b0100_0000;3b111:out=8b1000_0000;endcaseendmodule3-8译码器第十二页,共八十二页。第六讲第六讲 行为行为建模建模西安邮电学院通信工程系分支语句(分支语句(casecase

10、)第十三页,共八十二页。第六讲第六讲 行为行为建模建模西安邮电学院通信工程系循环语句循环语句有四种循环语句:vrepeat:将一块语句循环执行确定次数。repeat(次数表达式)vwhile:在条件表达式为真时一直循环执行 while(条件表达式)vforever:重复执行直到仿真结束 forever vfor:在执行过程中对变量进行计算和判断,在条件满足时执行 for(赋初值;条件表达式;计算)综合工具还不支持第十四页,共八十二页。第六讲第六讲 行为行为建模建模西安邮电学院通信工程系repeatrepeat语句语句vrepeat:将一块语句循环执行确定次数。repeat(次数表达式)语句v例

11、:/从0增加到128计数显示integercount;initialbegincount=0;repeat(128)begin$dispay(“count=%d”,count);count=count+1;endend第十五页,共八十二页。第六讲第六讲 行为行为建模建模西安邮电学院通信工程系1001opax1011opb0000100100010010000000000100100001100011/Parameterizable shift and add multipliermodule multiplier(result,op_a,op_b);parameter size=4;input

12、 size:1 op_a,op_b;output 2*size:1 result;reg 2*size:1 shift_opa,result;reg size:1 shift_opb;always(op_a or op_b)begin result=0;shift_opa=op_a;/零扩展至零扩展至8位位 shift_opb=op_b;repeat(size)begin#10 if(shift_opb1)result=result+shift_opa;shift_opa=shift_opa 1;/Shift right end endendmodule为什么要说明一个size长shift_o

13、pb变量,不直接用op_b变量?repeatrepeat语句语句第十六页,共八十二页。第六讲第六讲 行为行为建模建模西安邮电学院通信工程系while语句语句.reg 7:0 tempreg;reg 3:0 count;.count=0;while(tempreg)/统计统计tempreg中连续中连续 1 的个的个数数 begin if(tempreg 0)count=count+1;tempreg=tempreg 1;/Shift right endend.vwhile:只要表达式为真(不为0),则重复执行一条语句(或语句块)while(条件表达式)v例:第十七页,共八十二页。第六讲第六讲 行

14、为行为建模建模西安邮电学院通信工程系例:/*在标志向量flag中(从最低位起)寻找第一个为1的位*/defineTRUE1b1defineFALSE1b0reg15:0flag;integeri;regcontinue;initialbeginflag=16b0010_0000_0000_0000;i=0;continue=TRUE;while(i16)&continue)beginif(flagi)begin$display(“encounteredaTRUEbitatelementnumber%d”,i);continue=FALSE;endi=i+1;endend第十八页,共八十二页。第

15、六讲第六讲 行为行为建模建模西安邮电学院通信工程系beginif(flagi)begin$display(“encounteredaTRUEbitatelementnumber%d”,i);disableblock1;/禁用block1endi=i+1;endend例:命名块的禁用例:命名块的禁用/*在标志向量flag中(从最低位起)寻找第一个为1的位*/reg15:0flag;integeri;regcontinue;initialbeginflag=16b0010_0000_0000_0000;i=0;begin:block1while(i16)第十九页,共八十二页。第六讲第六讲 行为行为

16、建模建模西安邮电学院通信工程系forever语句语句.reg clk;initial begin clk=0;forever begin#5 clk=1;#10 clk=0;endend.vforever:一直执行到仿真结束。forever vforever应该是过程块中最后一条语句。其后的语句将永远不会执行。vforever语句不可综合,通常用于testbench描述。这种行为描述方式可以非常灵活的描述时钟,可以控制时钟的开始时间及周期占空比。仿真效率也高。第二十页,共八十二页。第六讲第六讲 行为行为建模建模西安邮电学院通信工程系for语句语句v for:只要条件为真就一直执行。for(赋初

17、值;条件表达式;计算)v例:/val 中中X检测检测for(index=0;index size;index=index+1)begin if(val index=1bx)$display(found an X);end/存储器初始化存储器初始化;“!=0”仿真效率高仿真效率高for(i=size;i!=0;i=i-1)memory i-1=0;/num 阶乘序列阶乘序列factorial=1;for(j=num;j!=0;j=j-1)factorial=factorial*j;第二十一页,共八十二页。第六讲第六讲 行为行为建模建模西安邮电学院通信工程系for语句例语句例第二十二页,共八十二页

18、。第六讲第六讲 行为行为建模建模西安邮电学院通信工程系例1:用for语句来初始化memorybegin:init_memreg7:0tempi;for(tempi=0;tempimemsize;tempi=tempi+1)memorytempi=0;end第二十三页,共八十二页。第六讲第六讲 行为行为建模建模西安邮电学院通信工程系例2:用for循环语句来实现前面用repeat语句实现的乘法器parametersize=8,longsize=16;regsize:1opa,opb;reglongsize:1result;begin:multintegerbindex;result=0;for(b

19、index=1;bindex=size;bindex=bindex+1)if(opbbindex)result=result+(opa1)if(tempreg0)count=count+1;end第二十五页,共八十二页。第六讲第六讲 行为行为建模建模西安邮电学院通信工程系例:defineMAX_STATES32integerstate0:MAX_STATES-1;integeri;initialbeginfor(i=0;i32;i=i+2)statei=0;for(i=1;i32;i=i+2)statei=1;end实现了什么功能?实现了什么功能?第二十六页,共八十二页。第六讲第六讲 行为行为

20、建模建模西安邮电学院通信工程系作业作业设计一个将10M时钟分频为500k的时钟设计一个8位的计数器(带有清零端)第15周中交。第二十七页,共八十二页。第六讲第六讲 行为行为建模建模西安邮电学院通信工程系任务与函数任务与函数模块定义module(portlist)时序特性timigspecifications端口说明Portdeclarations输入input双向inout输出output数据类型说明Datatypedeclarations线网类型net参数parameter寄存器类型register电路功能描述Circuitfunctionality子程序子程序subprograms任务任务

21、task函数函数function系统任务和函数系统任务和函数Systemtask&function编译指令Compilerdirectives连续赋值Continuousassignment赋值语句assign过程块过程块Proceduralblocks过程块语句过程块语句initialblockalwaysblock模块实例instantiation第二十八页,共八十二页。第六讲第六讲 行为行为建模建模西安邮电学院通信工程系任务与函数任务与函数可以通过把代码分成小的模块或者使用任务和函数,来把一项任务分成许多较小的、易于管理的部分,从而提高代码的重用性。函数任务能调用另一个函数,但不能调用另

22、一个任务任务能调用另一个任务,也能调用另一个函数函数总是在仿真时刻0就开始执行任务可以在非零仿真时刻执行函数一定不能包含任何延迟、事件或者时序控制声明语句任务可以包含延迟、事件或者时序控制声明语句函数至少有一个输入变量,可以有多个输入变量任务可以没有或者有多个输入、输出和双向变量函数只能返回一个值,不能有输出或者双向(inout)变量任务不返回任何值,可以通过输出或者双向变量传递多个值第二十九页,共八十二页。第六讲第六讲 行为行为建模建模西安邮电学院通信工程系任务和函数都必须在模块的内部进行定义,其作用的范围仅局限于定义它们的模块。任务用于替代普通的verilog代码,其中可以包含延迟、时序、

23、事件等语法结构,并且可以具有多个输出变量。函数用于代替表示纯组合逻辑的verilog代码,在仿真时刻0就开始执行,只能有一个输出。函数一般用于完成各类转换和常用的计算。任务与函数任务与函数第三十页,共八十二页。第六讲第六讲 行为行为建模建模西安邮电学院通信工程系任务与函数任务与函数v任务格式:task 任务名;输入输出端口与类型说明 局部变量说明 块语句 endtaskv必须在模块内调用任务和函数。v可以在任务和函数中声明局部变量,如寄存器、时间、整数、实数和事件,但不能声明线网类型的变量。v在任务和函数中只能使用行为级语句,但是不能包括always和initial块。v所有的输出都是真正的本

24、地寄存器类型的数据。v只有当任务或函数调用并执行完后,才能有返回值。例如:当任务或函数中包含一个forever循环时,就不可能有返回值。v函数格式 function 函数名;输入端口与类型说明;局部变量说明;块语句 endfunction第三十一页,共八十二页。第六讲第六讲 行为行为建模建模西安邮电学院通信工程系任务任务用关键字task和endtask进行声明。如果子程序满足下面任意一个条件,则必须使用任务而不能使用函数。子程序中包含延迟、时序或者事件控制结构没有输出或者输出变量的个数大于1没有输入变量使用关键字input、output和inout对任务的输入输出变量进行声明。除了在模块中,任

25、务也可以在其他任务或函数中被调用(函数能调用另外一个函数,但不能调用另一个任务)模块的输入输出端口用来和外部信号相连接,而任务的输入输出变量则用来向任务中传入或从任务中传出变量。第三十二页,共八十二页。第六讲第六讲 行为行为建模建模西安邮电学院通信工程系任务实例任务实例例1/定义一个名为operation的模块,其内部有一个名为bitwise_oper的任务moduleoperation;parameterdelay=10;reg15:0A,B;reg15:0AB_and,AB_or,AB_xor;always(AorB)beginbitwise_oper(AB_and,AB_or,AB_xo

26、r,A,B);/*启动bitwise_oper任务,该任务提供两个输入变量A和B,三个输出变量AB_and,AB_or,AB_xor.变量的指定必须按照任务定义时的声明次序*/end第三十三页,共八十二页。第六讲第六讲 行为行为建模建模西安邮电学院通信工程系/定义bitwise_oper任务taskbitwise_oper;output15:0ab_and,ab_or,ab_xor;/任务的输出变量input15:0a,b;/任务的输入变量begin#delayab_and=a&b;/任务和函数中只能使用行为级语句ab_or=a|b;ab_xor=ab;endendtaskendmodule第

27、三十四页,共八十二页。第六讲第六讲 行为行为建模建模西安邮电学院通信工程系任务实例任务实例例2/定义包含名为asymmetric_sequence的任务的模块modulesequence;regclock;initialinit_sequence;/启动init_sequence任务alwaysbeginasymmetric_sequence;/启动asymmetric_sequence任务end第三十五页,共八十二页。第六讲第六讲 行为行为建模建模西安邮电学院通信工程系/定义名为init_sequence(初始化序列)的任务taskinit_sequence;beginclock=1b0;e

28、ndendtask/定义能产生非对称序列的任务/根据模块中定义的来操作时钟clock信号taskasymmetric_sequence;begin#12clock=1b0;#5clock=1b1;#2clock=1b0;#10clock=1b1;endendtaskendmodule在任务中可以直接对任务所在模块中声明的寄存器类型的变量进行操作。第三十六页,共八十二页。第六讲第六讲 行为行为建模建模西安邮电学院通信工程系任务特点任务特点v任务调用是通过在Verilog模块中写入任务名来实现的。v任务中可以包含inputinput,outputoutput和inoutinout参数。v传递给任务

29、的参数与任务I/O声明参数的顺序相同。虽然传递给任务的参数名可以和任务内部I/O声明的参数名相同,但是为了提高任务的模块化程度,传递给任务的参数名通常不使用与任务内部I/O声明的参数名相同的参数名。v在任务中可以使用时间控制。第三十七页,共八十二页。第六讲第六讲 行为行为建模建模西安邮电学院通信工程系任务参数传递任务参数传递module mult(clk,a,b,out,en_mult);input clk,en_mult;input 3:0 a,b;output 7:0 out;reg 7:0 out;task multme;/任务定义 input 3:0 xme,tome;output 7

30、:0 result;wait(en_mult)result=xme*tome;endtask always (posedge clk)multme(a,b,out);/任务调用传递给任务的参数与任务I/O声明参数 /的顺序相同endmodule第三十八页,共八十二页。第六讲第六讲 行为行为建模建模西安邮电学院通信工程系自动(可重入)任务自动(可重入)任务任务在本质上是静态的,任务中的所有声明项的地址空间是静态分配的,同时并发执行的多个任务共享这些存储区。因此,如果这个任务在模块中的两个地方被同时调用,则这两个任务调用将对同一块地址空间进行操作。操作的结果很有可能是错误的。为了避免这个问题,ve

31、rilog通过在task关键字后面添加automatic关键字,使任务成为可重入的,这样声明的任务也称为自动任务。每次调用时,在动态任务中声明的所有模块项的存储空间都是动态分配的,每次调用都对各自独立的地址空间进行操作。这样,每个任务调用只对自己所拥有的独立变量副本进行操作,因此可得到正确的执行结果。如果某一任务有可能在程序代码的两处被同时调用,建议使用自动任务。第三十九页,共八十二页。第六讲第六讲 行为行为建模建模西安邮电学院通信工程系自动任务实例自动任务实例/包含自动任务的模块/本例只给出了模块的一小部分/本模块共有两个时钟。clk2的频率是clk的两倍,并与clk同步/*下面两个alwa

32、ys块将会在clk的正跳变沿同时调用bitwise_xor任务,因为该任务是可以重入的,所以并发的同时调用能正常运行*/always(posedgeclk)bitwise_xor(ef_xor,e,f);always(posedgeclk2)bitwise_xor(cd_xor,c,d);endmodulemoduletop;reg15:0cd_xor,ef_xor;reg15:0c,d,e,f;taskautomaticbitwise_xor;output15:0ab_xor;input15:0a,b;begin#delayab_and=a&b;ab_or=a|b;ab_xor=ab;end

33、endtask第四十页,共八十二页。第六讲第六讲 行为行为建模建模西安邮电学院通信工程系上机上机通过任务完成对四个四位数按从小到大进行重新组合第四十一页,共八十二页。第六讲第六讲 行为行为建模建模西安邮电学院通信工程系函数函数verilog中使用关键字function和endfunction来进行函数的声明。对于一个子程序来说,如果下面的所有条件全部成立,则可以使用函数来完成。在子程序内不含有延迟、时序或者控制电路子程序只有一个返回值至少有一个输入变量没有输出或双向变量不含有非阻塞赋值语句第四十二页,共八十二页。第六讲第六讲 行为行为建模建模西安邮电学院通信工程系函数声明和调用函数声明和调用当

34、函数声明的时候,在Verilog内部隐含地声明了一个名为函数标识符的寄存器类型的变量,函数的输出结果将通过这个寄存器类型变量被传递回来。函数调用通过指明函数名和输入变量来进行。在函数执行结束时,返回值被传回到调用处。在函数中不能调用任务,只能调用其他函数。第四十三页,共八十二页。第六讲第六讲 行为行为建模建模西安邮电学院通信工程系函数举例函数举例例1:/定义一个模块,其中包含能计算偶校验位的函数calc_paritymoduleparity;reg31:0addr;regparity;/每当地址值发生变化,计算新的偶校验位always(addr)beginparity=calc_parity(

35、addr);/第一次启动校验位计算函数calc_parity$display(“Paritycalculated=%b”,calc_parity(addr);end第四十四页,共八十二页。第六讲第六讲 行为行为建模建模西安邮电学院通信工程系functioncalc_parity;input31:0address;begincalc_parity=address;/返回所有地址位的异或值/使用隐含的内部寄存器calc_parityendendfunctionendmodule第四十五页,共八十二页。第六讲第六讲 行为行为建模建模西安邮电学院通信工程系例2:/定义一个包含移位函数的模块module

36、shifter;/左或右移位寄存器defineLEFT_shift1b0defineRIGHT_shift1b1reg31:0addr,left_addr,right_addr;regcontrol;/每当新地址出现时就计算右移位和左移位的值always(addr)beginleft_addr=shift(addr,LEFT_shift);/调用具有左右移位功能的函数right_addr=shift(addr,RIGHT_shift);end第四十六页,共八十二页。第六讲第六讲 行为行为建模建模西安邮电学院通信工程系/定义移位函数,其输出是一个32位的值function31:0shift;/声

37、明了函数返回值的位宽input31:0address;inputcontrol;beginshift=(control=LEFT_shift)?(address1):(address1);/根据控制信号设置输出值endendfunctionendmodule第四十七页,共八十二页。第六讲第六讲 行为行为建模建模西安邮电学院通信工程系函数实例函数实例例3:moduleorand(a,b,c,d,e,out);input7:0a,b,c,d,e;output7:0out;reg7:0out;always(aorborcordore)out=f_or_and(a,b,c,d,e);/函数调用func

38、tion7:0f_or_and;input7:0a,b,c,d,e;if(e=1)f_or_and=(a|b)&(c|d);elsef_or_and=0;endfunctionendmodule第四十八页,共八十二页。第六讲第六讲 行为行为建模建模西安邮电学院通信工程系函数特点函数特点v函数定义不能包含定时控制语句,即任何用、或wait来标识的语句v函数必须含有输入,但不能含有输出或双向信号;v函数中不使用非阻塞赋值语句。v一个函数只能返回一个值,该值的变量名与函数同名,数据类型默认为reg类型。v传递给函数参数的顺序与函数输入参数声明的顺序相同。v函数定义必须包含在模块定义之内。v函数不能调

39、用任务,但任务可以调用函数。v虽然函数只能返回一个值,但是它们的返回值可以直接的赋给一个信号拼接,从而使它们等效有多个输出。o1,o2,o3,o4=f_or_and(a,b,c,d,e);v自动函数:functionautomatic函数名;自动函数有独立的本地变量,可以同时在多处调用或递归调用。第四十九页,共八十二页。第六讲第六讲 行为行为建模建模西安邮电学院通信工程系函数特点函数特点v在函数中无论多少次对函数名进行赋值,值只返回一次。下面的函数中声明了一个内部整型变量I。modulefoo(loo,goo);input7:0loo;output7:0goo;/可以从连续赋值中调用函数wir

40、e7:0goo=zero_count(loo);function3:0zero_count;input7:0in_bus;integerI;beginzero_count=0;for(I=0;I=2)factorial=factorial(oper-1)*oper;/递归调用elsefactorial=1;endendfunction/调用该函数integerresult;initialbeginresult=factorial(4);/计算4的阶乘,并显示结果$display(“Factorialof4is%d,result”);endendmodule第五十二页,共八十二页。第六讲第六讲

41、行为行为建模建模西安邮电学院通信工程系禁止命名块和任务禁止命名块和任务vdisable语句用来终止命名块或任务的执行,因此可以在执行所有的语句前,就能从命名块或任务的执行中返回。语法:语法:disable块名;或disable任务名;vdisable可用来从循环中退出、处理错误条件以及根据控制信号来控制某些代码段是否被执行。对块语句的禁用导致紧接在块后面的那条语句被执行。v在综合中一般不支持disable语句。第五十三页,共八十二页。第六讲第六讲 行为行为建模建模西安邮电学院通信工程系禁止命名块和任务例禁止命名块和任务例moduledo_arith(out,a,b,c,d,e,clk,en_m

42、ult);inputclk,en_mult;input7:0a,b,c,d,e;output15:0out;reg15:0out;always(posedgeclk)begin:arith_block/*命名块*reg3:0tmp1,tmp2;/*本地变量*tmp,tmp2=f_or_and(a,b,c,d,e);/函数调用if(en_mult)multme(tmp1,tmp2,out);/任务调用endalways(negedgeen_mult)begin/停止计算disablemultme;/*禁止任务的执行*diablearith_block;/*禁止命名块的执行*end/在此定义任务和

43、函数endmodle第五十四页,共八十二页。第六讲第六讲 行为行为建模建模西安邮电学院通信工程系系统任务和函数系统任务和函数vVerilogHDL提供了内置的系统任务和系统函数,即在语言中预定义的任务和函数。它们分为以下几类:1)显示任务(displaytask)2)文件输入/输出任务(FileI/Otask)3)时间标度任务(timescaletask)4)仿真控制任务(simulationcontroltask)5)时序验证任务(timingchecktask)6)PLA建模任务(PLAmodelingtask)7)随机建模任务(stochasticmodelingtask)8)实数变换函

44、数(conversionfunctionsforreal)9)概率分布函数(probabilisticdistributionfunction)第五十五页,共八十二页。第六讲第六讲 行为行为建模建模西安邮电学院通信工程系显示类任务显示类任务v显示任务将特定信息输出到标准输出设备,并自动输出换行符;而写入任务输出特定信息时不带有换行符。显示任务:$display格式说明,由%和格式字符组成。它的作用是将输出的数据转换成指定的格式输出。格式说明总是由“”字符开始的。对于不同类型的数据用不同的格式输出。表一中给出了常用的几种输出格式。第五十六页,共八十二页。第六讲第六讲 行为行为建模建模西安邮电学院

45、通信工程系输出格式说明%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以指数或十进制数的形式输出实型数第五十七页,共八十二页。第六讲第六讲 行为行为建模建模西安邮电学院通信工程系v除普通字符外,一些特殊的字符可以通过表二中的转换序列来输出。下面表中的字符形式用于格式字符串参数中,用来显示特殊

46、的字符。换码序列功能n换行t横向跳格(即跳到下一个输出区)反斜杠字符双引号字符o1到3位八进制数代表的字符%百分符号%第五十八页,共八十二页。第六讲第六讲 行为行为建模建模西安邮电学院通信工程系在$display的参数列表中,其“输出表列”是需要输出的一些数据,可以是表达式。下面举几个例子说明一下。例1:moduledisp;initialbegin$display(t%n123);endendmodule输出结果为%S从上面的这个例子中可以看到一些特殊字符的输出形式(八进制数123就是字符S)。第五十九页,共八十二页。第六讲第六讲 行为行为建模建模西安邮电学院通信工程系输出数据的显示宽度输出

47、数据的显示宽度在$display中,输出列表中数据的显示宽度是自动按照输出格式进行调整的。这样在显示输出数据时,在经过格式转换以后,总是用表达式的最大可能值所占的位数来显示表达式的当前值。在用十进制数格式输出时,输出结果前面的0值用空格来代替。对于其它进制,输出结果前面的0仍然显示出来。可以通过在%和表示进制的字符中间插入一个0自动调整显示输出数据宽度的方式。如:$display(d=%0ha=%0h,data,addr);这样在显示输出数据时,在经过格式转换以后,总是用最少的位数来显示表达式的当前值。第六十页,共八十二页。第六讲第六讲 行为行为建模建模西安邮电学院通信工程系例3:module

48、printval;reg11:0r1;initialbeginr1=10;$display(Printingwithmaximumsize=%d=%h,r1,r1);$display(Printingwithminimumsize=%0d=%0h,r1,r1);endendmodule输出结果为:Printingwithmaximumsize=10=00a:Printingwithminimumsize=10=a;第六十一页,共八十二页。第六讲第六讲 行为行为建模建模西安邮电学院通信工程系如果输出列表中表达式的值包含有不确定的值或高阻值,其结果输出遵循以下规则:(1).在输出格式为十进制的情况

49、下:如果表达式值的所有位均为不定值,则输出结果为小写的x。如果表达式值的所有位均为高阻值,则输出结果为小写的z。如果表达式值的部分位为不定值,则输出结果为大写的X。如果表达式值的部分位为高阻值,则输出结果为大写的Z。第六十二页,共八十二页。第六讲第六讲 行为行为建模建模西安邮电学院通信工程系(2).在输出格式为十六进制和八进制的情况下:每4位二进制数为一组代表一位十六进制数,每3位二进制数为一组代表一位八进制数。如果表达式值相对应的某进制数的所有位均为不定值,则该位进制数的输出的结果为小写的x。如果表达式值相对应的某进制数的所有位均为高阻值,则该位进制数的输出结果为小写的z。如果表达式值相对应

50、的某进制数的部分位为不定值,则该位进制数输出结果为大写的X。如果表达式值相对应的某进制数的部分位为高阻值,则该位进制数输出结果为大写的Z。第六十三页,共八十二页。第六讲第六讲 行为行为建模建模西安邮电学院通信工程系对于二进制输出格式,表达式值的每一位的输出结果为0、1、x、z。语句输出结果:$display(%d,1bx);输出结果为:x$display(%h,14bx0_1010);输出结果为:xxXa$display(%h%o,12b001x_xx10_1x01,12b001_xxx_101_x01);输出结果为:XXX1x5X第六十四页,共八十二页。第六讲第六讲 行为行为建模建模西安邮电

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
百度文库年卡

猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 行业资料 > 医药制药

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服