vhdl - VHDL 无运算符“-”的函数声明
问题描述
所以我的任务是在 2 个向量(这里称为除数和除数)之间进行模运算,所以我需要的是除数模除数。我们对这段代码有一些限制,就是不能使用iee_std_logic_1164、textio等。我认为唯一允许的库是IEEE和IEEE.numeric_bit
此操作的算法告诉我:
while(dividendo >= divisor){
dividendo = dividendo - divisor
}
return dividendo
然后我写了这个 vhdl 文件:
library IEEE;
entity resto is
port (clock , reset : in bit ;
inicio : in bit ;
fim : out bit ;
dividendo , divisor : in bit_vector (15 downto 0) ;
resto : out bit_vector (15 downto 0)
) ;
end resto;
architecture processo of resto is
signal dividendo_n : bit_vector (15 downto 0) := dividendo;
signal divisor_n : bit_vector (15 downto 0) := divisor;
begin
process (clock, reset)
begin
if reset = '1' then
fim <= '0';
resto <= "0000000000000000";
elsif clock'event and clock = '1' and inicio = '1' then
if divisor = "0000000000000000" then
fim <= '1';
resto <= dividendo;
else
while ( dividendo_n >= divisor_n) loop
dividendo_n <= dividendo_n - divisor_n;
end loop;,
resto <= dividendo_n;
end if;
end if;
end process;
end processo;
但我不断收到此错误:在线操作符“-”没有函数声明
dividendo_n <= dividendo_n - divisor_n;
有什么想法吗?我是这门语言的初学者,所以我不太了解到底发生了什么。
提前致谢!
解决方案
您只能在 VHDL 中对数字数据类型(如整数、无符号和有符号)使用数学运算。bit_vector 类型不是数字类型,因此您不能使用减法运算。
如果您仅限于使用 bit 或 bit_vector 类型,则必须实现二进制减法器电路来执行此操作。
推荐阅读
- android - 当使用 getter 使用我的类时,它失去了它的价值,我不明白为什么
- php - 对 DB2 的 PHP PDO 查询在 CLI 上返回 NULL,但数据通过 APACHE
- html - 导航是固定的,但内容是相对的并且分崩离析
- mongodb - MongoDB 在线存档是否知道何时不查看数据湖
- node.js - Node.js + 请求 POST 基本授权
- python - 从 Pygame(菜单)的 menu.add.text.input 创建一个变量
- python - raise SMTPServerDisconnected("连接意外关闭")
- node.js - 如何更新数组内的数据 - Mongoose
- javascript - 尝试链接外部 JS 文件以响应组件时出现错误消息
- python - 具有零值和非零值的数组的 Softmax 导致数组只有非零值