OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 170|回复: 4

[国产FPGA] verilog中如何初始化大数组,标题要满12字

[复制链接]

89

主题

360

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2189
金钱
2189
注册时间
2014-7-1
在线时间
206 小时
发表于 2025-12-18 18:00:03 | 显示全部楼层 |阅读模式
1金钱
如题,能够综合的代码,比如一个二维数组如何初始化?
reg [12:0]  arr[0:4999]

需要写5000次吗,有点多,扛不住。

做一个相信自己的人
回复

使用道具 举报

4

主题

2163

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
6089
金钱
6089
注册时间
2018-10-21
在线时间
1792 小时
发表于 2025-12-19 09:06:43 | 显示全部楼层
初始化成什么值?可以在always里循环赋值
回复

使用道具 举报

89

主题

360

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2189
金钱
2189
注册时间
2014-7-1
在线时间
206 小时
 楼主| 发表于 2025-12-19 14:11:11 | 显示全部楼层
本帖最后由 shenqihao 于 2025-12-19 14:15 编辑
QinQZ 发表于 2025-12-19 09:06
初始化成什么值?可以在always里循环赋值

初始化为0。
每秒输出一次结果后,累加的寄存器也需要重新赋值为0。

举个例子,adc取峰值完成后,对14位ADC峰值进行4096份划分,每秒输出一次划分结果。level_reg寄存器如何初始化?
reg [12:0] level_reg [0:4095];  
always @(posedge o_ad1_clk or negedge i_rst_n) begin
    if (!i_rst_n) begin
        level_reg[0]=0;
        level_reg[1]=0;
        level_reg[2]=0;
        level_reg[3]=0;
        level_reg[3]=0;
...
    end
    else if (ad1_start) begin
        // 计算当前数据属于哪个分档
        level_reg[i_ad1_data>>2]<=level_reg[i_ad1_data>>2]+1'b1;
    end
    else if(time_done2)begin//周期时间

    end
end

做一个相信自己的人
回复

使用道具 举报

4

主题

2163

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
6089
金钱
6089
注册时间
2018-10-21
在线时间
1792 小时
发表于 2025-12-19 14:31:54 | 显示全部楼层
回复

使用道具 举报

89

主题

360

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2189
金钱
2189
注册时间
2014-7-1
在线时间
206 小时
 楼主| 发表于 2025-12-19 14:56:13 | 显示全部楼层
QinQZ 发表于 2025-12-19 14:31
可以用generate for语句赋初始值,避免编写重复的代码

好的,谢谢,我研究下。一直以为for不能用在综合语句里。
做一个相信自己的人
回复

使用道具 举报

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

本版积分规则


关闭

原子哥极力推荐上一条 /1 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2026-1-1 03:21

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表