这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » FPGA » #芝麻开门#fpga中reg [29:0] rom_10Hz_jingpin [

共2条 1/1 1 跳转至

#芝麻开门#fpga中reg [29:0] rom_10Hz_jingpin [0:99];类型的存贮器用for循环初始化的问题

菜鸟
2014-09-24 23:16:37     打赏
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语句是一上电就执行了呢》?



关键词: verilog中for循环赋值问题    

工程师
2014-09-25 09:49:21     打赏
2楼

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


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


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


共2条 1/1 1 跳转至

回复

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