0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

sanyue7758 来源:处芯积律 作者:处芯积律 2023-08-03 10:22 次阅读

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





审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Verilog
    +关注

    关注

    28

    文章

    1326

    浏览量

    109302
  • VCS
    VCS
    +关注

    关注

    0

    文章

    78

    浏览量

    9497
  • for
    for
    +关注

    关注

    0

    文章

    44

    浏览量

    15513
  • for循环
    +关注

    关注

    0

    文章

    61

    浏览量

    2420

原文标题:verilog语法:几种可综合的for循环语句

文章出处:【微信号:处芯积律,微信公众号:处芯积律】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    C语言基础知识(5)--循环语句

    C语言基础知识(5)--循环语句
    的头像 发表于 06-15 10:18 1386次阅读
    C语言基础知识(5)--<b class='flag-5'>循环</b><b class='flag-5'>语句</b>

    FOR循环语句分析与应用

    FOR循环语句应用比较广泛,在机器人编程、PLC编程、C语言编程中都有应用。能读懂这些程序语句,可以更好地理解机电设备控制原理,为机电设备安装维修工作带来便利。
    的头像 发表于 09-25 17:14 2567次阅读
    FOR<b class='flag-5'>循环</b><b class='flag-5'>语句</b>分析与应用

    开关语句循环语句

    switch/case开关语句是一种多分支选择语句,是用来实现多方向条件分支的语句。虽然从理论上讲采用条件语句也可以实现多方向条件分支,但是当分支较多时会使条件
    发表于 07-15 14:26 18次下载

    C语言入门教程-if语句和while循环

    if语句和while循环 C语言中,if语句和while循环都会用到布尔表达式。下面是一个使用if语句的简单例子: #include
    发表于 07-29 10:48 8340次阅读

    C++语言基础讲解视频while循环语句

    C++语言基础讲解视频while循环语句,喜欢的朋友可以下载来学习。
    发表于 01-14 15:31 3次下载

    Java的循环语句的详细资料说明

    本文档的主要内容详细介绍的是Java的循环语句的详细资料说明包括了:1、while循环语句,2、do…while
    发表于 03-22 08:00 0次下载
    Java的<b class='flag-5'>循环</b><b class='flag-5'>语句</b>的详细资料说明

    C语言的for循环语句的程序和电路图免费下载

    1、在许多实际问题中,需要程序进行有规律的重复执行,这时可以用循环语句来实现。在c语言中。用来实现循环语句有for语句,while
    发表于 08-20 17:31 1次下载
    C语言的for<b class='flag-5'>循环</b><b class='flag-5'>语句</b>的程序和电路图免费下载

    Verilog可综合循环语句

    Verilog中提供了四种循环语句,可用于控制语句的执行次数,分别为:for,while,repeat,forever。其中,for,while,repeat是可综合的,但
    发表于 10-13 12:23 1.8w次阅读

    简述HDL中循环语句的可综合

    (含循环体)组成的代码块,EDA称为循环框架(Loop Frame)。 在这里,HDL循环语句与算法语言的循环
    的头像 发表于 05-12 09:27 1872次阅读
    简述HDL中<b class='flag-5'>循环</b><b class='flag-5'>语句</b>的可<b class='flag-5'>综合</b>性

    什么是python break语句-终止循环

    循环的过程中如果要退出循环,我们可以用break语句和continue语句
    的头像 发表于 02-23 11:17 1967次阅读

    C语言for语句介绍

    除了可以用while语句和do...while语句实现循环外,C语言还提供for语句实现循环,而且for
    的头像 发表于 03-09 11:14 833次阅读

    Python的循环语句介绍

    哈喽大家好,我是知道。今天带大家了解下Python的循环语句 定义循环语句允许我们执行一个语句语句
    的头像 发表于 05-11 17:39 645次阅读

    Verilog常用的循环语句及用途

    本文主要介绍verilog常用的循环语句循环语句的用途,主要是可以多次执行相同的代码或逻辑。
    的头像 发表于 05-12 18:26 1246次阅读

    MATLAB中条件语句循环结构的使用方式

    MATLAB提供了多种条件语句循环结构。
    的头像 发表于 07-05 09:41 2512次阅读

    条件语句/循环语句simulink的实现方法(一)

    条件语句循环语句是计算机编程中常用的两种控制结构
    的头像 发表于 07-21 16:48 6504次阅读
    条件<b class='flag-5'>语句</b>/<b class='flag-5'>循环</b><b class='flag-5'>语句</b>simulink的实现方法(一)