2221|12

3242

帖子

0

TA的资源

纯净的硅(高级)

楼主
 

for循环仿真问题 [复制链接]

 

我的testbench仿真文件如下:

`timescale 1 ns/ 1 ps
module LAMP_vlg_tst();
// constants                                           
// general purpose registers
reg eachvec;
// test vector input registers
reg clk;
reg rst_n;
// wires                                               
wire led;

// assign statements (if any)                          
LAMP i1 (
// port map - connection between master ports and signals/registers   
	.clk(clk),
	.led(led),
	.rst_n(rst_n)
);


reg [7:0] memory [0:255];

integer scan; 
integer index=3;


initial begin
	clk=0;
	#10 clk=~clk;

end 

initial begin

$readmemh("memory.list", memory);

end
if(index>0)
	begin
		for(scan=0;scan<index;scan=scan+1)
			if(memory[scan]>0)
				begin
					$display("%d",memory[scan]);
				end
	end
else
			$display("error--indexiszero");
endmodule

可是运行仿真出错,提示

请高手解惑,谢谢!

此帖出自FPGA/CPLD论坛

最新回复

格式是不是也有问题,你去抄别人的一个典型的例子,对照自己的语法。这样就能找出问题所在,可以提升自己。或者先去看看这门的语法基础课。这样解决问题快一点。   详情 回复 发表于 2022-10-9 09:32
点赞 关注
个人签名为江山踏坏了乌骓马,为社稷拉断了宝雕弓。
 

回复
举报

7003

帖子

11

TA的资源

版主

沙发
 

我看看了你的错误提示:

 

scan 的变量声明是不是不能  integer;

修改为genvar。

此帖出自FPGA/CPLD论坛

点评

谢谢! 我改为如下: `timescale 1 ns/ 1 ps module LAMP_vlg_tst(); // constants // general purpose registers reg eachvec; // test vector input reg  详情 回复 发表于 2022-10-8 09:41
 
 

回复

3242

帖子

0

TA的资源

纯净的硅(高级)

板凳
 
lugl4313820 发表于 2022-10-8 08:51 我看看了你的错误提示:   scan 的变量声明是不是不能  integer; 修改为genvar。

谢谢!

我改为如下:

`timescale 1 ns/ 1 ps
module LAMP_vlg_tst();
// constants                                           
// general purpose registers
reg eachvec;
// test vector input registers
reg clk;
reg rst_n;
// wires                                               
wire led;

// assign statements (if any)                          
LAMP i1 (
// port map - connection between master ports and signals/registers   
	.clk(clk),
	.led(led),
	.rst_n(rst_n)
);



reg [7:0] memory [0:255];

genvar scan; 
parameter index=3;

initial begin
	clk=0;
	#10 clk=~clk;

end 

initial begin

$readmemh("memory.list", memory);


if(index>0)
	begin
		
		for(scan=0;scan<index;scan=scan+1)
			begin
			if(memory[scan]>0)
				
					$display("%d",memory[scan]);
					memory[scan]=0;
				end
			
		end
		
	
else
			$display("error--indexiszero");

end
endmodule

运行又提示出错:

此帖出自FPGA/CPLD论坛
个人签名为江山踏坏了乌骓马,为社稷拉断了宝雕弓。
 
 
 

回复

7003

帖子

11

TA的资源

版主

4
 

你用度娘,或者应必搜一下,报错信息,这样以后就可以自己解决问题了,我身边没有你的开发环境,也不好做测试,但是解决问题的方法是一样的。

此帖出自FPGA/CPLD论坛

点评

谢谢!有的报错信息根本搜不到  详情 回复 发表于 2022-10-8 09:49
 
 
 

回复

3242

帖子

0

TA的资源

纯净的硅(高级)

5
 

于是我继续改:

`timescale 1 ns/ 1 ps
module LAMP_vlg_tst();
// constants                                           
// general purpose registers
reg eachvec;
// test vector input registers
reg clk;
reg rst_n;
// wires                                               
wire led;

// assign statements (if any)                          
LAMP i1 (
// port map - connection between master ports and signals/registers   
	.clk(clk),
	.led(led),
	.rst_n(rst_n)
);



reg [7:0] memory [0:255];

genvar scan; 
parameter index=3;

initial begin
	clk=0;
	#10 clk=~clk;

end 

initial begin

$readmemh("memory.list", memory);


if(index>0)
	begin
		generate
		for(scan=0;scan<index;scan=scan+1)
			
			if(memory[scan]>0)
				begin
					$display("%d",memory[scan]);
					memory[scan]=0;
				end
				
		endgenerate	
		end
		
	
else
			$display("error--indexiszero");

end
endmodule

又提示错误:

请高手指教,我没办法了。谢谢!

此帖出自FPGA/CPLD论坛
个人签名为江山踏坏了乌骓马,为社稷拉断了宝雕弓。
 
 
 

回复

3242

帖子

0

TA的资源

纯净的硅(高级)

6
 
