VHDL乘法器

2023-12-25

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity Lab3_Adder1 is
    Port ( cin : in  STD_LOGIC;
           a : in  STD_LOGIC_VECTOR (3 downto 0);
           b : in  STD_LOGIC_VECTOR (3 downto 0);
           s : out  STD_LOGIC_VECTOR (3 downto 0);
           cout : out  STD_LOGIC);
end Lab3_Adder1;

architecture Behavioral of Lab3_Adder1 is

    SIGNAL c : STD_LOGIC_VECTOR (4 DOWNTO 0);

begin
    c(0) <= cin;
    s <= a XOR b XOR c (3 DOWNTO 0);
    c (4 DOWNTO 1) <= (a AND b) OR (a AND c(3 DOWNTO 0)) OR (b AND c(3 DOWNTO 0));
    cout <= c(4);
end Behavioral;

你好,我是第一次使用这个论坛。我正在 VHDL 上进行华莱士树乘法。上面的代码是全加器的代码。我想知道我们如何在主代码中调用函数/组件? (就像 C 编程一样)。我想在我的主代码中调用这个全加器。 (如果有任何错误,我的英语很抱歉,我是法国人)


在 VHDL 中调用函数就像在 C 中一样 - 可以初始化常量、信号或变量,也可以作为进程中的顺序语句。但现在这并不重要。

但你不调用组件!这就像在 C++ 中调用对象一样 - 完全没有意义!

在 VHDL 中,您可以实例化组件或(更简单!)实体,并使用信号来互连它们的端口。这(非常非常粗略地)更像是用面向对象的语言声明对象和发送消息。这称为“结构 VHDL”,通常出现在 VHDL 设计的顶层,用于创建和互连 CPU、内存接口、FFT 处理器等组件。

鉴于您的实体

entity Lab3_Adder1 is
    Port ( cin : in  STD_LOGIC;
           a : in  STD_LOGIC_VECTOR (3 downto 0);
           b : in  STD_LOGIC_VECTOR (3 downto 0);
           s : out  STD_LOGIC_VECTOR (3 downto 0);
           cout : out  STD_LOGIC);
end Lab3_Adder1;

例如,我可以构建一个 8 位加法器,如下所示:

entity Adder_8bit is
    Port ( cin : in  STD_LOGIC;
           a : in  STD_LOGIC_VECTOR (7 downto 0);
           b : in  STD_LOGIC_VECTOR (7 downto 0);
           s : out  STD_LOGIC_VECTOR (7 downto 0);
           cout : out  STD_LOGIC);
end Adder_8bit;

architecture Structural of Adder_8bit is

signal carry_int : std_logic;   -- between lower and upper halves

begin
-- We need to create and connect up two adders

LSB_adder : entity work.Lab3_Adder1
    Port Map( 
           cin => cin,
           a  => a(3 downto 0),
           b  => b(3 downto 0),
           s  => s(3 downto 0),
           cout => carry_int
    );
MSB_adder : entity work.Lab3_Adder1
    Port Map( 
           cin => carry_int,
           a  => a(7 downto 4),
           b  => b(7 downto 4),
           s  => s(7 downto 4),
           cout => cout
    );

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

