将 n 位的 std_logic_vector 向右或向左移位

2024-03-14

我有一个向量signal tmp : std_logic_vector(15 downto 0)

我必须将它向左或向右移动 n 位。我怎样才能实现这个操作。我想到了串联操作,但我不知道如何使用它。


Use the ieee.numeric_std库,以及您正在处理的数字的适当向量类型(unsigned or signed).

Then the operators are `sla`/`sra` for arithmetic shifts (ie fill with sign bit on right shifts and lsb on left shifts) and `sll`/`srl` for logical shifts (ie fill with '0's).

您将参数传递给运算符来定义要移位的位数:

A <= B srl 2; -- logical shift right 2 bits
--- Update: --- I have no idea what I was writing above (thanks to Val for pointing that out!)

当然正确的换档方法signed and unsigned类型是与shift_left and shift_right函数定义在ieee.numeric_std.

移位和旋转运算符sll, ror etc ,并且可以有有趣的意外行为 https://en.wikipedia.org/wiki/Arithmetic_shift#cite_note-9因为即使左移,算术移位也会复制结​​束位。

更多历史可以在这里找到:

http://jdebp.eu./FGA/bit-shifts-in-vhdl.html

然而,原来问题的答案仍然是

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

将 n 位的 std_logic_vector 向右或向左移位 的相关文章

  • 是否有理由在 VHDL 和 Verilog 中初始化(而不是重置)信号?

    我从未初始化过信号 这样 任何缺少重置或分配的信号都将是未知的或已初始化 在一些参考代码中它们有初始化 这违背了我的愿望 此外 由于初始化不可综合 因此可能会出现模拟 综合不匹配的情况 在这种情况下有什么理由初始化信号吗 编辑 2011 年
  • VHDL:使用输入端口是不好的做法吗?

    我有一个程序 我按照以下方式使用 inout 端口 port inout unsigned 9 downto 0 if port gt 10 then port lt port 1 end if 我正在使用 inout 端口 这样我就可以读
  • 如何使用依赖于实体的其他通用参数的通用参数?

    我正在尝试转换一些 Verilog 代码 这些代码为 UART 模块从较快的时钟生成较慢的时钟 原始的 verilog 代码基于 fpga4fun com 上的模块 这是我尝试将其转换为基于 VHDL 的设计 entity baud gen
  • VHDL:对固定信号值进行零扩展

    如何对固定信号值进行零扩展 我有以下信号 signal shamt std logic vector 4 downto 0 在将其分配给另一个大小为 31 到 0 的变量之前 我必须将 shamt 归零 我有以下代码 但我不确定它是否正确
  • 调试 VHDL Modelsim 中的迭代限制错误

    我正在 Modelsim 上为 d 触发器编写 VHDL 代码 当我尝试模拟它时出现错误 错误 vsim 3601 在 400 ps 时达到迭代限制 我不确定这意味着什么 但我已经检查了大部分源代码以查找错误 但没有成功 谁能猜出问题可能是
  • 在vhdl中生成随机整数

    我需要在 vhdl 中生成 0 1023 之间的随机整数 但是我在互联网上找不到这方面的好资源 请问有人帮我吗 下面是生成范围 0 1023 内均匀 均匀 分布的整数的示例 请注意 floor必须在与最大值 1 相乘之后使用运算 在本例中为
  • VHDL 类型转换 - 找到 4 种可能的定义

    我正在尝试将两个 std logic 位转换为整数 如下所示 LIBRARY IEEE USE IEEE std logic 1164 ALL USE IEEE numeric std ALL ENTITY TEST IS PORT sw1
  • 如何在 Sphinx 运行时预处理源文件?

    我已经为我的项目设置了 Sphinx 文档 并希望提取源文件的文档字符串并将它们嵌入到最终文档中 不幸的是 Sphinx 不支持源文件的语言 VHDL VHDL 似乎没有 Sphinx 域 所以我的想法如下 挂钩 Sphinx 运行并在 S
  • “警告 C0007:架构具有未绑定的实例”问题!

    我从 数字设计基础 一书随附的 CD 中获取了以下源代码 当我尝试运行该程序时 出现以下错误 Compiling Fig17 13 vhd C Users SPIDER Desktop EE460 The Final Project Fig
  • 状态机;为什么只有最后一个状态有效?

    我有一个有 6 个状态 3 个主要状态 的状态机 只有最后一个状态有效 但前 2 个状态无效 共 3 个 只有最后一个状态有效 我发现了问题 当我移除去抖电路时它可以工作 但我需要去抖电路 我从网上得到了去抖电路 如果有人可以提供帮助 我会
  • Quartus初始化RAM

    我制作了一个实体 其中 quartus 成功识别 RAM 并为其实例化 RAM 宏功能 如果我可以从文件初始化 RAM 那就太好了 我找到了制作此类文件 mif 文件 的教程 现在我已经创建了该文件 我不知道如何让 quartus 初始化该
  • 如何在 VHDL 中将整数作为十六进制写入标准输出?

    我可以打印一个integer作为十进制到标准输出 library std use std textio all entity min is end min architecture behav of min is begin process
  • 敏感列表中的哪个信号触发该过程

    在VHDL中 当模拟测试平台时 我有一个过程和一个敏感度列表 是否可以查看敏感列表中的哪个信号触发了该过程 我知道这可能取决于工具 我正在使用 Xilinx ISE 模拟器是否提供此信息 您可以使用 transaction属性结合 even
  • VHDL 中的 BRAM_INIT

    我正在模拟基于处理器的设计 其中程序存储器内容保存在 BRAM 中 我正在使用 VHDL 推断 BRAM 实现程序存储器 我试图避免使用 CoreGen 因为我想保持设计的可移植性 最终该设计将进入 FPGA 我想看看是否有一种方法可以使用
  • VHDL - iSIM 输出未初始化,不改变状态

    您好 我是一位 Xilinx 新用户 在如何在测试台中编写激励 模拟方面遇到了麻烦 我的输出 Kd 没有给我任何合理的值 并在移动并始终保持在 1 之前的前几个时钟周期给出 u 不确定我是否写了正确的刺激 但希望有人能帮助我 我的VHDL代
  • ACTIV HDL - VHDL -“信号无法合成,同步描述错误”

    我在 Xilinx 中综合此代码时遇到错误 这个错误是 信号 Z 1 无法合成 同步描述错误 entity uk3 is port rst in BIT C in INTEGER clk in BIT S out INTEGER end u
  • 将 n 位的 std_logic_vector 向右或向左移位

    我有一个向量signal tmp std logic vector 15 downto 0 我必须将它向左或向右移动 n 位 我怎样才能实现这个操作 我想到了串联操作 但我不知道如何使用它 Use the ieee numeric std库
  • VHDL - 为什么直接在函数上使用长度属性会产生警告?

    我有一个 VHDL 函数 它返回记录的 std logic vector 表示形式 并且我想要该 std logic vector 的长度 我可以直接在函数上使用长度属性 为什么这会在 ModelSim 中产生警告 我是否会引发一些微妙的问
  • 学习 VHDL 的最佳方法? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何从 Spartan 6 写入 Nexys 3 FPGA 板上的 Micron 外部蜂窝 RAM?

    我到处都查过了 数据表 Xilinx 网站 digilent 等等 但什么也没找到 我能够使用 Adept 工具来验证我的蜂窝 RAM 是否正常运行 但我找不到任何库存 VHDL 代码作为控制器来写入数据和从中读取数据 帮助 找到了此链接

