在Verilog中使用struct有一个未解决的问题。
这是我的代码:
//Other technic
//typedef struct{bit Over_I;}reg_type;
// Code
module Overload(rst_n,clock,vlowp,IHigh,Over_I);
// Port declaration
input rst_n,clock,vlowp,IHigh;
output Over_I;
reg S_NOM = 0;
reg S_OVL = 1;
struct{
reg Over_I;
} reg_type;
reg_type Reg,NextReg;
initial
begin
Over_I = Reg.Over_I;
end
我在模块外尝试了the,但没有成功。
控制台给出的错误是:
错误:HDLCompiler:806- "C:/....../Lattice_tests/Test_Verilog/sources/overload_test.v“第26行:语法错误接近"{”。
第26行是我定义struct的行。
如果有人能帮我,我会很感激的。谢谢。佛朗哥
发布于 2016-04-19 08:52:05
Verilog不支持struct数据类型。SystemVerilog (Verilog的继承者)确实如此。所有现代Verilog模拟器都是SystemVerilog模拟器。您可以通过将文件灭绝从SystemVerilog更改为.sv
来启用.sv
。
大多数模拟器都有一个编译选项,将所有Verilog文件强制为SystemVerilog,但是您需要参考手册,因此不建议使用它。有许多遗留的Verilog代码使用与SystemVerilog关键字(例如bit
和byte
)冲突的变量/网络名称。如果正确使用文件扩展名,模拟器可以正确地解析文件。
而且,initial
只分配一次东西。在时间为0之后,Over_I
将不具有Reg.Over_I
值。此外,不能在过程块(例如initial
和always
块)内分配电线(输出的默认类型)。使用assign
语句或使其成为output reg
,并在(假设为SystemVerilog) always_comb
或always_ff
块或Verilog always
块中分配它。
https://stackoverflow.com/questions/36724306
复制