VHDL乘法器 的相关文章

  • “等待上升沿(clk)”与“如果上升沿(clk)”有什么区别?

    我在 VHDL 中遇到了两种风格的过程语句 process clk begin if rising edge clk do something 另一种是 process begin wait until rising edge clk do
  • Opencv标量和矩阵相乘

    我一直在努力实现一些应该非常微不足道的事情 并且在Matlab 使用 OpenCV 的方法 我想简单地实现以下目标 cv Mat sample 4 5 6 4 2 5 1 4 2 sample 5 sample 之后的样本应该是 20 25
  • “警告 C0007:架构具有未绑定的实例”问题!

    我从 数字设计基础 一书随附的 CD 中获取了以下源代码 当我尝试运行该程序时 出现以下错误 Compiling Fig17 13 vhd C Users SPIDER Desktop EE460 The Final Project Fig
  • Lex VHDL '(勾号)令牌

    在 VHDL 中 字符可用于封装字符标记ie 或者它可以作为属性分隔符 类似于 CPP 的 token ie string hello 解析包含字符的属性名称时出现问题ie string a b c 在这种情况下 天真的词法分析器将错误地标
  • x/2 和 x>>1 或 x*2 和 x << 1 之间的差异,其中 x 是整数

    正如我们所知 计算整数 x 2 我们只需编写y x 2 对于 x 2 也类似 但优秀的程序员会使用位操作来计算这个值 他们只是做y x gt gt 1 这两种方法有什么区别吗 我所说的差异是指所需时间 空间 内存的差异 或者两者完全相同 即
  • 读取任意大小的任意数组

    以下代码在读取两个包含两个 5X5 数组的 txt 文件时工作正常 include
  • 敏感列表中的哪个信号触发该过程

    在VHDL中 当模拟测试平台时 我有一个过程和一个敏感度列表 是否可以查看敏感列表中的哪个信号触发了该过程 我知道这可能取决于工具 我正在使用 Xilinx ISE 模拟器是否提供此信息 您可以使用 transaction属性结合 even
  • 如何简单地将数据帧的两列相乘? [复制]

    这个问题在这里已经有答案了 我的输入是 a lt c 1 2 3 4 b lt c 1 2 4 8 df lt data frame cbind a b 我的输出应该是 a lt c 1 2 3 4 b lt c 1 2 4 8 d lt
  • 将库添加到 Vivado 2014.4

    我对 Vivado 和 VHDL 还很陌生 我想要一些关于基本问题的指导 我猜我可以创建自己的库并在我的项目中使用它们 就像使用默认库和基本库一样 eg library IEEE use IEEE std logic 1164 ALL us
  • 全8位加法器,非逻辑输出

    我创建了一个带全加器的 8 位加法器 正如您所看到的 我开始从右到左添加相应的位 对于 cin 信号 t1 和 t2 并按顺序 cout t2 和 t1 第一个 cin 设置为加法器输入 cin 我在实现中没有看到任何问题 但是当我运行它时
  • Prolog 中的递归乘法

    序言新手 编辑 使用 swi prolog 我想递归地执行乘法方法在序言中已经执行的操作 而不实际使用乘法方法 我想要实现的算法看起来像 multn N1 N2 output if n2 lt 0 return output else mu
  • 为什么 _mm_mulhrs_epi16() 总是进行有偏舍入到正无穷大?

    有谁知道为什么pmulhrsw指示或 mm mulhrs epi16 x RoundDown x y 16384 32768 总是向正无穷大舍入 对我来说 这对负数有很大的偏差 因为像 0 6 0 6 0 6 0 6 这样的序列平均起来不会
  • VHDL 中的 NULL 语句

    其实际目的是什么nullVHDL 中的声明 考虑以下代码 1 CASE s IS BEGIN WHEN 0 gt y lt 0 WHEN 1 gt NULL END CASE 2 CASE s IS BEGIN WHEN 0 gt y lt
  • 优化:将浮点数乘以整数还是另一个浮点数更快

    如果我尝试将浮点数乘以整数 则将其乘以整数表示的整数是否更快 int x float y 0 5784f x Where x contains a dynamically chosen whole number 或通过另一个浮点数 前提是精
  • 仅使用 std_logic_vector 包将 std_logic_vector 与常量进行比较

    我仅在 VHDL 文件中使用以下包 library IEEE use IEEE STD LOGIC 1164 ALL 在代码中 我将 std logic vector 信号 A 与常量值进行比较 例如 if A lt 00001011 th
  • VHDL (Xilinx) 中的错误:无法链接设计

    为什么我在 VHDL 中遇到错误 另外 有时 无法执行流程 因为之前的流程失败了 非常感谢 永久解决方案1 在win 10上 找出 installation directory Xilinx 14 x ISE DS ISE gnu MinG
  • 在单周期数据路径中加载半字和加载字节

    有人询问如何在单周期数据路径中实现加载字节而无需更改数据存储器 解决方案如下 替代文本 http img214 imageshack us img214 7107 99897101 jpg http img214 imageshack us
  • VHDL 中的 #define 等价物是什么

    VHDL 中的 define ifdef 和 ifndef 相当于什么 我想使用泛型作为 define 并根据它们更改设计 举一个简单的例子 定义一个字符串泛型并用它来确定时钟是单时钟还是差分时钟 generic something boo
  • VHDL FSM多驱动网Q连接到常量驱动程序,其他驱动程序被忽略,我的代码有什么问题?

    这段代码是一个 FSM 它是一个摩尔机 艾莉莎 P 哈克 Alyssa P Hacker 有一只蜗牛 沿着纸带爬下去 上面有 1 和 0 蜗牛 每当最后两个时都会微笑 它爬过的数字是 01 设计摩尔和米利 蜗牛大脑的 FSM 代码如下所示
  • 设计用于初始化的VHDL状态机

    如何最明智地设计用于初始化芯片的 VHDL 状态机 我当前的设计是 伪代码 案例状态 当 s0 gt VHDL CODE FOR WRITING VALUE TO REGISTER状态 s1 当 s1 gt VHDL CODE FOR WR

