реклама на сайте
подробности

 
 
> Signal cannot be synthesized, bad synchronous description., Вопрос от начинающего.
count_enable
сообщение Mar 25 2013, 10:18
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 310
Регистрация: 28-01-13
Из: Лондон
Пользователь №: 75 384



Прошу извинить меня за такой простой вопрос, но я никогда в VHDL силён не был, а сейчас надо учиться заново после годичного перерыва.
Код ниже нормально работает в iSim но не синтезируется в ISE 14.2. Подозреваю проблема в одновременном сравнении переменных и их модификации.
Код
architecture Behavioral of neuron is
signal MembranePotential: integer range smallest_int to maximum_int :=0;
signal Refract_period: integer range 0 to refractory_len:=0;
signal Refract_en: std_logic;
signal SPIKEOUT: std_logic :='0';
begin
process( FASTCLK)
begin
    if falling_edge(RST) then
            SPIKEOUT<='0';    
            MembranePotential<=0;
    elsif falling_edge(SLOW_CLK) then                                -- degrading membrane potential            
        if MembranePotential>MembraneThreshold then                -- spike
            MembranePotential<=0;
            SPIKEOUT<='1';
            Refract_period<=refractory_len;
        elsif MembranePotential>0 then
            MembranePotential<=MembranePotential-MembraneDegradationRate;
        elsif SPIKEOUT='1' then                                    --refractory period degradation
            Refract_period<=Refract_period -1;
            SPIKEOUT<='0';
        end if;    
    elsif falling_edge(IN_SPIKE) then                            -- adding incoming spike
        if Refract_period=0 then
            MembranePotential<=MembranePotential+conv_integer(IN_WEIGHT);
        end if;        
    end if;    
end process;
OUTPUT<=SPIKEOUT;
end Behavioral;


Переписал "двуступенчато" с промежуточными сигналами, проблема осталась. В "Проектировании цифровых схем на VHDL" Суворовой ничего не говорится о таких ограничениях.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
count_enable
сообщение Mar 25 2013, 11:20
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 310
Регистрация: 28-01-13
Из: Лондон
Пользователь №: 75 384



Например MembranePotential меняется при falling_edge(IN_SPIKE) и при falling_edge(SLOW_CLK). Можно ли сделать два процесса с этим сигналом?
Go to the top of the page
 
+Quote Post
Maverick
сообщение Mar 25 2013, 12:13
Сообщение #3


я только учусь...
******

Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839



Цитата(count_enable @ Mar 25 2013, 13:20) *
Например MembranePotential меняется при falling_edge(IN_SPIKE) и при falling_edge(SLOW_CLK). Можно ли сделать два процесса с этим сигналом?

Вы можете сделать следующим образом: Схема работает на высокой тактовой частоте (Ваша основная частота в ПЛИС), сигналы которые поступают из вне привязываете/синхронизируете к своей тактовой частоте (детектируете передний/задний фронт сигнала) и дальше работаете с этими импульсами, которые уже синхронизированы... (см вложение)
PS Возможно совет не в тему, но я подозреваю, что проблема кроется именно тут...
Эскизы прикрепленных изображений
Прикрепленное изображение
 


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 31st July 2025 - 11:18
Рейтинг@Mail.ru


Страница сгенерированна за 0.01381 секунд с 7
ELECTRONIX ©2004-2016