• Verilig语法之——Generate 结构


    在设计中需要使用到多个重复的电路,使用for循环可以简洁清楚的进行实例化。本文参考《IEEE Standard for Verilog®
    Hardware Description Language》,版本IEEE_1364_2005,章节12.4。

    generate 结构有两种:循环与条件,循环。循环生成构造允许将单个生成块多次实例化到模型中。条件生成构造,包括 if-generate 和 case-generate 构造,最多从一组替代生成块中实例化一个生成块。术语生成方案是指用于确定实例化哪些或多少生成块的方法。它包括出现在生成构造中的条件表达式、案例替代和循环控制语句。使用中使用条件生成结构的较少。因此主要介绍generate-for结构。

    循环结构(generate-for)

    这里使用例子进行学习,然后给出几点注意事项。

    基本介绍

    注意事项如下

    • 一个module中,可以出现多个循环,但是同一个模块的多个循环的循环变量值不能相同
    • 可以循环嵌套使用。案例见demo2
    • “generate”、“endgenerate”关键字不是必需的,但要是写了一个,必须包含另一个
    • genvar 在实例化过程中用作整数来评估生成循环并创建生成块的实例,但在仿真时它不存在。除循环生成方案外,不得在任何地方引用 genvar。genvar 的任何位设置为 x 或 z,这将是一个错误。
    • 循环生成结构中的生成块可以命名或未命名,往往我们建议对其进行命名
    • 任何其他声明例如一个模块reg,wire等变量不可与生成块实例数组的名称genvar命名的变量相同。否则就是错误的
    • 循环没有终止,循环重复了genvar 值(同一个模块的多个循环的循环变量值不能相同),是错误的。

    demo

    demo 1——普通语法

    module mod_a;
    genvar i;
    generate
    reg a;
    for (i=1; i<0; i=i+1)   begin: loop_name_a
    ...
    end
    endgenerate
    endmodule
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    demo2——多级循环

    多级生成循环中的分层生成块实例名称如下图所示。对于生成循环创建的每个块实例,循环的生成块标识符通过在末尾添加“[genvar value]”来索引生成块标识符。后续有使用对其进行补充

    条件结构

    条件生成构造,if-generate 和 case-generate,根据细化期间评估的常量表达式,从一组替代生成块中最多选择一个生成块。选定的生成块(如果有)被实例化到模型中。这里不进行其他说明,后续有需要进行补充。

  • 相关阅读:
    ArcGIS Pro发布地图服务(影像、矢量)
    通俗解释魔法命令
    这些OAuth2客户端的认证方式你未必了解
    力扣第310场周赛总结与反思
    git连接GitHub上的远程仓库
    远距离双目视觉测量系统获得较高精度测量结果
    Python枚举类定义和使用
    silk 编解码器下载
    用postman 推送消息到GCP的pubsub
    PDF转Word怎么转?教你三招快速实现PDF转Word
  • 原文地址:https://blog.csdn.net/qq_41467882/article/details/126243780