老夫子 发表于 2013-9-16 22:48:18

请教Verilog HDL任务调用,参数传递问题?

我先实现流水灯的效果,用任务调用的办法,以下是我编的代码
module LED(clk, Led);
input clk;
output Led;
reg Led;
reg count;
integer a;

initial a = 2'H01;
/*************************************/
task Led_Light;
        input ss;//用来接收传递过来的参数,不知道可不可以这样写。
        output ll;//这是LED的8个脚
        reg ll;
        begin
                ll <= ss;
        end
endtask
/*************************************/
always @(posedge clk)//时钟上升沿
begin
        if (count == 32'D5_000_000)//50M的晶振
                begin
                        count = 32'D0;
                        Led_Light(a, Led);//任务调用,a为赋给LED的值,16进制
                        a = a << 1;         //移位       
                end
        else
                begin
                        count = count + 32'D1;
                        if (a == 2'H80)
                                a = 2'H01;       
                end
end
/*************************************/
endmodule

问题来了,效果居然是这样的:流水-全灭-流水-全灭-流水......
而我想要的效果是:          流水-流水-流水-流水-流水......
中间没连接起来,不知道那段时间为什么被吞了,居然全灭了,代码哪里有问题呢?
不知道在verilog中传递参数是怎么做的,我尝试这样写就出了这个问题。

老夫子 发表于 2013-9-17 09:24:10

解决了,2'H80改成8'H80,原来是宽度不对。晕哦~
页: [1]
查看完整版本: 请教Verilog HDL任务调用,参数传递问题?