|
Signal cannot be synthesized, bad synchronous description., Не пойму в чем дело... |
|
|
|
Feb 4 2012, 18:26
|
Участник

Группа: Участник
Сообщений: 51
Регистрация: 23-09-11
Пользователь №: 67 345

|
Добрый вечер, было уже когда-то похожая проблема но сейчас уже не помню с чем связана. В итоге есть код: Код function read_bit(signal RX, SCK:std_ulogic) return bit is variable read_data: Std_uLogic_Vector ( 4 downto 0); variable current_bit : bit; begin for i in 0 to 4 loop if(rising_edge(SCK)) then read_data(i) := RX; end if; end loop;
if (read_data = "00000") then current_bit:='0'; elsif (read_data = "00001") then current_bit:='0'; elsif (read_data = "00010") then current_bit:='0'; elsif (read_data = "00011") then current_bit:='0'; elsif (read_data = "00100") then current_bit:='0'; elsif (read_data = "00101") then current_bit:='0'; elsif (read_data = "00110") then current_bit:='0'; elsif (read_data = "00111") then current_bit:='1'; elsif (read_data = "01000") then current_bit:='0'; elsif (read_data = "01001") then current_bit:='0'; elsif (read_data = "01010") then current_bit:='0'; elsif (read_data = "01011") then current_bit:='1'; elsif (read_data = "01100") then current_bit:='0'; elsif (read_data = "01101") then current_bit:='1'; elsif (read_data = "01110") then current_bit:='1'; elsif (read_data = "01111") then current_bit:='1'; elsif (read_data = "10000") then current_bit:='0'; elsif (read_data = "10001") then current_bit:='0'; elsif (read_data = "10010") then current_bit:='0'; elsif (read_data = "10011") then current_bit:='1'; elsif (read_data = "10100") then current_bit:='0'; elsif (read_data = "10101") then current_bit:='1'; elsif (read_data = "10110") then current_bit:='1'; elsif (read_data = "10111") then current_bit:='1'; elsif (read_data = "11000") then current_bit:='0'; elsif (read_data = "11001") then current_bit:='1'; elsif (read_data = "11010") then current_bit:='1'; elsif (read_data = "11011") then current_bit:='1'; elsif (read_data = "11100") then current_bit:='1'; elsif (read_data = "11101") then current_bit:='1'; elsif (read_data = "11110") then current_bit:='1'; elsif (read_data = "11111") then current_bit:='1'; end if; return current_bit; end;
begin process (SCK,RX) variable current_bit:bit; variable read_data: Std_uLogic_Vector ( 4 downto 0); begin if (falling_edge(RX)) then current_bit:=read_bit(RX,SCK); current_bit:=read_bit(RX,SCK);
DATA <= "0000000000000000000000000000000000000000000000000000000000000000000000000000 000"&to_stdulogic(current_bit); end if; end process; И получаю ошибку line 57: Signal read_data1<0> cannot be synthesized, bad synchronous description. The description style you are using to describe a synchronous element (register, memory, etc.) is not supported in the current software release.. Подскажите в чем дело. Тема похожая уже здесь была, я ее просматривал но осознать как подправить код не смог(. Спасибо. P.S. про жуткий способ вычисления current_bit знаю, просто я игрался с ошибкой что-бы понять в чем дело.
Сообщение отредактировал h0t - Feb 4 2012, 18:28
|
|
|
|
|
 |
Ответов
|
Feb 5 2012, 11:44
|
Участник

Группа: Участник
Сообщений: 51
Регистрация: 23-09-11
Пользователь №: 67 345

|
Все спасибо, осознал. Всем спасибо.
|
|
|
|
|
Feb 6 2012, 15:47
|
Участник

Группа: Участник
Сообщений: 51
Регистрация: 23-09-11
Пользователь №: 67 345

|
Цитата(Bad0512 @ Feb 6 2012, 07:14)  А вот у меня чисто спортивный интерес : а если бы вам нужно было количество единичек посчитать к примеру в 7-ми битном слове, то вы конструкцию типа if-elseif на 128 строчек написали бы? А вдруг ошиблись бы , к примеру в 115 строчке? Попоробуйте универсальную функцию подсчёта единичек (а может даже ещё и нулей!) написать. Тем более что VHDL позволяет передавать в функцию вектор заранее не определённой длины - можно сделать под любую разрядность входных данных. Да нет конечно, просто я думал что проблема в зависимости по данным массива, поэтому и сделал так, что-бы не было накопления с использованием переменной. Так что не волнуйтесь не все так плохо)))
Сообщение отредактировал h0t - Feb 6 2012, 15:48
|
|
|
|
Сообщений в этой теме
h0t Signal cannot be synthesized, bad synchronous description. Feb 4 2012, 18:26 svedach Я не спец, но возможно нельзя использовать rising_... Feb 4 2012, 19:08 h0t Да вроде можно, если вытащить функцию то это не по... Feb 4 2012, 19:18 gosu-art Так мало того там установка бита по rising_edge и... Feb 4 2012, 19:18 h0t Цитата(gosu-art @ Feb 4 2012, 23:18)... Feb 4 2012, 19:22 gosu-art А то, что такую конструкцию в ПЛИС невозможно реал... Feb 4 2012, 19:27 h0t Цитата(gosu-art @ Feb 4 2012, 23:27)... Feb 4 2012, 19:36 h0t Цитата(gosu-art @ Feb 4 2012, 23:27)... Feb 5 2012, 08:46 gosu-art Цитатаfor i in 0 to 4 loop
if(rising_edge(... Feb 4 2012, 19:45 h0t я писал, что над функцией я игрался что-бы понять ... Feb 4 2012, 19:48 des00 Цитата(h0t @ Feb 4 2012, 14:48) Прошу Вас... Feb 5 2012, 08:46 gosu-art Завтра приду на работу попробую набросать примеры.... Feb 5 2012, 09:07 maksimp Цитата(h0t @ Feb 4 2012, 21:26) Кодfuncti... Feb 5 2012, 09:36
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|