语法要点详细讲解(编辑修改稿)内容摘要:
传递给任务的变量与任务 I/O端口变量的声明次序相同。 虽然传递给任务的变量名可以和任务内声明的 I/O端口变量名相同 , 但是为了使任务成为一个独立的可共用的任务块 , 建议不要使用与任务内声明的 I/O端口变量名相同的变量名 , 最好给传递到任务的变量起新的不同的名字。 在任务中可以使用时间控制。 任务使 Verilog有更广阔的适用范围。 关键字 disable可以用来禁止任务的执行。 语法详细讲解 Verilog 任务 [注意 ]: 不要在程序的不同部分同时调用同一个任务。 这是因为任务只有一组本地变量 , 同一时刻调用两次相同的任务将会导致错误。 这种情况常发生在使用定时控制的任务中。 在任务或函数中 , 引用父模块中声明的变量时要特别注意 ( 即注意变量的层次命名规则 )。 若想在其它模块中调用任务或函数 , 该任务和函数中所使用的变量必须全都包含在输入 /输出口列表中。 语法详细讲解 Verilog 任务 下面模块中的任务只含有一个双向总线 ( inout) 端口和一个内部变量 , 没有其它输入端口 、 输出端口和定时控制 , 没有引用模块变量 , 不显示任何内容。 在任务调用时 , 任务的输入变量 ( 端口 ) 在任务内部被当作寄存器类型变量处理。 语法详细讲解 Verilog 任务 parameter MAX_BITS=8。 reg [MAX_BITS:1] D。 task reverse_bits。 inout [7:0] data。 //双向总线端口被当作寄存器类型。 integer K。 for (k=0。 kMAX_BITS。 K=K+1) reverse_bits [MAXBITS – (K+1)] = data[K]。 endtask always @ (posedge clk) reverse_bits (D)。 …… 语法详细讲解 Verilog 任务 下面模块中定义的任务含有输入、输出、时间控制和一个内部变量,并且引用了一个本模块的变量,但是没有输出,不显示任何内容。 任务调用时变量顺序应与任务定义中声明的顺序相同。 语法详细讲解 Verilog 任务 module mult(clk, a, b, out, en_mult)。 input clk, en_mult。 input [3:0] a, b。 output [7:0] out。 reg [15:0] out。 always @ (posedge clk) multme(a, b, out)。 //任务调用 task multme。 //任务定义 input [3:0] xme, tome。 output [7:0] result。 wait (en_mult) result=xme*tome。 endtask endmodule 语法详细讲解 Verilog 任务 module orand (a, b, c, d, e, out)。 input [7:0] a, b, c, d, e。 output [7:0] out。 reg [7:0] out。 always @ (a or b or c or d or e) out = f_or_and (a, b, c, d, e)。 //函数调用 function [7:0] f_or_and。 input [7:0] a, b, c, d, e。 if (e= =1) f_or_and = (a|b) amp。 (c|d)。 else f_or_and=0。 endfunction endmodule 语法详细讲解 Verilog 函数 虽然函数不能包含定时控制 ,但是可以在包含定时控制的过程块中调用函数。 在模块中 ,使用名为 f_or_and的函数时 ,是把它作为名为 f_or_and 的寄存器类型变量来处理的。 语法详细讲解 Verilog 函数 要点 函数定义不能包含任何定时控制语句。 函数必须至少有一个输入 , 但绝不能含有任 何输出和总线口; 一个函数只能返回一个值 , 该值的变量名与 函数同名 , 数据类型默认为 reg类型。 传递给函数的变量顺序与函数输入口声明的 顺序相同。 函数定义必须包含在模块定义之内。 函数不能调用任务 , 但任务可以调用函数。 函数使 Verilog有更广阔的适用范围。 虽然函数只能返回一个值 , 但是它的返回值 可以直接赋给一个由多个子信号拼接构成的 信号变量 , 使其实际等效于产生了多个输出。 {o1, o2, o3, o4} = f_or_and(a, b, c, d, e)。 语法详细讲解 Verilog 函数 在函数定义时 , 如果在函数名前面定义了位宽 , 该函数就可以返回由多位构成的矢量。 如果定义函数的语句比较多时 , 可以用 begin 和 end 把它们组合起来。 在函数内 , 无论以函数名命名的变量被赋了多少次值 , 函数只有一个返回值。 下例中的函数 , 声明了一个内部整型变量。 举例说明如下: 语法详细讲解 Verilog 函数 module foo。 input [7:0] loo。 //也可以用连续赋值语句调用函数 wire [7:0] goo = zero_count (loo)。 function [3:0] zero_count。 input [7:0] in_bus。 integer I。 begin zero_count = 0。 for (I=0。 I8。 I= I+1) if (!in_bus[I]) zero_count = zero_count +1。 end endfunction endmodule 语法详细讲解 Verilog 函数 若把函数定义为整型 、 实型或时间类型 , 就可以返回相应类型的数据。 我们可以在任何类型的表达式中调用函数。 module checksub(neg,in_a,in_b)。 output neg。 input a, b。 reg neg。 function integer subtr。 input [7:0] in_a, in_b。 subtr = in_a – in_b。 //运算结果可以为负数 endfunction 语法详细讲解 Verilog 函数 always @ (a or b) begin if ( subtr (a,b) 0) neg = 1。 else neg = 0。 end endmodule 语法详细讲解 Verilog 函数 函数类型 、 端口和行为定义时也可以使用参数 , 这样就可以构成参数化函数使其返回的数据类型 、 输入端口的位宽等很容易做修改。 所以参数化函数就有更广泛的适用范围。 语法详细讲解 Verilog 函数 … . parameter MAX_BITS =8。 reg [MAX_BITS:1] D。 function [ MAX_BIT:1] reverse_bits。 input [7:0] data。 for(K=0。 K MAX_BITS。 K=K+1) reverse_bits[ MAX_BITS – (K+1)] = data [K]。 endfunction always @ (posedge clk) begin … . D= reverse_bits(D)。 … .. end ……… 语法详细讲解 Verilog 函数 语法详细讲解 命名块 可以通过在关键字 begin或 fork后加上: 〈 块名 〉 来给块命名。 module named_blk。 …… begin :seq_blk …… end …… fork : par_blk …… join …… endmodule 可以在命名块中声明本地变量。 可以使用 disable禁止命名块。 注意: 命名块使 Verilog有更广阔的适用范围。 命名块的使用缩短了仿真的时间。 语法详细讲解 命名块 语法详细讲解 禁止命名块和任务 module do_arith(out, a, b, c, d, e, clk, en_mult)。 input clk, en_mult。 input [7:0] a, b, c, d, e。 output [15:0] out。 reg [14:0] out。 always @(posedge clk) begin : arith_block //***命名名为 arith_block的块 *** reg [3:0] tmp1, tmp2。 //***本地变量 *** {tmp, tmp2} = f_or_and(a, b, c, d, e)。 // 函数调用 if(en_mult) multme(tmp1, tmp2, out)。 //任务调用 end 语法详细讲解 禁止命名块和任务 always @(negedge en_mult) begin //停止计算 disable multme。 //**禁止任务的执行 diable arith_block。 //**禁止命名块的执行 end //在此定义任务和函数 ………… .. endmodle 注意: disable语句用来终止命名块或任务的执行。 这是指在尚未执行该命名块或任务任何一条语句前 , 就从该命名块 /任务执行中返回。 语法: disable 〈 块名 〉 或 disable 〈 任务名 〉 禁止执行命名块或任务后 , 所有在事件队列中由该命名块/任务安排的事件都将被。语法要点详细讲解(编辑修改稿)
相关推荐
niix标准误差(标准差 ): 标准偏差-贝塞尔公式: 标准误差的物理意义 21)0( f 若测量的标准误差 很 小,则测得值的离散性小,重复测量所得的结果相互接近, 测量的精密度高 ; 如果 很大,误差分布的范围就较宽,说明测得值的离散性大, 测量的精密度低。 算术平均值的标准偏差与测量次数的影响 )1(12nnnSSniixxs 0 5 10 n 15 0 5 10
○○○ ○○○ ○ ○○○○○ ○○ ○○ ○○ ○ ○ ○ ○ ○ ○ 小练习 小猴子新买了 8本本子,他想把这 8本本子平均分,可是他不会,你能帮帮他吗。 现在每桌上都有 8本本子,请你们以4人小组为单位,先自己分一分,看看可以怎样分,再把你的分法和你的组员交流一下。 在学生动手操作后,各组汇报各种分法。 ○○○○ ○○○○ ○○ ○○ ○○ ○○ ○ ○ ○ ○ ○ ○ ○ ○
子 》 —— 茅盾 —— 现代 《 寒夜 》 —— 李芾甘 —— 现代 D、 《 罗密欧与朱丽叶 》 —— 莎士比亚 —— 英国 《 钢铁是怎样炼成的 》 —— 高尔基 —— 前苏联 D 下列作品、作家、国别(或朝代),对应正确的一项是( ) A、 《 复活 》 —— 阿 托尔斯泰 —— 苏联 《 战争与和平 》 —— 列夫 托尔斯泰 —— 俄国 B、 《 西厢记 》 —— 王实甫 —— 元代
: 做白虱的巢穴,做泔脚缸, 让脚气慢慢延伸到小腹上, 做柔道的呆对手,剑术的靶子 从口鼻一齐喝水,然后给踩肚子, 膝头压在尖钉上,砖头垫在脚踵上, 听鞭子在皮骨上舞,做飞机在梁上荡 ┅┅ 补充有关背景和作者的知识 例( 3): 《 我用残损的手掌 》 言语的比较和鉴别 —— 变式教学 例( 4): 《 声声慢 》 疏通文意: 乍暖还寒:忽暖忽寒。 指秋天的天气。 将息:休养,调理。 敌 :对付
“ 我是一个( )的孩子。 ” 作为每一段的开头。 • • 也可以这样开头: • 同学说我是一个( )的孩子。 • 朋友说我是一个( )的孩子。 • 妈妈说我是一个( )的孩子。 中间范文 1: • 老师说我是个马虎的学生。 因为我有一个毛毛糙糙、马马虎虎的毛病。 平时在学校时,有时候很简单的作业就会做错,最不应该出错的地方有时候偏偏全班就只有我一个人犯错。 为这