|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
是书上的习题。题目如下:
定义一个任务,该任务能计算出一个16位变量的偶校验位(1位)作为该任务的输出。在计算结束后,经过三个时钟上升沿将该校验位(结果)赋给任务输出。提示:在任务中使用repeat循环。
我写的task:
task parity;
input clock;
input [15:0] data_in;
output parity_check;
reg [15:0] sum;
reg [4:0] i;
begin
sum=0;
for(i=0;i<16;i=i+1)
sum=data_in+sum;
#10 sum=sum%2;
repeat (10) @(posedge clock)
parity_check=sum;
end
endtask
调用时:
always //@ (/*posedge*/ clock)
begin
parity(clock,data_in,check_bit);
end
其中clock赋值:
initial clock=0;
always #5 clock=~clock;
最后输出结果:
可能不清楚,简单说下关键问题,就是:
在task中的clock仿真的时候没有变化……就是图中的第1条红线下方的绿线,/s8_5/parity/clock,但是时钟是正常的啊。
我问同学也没人知道怎么回事
哪位高人知道是怎么回事捏……小弟不胜感激啊
[ 本帖最后由 chaowei 于 2009-4-14 20:44 编辑 ] |
|