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

 
 
> 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 4 2012, 19:48
Сообщение #2


Участник
*

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



я писал, что над функцией я игрался что-бы понять в чем ошибка. Если я ее выкину то вопрос станет не актуальный. Прошу Вас конструктивно объяснить в чем проблема.
Go to the top of the page
 
+Quote Post
des00
сообщение Feb 5 2012, 08:46
Сообщение #3


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(h0t @ Feb 4 2012, 14:48) *
Прошу Вас конструктивно объяснить в чем проблема.

Проблема в том, что Вы подошли к VHDL как к языку програмирования, а что VHDL это язык ОПИСАНИЯ аппаратуры (хотя программировать на нем можно и даже запускать то, что напрограмировали в симуляторе). И пока вы не поймете разницу, делать что либо н VHDL для ПЛИС бессмысленно. Рекоменду начать с азов, хотя бы с книни "ПЛИС. Курс молодого бойца" Максфилда.


--------------------
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
- - gosu-art   Завтра приду на работу попробую набросать примеры....   Feb 5 2012, 09:07
- - maksimp   Цитата(h0t @ Feb 4 2012, 21:26) Кодfuncti...   Feb 5 2012, 09:36
- - h0t   Все спасибо, осознал. Всем спасибо.   Feb 5 2012, 11:44
- - Bad0512   Цитата(h0t @ Feb 5 2012, 18:44) Все спаси...   Feb 6 2012, 03:14
- - h0t   Цитата(Bad0512 @ Feb 6 2012, 07:14) А вот...   Feb 6 2012, 15:47


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

 


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


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