如何使用 don't cares 参数化 case 语句?

2024-02-17

我有一条称为输入的电线,我想检测前导的数量 我正在尝试创建一个模块,该模块使用下面的 case 语句根据前导零的数量更改输出数据。然而,输入的大小是可参数化的。

如果 X 是固定值 4,我将创建一个 case 语句,

case (input)
  4'b0001  : o_data = {i_data[0]};
  4'b001x  : o_data = {i_data[1],1'b0};
  4'b01xx  : o_data = {i_data[2],2'b0};
  4'b1xxx  : o_data = {i_data[3],3'b0};
  default  : o_data = 4'b0000;
endcase

但是对于变量 X,我如何定义所有情况?

这个问题与这个问题类似:如何使用 SystemVerilog 定义参数化多路复用器 https://stackoverflow.com/questions/19875899/how-to-define-a-parameterized-multiplexer-using-systemverilog


你不能真正参数化一个case像这样的声明,但你可以使用for循环代替:

module lead_detector #(parameter int WIDTH = 4) (
  input logic[WIDTH - 1:0] in,
  output logic[WIDTH - 1:0] out
);
  always_comb begin
    out = '0;
    for (int i = WIDTH - 1; i >= 0; i--)
      if (in[i] == 1'b1) begin
        out[i] = 1;
        break;
      end
  end
endmodule

这是我看到我的设计师一直编写的代码(尽管是用 VHDL 编写的),但它应该是可综合的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 don't cares 参数化 case 语句? 的相关文章

  • Modelsim 对 SV 的支持

    我目前正在使用 modelsim SE 5 8e 它不支持SystemVerilog 我需要使用 SystemVerilog 来设计和验证我的项目 您知道哪个版本的 Modelsim 能够很好地支持 sytemverilog 的设计和验证子
  • 信号连接到以下多个驱动器

    我尝试运行以下命令并收到此错误 这是 Verilog 代码 module needle input referrence input penalty output index 7 0 inout input itemsets input r
  • 用于 Verilog 或 SystemVerilog 的 TAP(测试任何协议)模块

    是否有 TAP 测试任何协议 http testanything org Verilog 的实现 那就太好了 因为这样我就可以使用证明来自动检查我的结果 更新 10 9 09 有人问为什么不使用断言 部分 TAP 为我提供了一些很好的报告
  • 使用forever和always语句

    以下两个代码都会生成一个时钟 我需要知道除了时钟生成之外 永远循环是否还有其他用途 我只在时钟一代中遇到过永远 如果只是为了这个目的 那岂不是毫无用处 initial begin clk 0 forever begin 5 clk clk
  • 修改后的 baugh-wooley 算法乘法 verilog 代码不能正确乘法

    以下 verilog 源代码和 或测试平台可以很好地工作商业模拟器 iverilog https www edaplayground com x 3TuQ也形式化验证工具 yosys smtbmc https gist github com
  • 连接分层模块:SystemVerilog 中的结构与接口

    在 SystemVerilog 中 分层模块可以通过简单数据类型 复杂数据类型 结构 联合等 或接口进行连接 我感兴趣的功能是将两个模块之间的所有信号聚合到一个地方 这简化了代码的维护 例如 在下面的例子中 更改 s point 的定义而不
  • UVM 测试平台 - 将两个不同驱动程序连接到同一接口的“UVM”方式是什么?

    在我的测试平台中 我有一个需要驱动的接口 该接口可以以两种不同的模式驱动 每种模式都有自己的驱动程序协议和事务类型 到目前为止 我已经分别设计了两个 uvm agents 现在 我需要一种方法来交换其中一个或另一个 具体取决于我正在运行的测
  • 使用双寄存器方法解决亚稳态问题

    为了解决Verilog中不同时钟域引起的亚稳态 采用双寄存器方法 但据我所知 亚稳态的最终输出尚未确定 输出独立于输入 那么 我的问题是如何保证使用双寄存器方法输出的正确性 Thanks 您不能完全确定您避免了亚稳态 正如您所提到的 亚稳态
  • 如何在 Verilog 中综合 While 循环?

    我尝试设计一个 Booth 乘法器 它在所有编译器中运行良好 包括 Modelsim Verilogger Extreme Aldec Active Hdl 和 Xilinx Isim 我知道模拟和综合是两个不同的过程 而且只有少数Veri
  • 开始后跟冒号和变量是什么意思?

    什么是data mux意思是这里 它只是块的名称吗 if PORT CONFIG 32 P0 1 b1 begin data mux end 这些是块名称 它们特别适用于generate块 例如 您可以定义一个generate块如 genv
  • 合并关联数组

    假设我有两个关联数组 有没有办法使用连接运算符之类的东西来合并它们 我尝试了这个 但它不起作用 module tb initial begin int a int 1 1 2 2 int b int 3 3 4 4 display a a
  • 为什么 Verilog 不被视为编程语言? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 教授在课堂上说学生不应该说他们学会了用Verilog 编程 他说 Verilog 之类的东西不是用来编程的 而是用来设计的 那么 Verilog
  • Verilog 中的大括号是什么意思?

    我很难理解 Verilog 中的以下语法 input 15 0 a 16 bit input output 31 0 result 32 bit output assign result 16 a 15 a 15 0 我知道assign语句
  • VIM 高亮匹配开始/结束

    我正在尝试找到一个插件 它将突出显示与 Verilog 匹配的开始 结束语句 VIM 可以使用花括号 方括号 但不能使用它的开始 结束 我希望 VIM 突出显示正确的开始到正确的结束 在我看来 最好的选择是使用 matchit 该脚本是 v
  • 我怎样才能让我的verilog移位器更通用?

    这里我有一个移位器 但现在它最多只能工作 3 位 我一直在寻找 但不知道如何让它工作最多 8 位 module shifter a b out input 7 0 a b output 7 0 out wire 7 0 out1 out2
  • Verilog 按位或 ("|") 单子

    我见过 Verilog 代码 其中使用了按位或运算符 目的是什么 例如 address 15 14 0 or address 15 14 io din ramrd 不能省略 吗在这些情况下 在这种情况下 它充当归约运算符 例如 4 b100
  • 如何修复实例上的错误:未定义的变量 B?

    我想编译此 Verilog 代码 但在实例中出现错误B模块中的MultiP module error 1 Undefined variable B error 2 near Adder1 syntax error unexpected ID
  • 学习 Verilog 的资源 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我是 Verilog 新手 有人可以推荐学习资源 书籍 视频 博客或任何他们有良好个人经验并帮助他们更
  • Verilog 数组语法

    我是 Verilog 新手 并且遇到了很多麻烦 例如 我想要一个包含八个单元的数组 每个单元都是 8 位宽 以下不起作用 reg 7 0 transitionTable 0 7 assign transitionTable 0 10 仅仅做
  • 如何迭代创建参数化大小的总线来连接同样迭代创建的模块?

    我正在尝试使用组合逻辑方法在 verilog 中创建乘法器模块 以便不涉及时钟 我希望模块有一个通用的定义 即我希望乘法器分别接收大小为 M 和 N 位的两个因子 并返回大小为 M N 位的乘积 基本思想是计算部分积的和 每个部分积根据其级

随机推荐

  • 如何将dcm4che库导入到java项目中?

    我正在尝试导入dcm4che库到我的java项目 因为我想实现一个非常简单的应用程序 它将能够使用这个库 https github com dcm4che dcm4che https github com dcm4che dcm4che 我
  • 为这个要求写一个skype插件

    我正在开始研究 Skype 编程 Skype 插件是否只有一种技术 或者是否有多种框架或 API 我想制作一个插件 让我的数据库中的用户可以通过 Skype 相互通信 视频 音频 聊天 而无需看到彼此真实的 Skype id 这可能吗 我想
  • C# 4.0 的新“命名参数”功能不应该称为“命名参数”吗?

    我想这种命名可能有历史原因 而且其他语言也有类似的功能 但在我看来 参数在 C 中总是有一个名称 参数是未命名的参数 或者选择这个术语有什么特殊原因吗 哦 你想要论点 抱歉 这是参数 参数是左边大厅里的两扇门
  • 如何检查 Eclipse 插件性能

    我是 Eclipse 插件开发新手 我一直在修改我们团队中使用的一个插件 我不想添加新的瓶颈 另外 我要集成的 Eclipse 需要太多时间来安装插件 关于如何确定其原因有什么建议吗 所以我想知道一些技巧 如何检查插件的性能 任何可用的工具
  • jQuery .html() 不复制文本区域或输入的内容

    我正在尝试使用复制元素的内容elem html 但它不包括的内容inputs or textareas 这是一个示例 尝试在框中写入 然后单击 复制 http jsfiddle net gAMmr 2 http jsfiddle net g
  • ElasticSearch 6,具有动态索引映射的 copy_to

    也许我错过了一些简单的事情 但仍然无法弄清楚以下事情 从 ES 6 x 开始 all字段已弃用 建议使用copy to操作说明 https www elastic co guide en elasticsearch reference cu
  • 将 ipython 笔记本转换为 mediawiki

    我想将 ipython 笔记本转换为 mediawiki 标记 我有两个想法如何做到这一点 自定义导出nbconvert tool 先导出为LaTeX 然后使用pandoc将其转换为 mediawiki 标记 我在第一个选项中找不到任何内容
  • 在动态创建的类中实例化 spring bean

    我正在动态创建包含 spring bean 的类 但是这些 bean 没有被实例化或初始化 将它们保留为空 如何确保动态创建的类正确创建其所有 spring bean 这就是我动态创建类的方式 Class ctransform try ct
  • 官方 FTDI android 驱动程序 read() 不起作用

    我使用的是官方驱动程序http www ftdichip com Android htm http www ftdichip com Android htm 03 20 13 37 52 359 警告 FTDI 4453 读取开始 03 2
  • Golang解析HTML,提取带有标签的所有内容

    正如标题所述 我需要返回 html 文档的 body 标记中的所有内容 包括任何后续的 html 标记等 我很好奇知道解决此问题的最佳方法是什么 我有一个使用 Gokogiri 包的工作解决方案 但是我试图远离任何依赖于 C 库的包 有没有
  • Django 1.9 JSONField 更新行为

    我最近更新到 Django 1 9 并尝试更新一些模型字段以使用内置 JSONField 我正在使用 PostgreSQL 9 4 5 当我尝试创建和更新对象的字段时 我遇到了一些奇怪的事情 这是我的模型 class Activity mo
  • Rails 4 多域应用程序,为每个域设置了语言环境 i18n 语言环境

    在 Rails 4 多域应用程序中 我需要为每个域提供 4 种语言的一组区域设置文件 总共 3 个域 有些翻译在领域之间重叠 但其中一些非常具体 所以我正在考虑一种类似于这样的结构 config locales en yml fr yml
  • Android Studio 4.1 在 Mac 中卡在加载屏幕

    从昨天开始 我的 Android Studio 就一直停留在加载屏幕上 X X 我尝试过的 正在重新启动计算机 清除垃圾文件和日志 完全卸载然后重新安装Android Studio 遵循许多不同的解决方案 例如 其中之一是here http
  • 如何在 :before 伪类中设置 SVG 图像的大小?

    我想在 CSS 中显示图像 before元素 withimage before content url path to image svg display block height 20px width 20px 问题是 height an
  • 绘制词频和 NLTK

    我有一个包含各种单词的文件 我想计算文档中每个单词的频率并绘制它 但是 我的情节没有显示结果 这x axis必须包含单词 并且y axis频率 我在用NLTK NumPy and Matplotlib 这是我的代码 也许我做错了什么 def
  • 是否有直接指示 RESPONSE.REDIRECT 转到上一页?

    我有一个 Web 应用程序 服务台票证系统 带有一个收件箱来监视传入的请求 并制作了一些过滤按钮来帮助用户根据请求者姓名 创建日期等来安排请求 每个过滤器都会简单地调用同一页面 但会向查询字符串添加一些代码 例如 如果用户按下标有 Sort
  • 在 jinja2 循环中对 dict 的 dict 进行排序

    我如何对字典进行排序 my dict abc name B is sth True xyz name A is sth True by name在金贾 我试过了 for id data in my dict dictsort by valu
  • Python ImportError 没有名为 crypto.PublicKey.RSA 的模块

    当我尝试执行 python 程序时 我从终端得到这个 Traceback most recent call last File ring py line 1 in
  • 使用副本的 Microsoft.Web/sites/hostNameBindings 资源的 ARM 模板部署

    我对一系列 Azure 数据中心位置使用复制操作 以便为每个位置部署应用服务计划和网站 我能够创建流量管理器配置文件并使用复制对象将每个位置的端点添加到流量管理器配置文件中 当我尝试将每个网站的 CNAME 设置为我的自定义域名时 请按照说
  • 如何使用 don't cares 参数化 case 语句?

    我有一条称为输入的电线 我想检测前导的数量 我正在尝试创建一个模块 该模块使用下面的 case 语句根据前导零的数量更改输出数据 然而 输入的大小是可参数化的 如果 X 是固定值 4 我将创建一个 case 语句 case input 4