加入收藏

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

2023-08-03 19:19:23 来源:处芯积律


(相关资料图)

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],此处需要注意。

审核编辑:刘清

关键词:

相关新闻

韩国人的室温超导靠谱吗?我们找业内大佬们聊了聊
韩国人的室温超导靠谱吗?我们找业内大佬们聊了聊

韩国人的室温超导靠谱吗?我们找业内大佬们聊了聊,电......更多>

富人不喜欢买,穷人却喜欢买的4样东西,越买越穷!
富人不喜欢买,穷人却喜欢买的4样东西,越买越穷!

在现代社会,人们对于消费和物质拥有的态度和行为各不......更多>

西部牧业8月3日快速回调
西部牧业8月3日快速回调

以下是西部牧业在北京时间8月3日11:06分盘口异动快照......更多>

诚志股份:8月2日获融资买入213.37万元
诚志股份:8月2日获融资买入213.37万元

同花顺数据中心显示,诚志股份8月2日获融资买入213 3......更多>

位居液冷数据中心份额第一  曙光数创发布“冷平衡”战略
位居液冷数据中心份额第一 曙光数创发布“冷平衡”战略

8月2日,曙光数创“冷平衡”战略发布会在京举办,会上......更多>

凌云股份:公司主厂区生产经营正常 涿州市公司人员已提前安全撤离
凌云股份:公司主厂区生产经营正常 涿州市公司人员已提前安全撤离

财联社8月3日电,近日河北涿州防汛形势严峻,位于涿州......更多>

8月3日 11:02分  三全食品(002216)股价快速拉升
8月3日 11:02分 三全食品(002216)股价快速拉升

分时图快速拉升意味此时存在大单买入,在大单的推动下......更多>

坚朗五金不超19.9亿元定增获深交所通过 招商证券建功
坚朗五金不超19.9亿元定增获深交所通过 招商证券建功

坚朗五金不超19 9亿元定增获深交所通过招商证券建功...更多>

每日汇市|连续贬值!人民币中间价调降127基点 报7.1495
每日汇市|连续贬值!人民币中间价调降127基点 报7.1495

8月3日,人民银行授权中国外汇交易中心公布,2023年8......更多>

只用一个镜头,《黑执事》创晕所有颜粉
只用一个镜头,《黑执事》创晕所有颜粉

题图 黑执事那个执事,整容失败都说岁月是把杀猪刀,......更多>

旅游 | 河北张家口推动研学旅行高质量发展
旅游 | 河北张家口推动研学旅行高质量发展
今年以来,张家口市以后冬奥经济可持续发展和冬奥场馆... 更多>
旅游 | 河北张家口推动研学旅行高质量发展
今年以来,张家口市以后冬奥经济可持续发展和冬奥场馆... 更多>
蒜蓉辣椒酱的做法 ,健康无添加,香辣开胃又下饭
教你自制蒜蓉辣椒酱,正宗湖南做法,健康无添加,香辣... 更多>
铁路暑运过半 长三角铁路发送旅客超8100万人次
记者从中国铁路上海局集团有限公司获悉,截至7月31日... 更多>
学问大着呢!养猪混饲给药7大学问
在养殖场户饲喂猪的时候,为有效防治疾病,给饲料中拌... 更多>
为创作寻灵感!首届长三角一体化示范区旅游文创设计大赛宣讲会在青浦举办
高校学生代表许欣悦告诉记者,“通过这次活动,我看到... 更多>
财政部、税务总局发布关于支持小微企业融资有关税收政策的公告
8月2日,财政部、税务总局共同发布关于支持小微企业融... 更多>
黑玉髓如何鉴别
鉴别黑玉髓主要有以下几个方面:1 外观色彩:黑玉髓... 更多>
打造高水平工程科技人才队伍
创新驱动本质上是人才驱动,作为一类重要的人才资源,... 更多>
名单公布!达州5所学校上榜!
8月1日四川省教育厅公布 2022年“四川省依法治校示范... 更多>
豆豆钱逾期多久会给家里打电话-豆豆钱逾期多久会给通讯录家人打电话
豆豆钱逾期多久会给家里打电话豆豆钱作为我国一家提供... 更多>
AI抢游戏人饭碗几成定局:企业想招的人 学校怎么培养?
“未来月薪1 5万以下的美术设计,都可以被AI替代。”... 更多>
涉5项罪名!国足原主教练李铁被提起公诉
中国国家男子足球队原主教练李铁涉嫌受贿、行贿、单位... 更多>