Verilog HDL 循环语句错误:具有非常量循环条件的循环必须终止

2023-12-02

我对 Verilog 完全陌生,对于我在大学学习的课程,我必须很快了解它的很多内容。我正在摆弄我的 Altera DE2 板和 quartis2,并了解其细节。

我正在尝试制作一个通过开关打开和关闭的计数器。 到目前为止,计数器根据按键进行计数和重置。

这是我的错误:

Error (10119): Verilog HDL Loop Statement error at my_first_counter_enable.v(19): 
loop with non-constant loop condition must terminate within 250 iterations
    

我知道我被要求提供一个循环变量,但即使这样做我也会收到错误。

module my_first_counter_enable(SW,CLOCK_50,LEDR,KEY);

    input CLOCK_50;
    input [17:0] SW;
    input KEY;

   output [17:0] LEDR;

   reg [32:0] count;
   wire reset_n;
   wire enable;

   assign reset_n = KEY;
   assign enable = SW[0];
   assign LEDR = count[27:24];


   always@ (posedge CLOCK_50 or negedge reset_n) begin
       while(enable) begin
           if(!reset_n)
               count = 0;
           else
               count = count + 1;
       end
    end

endmodule

我希望有人能指出我循环中的错误并允许我继续。


我认为你不想使用while在那里循环。怎么样:

   always@ (posedge CLOCK_50 or negedge reset_n) begin
           if(!reset_n)
               count <= 0;
           else if (enable)
               count <= count + 1;
    end

我还添加了非阻塞作业<=,更适合同步逻辑。

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

Verilog HDL 循环语句错误:具有非常量循环条件的循环必须终止 的相关文章

  • 使用forever和always语句

    以下两个代码都会生成一个时钟 我需要知道除了时钟生成之外 永远循环是否还有其他用途 我只在时钟一代中遇到过永远 如果只是为了这个目的 那岂不是毫无用处 initial begin clk 0 forever begin 5 clk clk
  • 如何在verilog中逐行读取文本文件?

    我有一个 SREC 文件 它是一个简单的文本文件 我想在 verilog 中逐行读取它 我怎样才能做到这一点 以下读取文件 每个时钟周期 1 行 预期的数据格式是每行一个十进制数 integer data file file handler
  • 修改后的 baugh-wooley 算法乘法 verilog 代码不能正确乘法

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

    在 SystemVerilog 中 分层模块可以通过简单数据类型 复杂数据类型 结构 联合等 或接口进行连接 我感兴趣的功能是将两个模块之间的所有信号聚合到一个地方 这简化了代码的维护 例如 在下面的例子中 更改 s point 的定义而不
  • Verilog:添加寄存器的各个位(组合逻辑,寄存器宽度可参数化)

    我正在尝试想出一种方法来添加寄存器的各个位 例如 if regA 111000 then regB 3 位的总和regA 1 Verilog或SystemVerilog中是否有可以直接使用的可综合函数 运算符来执行此操作 如果不是 那么问题
  • verilog 中的“<<”运算符

    我有一个verilog代码 其中有一行如下 parameter ADDR WIDTH 8 parameter RAM DEPTH 1 lt lt ADDR WIDTH 这里将存储什么RAM DEPTH以及什么是 lt lt 操作员在这里做
  • 如何获取值数组作为 plusargs?

    如何获取值数组作为参数 我需要从命令行获取一组未定义大小的命令 如何将这些参数放入数组或队列中 Eg CMDS READ WRITE READ N WRITE 它应该被带到一个数组中 value plusargs不支持数组 但支持字符串 看
  • 始终块中的 Veriloggenerate/genvar

    我试图让一个模块通过 ISE 12 4 中的语法检查 但它给了我一个我不明白的错误 首先是代码片段 parameter ROWBITS 4 reg ROWBITS 1 0 temp genvar c generate always pose
  • 合并关联数组

    假设我有两个关联数组 有没有办法使用连接运算符之类的东西来合并它们 我尝试了这个 但它不起作用 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
  • 标识符必须用端口模式声明:busy。 (Verilog)

    我有如下所示的 Verilog 代码 当我编译它时 我收到以下错误消息 并且代码的第一行突出显示 Error 标识符必须用端口模式声明 busy Code module main clk rst start busy ready cnt s
  • 具有 +1 逻辑的 4 位计数器 D 触发器

    我正在尝试通过 Verilog 实现带有 1 逻辑的 D 触发器计数器 但是我收到了很多有关网络多个常量驱动程序的错误代码 有人可以帮我吗 这是到目前为止的代码 module LAB clk clear Enable Q input clk
  • 如何在Verilog中将二维数组中的所有位设置为0?

    我构建了一个 8 2bits 数组来表示 Verilog 中的一块内存 reg 1 0 m 0 7 该存储器有一个复位信号 如果复位为1 则该存储器中的所有位都应重置为0 但是我不知道如何以简洁的方式设置m的所有位 因为如果有数百个内存中有
  • Verilog 中的 If 语句和分配连线

    我试图弄清楚基于组合逻辑分配电线的基础知识 I have wire val wire x wire a wire b always begin if val 00 I want to assign x a if val 01 I want
  • 在 Verilog 程序中使用连续分配?

    在 Verilog 程序中使用连续赋值是否可能和 或有用 例如 是否有任何理由将assign里面一个always堵塞 例如这段代码 always begin assign data in Data end 此外 是否可以用这种方法生成顺序逻
  • 系统 verilog 中没有类型的输入

    我在一个系统 verilog 代码的输入和输出的示例中遇到过module没有说明它们的类型 例如logic wire module mat to stream input 2 0 2 0 2 0 a b input newdata inpu
  • 学习 Verilog 的资源 [关闭]

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

    我是 Verilog 新手 并且遇到了很多麻烦 例如 我想要一个包含八个单元的数组 每个单元都是 8 位宽 以下不起作用 reg 7 0 transitionTable 0 7 assign transitionTable 0 10 仅仅做
  • 为什么我们在FGPA / VHDL / VIVADO中使用REG?

    我正在使用 Xilinx 的 vivado 在 verilog 中进行编程 我想知道为什么我们使用某些输出reg 例如reg 3 0 encoder output我们使用它是因为我们的 16 到 4 编码器有 4 个输出 对吧 我假设我们使
  • 从测试台访问子模块中的输入和输出

    我的被 测设备 DUT 有许多子模块 我想测试其中的一些 我的测试夹具将是我的项目的顶层 比 DUT 高一级 并且由于我似乎只能访问下一层模块的输入和输出 所以我只能访问顶层的输入和输出被测设备 我希望能够从测试夹具下方的两层或多层模块访问

