Вы прикрепили две сущности.Я предполагаю, что вы используете oneshot
v1.
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity oneshot is
port ( clk : in STD_LOGIC;
ce : in STD_LOGIC;
trigger : in STD_LOGIC;
delay : in STD_LOGIC_VECTOR (7 downto 0);
pulse : out STD_LOGIC :='0');
end oneshot;
architecture Behavioral of oneshot is
signal count: INTEGER range 0 to 255; -- count variable
signal flag : STD_LOGIC := '0'; -- count variable
begin
process (flag,clk,delay)
begin
-- wait for trigger leading edge
if trigger = '1' then
count <= to_integer(unsigned(delay));
elsif rising_edge(clk) then
if count > 0 then
pulse <= '1';
count <= count - 1;
else
pulse <= '0';
--flag <='0';
end if;
end if;
end process;
end Behavioral;
Так что же там делает сигнал flag
?Почему это в списке чувствительности?Почему есть неиспользуемый ce
ввод?
Но давайте посмотрим на файл oneshot_config.m
.Оттуда исходит сообщение об ошибке:
function setup_as_single_rate(block,clkname,cename)
inputRates = block.inputRates;
uniqueInputRates = unique(inputRates);
if (length(uniqueInputRates)==1 & uniqueInputRates(1)==Inf)
block.addError('The inputs to this block cannot all be constant.');
return;
end
if (uniqueInputRates(end) == Inf)
hasConstantInput = true;
uniqueInputRates = uniqueInputRates(1:end-1);
end
if (length(uniqueInputRates) ~= 1)
block.addError('The inputs to this block must run at a single rate.');
return;
end
theInputRate = uniqueInputRates(1);
for i = 1:block.numSimulinkOutports
block.outport(i).setRate(theInputRate);
end
block.addClkCEPair(clkname,cename,theInputRate);
return;
И это называется здесь
if (this_block.inputRatesKnown)
setup_as_single_rate(this_block,'clk','ce')
end % if(inputRatesKnown)
Таким образом, код matlab проверяет inputRates
всех входов ввода this_block
.Он пришел к выводу, что все входы постоянны (у вас нет переменных входов для вашей системы), и пришел к выводу, что это не будет работать.Это связано с тем, что он пытается автоматически определить тактовую частоту по своим входам, что невозможно при использовании констант.
Поэтому вам придется настроить тактовую частоту вручную.Вы можете изменить oneshot_config.m
.Но, вероятно, вы можете назначить скорость для постоянного блока.Это должно быть что-то вроде block.outport.setRate(...);
<- какая-то тактовая частота.Обратитесь к руководству пользователя System Generator. </p>
У меня на компьютере Matlab не установлен System Generator, поэтому я не могу проверить это.