Я новичок в программировании VHDL FPGA, и мой модуль (см. Полный код ниже) не работает.VHDL, когда еще не работает
Этот модуль должен заботиться, если пользовательские настройки ввода/вывода, основанные на регистре, доступны пользователю (так что режимы могут быть изменены через регистр без необходимости касания прошивки FPGA). Имеется 8 входных контактов и 8 выходных контактов, а также 4 режима работы: 1x8, 2x8, 4x8, 8x8. Выход поступает в модуль генератора задержки/затвора, а затем выходит. Еще одна функция этого модуля состоит в том, чтобы преобразовать 32-битный входной вектор, где на самом деле назначено только 8 контактов и несут значение (специфичное для взаимодействия FPGA-платы) во что-то, что имеет больше смысла.
Как и сейчас, все остальные функции (00), соответствующие режиму 1x8, работают независимо от значения clockcontrolREG. (я наблюдаю правильный вывод на осциллографе), поэтому нет ничего плохого в назначении контактов. Похоже, почему-то все мои, когда предложения игнорируются.
Я установил начальное значение clockcontrolREG на «00000011» (который должен установить режим 8x8), и я сделал доступ к регистру и проверил, действительно ли это значение.
Я пробовал 2 разных способа синтаксиса для описания того же (строка: signalforclkgen (1)), без эффекта.
Похоже, что я пропустил что-то очень фундаментальное ..... но на третий день я сижу на нем без результата. Благодарим за помощь.
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
entity clkgencontrol is
port(
clockcontrolREG : in std_logic_vector(31 downto 0);
signalinput : in std_logic_vector(31 downto 0);
signalforclkgen : out std_logic_vector(7 downto 0)
);
end clkgencontrol;
architecture rtl of clkgencontrol is
begin
signalforclkgen(0) <= signalinput(31);
signalforclkgen(1) <= signalinput(15) when (clockcontrolREG(0) = '1' and clockcontrolREG(1) = '1') else
signalinput(31);
signalforclkgen(2) <= signalinput(30) when (clockcontrolREG = "00000011") else
signalinput(15) when (clockcontrolREG = "00000010") else
signalinput(31);
signalforclkgen(3) <= signalinput(14) when (clockcontrolREG = "00000011") else
signalinput(15) when (clockcontrolREG = "00000010") else
signalinput(31);
signalforclkgen(4) <= signalinput(19) when (clockcontrolREG = "00000011") else
signalinput(30) when (clockcontrolREG = "00000010") else
signalinput(15) when (clockcontrolREG = "00000001") else
signalinput(31);
signalforclkgen(5) <= signalinput(3) when (clockcontrolREG = "00000011") else
signalinput(30)when (clockcontrolREG = "00000010") else
signalinput(15)when (clockcontrolREG = "00000001") else
signalinput(31);
signalforclkgen(6) <= signalinput(18) when (clockcontrolREG = "00000011") else
signalinput(14) when (clockcontrolREG = "00000010") else
signalinput(15) when (clockcontrolREG = "00000001") else
signalinput(31);
signalforclkgen(7) <= signalinput(2) when (clockcontrolREG = "00000011") else
signalinput(14) when (clockcontrolREG = "00000010") else
signalinput(15) when (clockcontrolREG = "00000001") else
signalinput(31);
end rtl;
Я подтвердить все КОГДА положения игнорируются, путем изменения signalforclkgen (7) назначения, делая улов все остальное от 0, вместо того, действительный сигнал (и добавление опции для значения reg «00000000»). и на выходе имеется 0. –
Какая цепочка инструментов скомпилирована? –
Quartus II v 11.0 Web, FPGA - это Cyclone, если это то, о чем вы просите. –