总是在任务中?

Always in a task?

我正在使用 Verilog 对 FPGA 进行编程。

我有我的顶层模块,我想调用一个包含 always 块的 Task

Task是串口序列化一个字节的例程。 (输入:baudrate_clk,bytetosend;输出:TxD,这是物理输出引脚)

module serial();

task serial;
    input baudrate;
    input [7:0] data;
    output TxD;

    reg [3:0] state;

    begin
    always @(posedge baudrate) begin
        case(state)
            // ...
        endcase
    end
    end

    always @(state[2:0]) begin
            case(state[2:0])
            // ...
            endcase
    end
    assign TxD ...
    end
endtask
endmodule

我在第一个 alwaysalways @(posedge baudrate) begin

得到一个 unexpected token: 'always'

我读到 Task could include wait, posedge etc...

如果我不能使用 Taks,我可以用什么来达到这个目的?

谢谢。

要么你的任务应该是一个模块,要么你应该在你的任务中使用循环。很难看出您的设计意图,但在我看来,在这种情况下您需要一个模块,而不是任务。 任务包含顺序代码,就像 always 块一样。任务只是另一个放置可以放在 always 块中的代码的地方。将 always 块放在任务中是没有意义的。