您当前的位: 首页 > 行业数据 > > 内容页

for循环语句基本用法及示例 介绍几种可综合的for循环语句

来源:处芯积律 2023-08-03 11:28:30


(资料图)

1、采用for(int*)实现不同信号赋值的循环

利用for循环实现对信号的赋值。如下案例中,func_id_vld为512bit,需要根据func_mode_in[1024-1:0]给func_id_vld赋值,func_mode_in每2个bit对应一个func_id_vld,即func_mode_in[1:0]对应func_id_vld[0],func_mode_in[3:2]对应func_id_vld[1],func_mode_in[1023:1022]对应func_id_vld[511], 赋值规则为func_mode_in[1:0]为2‘b01时,func_id_vld[0]为1,以此类推。采用for(int*)类型格式,可以在一个else分支中使用,不需要使用generate,使用更加灵活,使用范围更广。

always@(posedge  clk)    if(~rst_n) begin       func_id_vld <= 512"b0 ;    end else begin        for(int i=0; i<512;i=i+1) begin : func_id_vld_gen            func_id_vld[i] <= (func_mode_in[2*i+:2]==2"b01) ;        end    end

2、采用for(int*)实现同一个信号赋值的循环

下图所示,采用for(int*)类型格式实现了一个16mux1的循环赋值语句,实现不同条件一下,对debug_test_16mux1的赋值操作,即16mux1的逻辑。

always@(*) begin    debug_test_16mux1 = 128"d0;      for(int i=0; i<16;i=i+1) begin : debug_test_16mux1_gen        if(cfg_16mux1_mode ==i) begin            debug_test_16mux1  =  debug_test_in[128*i+:128] ;            break ;        end    endend
always@(*) begin  case(cfg_16mux1_mode)  0 : debug_test_16mux1  =  debug_test_in[127  :0    ];  1 : debug_test_16mux1  =  debug_test_in[255  :128  ];  2 : debug_test_16mux1  =  debug_test_in[383  :256  ];  3 : debug_test_16mux1  =  debug_test_in[511  :384  ];  4 : debug_test_16mux1  =  debug_test_in[639  :512  ];  5 : debug_test_16mux1  =  debug_test_in[767  :640  ];  6 : debug_test_16mux1  =  debug_test_in[895  :768  ];  7 : debug_test_16mux1  =  debug_test_in[1023 :896  ];  8 : debug_test_16mux1  =  debug_test_in[1151 :1024 ];  9 : debug_test_16mux1  =  debug_test_in[1279 :1152 ];  10: debug_test_16mux1  =  debug_test_in[1407 :1280 ];  11: debug_test_16mux1  =  debug_test_in[1535 :1408 ];  12: debug_test_16mux1  =  debug_test_in[1663 :1536 ];  13: debug_test_16mux1  =  debug_test_in[1791 :1664 ];  14: debug_test_16mux1  =  debug_test_in[1919 :1792 ];  15: debug_test_16mux1  =  debug_test_in ;  endcase end

NOTE:在for(int*)语句中,如果写成debug_test_16mux1 = debug_test_in[128*i+127:128*i] , VCS会报语法错误;只写成debug_test_16mux1 =debug_test_in[128*i+:128],此处需要注意。

审核编辑:刘清

关键词:
重磅 广东统一的公共资源交易平台“粤公平”正式上线

记者7月15日从广东省政务服务数据管理局获悉,经过全面优化升级,全省统一的公共资源交易平台——粤公平正式上线。粤公平是广东省继粤省事

2022-07-18
2022年上半年广东居民人均可支配收入同比增长4.9%

国家统计局广东调查总队7月16日发布数据显示,2022年上半年,广东居民人均可支配收入24749元,同比增长(以下如无特别说明,均为同比名义增

2022-07-18
“但凡有可能,就去做好它”

西北工业大学网络空间安全学院党总支书记王震—— “但凡有可能,就去做好它”(奋斗者正青春) 在西北工业大学网络空间安全学院,党总支书记王

2022-05-25
上海通报嘉定区1例本土无症状感染者排查情况 一地列为中风险地区

中新网5月25日电 据“上海发布”微信公众号消息,5月25日上午举行的上海市疫情防控工作新闻发布会上,上海市卫生健康委副主任赵丹丹介绍,

2022-05-25
上海嘉定区公布1例无症状感染者所涉及区域和场所

中新网5月25日电 据“上海发布”微信公众号消息,5月25日上午举行的上海市疫情防控工作新闻发布会上,上海嘉定区副区长王浩介绍:5月24日

2022-05-25
在家里坐着就能赚到养老钱?37名老人落入高额返现陷阱

37名老人落入高额返现陷阱 本报讯(记者倪建军 通讯员黄洪福 张建军)老年人在家里坐着就能赚到养老钱!只要办理店铺的会员卡成为会员,凡一

2022-05-25

Copyright ©  2015-2022 北冰洋数据网版权所有  备案号:沪ICP备2020036824号-3   联系邮箱:562 66 29@qq.com