lugl4313820 发表于 2022-10-8 09:43 你用度娘,或者应必搜一下,报错信息,这样以后就可以自己解决问题了,我身边没有你的开发环境,也不好做测 ...

谢谢!有的报错信息根本搜不到

此帖出自FPGA/CPLD论坛

点评

看了一下英文的报错信息,那个scan只能在for里面应用,是不是另外加个参数来替代memory[scan]  详情 回复 发表于 2022-10-8 11:48
个人签名为江山踏坏了乌骓马,为社稷拉断了宝雕弓。
 
 
 

回复

7003

帖子

11

TA的资源

版主

7
 
chenbingjy 发表于 2022-10-8 09:49 谢谢!有的报错信息根本搜不到

看了一下英文的报错信息,那个scan只能在for里面应用,是不是另外加个参数来替代memory[scan]

此帖出自FPGA/CPLD论坛

点评

谢谢! 我改成如下: `timescale 1 ns/ 1 ps module LAMP_vlg_tst(); // constants // general purpose registers reg eachvec; // test vector input reg  详情 回复 发表于 2022-10-8 12:40
 
 
 

回复

3242

帖子

0

TA的资源

纯净的硅(高级)

8
 
lugl4313820 发表于 2022-10-8 11:48 看了一下英文的报错信息,那个scan只能在for里面应用,是不是另外加个参数来替代memory[scan]

谢谢!

我改成如下:

`timescale 1 ns/ 1 ps
module LAMP_vlg_tst();
// constants                                           
// general purpose registers
reg eachvec;
// test vector input registers
reg clk;
reg rst_n;
// wires                                               
wire led;

// assign statements (if any)                          
LAMP i1 (
// port map - connection between master ports and signals/registers   
	.clk(clk),
	.led(led),
	.rst_n(rst_n)
);



reg [7:0] memory [0:255];
reg [7:0] a;

parameter index=3;
genvar scan; 


initial begin

$readmemh("memory.list", memory);


if(index>0)
	begin
	
		
		for(scan=0;scan<index;scan=scan+1)
		
			a=memory[scan];
			if(a>0)
				begin
					$display("%d",a);
					a=0;
				end
		
			
		end
		
	
else
			$display("error--indexiszero");

end
endmodule

仿真出错:

# ** Error: D:/CCB/CPLD/study/FIVE/simulation/modelsim/LAMP.vt(64): Invalid context for genvar scan. A genvar can be used only inside of the generate loop that it indexes.
# ** Error: D:/CCB/CPLD/study/FIVE/simulation/modelsim/LAMP.vt(64): Invalid context for genvar scan. A genvar can be used only inside of the generate loop that it indexes.
# ** Error: D:/CCB/CPLD/study/FIVE/simulation/modelsim/LAMP.vt(64): Invalid context for genvar scan. A genvar can be used only inside of the generate loop that it indexes.
# ** Error: D:/CCB/CPLD/study/FIVE/simulation/modelsim/LAMP.vt(64): Invalid context for genvar scan. A genvar can be used only inside of the generate loop that it indexes.
# ** Error: D:/CCB/CPLD/study/FIVE/simulation/modelsim/LAMP.vt(66): Invalid context for genvar scan. A genvar can be used only inside of the generate loop that it indexes.

好像要用generate语句

于是我又改为如下:

`timescale 1 ns/ 1 ps
module LAMP_vlg_tst();
// constants                                           
// general purpose registers
reg eachvec;
// test vector input registers
reg clk;
reg rst_n;
// wires                                               
wire led;

// assign statements (if any)                          
LAMP i1 (
// port map - connection between master ports and signals/registers   
	.clk(clk),
	.led(led),
	.rst_n(rst_n)
);



reg [7:0] memory [0:255];
reg [7:0] a;

parameter index=3;
genvar scan; 


initial begin

$readmemh("memory.list", memory);


if(index>0)
	begin
	
		generate
		for(scan=0;scan<index;scan=scan+1)
		
			a=memory[scan];
			if(a>0)
				begin
					$display("%d",a);
					a=0;
				end
		
		endgenerate	
		end
		
	
else
			$display("error--indexiszero");

end
endmodule

又提示出错:

# ** Error: (vlog-13069) D:/CCB/CPLD/study/FIVE/simulation/modelsim/LAMP.vt(63): near "generate": syntax error, unexpected generate.
# ** Error: (vlog-13069) D:/CCB/CPLD/study/FIVE/simulation/modelsim/LAMP.vt(64): near ")": syntax error, unexpected ')', expecting ';'.
# ** Error: (vlog-13069) D:/CCB/CPLD/study/FIVE/simulation/modelsim/LAMP.vt(73): near "endgenerate": syntax error, unexpected endgenerate.

好像for循环不好和if语句搅和在一起。真是郁闷。

此帖出自FPGA/CPLD论坛
个人签名为江山踏坏了乌骓马,为社稷拉断了宝雕弓。
 
 
 

回复

3242

帖子

0

TA的资源

纯净的硅(高级)

9
 

我又精简了一下。代码如下:

`timescale 1 ns/ 1 ps
module LAMP_vlg_tst();
// constants                                           
// general purpose registers
reg eachvec;
// test vector input registers
reg clk;
reg rst_n;
// wires                                               
wire led;

