VHDL:如何在VHDL中使用rem和mod命令? (语法问题)

问题描述 投票:0回答:1

你好,我想取二进制数 23。二进制形式是:010111

例如,如果 23 mod 10 我将得到 3 。如何在 VHDL 中执行此命令?这是我到目前为止所写的:

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY rem_command IS
  GENERIC (display_resolution : INTEGER :=23;   -- counter to get to the loest ferquncy 
  display_counter: INTEGER :=8);        -- counter to get to 97KHz ferquincy 

PORT (
    CLK_IN :IN STD_LOGIC;
    PWM_LIMIT :IN STD_LOGIC_VECTOR(display_counter downto 0);
    COUNTER_VECTOR :IN  STD_LOGIC_VECTOR(display_counter downto 0);
    number_out: OUT  STD_LOGIC 
    );
END rem_command;

ARCHITECTURE testing_reminder_command  OF  rem_command  I
    signal number : std_logic_vector(5 downto 0):="010111"; -- this is 23 in binary form 
BEGIN
        process(COUNTER_VECTOR,PWM_LIMIT,CLK_IN,number)
        BEGIN
                number <= 10 MOD number;                                                
        end process;

    number_out<=number;

END testing_reminder_command ;

我得到的错误是:

错误(10327):rem_command.vhd(48)处的VHDL错误:无法确定 运算符“mod”的定义——找到 0 个可能的定义

也许我需要添加库?

syntax vhdl
1个回答
0
投票

如果您确实想使用“mod”和“rem”运算符:

  • 它们没有在您使用的任何包中定义。
  • 修复:使用 ieee.numeric_std.all
  • modrem 不适用于 std_logic_vector。因此,您需要在 std_logic_vector 信号上实现类型转换
© www.soinside.com 2019 - 2024. All rights reserved.