随机推荐

  • Angular-CLI 和 Bootstrap 4

    我使用 Angular 2 迈出了第一步 特别是我使用 Angular cli 官方工具来创建新项目 我以这种方式创建了一个新项目 ng new my project name 该项目已正确创建 之后我想安装 bootstrap 4 并按照
  • 反应流中的自定义节点;创建节点后将附加数据保存到节点

    这是我第一次介绍反应流 我希望创建一个自定义节点 创建后 用户可以在节点中输入信息并保存 显示它 从反应流自定义节点的文档 https reactflow dev docs guides custom nodes 他们有一个类似的例子 他们
  • Android Studio 中外部剥离共享库的本机调试

    我已经剥离和未剥离共享库 如何在使用 LLDB 在 Android Studio 中调试剥离时加载符号 我可以成功调试位于 jniLibs 文件夹中的完整未剥离的 so 但它太大了 部署时间太长 在调试配置中指定符号目录不适用于标准和实验性
  • 在android中实现Socket.io的最佳方式

    我计划通过以下方式在 android 中实现 Socket iothis https github com socketio socket io 基于聊天的应用程序的库 据我了解 图书馆似乎相当不错 我想知道如何维护single整个应用程序
  • 新的 PendingIntent 更新当前意图

    我试图在一段时间间隔后显示不同的通知 但发生的情况是它更新了当前的通知PendingIntent结果 即使我触发 4 5 个待处理的意图请求 我也只能收到一个通知 单击按钮后我会执行以下操作 try adapter OpenDB int i
  • 反复出现的成本难题

    我经常发现自己必须定义一个函数的两个版本 以便拥有一个 const 版本和一个非常量版本 通常是 getter 但并非总是如此 两者的区别仅在于 其中一个的输入和输出是常量 而另一个的输入和输出是非常量 该功能的核心 真正的工作 是相同的
  • 跨线程共享具有特征对象的结构作为属性

    我有下面的代码 有了注释掉的部分 它就可以工作了 当我取消注释这些部分时 它不再编译 如何调整注释部分以使它们工作 即我想让线程同时访问表达式树 当我尝试时 编译器会开始出现有关线程安全的错误 我阅读了 Rust 书籍并了解 C C 但还不
  • 如何在scrapy中获取原始start_url(重定向之前)

    我正在使用 Scrapy 来抓取一些页面 我从 Excel 工作表中获取 start urls 并且需要将 url 保存在项目中 class abc Spider BaseSpider name abc allowed domains ab
  • 如果用户登录,Angular 6 会更改组件

    使用基于 JWT 的实现和 Angular 6 根据用户是否登录隐藏 显示组件的最佳方法是什么 如果有一个包含用户相关信息的 Observable 用户对象就好了 这个需要守卫吗 后端使用 NET Core 2 1 不确定这是否有什么区别
  • 使用实体框架将自定义字符串作为主键

    我正在尝试使用 Code First 实体框架将个性化字符串设置为主键 我有一个助手 它的函数返回一个 n 个字符的随机字符串 我想用它来定义我的 Id 就像 YouTube 视频代码一样 using System Security Cry
  • 调用失败,参数为空

    我有以下代码 public static ContactEventValue GetContactEventValue ContactEventType contactEventType string programCode string
  • CMake:管理源文件列表

    我目前遇到的问题是 我只是希望通过抓取所有内容并删除一些我不需要的零碎内容来管理我的源文件列表 我希望 Cmake 为此提供很好的内置工具 所以我可能会从以下开始 file GLOB A Application cpp 我觉得我想创建另一个
  • 当 SASS 重新编译 CSS 时,Chrome 的“自动重新加载生成的 CSS”不会重新加载页面

    当我保存监视的 SCSS 文件时 我试图让 Chrome 的 DevTools 自动重新加载页面 该文件将编译并对 CSS 文件进行更改 I have the Auto reload generated CSS option checked
  • 将 List[Tuple2[A,B]] 转换为 Tuple2[Seq[A],Seq[B]]

    卡在这里 尝试将案例类元组列表转换为序列元组并对结果进行多重分配 val items repo foo list gives me a List A B 我可以像这样完成多项任务 val a b items map 1 toSeq item
  • Shopify API 订单查询参数的时区

    The Shopify 订单 API http api shopify com order html允许指定基于日期的查询参数 例如created at min 我想知道这些日期预计在哪个时区 如果您不提供时区 Shopify 将采用 UT
  • 使用 QOffscreenSurface 进行离屏渲染 - QPainter Alpha 笔颜色失败

    我努力了这个方法 https stackoverflow com questions 31323749 easiest way for offscreen rendering with qopenglwidget 的回答尼基塔 费多尼特 h
  • 哦,我的 zsh 显示出奇怪的字符“?”在终端上

    我已经安装了 iTerm2 和 Oh my zsh 然而 自从我将 ZSH THEME 更改为 agnoster 后 出现了一个奇怪的问号 附上相同的屏幕截图 我认为电力线会有所帮助 但似乎并没有发生 谁能帮我解决这个问题吗 这已经解决了这
  • 如何在 Laravel 5.6 的默认注册表单中添加自定义字段?

    在我的一个拉拉维尔 5 6应用程序中 我需要在默认注册表单中添加更多字段 所以我只在默认注册表单中添加了一个字段来测试 phone no 注册 blade php 并且还添加phone no 注册控制器 但是当我单击注册按钮时 它显示以下错
  • 执行 Mariadb 更新语句时出错

    我正在使用以下更新语句来更新数据库表中的行 update department set budget budget 0 01 where dept name Physics 但是 运行此代码会出现以下错误 ERROR 1305 42000
  • 将 n 位的 std_logic_vector 向右或向左移位

    我有一个向量signal tmp std logic vector 15 downto 0 我必须将它向左或向右移动 n 位 我怎样才能实现这个操作 我想到了串联操作 但我不知道如何使用它 Use the ieee numeric std库