随机推荐

  • jQuery DatePicker 填充输入 - 多次点击问题

    所以 我最近面临的困境是 我使用 jQuery DatePick 不是 DatePicker 来选择日期并用这些日期填充输入字段 问题是每次我单击日期时输入字段都会被填充 因此 如果我单击第 23 个 然后再次单击它以取消选择它 它会自动添
  • 正则表达式重用一个模式来捕获多个组?

    我想多次匹配某个模式 就像描述的那样here https stackoverflow com questions 41878948 is it possible to define a pattern and reuse it to cap
  • 为 NSTextField 设置边框

    哇 我真的掉进兔子洞了 我试图在 UI 部分的背景上添加文本 并将文本字段作为另一部分 例如生日在 然后我想重新调整该文本字段的用途以允许输入文本 所以我做了类似的事情 myTextFieldName editable true myTex
  • 在 Preact 和 typescript 中使用 Web 组件

    我在用着自定义元素 https developer mozilla org en US docs Web Web Components Using custom elements又称为网络组件Preact https preactjs co
  • 如何绘制堆叠和归一化直方图?

    我有一个将连续值映射到离散类别的数据集 我想显示一个直方图 其中连续值作为 x 类别作为 y 其中条形堆叠并标准化 例子 import numpy as np import pandas as pd import matplotlib im
  • 在 Azure 数据工厂查找中处理 >5000 行

    我有一个复制活动 它将表从 MySQL 复制到 Azure 表存储 这很好用 但是当我在 Azure 表上进行查找时 出现错误 数据太多 这是按照文档设计的 Lookup 活动最多可包含 5 000 行 最大大小为 2 MB 另外还提 到了
  • Android:将参数传递给选项卡

    在我的 Android 应用程序中 我使用以下代码来创建选项卡 mTabHost FragmentTabHost findViewById android R id tabhost mTabHost setup this getSuppor
  • 脸书状态栏

    有人知道如何在新 Facebook 中找到状态栏的好教程吗 底部的那个 看起来真的很酷 我以为它是用 ajax 或 jquery 编写的 但不确定 以下是一些可能对您有帮助的有用链接 插件 定位页脚 http plugins jquery
  • 计算向量中元素的所有成对差异[重复]

    这个问题在这里已经有答案了 我的问题与之前的帖子密切相关 计算 R 中向量内的所有成对差异 https stackoverflow com questions 24314878 compute all pairwise difference
  • Rails 3 应用程序中的 Sass 导入错误 - “未找到或无法读取要导入的文件:指南针”

    我有一个成功运行的 Rails 3 应用程序compass init rails using blueprint 我可以 import stylesheets 目录中的文件 但当我尝试时出现错误 import compass 现在该应用程序
  • 在 CORS spring security + webFlux 中启用通配符

    我在使用 spring webFlux 制作的项目中启用了 spring security CORS 我的问题是我们接受来自以下机构的请求 http 本地主机 4200 http localhost 4200 我怎样才能让 CORS 接受来
  • 如何启用 chromedriver 从 selenium webdriver 登录

    如何从 selenium webdriver 中启用 chromedriver 详细日志记录功能 我找到了合适的方法loggingTo and enableVerboseLogging但似乎无法正确使用它们 require chromedr
  • 我怎样才能用汇编语言(MIPS)做小于或等于的事情?

    我面前有 C 代码 我必须将其翻译成 MIPS 汇编语言 我并不是在寻找直接的答案 但我希望有人纠正我思考问题的方式 我面前的C代码是 x z lt y 我已经知道 x y 和 z 分别存储在寄存器中6 美元 7 美元 8 美元 问题是我无
  • 使用 ASP.NET MVC 4 从控制器调用另一个不同的视图

    我有一个带有提交按钮的视图 Index cshtml 单击提交按钮时 它会调用控制器 TestController cs 内的操作 Action01 因此在操作结束时 我想以自定义视图模型作为参数返回到调用者 Index cshtml 视图
  • 使用日期时间索引 pandas 更快地加载 csv

    我经常迭代存储在 csv 文件中的金融价格数据 当我完成与时间相关的所有分析时 就像使用 pandas 日期时间对象来子集和组织数据的可访问性一样 我的问题是 当我将文件读入计算机内存时 会打扰parse dates提供的参数顶部panda
  • 在树莓派上安装 libmp3lame 以使用 FFMPEG

    我在我的 RPi 2 上使用带有 python 3 2 的 moviepy 模块 它使用 FFMPEG 来读取和写入视频 所以我使用安装了 FFMPEGthese http hannes enjoys it blog 2016 03 ffm
  • 填充曲线和x轴之间的区域

    我试图使用 MatPlotLib 简单地填充 Python 中绘图曲线下的区域 这是我的 SSCCE import json import pprint import numpy as np import matplotlib pyplot
  • AngularJS 对包含 null 的列表进行排序

    我有一个范围对象 它有一个包含空值的列表 我想在两个方向上对该列表进行排序 但空值必须始终位于末尾 我可以很容易地做到这一点 方法是将对象分成 2 个 一个包含空值 一个不包含最后的空列表 但有没有更有效的方法来做到这一点呢 例子 1 nu
  • Nhibernate.Linq:使用Where(Expression>)限制查询结果

    我使用 NHibernate 查询数据库 现在我需要使用谓词限制选择的数据 到目前为止 我发现 Google 驱动的开发处于最佳状态 使用表达式和 NHibernate Linq 可以实现类似的功能 这是我尝试过的 public IList
  • VHDL乘法器

    library IEEE use IEEE STD LOGIC 1164 ALL entity Lab3 Adder1 is Port cin in STD LOGIC a in STD LOGIC VECTOR 3 downto 0 b