// assign statements (if any)                          
LAMP i1 (
// port map - connection between master ports and signals/registers   
	.clk(clk),
	.led(led),
	.rst_n(rst_n)
);



wire [7:0] memory [15:0];


parameter index=3;
genvar scan; 

initial begin

$readmemh("memory.list", memory);
end


	generate
	for(scan=0;scan<index;scan=scan+1)
		
			
			if(memory[scan]>0)
				begin
					$display("...");
					
				end
		
		endgenerate	
	
endmodule

还是有错:

提示unexpected '$display'

难道$display函数不能用在这里吗?谢谢

此帖出自FPGA/CPLD论坛

点评

这个是什么语言,是不是for没有封闭,所以报错了?检查一下成对封闭了for没有?  详情 回复 发表于 2022-10-8 15:21
个人签名为江山踏坏了乌骓马,为社稷拉断了宝雕弓。
 
 
 

回复

7003

帖子

11

TA的资源

版主

10
 
chenbingjy 发表于 2022-10-8 14:02 我又精简了一下。代码如下: `timescale 1 ns/ 1 ps module LAMP_vlg_tst(); // constants ...

这个是什么语言,是不是for没有封闭,所以报错了?检查一下成对封闭了for没有?

此帖出自FPGA/CPLD论坛

点评

感觉封闭了  详情 回复 发表于 2022-10-8 19:36
 
 
 

回复

3242

帖子

0

TA的资源

纯净的硅(高级)

11
 
lugl4313820 发表于 2022-10-8 15:21 这个是什么语言,是不是for没有封闭,所以报错了?检查一下成对封闭了for没有?

感觉封闭了

此帖出自FPGA/CPLD论坛

点评

格式是不是也有问题,你去抄别人的一个典型的例子,对照自己的语法。这样就能找出问题所在,可以提升自己。或者先去看看这门的语法基础课。这样解决问题快一点。  详情 回复 发表于 2022-10-9 09:32
个人签名为江山踏坏了乌骓马,为社稷拉断了宝雕弓。
 
 
 

回复

7003

帖子

11

TA的资源

版主

12
 

格式是不是也有问题,你去抄别人的一个典型的例子,对照自己的语法。这样就能找出问题所在,可以提升自己。或者先去看看这门的语法基础课。这样解决问题快一点。

此帖出自FPGA/CPLD论坛

点评

谢谢!单是for循环没问题,一加if else语句就不行了  详情 回复 发表于 2022-10-9 09:54
 
 
 

回复

3242

帖子

0

TA的资源

纯净的硅(高级)

13
 
lugl4313820 发表于 2022-10-9 09:32 格式是不是也有问题,你去抄别人的一个典型的例子,对照自己的语法。这样就能找出问题所在,可以提升自己 ...

谢谢!单是for循环没问题,一加if else语句就不行了

此帖出自FPGA/CPLD论坛
个人签名为江山踏坏了乌骓马,为社稷拉断了宝雕弓。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
推荐帖子
求助该电路存在的问题

不好意思,不知道怎么直接插入图片,麻烦大侠们点一下。 该图是一种长按式开关电路,暂时不考虑电阻值和电容的选值,原理上可以 ...

EP3C25开发板初体验NO.1

因为到外地安家,乱七八糟事情一大堆,所以来晚了. 44995 板子入的的第一感觉:很有质感: 一看居然有三条电源线,分别是国标双口, ...

SDRAM串口实验之依样画葫芦(verilog)

前一段时间在这里申请了开发板,然后一直没来得及做实验,平时太忙。上周花了一天的时间把别人verilog(最初始是特权)写的SDRAM ...

从零开始点亮LED灯

本帖最后由 微末凡尘 于 2014-7-27 01:03 编辑 ...

[十月DIY]我的ARM学习机

本帖最后由 cruelfox 于 2015-10-31 21:37 编辑   我对底层的东西特别感兴趣。十多年前有了自己的电脑,一直保留DOS用了好 ...

【先楫HPM6750EVK2】-2原理图分析

本帖最后由 Angel_YY 于 2023-1-9 11:42 编辑 由于第一次接触功能这么强大的RISC-V处理器,需要简单分析一下原理图进行简单了 ...

计算机接口原理图

计算机接口SCH原理图

请教一下输出过流检测

大家好! 下面原理图的过流原理及计算我有些疑问,麻烦大家帮忙分析下,谢谢了! 图片部分我写了一些说明,有很多疑惑。如 ...

stm32

配置DMA的时候,配置的是循环处理,没有打开FIFP模式,导致了只有一个缓冲区,用于存储串口接收到的数据,导致数据发送的时候, ...

颁奖:ST NUCLEO-U5A5ZJ-Q

首先感谢网友参与>>ST NUCLEO-U5A5ZJ-Q,以下是审核结果。 *积分奖励将于本日内发送; 鼓掌鼓掌 本次测评可谓 ...

关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表