1.Error (10137): Verilog HDL Procedural Assignment error at freq_test.v(36): object "dataoutf" on left-hand side of assignment must have a variable data type
原因:数据类型定义错误 或者 赋值类型错误
解决方法: 在always 过程块中被赋值的变量必须是 reg (寄存器型),用 assign 连续赋值的对象 必须定义成 wire(线型);
另:assign应与always并行。
2.Error (10200): Verilog HDL Conditional Statement error at seg.v(42): cannot match operand(s) in the condition to the corresponding edges in the enclosing event control of the always construct
always @(posedge CLK or posedge CLR)
begin
if(CLR)
begin
cnt<=16'b0;
BIT_SEL<=2'b0;
end
else
cnt<= cnt + 1'b1;
if (cnt==16'd1) //延时1ms
begin
BIT_SEL <= BIT_SEL + 1'b1; //换一位数码管显示
cnt <=16'b0;
end
end
我程序段是这样写的,我把
if (cnt==16'd1) //延时1ms
begin
end
这三句删了就没问题了。不清楚原因。
网上搜到的相关解答:https://zhidao.baidu.com/question/223033559.html。我好像不是这个原因。
3.Error (10170): Verilog HDL syntax error at wave.v(20) near text "clk_sep"; expecting "<=", or "="
模块例化调用不能出现在always语句内,因例化只实现一次,而always满足敏感表即进行。例化应与always并行。
4.Error (10663): Verilog HDL Port Connection error at wave.v(31): output or inout port "dataouthc" must be connected to a structural net expression
模块例化时数据类型的错误。
输入端口:
从模块内部来讲,输入端口必须为线网型(不进行类型声明则默认为wire);从模块外部来看,输入端口可以连接到线网或reg型的变量。
输出端口:
从模块内部来讲,输出端口可以是线网或reg型;从模块外部来看,输出端口必须连接到线网型的变量。
为什么要这样定义,则需要理解fpga的硬件结构。