verilog - 错误:赋值语句左值中的语法
问题描述
这是 Verilog 代码。
module Problem1(x,y,z,F1,F2,F3);
input [1:0] x,y;
input wire z;
output F1, F2;
reg F1 , F2;
output wire [1:0] F3;
assign F3 = x&y;
always @* begin
if(z)
assign F1 = x[0];
else
assign F1 = x[1];
sub(z,F2);
end
endmodule
module sub(F,x);
task sub;
output reg F;
input x;
always @* begin
case(x)
0:F = 1;
1:F = 0;
endcase
end
endtask
endmodule
我收到以下错误。你能帮我理解如何解决它们吗?
$iverilog -o main *.v
main.v:25: syntax error
main.v:27: Syntax in assignment statement l-value.
main.v:28: syntax error
main.v:28: Syntax in assignment statement l-value.
main.v:29: syntax error
I give up.
解决方案
您的代码存在一些语法错误。
不要使用assign
关键字对reg
( F1
) 进行赋值。
不要将模块实例 ( sub
) 放在always
块内。
sub
为您的模块实例使用实例名称。
不要创建task
与模块 ( ) 同名的 a sub
。task/endtask
在这种情况下不需要。
这是一个为我编译干净的版本:
module Problem1(x,y,z,F1,F2,F3);
input [1:0] x,y;
input wire z;
output F1, F2;
reg F1 , F2;
output wire [1:0] F3;
assign F3 = x&y;
always @* begin
if(z)
F1 = x[0];
else
F1 = x[1];
end
sub sub (z,F2);
endmodule
module sub(F,x);
output reg F;
input x;
always @* begin
case(x)
0:F = 1;
1:F = 0;
endcase
end
endmodule
推荐阅读
- python - 如果在是/否游戏中输入不正确,如何循环回到问题的开头?
- python-3.x - Windows批处理文件将信号发送到python脚本
- python - python - 如何根据python中的列表值拆分数据和连接?
- python - 如何使用 pyinstaller 将 Python Selenium 项目转换为 .exe?
- javascript - Vuetify v-data-table 展开项,只展开某些项
- reactjs - 在单个项目中反应前端和 .Net 后端
- c++ - C++ 由于某种原因不读取 txt 文件
- sql-server - 是否可以在 ASP.NET Core 中使用具有多个数据库的数据库迁移?
- json - Rest Template 过滤器响应 Country StartWith A 和 EndWith A
- python - 在 aws cdk 中具有嵌套数据结构的属性应该使用哪种类型?