- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我该如何解决这个问题? reg 变量定义为:
signal reg:STD_LOGIC_VECTOR(7 downto 0):="00000001";
下面代码中ror操作有问题。错误信息是:
Line 109: Syntax error near "ror".
Line 108: found '0' definitions of operator "=", cannot determine exact overloaded matching definition for "="
--
process(clk1,up_down,enable,reset)
begin
if up_down="1" then
reg ror 1;
end if;
end process;
最佳答案
您的问题是 ror
运算符没有为 std_logic_vector
定义。
VHDL 表现出计算机(和硬件描述)语言的行为,称为重载。重载是为不同类型多次定义运算符、函数或过程的地方。编译器在使用运算符(等)时查看类型组合(称为 签名)并尝试将其与已声明的各种版本相匹配。这仅在只有一个匹配项时才有效。任何更多,代码是模棱两可的,因为编译器不知道要使用哪个版本。少了就没有供编译器使用的版本。这是您的问题 - 没有使用 std_logic_vector
的 ror
运算符版本。
您有两个解决方案:
(i) 建议:使用连接运算符和切片手动实现您的向右旋转行为:
if up_down="1" then
reg <= reg(0) & reg(7 downto 1);
end if;
(ii) 不推荐:将您的 std_logic_vector
转换为具有定义的 ror
运算符版本的不同类型,例如 unsigned
.为什么“不推荐”?因为我永远不建议使用以下任何运算符,因为它们的行为可能很奇怪(并且它们的行为在不同的 EDA 工具中似乎并不一致);
ror rol sla sra sll srl
顺便说一句,即使 ror
是为 std_logic_vector
定义的,这一行也是错误的:
reg ror 1;
你不能只说那个,你不能只说
reg + 1;
您需要将两种情况下的操作结果分配给某物。在这两种情况下,我都假设您想将它分配给 reg
。
关于syntax - VHDL - ror 和 rol 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53389379/
谁能解释一下 LDA、ROL、STA 给出的每条指令的确切结果是什么? C=1 (carry flag is 1) LDA A #$08 0008 | 01 ROL A 0009 | 02
我该如何解决这个问题? reg 变量定义为: signal reg:STD_LOGIC_VECTOR(7 downto 0):="00000001"; 下面代码中ror操作有问题。错误信息是: Li
我在 IDA 中遇到了一条奇怪的指令: ROL AX, 8 这是一个NOP,对吗? AX 是一个 1 字节的寄存器,它被循环八位。因此它只是 MOV AX, AX? 最佳答案 这条指令的行为与相同 X
我一直想知道某些 CPU 的循环指令(例如 x86 上的 ROL、RCL)的用途是什么。什么样的软件使用这些指令? 我首先认为它们可能用于加密/计算哈希码,但这些库通常是用 C 编写的,它没有映射到这
我想在 Objective-C 程序中对变量执行 ROR 和 ROL 操作。然而,我做不到——我不是装配专家。 这是我到目前为止所做的: uint8_t v1 = ....; uint8_t v2 =
我是一名优秀的程序员,十分优秀!