Verilog任务
parameter MAX_BITS=8;
reg[MAX_BITS:1]D;
task reverse_bits;
inout[7:0]data;//双口总线被视为寄存器类型
integer K;
for(k=0;k<MAX_BITS;K=K+1)
reverse_bits[MAX_BITS-(K+1)]=data[K];
endtask
always@(posedge clk)
reverse_bits(D);
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)&(c|d);
else
f_or_and=0;
endfunction
endmodule
{o1,o2,o3,o4}=f_or_and(a,b,c,d,e);信号拼接-技巧