У меня проблемы с функцией conv_std_logic_vector
в Quartus. Я использую функцию для преобразования целочисленной переменной в std_logic_vector
. Когда я компилирую приведенный ниже код, Quartus показывает следующее сообщение об ошибке:
Ошибка (10344): ошибка выражения VHDL в counter_Wbits.vhd(32): выражение содержит 3 элемента, но должно содержать 4 элемента.
Я искал эту функцию в Интернете, и люди всегда используют 2 параметра, что происходит?
LIBRARY IEEE;
USE IEEE.std_logic_1164.ALL;
USE IEEE.std_logic_unsigned.ALL;
use IEEE.std_logic_arith.ALL;
ENTITY counter_Wbits IS
GENERIC(W : NATURAL := 4);
PORT (portae : IN BIT;-- data input
portas : IN BIT;-- data input
clk : IN BIT; -- clock
clrn: IN BIT; -- clear
ena : IN BIT; -- enable
q : BUFFER STD_LOGIC_VECTOR(W-1 DOWNTO 0));-- data output
END counter_Wbits;
ARCHITECTURE arch_1 OF counter_Wbits IS
BEGIN
PROCESS(clk,clrn)
variable cont : integer range 0 to 15;
BEGIN
IF (clrn='0') THEN
q <= (OTHERS => '0');
ELSIF (clk'EVENT AND clk='1') THEN
IF (ena='1') THEN
IF(portae='1') THEN
cont := cont+1;
ELSIF (portas='1') THEN
cont := cont-1;
END IF;
END IF;
END IF;
q <= conv_std_logic_vector(cont, W-1); -- LINE 32
END PROCESS;
END arch_1;
std_logic_arith
.The numeric_std
библиотека доступна уже более десяти лет, и наш внутренний стандарт кодирования требует ее с 2002 года. Все синтезаторы, о которых я могу думать с 2002 года, поддерживают ее. Кто преподает этот материал? - person PlayDough   schedule 04.05.2016