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

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

3天内不再提示

如何使用参数化编写可重用的verilog代码

jf_78858299 来源:Hack电子 作者:Hack电子 2023-05-11 15:59 次阅读

我们将介绍如何使用verilog参数和generate语句来编写可重用的verilog 代码。

与大多数编程语言一样,我们应该尝试使尽可能多的代码可重用。这使我们能够减少未来项目的开发时间,因为我们可以更轻松地将代码从一个设计移植到另一个设计。

我们在verilog中有两个可用的结构,可以帮助我们编写可重用的代码 - 参数化和generate语句。这两种结构都允许我们创建更通用的代码,当我们实例化组件时,我们可以轻松修改这些代码以满足我们的需求。

Verilog参数化

在verilog中,参数是常量的局部形式,可以在我们实例化模块时为其赋值。由于参数的范围有限,我们可以多次调用同一个verilog模块,并为参数分配不同的值。这使我们能够动态配置模块的行为。

下面的verilog代码片段显示了在模块中声明参数的方法。当我们在这样的verilog模块中声明一个参数时,我们称之为参数化模块。

上面verilog代码中的 < parameter_name > 字段用于为我们的参数提供标识符。我们使用此标识符在代码中调用参数值,就像使用普通变量一样。我们还可以使用上面示例中的 字段为参数分配默认值。这很有用,因为它允许我们实例化组件,而无需专门为参数赋值。当我们 verilog设计单元中实例化模块时,我们可以使用命名关联或位置关联为参数分配一个值。这与将信号分配给模块上的输入或输出完全相同。但是,当我们编写使用 verilog 1995 标准的代码时,我们只能使用位置关联为参数赋值。

下面的 verilog 代码片段显示了我们在实例化模块时用于为参数赋值的方法。

Verilog 参数化模块示例

为了更好地理解我们如何在verilog中使用参数,让我们考虑一个基本的例子。对于此示例,让我们考虑一个需要两个同步计数器的设计。其中一个计数器宽 8 位,另一个宽 12 位。

为了实现这个电路,我们可以编写两个具有不同宽度的不同计数器模块。然而,这是一种对电路进行编码的低效方法。相反,我们将编写单个计数器电路并使用参数来更改输出中的位数。

由于理解我们如何使用参数化模块并不重要,因此我们将排除此示例中的功能代码。相反,我们将只研究如何在 verilog中声明和实例参数化模块。

下面的 verilog 代码片段显示了我们如何为参数化计数器模块编写接口

在这个例子中,我们看到了如何使用参数来调整verilog中信号的大小。 我们不是使用固定数字来声明端口宽度,而是将参数值替换为端口声明 。这是 verilog 中参数最常见的用例之一。

在上面的 verilog 代码中,我们将 BITS 参数的默认值定义为 8。因此,当我们想要一个不是 8 位的输出时,我们只需要为参数分配一个值。

下面的代码片段显示了当我们想要 12 位输出时如何实例化这个模块。在这种情况下,我们必须在实例化 verilog 模块时覆盖参数的默认值。

虽然我们在上面的示例中使用 命名关联 ,但我们也可以使用位置关联为 verilog 中的参数赋值。

下面的代码片段显示了我们将如何使用位置关联将值 12 分配给 BITS 参数。

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

    关注

    28

    文章

    1326

    浏览量

    109302
  • 编程语言
    +关注

    关注

    9

    文章

    1878

    浏览量

    33123
  • 代码
    +关注

    关注

    30

    文章

    4555

    浏览量

    66772
收藏 人收藏

    评论

    相关推荐

    Verilog HDL代码书写规范

    1. 目的本规范的目的是提高书写代码的可读性、可修改性、重用性,优化代码综合和仿真的结果,指导设计工程师使用VerilogHDL规范代码
    发表于 12-08 14:36

    如何用参数加法器树编写Verilog

    有没有人对如何用参数加法器树编写Verilog有任何建议,输入参数是操作数的数量?加布里埃尔以上来自于谷歌翻译以下为原文Does anyo
    发表于 04-25 13:28

    如何在verilog编写代码

    是5位模式。我决定编写一个代码来生成值,而不是在LCD上看到它我会创建一个文本文件并将结果写入该文件。任何人都可以告诉我如何在verilog编写
    发表于 10-29 09:40

    如何编写代码Verilog

    大家好,我是新手使用Xilinx板。最近我被分配了一个任务来编程VIRTEX II PRO 1152板。你能给我一个广泛的想法,从我可以学习使用它开始一些好的来源。我必须编写代码Verilog的。谢谢你期待快速回复DHIRAJ
    发表于 06-02 09:40

    在SpinalHDL中的代码组织结构如何实现Component参数设计呢

    方式:some.where.else.theSignal.pull()在生成RTL代码时,会讲该信号声明一个端口链接偷穿到我们这一级的Component。Component参数设计与我们编写
    发表于 07-21 14:20

    Verilog代码书写规范

    Verilog代码书写规范 本规范的目的是提高书写代码的可读性、可修改性、可重用性,优化代码综合和仿真的结果,指导设计工程师使用
    发表于 04-15 09:47 106次下载

    Verilog编写的信道估计

    Xilinx FPGA工程例子源码:Verilog编写的信道估计
    发表于 06-07 14:54 38次下载

    通过编写verilog代码实现OLED驱动和内容显示的解决方案

    本实验通过verilog代码编写,在EGO1开发板上实现OLED的驱动和内容显示。
    的头像 发表于 11-11 08:22 1.9w次阅读

    基于代码无法重用的详细分析

    刚学编程的时候有种想法,认为难题应该只解决一次。 但渐渐接触多了前端开发,经常要重复编写代码,特别是生成页面时。 是什么原因导致了代码无法重用呢? 来看看大家是怎样看待这个问题的
    的头像 发表于 12-22 15:55 3354次阅读

    浮点型算法的加、减、乘、除的verilog代码

    描述了浮点型算法的加、减、乘、除的verilog代码编写了6位指数位,20位小数位的功能实现并且通过仿真验证
    发表于 01-16 14:15 1次下载

    高覆盖率的Verilog代码编写技巧

    设计工程师需要关心的主要有行覆盖率(Block),条件覆盖率(Expression),翻转覆盖率(Toggle),状态机覆盖率。本文从ASIC设计的角度上来讨论,如何写出高覆盖率的Verilog代码
    的头像 发表于 05-26 17:30 3718次阅读

    Verilog程序编写规范

    在实际工作中,许多公司对Verilog程序编写规范都有要求。在公司内部统一Verilog程序编写规范不仅可以增强程序的可读性、可移植性,而且也有助于逻辑工程师之间交流、沟通,提升逻辑组
    的头像 发表于 09-15 09:35 3513次阅读

    基于verilog编写99秒计数器

    Verilog语言编写,通过模块化设计的99秒技术器
    发表于 02-16 16:16 0次下载

    如何使用verilog参数和generate语句来编写重用verilog代码

    与大多数编程语言一样,我们应该尝试使尽可能多的代码重用。这使我们能够减少未来项目的开发时间,因为我们可以更轻松地将代码从一个设计移植到另一个设计。
    的头像 发表于 05-08 16:59 988次阅读

    FPGA的Verilog代码编写规范

      注:以R起头的是对编写Verilog代码的IP设计者所做的强制性规定,以G起头的条款是建议采用的规范。每个设计者遵守本规范可锻炼命名规范性。
    的头像 发表于 08-15 16:23 1222次阅读