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

 
 
> Signal cannot be synthesized, bad synchronous description., Не пойму в чем дело...
h0t
сообщение Feb 4 2012, 18:26
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 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
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
h0t
сообщение Feb 5 2012, 11:44
Сообщение #2


Участник
*

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



Все спасибо, осознал. Всем спасибо.
Go to the top of the page
 
+Quote Post
Bad0512
сообщение Feb 6 2012, 03:14
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 802
Регистрация: 11-05-07
Из: Томск
Пользователь №: 27 650



Цитата(h0t @ Feb 5 2012, 18:44) *
Все спасибо, осознал. Всем спасибо.

А вот у меня чисто спортивный интерес : а если бы вам нужно было количество единичек посчитать к примеру в 7-ми битном слове, то вы конструкцию типа if-elseif на 128 строчек написали бы? А вдруг ошиблись бы , к примеру в 115 строчке? Попоробуйте универсальную функцию подсчёта единичек (а может даже ещё и нулей!) написать. Тем более что VHDL позволяет передавать в функцию вектор заранее не определённой длины - можно сделать под любую разрядность входных данных.
Go to the top of the page
 
+Quote Post
h0t
сообщение Feb 6 2012, 15:47
Сообщение #4


Участник
*

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



Цитата(Bad0512 @ Feb 6 2012, 07:14) *
А вот у меня чисто спортивный интерес : а если бы вам нужно было количество единичек посчитать к примеру в 7-ми битном слове, то вы конструкцию типа if-elseif на 128 строчек написали бы? А вдруг ошиблись бы , к примеру в 115 строчке? Попоробуйте универсальную функцию подсчёта единичек (а может даже ещё и нулей!) написать. Тем более что VHDL позволяет передавать в функцию вектор заранее не определённой длины - можно сделать под любую разрядность входных данных.

Да нет конечно, просто я думал что проблема в зависимости по данным массива, поэтому и сделал так, что-бы не было накопления с использованием переменной. Так что не волнуйтесь не все так плохо)))

Сообщение отредактировал h0t - Feb 6 2012, 15:48
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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


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

 


RSS Текстовая версия Сейчас: 19th July 2025 - 08:21
Рейтинг@Mail.ru


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