Ошибка системного генератора: «Все входы в этот блок не могут быть постоянными» - PullRequest
0 голосов
/ 11 июня 2018

Я читаю статью ( прикрепленный файл ) и выполняю схему VCO (Заряженный баланс) для модели на Matlab / Simulink с использованием System Generator.Я получаю какую-то ошибку и не знаю, как ее исправить.В модуле одноразового таймера, когда я бегу, он уведомляет:

Error 0001: The inputs to this block cannot all be constant.
Block: 'VCO_v2/one-shot timer '

Это моя диаграмма enter image description here

Это ошибка, с которой я сталкиваюсь enter image description here

Это мой VCO-файл, который я simulink

Ответы [ 2 ]

0 голосов
/ 13 июня 2018

Я нашел ответ на эту проблему.Просто измените постоянный блок Matlab вместо постоянного блока Xilinx.enter image description here

0 голосов
/ 12 июня 2018

Вы прикрепили две сущности.Я предполагаю, что вы используете 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, поэтому я не могу проверить это.

...