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

 
 
 
Reply to this topicStart new topic
> 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
XVR
сообщение Mar 25 2013, 10:32
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



У вас в списке чувствительности процесса фигурирует FASTCLK, как бы намекая, что это будет клок. А в самом процессе фигурируют RST, SLOW_CLK и IN_SPIKE (причем все под if falling_edge), как бы говоря, что клоки совсем другие, причем их аж 3 штуки на одни и те же триггера. FPGA такого не умеет чисто физически sad.gif

Go to the top of the page
 
+Quote Post
crono
сообщение Mar 25 2013, 10:54
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 94
Регистрация: 28-11-12
Из: Москва
Пользователь №: 74 605



Вот эту ветку посмотрите.
Там много написано про списки чувствительности и синхронные и асинхронные процессы.
Go to the top of the page
 
+Quote Post
count_enable
сообщение Mar 25 2013, 11:05
Сообщение #4


Местный
***

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



Спасибо, уже понял что falling_edge как Горец, может быть только один. Тогда вопрос по асинхронному дизайну: если есть несколько драйверов сигналов, оперирующих на одной переменной, есть ли смысл пытаться сделать дизайн без глобального клока (так лучше для концепции), или не мучиться и сделать синхронно, с глобальным клоком? А то сначала я пытался разнести все драйвера в отдельные процессы, но как я понимаю два процесса не могут оперировать на одном сигнале.
Go to the top of the page
 
+Quote Post
crono
сообщение Mar 25 2013, 11:08
Сообщение #5


Частый гость
**

Группа: Свой
Сообщений: 94
Регистрация: 28-11-12
Из: Москва
Пользователь №: 74 605



Что такое
Цитата(count_enable @ Mar 25 2013, 14:05) *
несколько драйверов сигналов, оперирующих на одной переменной

?
Go to the top of the page
 
+Quote Post
count_enable
сообщение Mar 25 2013, 11:20
Сообщение #6


Местный
***

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



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


Частый гость
**

Группа: Свой
Сообщений: 94
Регистрация: 28-11-12
Из: Москва
Пользователь №: 74 605



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

Нельзя
Go to the top of the page
 
+Quote Post
Maverick
сообщение Mar 25 2013, 12:13
Сообщение #8


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

Группа: Модераторы
Сообщений: 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
count_enable
сообщение Mar 25 2013, 14:32
Сообщение #9


Местный
***

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



Вообще-то это не реальный девайс, а концепция быстрой нейросети с простыми элементами. Хотелось сделать чисто асинхронный дизайн, он бы красивый получился. Ну и в публикации скорость работы была бы выше.
Большое спасибо всем за ответы.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 2nd July 2025 - 06:26
Рейтинг@Mail.ru


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