首页>>论坛 >>技术社区 >>OpenHW社区论坛 >>Coregen及ComplexIP
|
我要发帖  | 我要投票  | 我要回复  | 收藏
1

task执行的问题

版主: Jerry Fan  Terry_ni  玄剑  XUPteam 
task执行的问题
 
用verilog编程时,使用task,在触发某信号后对变量赋值,前两次赋值都可以正常进行,数据都可以传到寄存器中,以后再赋值时,task语句就不执行了,数据也上不去,不知道为什么呢,有人遇到过这种情况吗?太奇怪了!!
 
相关主题
回复 链接 收藏
 
RE:task执行的问题
 
你这个问题问的也太笼统了啊,肯定有具体的应用情况的,不然谁知道你遇到什么问题啊
 
回复 链接 收藏
 
RE:task执行的问题
 
把代码写出来吧,看看
 
回复 链接 收藏
 
RE:task执行的问题
 
代码太多了,这里只写个框架吧,
always @ (negedge clk or posedge reset )
if(reset)
begin
.....复位的寄存器......
end
else if(data_en)
begin
shift;
state2<=ready;
end
else
case (state2)
idle1:
......后续状态.........
endcase
...........................................
task shift;
begin
casex (state3)
shifthigh:
begin
read_en<=0;
datastor[reg_data_width+reg_data_width-1:reg_data_width]<=data;
state3<=shiftlow;
end
shiftlow:
begin
read_en<=0;
datastor[reg_data_width-1:0]<=data;
state3<=idle;
end
idle:
begin
read_en<=0;
state3<=idle;
end
endcase
end
endtask
就是这个datastor寄存器中的数据,当有第3个data_en触发,就不接data中的数据了。前两个就可以。不知道为什么。。不知道我说清楚了吗?
 
回复 链接 收藏
 
RE:task执行的问题
 
你的state3应该在能跳到shifthigh才行啊
 
回复 链接 收藏
 
RE:task执行的问题
 
你的Task内怎么没有定义input,output呢? 是很奇怪
 
回复 链接 收藏
 
RE:task执行的问题
 
TASK中可以调用全局变量的。
 
回复 链接 收藏
 
RE:task执行的问题
 
用全局变量 不是很好
 
回复 链接 收藏
 
RE:task执行的问题
 
强烈建议 不要在Task将内部变量与全局变量混用
 
回复 链接 收藏
 
RE:task执行的问题
 
楼上是tony吧?我不同意你的说法。
有的完全重复的代码可以用一个task来代替的,夏宇闻的书中IIC的实现中就用了task,那样看起来清楚一些
 
回复 链接 收藏
 
RE:task执行的问题
 
我不是很清楚,你的state3 在哪里定义的啊? 怎么保证执行state3的case判断啊?
 
回复 链接 收藏
 
RE:task执行的问题
 
我不是很清楚,你的state3 在哪里定义的啊? 怎么保证执行state3的case判断啊?
 
回复 链接 收藏
 
RE:task执行的问题
 
你的task里面执行了2次以后,stata3进入了idle状态吧?
idle:
begin
read_en<=0;
state3<=idle; //// ****************////
看你原来的意思,这里应该在跳出去?
state3 <= shifthigh ///???????????????
 
回复 链接 收藏
 
我要发帖  | 我要投票  | 我要回复  | 收藏
1