这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » FPGA » reg [29:0] rom_10Hz_jingpin [0:99];类型的存贮

共9条 1/1 1 跳转至

reg [29:0] rom_10Hz_jingpin [0:99];类型的存贮器用for循环初始化的问题

菜鸟
2014-09-24 23:31:01     打赏
reg [29:0] rom_10Hz_jingpin [0:99];
integer Index_10hz_jingpin =0;

reg [29:0] cnt_test;reg startwrite;
always @(posedge c0 or negedge rst_n)
	if (!rst_n) begin  cnt_test <= 30'd0; startwrite<=1'b0; end
	else 
		begin 
			cnt_test <= cnt_test+1'b1;
			if (cnt_test==30'd600000000) begin cnt_test <= 30'd0;startwrite<=1'b1;end
		end
always @(posedge c0)
		if (startwrite ==1'b1)
		begin
			for(Index_10hz_jingpin=0;Index_10hz_jingpin<100;Index_10hz_jingpin=Index_10hz_jingpin+1)
			rom_10Hz_jingpin[Index_10hz_jingpin]=2500000*(Index_10hz_jingpin+1);
		end

晶振50mhz 20ns 
程序要实现的功能是:由某个变量控制rom_10Hz_jingpin 变量的初始化,即当控制变量为1时,写入数据到rom_10Hz_jingpin 中,然后利用rom_10Hz_jingpin 中的数据点亮led,但是综合后情况并非预期那样。
而是fpga上电后,数据就应该写入rom_10Hz_jingpin 中了,因为上电后,led就开始点亮了,并没有受到控制变量的控制。
本来程序应该在600000000*20ns = 12s后才向rom_10Hz_jingpin 变量填充数据,即 led应该在12s后才开始闪烁的,现在是上电后就开始闪烁了,不解中。。。。。
但是我实验了,for语句可以被综合的,修改rom_10Hz_jingpin 初始化化的数据,然后综合下载到fpga中,新数据生效了,说明for语句起作用了,但是为什么for语句是一上电就执行了呢》?



关键词: for循环综合    

高工
2014-09-24 23:36:14     打赏
2楼
帮顶吧,觉得这类问题还是代码的问题,仔细捋一捋也许就豁然了

菜鸟
2014-09-24 23:51:44     打赏
3楼

您的意思是代码写的有问题,也就是逻辑有问题吧

但是我试过了,都不行,还是有其他的解决办法


菜鸟
2014-09-24 23:53:02     打赏
4楼

您的意思是代码写的有问题,也就是逻辑有问题吧

但是我试过了,都不行,还是有其他的解决办法


现在的问题是,想这么初始化,要不然用ram,但是ram要在统一的时钟里面,还不会用


专家
2014-09-25 09:23:44     打赏
5楼
如果不想仿真的话,可以用signaltap或者chipscope来看看信号

专家
2014-09-25 09:24:06     打赏
6楼
这样查问题比较方面

工程师
2014-09-25 09:50:13     打赏
7楼

你用的是什么FPGA哈?你可以试着按下复位,然后在看下是不是等待12S之后才正常,


有可能是你没有复位,startwrite 默认值为1造成的~!


建立在定义变量的时候可以给个初值。


菜鸟
2014-09-27 10:40:18     打赏
8楼

难道fpga一上点后,不是自动复位吗,您说的是 这条语句

if (!rst_n) begin  cnt_test <= 30'd0; startwrite<=1'b0; end在上点后没有执行
导致startwrite 为1


我试试,谢谢了,


工程师
2014-09-28 10:29:09     打赏
9楼

一个正常的系统,都是上电能够正常工作的,出了bug才复位,默认情况下,是不执行复位操作的,


xilinx FPGA,如果不给初值的话,默认就是0,Altera的就不晓得了


共9条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]