模加法器输出显示没有变化

2023-12-10

输出波形显示无变化sum, dif, burrow, and out。即使增加延迟时间后,输出仍然没有变化。这应该像 mod 加法器一样工作,如加 10 和 2,并且 mod 3 给出输出零。

CODE

module Mod_adder(a,b,p,out);
input [3:0] a;
input [3:0] b;
input [3:0] p;
output [3:0] out;
wire [3:0] sum;
wire cout;
wire burrow;
wire [3:0] dif;
ripple_carry_adder r1(a,b,sum,cout,1'b0);
ripple_carry_adder r2(sum,~p,dif,burrow,1'b1); 
repeat_sum rs1(dif,burrow,sum);
outval o1(sum,burrow,out);
endmodule

module full_adder(in0, in1, cin, out, cout);
input in0, in1, cin;
output out, cout;
assign out = in0 ^ in1 ^ cin;
assign cout = ((in0 ^ in1) & cin) | (in0 & in1);
endmodule


module ripple_carry_adder(in0, in1, out, cout,cin);
input [3:0] in0;
input [3:0] in1;
output [3:0] out;
output cout;
input cin;
wire c1, c2, c3;
full_adder fa0(in0[0], in1[0], cin, out[0], c1);
full_adder fa1(in0[1], in1[1], c1, out[1], c2);
full_adder fa2(in0[2], in1[2], c2, out[2], c3);
full_adder fa3(in0[3], in1[3], c3, out[3], cout);
endmodule

module repeat_sum(dif,burrow,sum);
input [3:0] dif;
input burrow;
output [3:0] sum;
assign sum = (burrow == 1'b0) ? dif:sum;
endmodule

module outval(sum,burrow,out);
input [3:0] sum;
input burrow;
output [3:0] out;
assign out = (burrow == 1'b1) ? sum:out;
endmodule

试验台

 ` include "MOD_ADDER.V"
   module Mod_adder_tb; 

   reg [3:0] a; 
   reg [3:0] b;
   reg [3:0] p;
   wire [3:0] out;  // wires

 // Instantiate the module to be tested
  Mod_adder MA1(a,b,p,out);

  initial begin    // initial block
   $dumpfile("Test_Full_Adder.vcd");
   $dumpvars(1, MA1);
    a=4'b1010; 
    b=4'b0100; 
    p=4'b0011; 
    #100;
    end // end of initial block
    endmodule

我看到两个主要问题。

Your out测试平台信号未知(X)因为驱动程序争用。例如,sum信号输入Mod_adder有多个驱动程序:从r1实例并从rs1实例。这out的输出r1sum的输出rs1都在驾驶sum金属丝。您不应从 2 个不同的模块实例驱动相同的信号。您可以重命名其中之一sum向某些独特的事物发出信号,例如sum_rs1并声明一个新的wire.

wire [3:0] sum, sum_rs1;

此外,您还有组合反馈循环。例如:

assign out = (burrow == 1'b1) ? sum:out;

The out信号不应同时位于连续分配的左侧和右侧。

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

模加法器输出显示没有变化 的相关文章

  • Verilog 显示中不必要的空间

    我正在尝试以十进制显示一些 32 位值 除了 b 和前一个字符之间有奇怪数量的不必要的空格外 这工作正常 例如 如果我有一个 32 位 reg a 其十进制值为 33 我将使用类似的东西 initial begin display a d
  • 错误:“(vlog-2110) 非法引用网络”

    我在 SystemVerilog 中有一个简单的 FIFO 代码 我得到几个vlog 2110 illegal reference to net错误消息 我的错误消息后面是我的代码 错误信息 vlog work 工作 sv stats no
  • 何时使用tick(')进行Verilog数组初始化?

    数组初始化可以通过或不通过 int a 8 0 1 2 3 4 5 6 7 Packed int b 8 0 1 2 3 4 5 6 7 Unpacked 有没有correct方式 假设数组使用不可打包的类型 例如int string ET
  • verilog模块中的reg和wire有什么区别?

    在verilog模块中我们什么时候应该使用reg以及什么时候应该使用wire 我还注意到有时输出会再次声明为 reg 例如 D 触发器中的 reg Q 我在某处读过这个 过程赋值语句的目标输出必须是 reg 数据类型 什么是程序赋值语句 我
  • 比较数字进行排序然后得到中值

    使用按位或比较运算符对五个整数进行排序可以通过以下方式实现 首先获取最大的数字 然后获取第二大的数字 然后获取第三大的数字 依此类推 这是我获取最高数字的代码 include
  • 简单赋值时不输出期望值

    当我将一些值分配给具有四位的变量时 当我简单地输出该值时 我会得到意想不到的结果 我以前从未见过这个 想知道我是否在语法上做错了什么 module main reg 3 0 x initial begin monitor b x x 001
  • [Verilog] Verilog 基本格式和语法

    主页 元存储博客 全文 3000 字 文章目录 1 声明格式 1 1 模块声明 1 2 输入输出声明 1 3 内部信号声明 1 4 内部逻辑声明
  • 将枚举转换为逻辑

    考虑以下模块声明 module DFF d q CLK RESET parameter W 2 input W 1 0 d input CLK input RESET output logic W 1 0 q endmodule 当 d 和
  • 在逻辑中使用单端端口期待差异对?

    我使用的逻辑被设置为需要一个差分对时钟端口 然而 对于一个特定的应用程序 我只能输入一个单端时钟 由于硬件限制 修改逻辑以接受单端时钟不是一种选择 因为涉及许多文件和代码行 有没有办法可以输入单端端口并以某种方式将其馈送到模块的差异对端口
  • Verilog 错误:必须连接到结构网络表达式

    我收到错误 output or inout port Qout must be connected to a structural net expression 我评论了下面代码中发生错误的行 代码被修剪 压缩 我搜索了答案 似乎我无法将输
  • if 语句导致 Verilog 中的锁存推断?

    我正在编写用于合成算法的 Verilog 代码 我对哪些情况可能导致推断锁存器有点困惑 下面是这样的一段代码 虽然它在模拟中工作得很好 但我担心它可能会导致硬件问题 always b1 or b2 b1 map b2 map m1 map
  • 如何使用 Verilog 和 FPGA 计算一系列组合电路的传播延迟?

    我是 FPGA 和 HDL 的新手 但我正在尝试学习 但无法弄清楚这一点 如何通过多个级别的组合逻辑来计算或估计传播延迟 我可以仅凭经验确定这一点 还是可以在设计时弄清楚 在这种情况下 我使用 FPGA 来实现奇偶校验设置和检查电路 该电路
  • Verilog 中的“net”代表什么?

    我刚刚开始学习Verilog 据我了解 Verilog有net数据类型 什么是net代表 网络就是这样一种数据类型 您不使用它来存储值 它们代表物理连接 您可以将线路视为一种网络数据类型 你可以去网上看看更多here http www ee
  • 如何使用 don't cares 参数化 case 语句?

    我有一条称为输入的电线 我想检测前导的数量 我正在尝试创建一个模块 该模块使用下面的 case 语句根据前导零的数量更改输出数据 然而 输入的大小是可参数化的 如果 X 是固定值 4 我将创建一个 case 语句 case input 4
  • 在 Verilog 中判断总线是否包含单个 x 的最佳方法是什么?

    我有一个监控总线的测试台 总线内的一些信号 位 可以是 1 bx 由于多种原因 我需要知道总线内是否有任何信号是 1 bx 如果总线包含任何 x 测试 不用于综合 仅用于模拟目的 的最佳方法是什么 我曾希望我可以使用减少或然后使用 但这似乎
  • 标识符必须用端口模式声明: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 中的案例陈述

    我遇到了优先级编码器设计 并找到了一种使用 case 语句来实现它的新方法 唯一令人困惑的是 case语句是否优先考虑case 例子 case 1 b1 A 3 Y lt 4 b1000 A 2 Y lt 4 b0100 A 1 Y lt
  • 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

随机推荐

  • Django 管理员。显示分层下拉过滤器

    我有以下模型 from django db import models class State models Model name models CharField max length 30 abbreviation models Cha
  • Azure-Functions:您可以使用 web.config 限制(例如 IP 限制或基本身份验证)

    Azure 网站可能存在 IP 限制 as 正在使用基本身份验证保护站点 这些技术或任何其他 web config 技术是否可以在 Azure Functions 上使用 或者是否需要进行编码 我在 Azure Function 的 www
  • AchartEngine 中的圆环图半径

    我正在尝试在 aChartengine 中设置圆环图内圆半径和外圆半径 下面是我的代码 public class MainActivity extends Activity GraphicalView gv RelativeLayout r
  • 如何在 Bottle 中将 wsgi.url_scheme 设置为 https?

    我想将所有请求重定向到http to https 是否有通用的设置方法wsgi url scheme to https在 Python 2 7 Bottle 应用程序中 应用程序的一般结构是 setup py contains instal
  • Maven 中的传递 AAR 依赖项

    我正在从使用 android maven plugin 的 Maven 项目构建 Android 应用程序 在这个项目中 我使用新的测试版数据绑定库 它包含在 Android SDK 的本地 m2repository extras andr
  • 使用 CSS GRID 为什么我会出现这种差距?

    我正在学习 CSS GRID 但我不知道为什么在下面的示例中出现空白 第二个项目可以适合第一个轨道 但我却在那里出现了间隙 这是代码 container display grid margin 40px grid gap 20px text
  • 当命名类型 T 的任何方法具有指针接收器时,复制类型 T 的实例

    I read Go 编程语言书籍最近学习golang编程语言的好资源 6 2节中有一段关于类型的复制实例T当它是指针接收器或不在方法中时 我无法理解它 有没有用一个有意义的例子来解释这一段 6 2 使用指针接收器的方法 如果命名类型 T 的
  • 使用Scrapy爬取多个域,无需纵横交错

    我已经设置了一个 CrawlSpider 聚合所有出站链接 从start urls仅通过例如一定深度DEPTH LIMIT 2 class LinkNetworkSpider CrawlSpider name network allowed
  • 尽管安装了 PIP,Python Pillow(或 PIL)仍无法工作

    我正在关注文档 https pillow readthedocs io en stable 我用 pip 成功安装了 Pillow 但是 当我尝试导入Image我可以的功能 a 仅从 PIL 导入 b 只得到没有模块的错误PILc 出现没有
  • AJAX post数据到达ASP.NET Core 2.1控制器时为空

    我使用以下 jQuery 代码将数据发布到 ASP NET Core MVC 2 1 2 页面 function OnCountryChange ajax url OnCountryChange type POST contentType
  • 如何使用正则表达式用括号将文本括起来?

    我一直试图用括号将通过正则表达式找到的一些文本括起来 例如替换全部is with is Input is This is a long sentence that IS written Desired output This is a lo
  • 我的 defaultdict(list) 不会显示在模板上,但会显示在我的视图中[重复]

    这个问题在这里已经有答案了 可能的重复 Django 模板无法循环defaultdict 我想知道为什么我的defaultdict list 当我在views py中测试它时会显示 但是当我在模板上显示数据时 我什么也没得到 甚至没有错误
  • 在处理程序中提取数据库字段值

    我想提取一个数据库字段 文本 并将其作为参数从处理程序传递给另一个函数 但是 我遇到了类型错误 完全是虚构的例子 所以可能感觉有点做作 但应该说明我遇到的问题 Person name Text Car personId PersonId n
  • Python selenium 无头模式缺少元素

    我正在使用 selenium 来抓取亚马逊搜索结果页面 当我结束它时 我将抓取转移到无头模式 因为它可以节省效率 然而在无头模式下 某些页面元素不可用比如赞助品牌 使用非无头模式时它工作得很好 但是即使设置以下选项后 使用 headless
  • 整数溢出接下来会发生什么

    我在用int 22 现在作为我的表字段 但目前它的价值已经溢出2147483647停下来 我的3000 个字段出现相同的 id 我真的很困惑 现在我改变了它bigint 20 unsigned但也许我将来也会遇到同样的情况 请建议我用什么更
  • 未调用 configurePersistentStoreCoordinator 来保存 NSPersistentDocument

    我在保存 NSPersistentDocument 时遇到了奇怪的行为 我可以创建一个自动保存的新文档 没有问题 但当我保存它时write to ofType for absoluteOriginalContentsURL 被称为但它变成了
  • fopen 返回资源 ID #4

    为什么有回声Resource id 4而不是页面本身 Because fopen 返回指向文件的资源指针 而不是文件的内容 它只是打开它以供后续读取和 或写入 具体取决于您打开文件的模式 你需要fread handle 中引用的资源中的数据
  • 从 ItemsControl 获取单击的对象并使用其属性填充 Popup

    我有一个ItemsControl它显示我的视图模型列表中的对象 我也有代码来显示Popup当用户单击 ItemsControl 中的项目时 但是我不知道如何从单击的项目中获取实际对象以读取其属性并将其显示在Popup 我有一个Click的事
  • Tibco Spotfire 中的动画数据变化

    这是我在这里发表的第一篇文章 所以如果我在此过程中在礼仪方面失败 请原谅我 我正在开发一个 POC 用于处理 Tibco Spotfire 7 0 中的可视化动画 这将允许用户通过迭代一组过滤器或基于一组预先确定的数据迭代更改数据来查看数据
  • 模加法器输出显示没有变化

    输出波形显示无变化sum dif burrow and out 即使增加延迟时间后 输出仍然没有变化 这应该像 mod 加法器一样工作 如加 10 和 2 并且 mod 3 给出输出零 CODE module Mod adder a b p