随机推荐

  • 无法在 MySQL 中获得正确的编码

    一段时间以来 我一直在努力解决 MySQL 中的编码问题 我正在建立一个数据库 其中不仅包含拉丁文 还包含西里尔文和阿拉伯文文本 这是我如何创建数据库的示例 CREATE DATABASE db1 DEFAULT CHARACTER SET
  • 错误:该位置没有任何可重复的内容

    我有一个文本文件 其中包含俚语及其用真正的英语替代的列表 我使用 作为分割点将此文本文件转换为字典 并且在转换后打印字典时一切似乎都正常 但是 源自此行的错误 slangs re re compile join slang dict key
  • 对两个给定日期之间的集合日期字段进行排序

    我想根据两天之间的日期字段对列表进行排序 比如从现在到接下来的三天 排序列表应从现在开始和接下来的 3 天按升序排列 之后的所有先前和未来日期按升序排列 e g List
  • 如何在多个 EJB 之间共享 Java 缓存系统 (JCS) 资源

    我使用 JCS 来存储 ldap 搜索结果 该结果应由多个 EJB 共享 我创建了一个单例类来仅初始化 JCS 一次 但由于 EJB 的类加载器 它已使用自己的副本初始化了多次 所以搜索资源不共享 你们如何解决需要在多个 bean 之间共享
  • 如何让应用程序在后台保持唤醒状态

    我编写了一个应用程序 该应用程序连接到蓝牙设备并在汽车 在后台 和导航 或其他东西 在前台使用 但在 Android 7 也可能是 6 上 应用程序会在一段时间后进入睡眠状态 当我尝试从相机拍照时 睡眠模式 立即生效 我的应用程序现在正在睡
  • 从基类方法调用基类重写函数

    public class A public void f1 String str System out println A f1 String this f1 1 str public void f1 int i String str Sy
  • 检测精灵套件中的碰撞

    我正在尝试使用精灵套件制作一个简单的游戏 基本思想是 有一名玩家可以跳跃以避免阻挡 但我有一个问题 我不知道如何做到当玩家击中方块时玩家消失并且血液动画开始 首先 我不明白我在苹果网站上找到的这段代码的作用 static const uin
  • 一个 docker 用户可以向另一个用户隐藏数据吗?

    Alice 和 Bob 都是同一主机上 docker 组的成员 Alice 想要在 Docker 容器中运行一些长时间运行的计算 然后将结果复制到她的主文件夹中 Bob 非常爱管闲事 Alice 不希望他能够读取她的计算所使用的数据 系统管
  • Leaflet js:如何在地图上绘制任何标记结束时获取纬度和经度

    我得到了一个接近的代码 但我不确定 因为我是第一次使用 Leaflet js 我的意图是 假设 Leaflet js 正在显示地图或非地理数据 并且我有一个与 Leaflet js 相关的工具栏 工具栏有许多标记 如圆形 多边形 方形等 当
  • 我正在尝试获取所有发表超过 3 篇作品的作者的列表 - DBpedia Sparql

    我正在尝试获取已完成 3 项或以上工作的所有作者的列表 在 DBpedia 中 我的示例可以运行在 http dbpedia org sparql 基本代码 select count work as totalWork author Whe
  • magento订单列表查询

    我想选择 Magento 中所有订单的列表 这是我目前正在处理的另一个 PHP 应用程序中显示来自 magento 的所有订单列表所必需的 也有人可以使用 Magento 约定给我写代码 例如Mage 我使用 Magento 1 4 2 版
  • 在 Shiny 中同步两个 Highchart - 输入更改时不调用 JS

    相关于上一篇文章我提出 我想在 R Shiny 中的一个单独但同步的 Highcharter 图中调用单击事件时 在两个方向上更新一个 Highcharter 图中的点以更改颜色 我能够在 R Shiny 中同步两个 Highcharter
  • 使用 python 替换特定行中的字符串

    我正在编写一个 python 脚本来替换具有特定扩展名 seq 的目录中每个文本文件中的字符串 替换的字符串只能来自每个文件的第二行 输出是一个新的子目录 称为 clean 其文件名与原始文件相同 但带有 clean 后缀 输出文件包含与原
  • 强制 CEFSharp 下载而不显示对话框

    我有一个带有 CEFSharp 的 WPF 应用程序 它是一个 Web 浏览器 当我单击下载链接时 它会显示一个对话框并询问我要将文件保存在哪里 如何强制 Web 浏览器下载任何文件而不显示对话框 我想创建一些像谷歌浏览器这样的东西 因此
  • Python 中昂贵对象的智能缓存

    我有一个按顺序排列的图像目录 通常 我的代码将使用图像的连续子集 例如图像 5 10 中的数据 访问这些图像的简单选项是 使用在需要时加载图像并读取我的数据 例如像素值 的方法创建一个包装对象 这几乎没有内存开销 但速度会很慢 因为每次都需
  • 当我尝试保存新记录或更新现有记录时,EF 返回 0000-0000-0000-xxx 作为 Guid?

    我在我的 C 项目中使用 EF4 我面临的问题是 当我尝试保存记录时 出现主键违规 并且 PK 值为 0000 0000 0000 xxx 据我猜测 EF 无法识别 IsIdentity 标志并生成 guid 值 在我的表的 SQL Ser
  • OpenCV 中的 const Mat 引用有意义吗?

    在下面的函数中 foo const Mat img img可以在函数中进行更改 甚至编译器不会发出警告 为什么 是不是意味着const Mat参考没有任何意义 这是因为 Mat 包含指向实际图像数据的指针 const 仅适用于 Mat 对象
  • JavaFX安装

    我是 Java 新手 目前正在阅读文本并学习 我已经在我的系统中安装了JDK opt目录 在 Kubuntu 上工作 我还安装了 openjfx opt 由于我使用了终端 每当我想编译或运行涉及 JavaFX 模块的内容时 我都会使用 ja
  • 如何获取“TYPE_3BYTE_BGR”图像的 RGB 值?

    我有一张图片TYPE 3BYTE BGR我想把它转换成TYPE INT RGB 尽管我已经搜索过 但我还没有找到执行此操作的方法 我想逐像素转换图像 然而 似乎BufferedImage getRGB i j 不起作用 如何获取 type
  • Verilog HDL 循环语句错误:具有非常量循环条件的循环必须终止

    我对 Verilog 完全陌生 对于我在大学学习的课程 我必须很快了解它的很多内容 我正在摆弄我的 Altera DE2 板和 quartis2 并了解其细节 我正在尝试制作一个通过开关打开和关闭的计数器 到目前为止 计数器根据按键进行计数