Перейти к содержанию
    

Синтез поведенческого vhdl-кода

А есть ли синтезаторы, которые умеют корректно собирать код типа нижеприведенного? У меня под рукой только вивада с квартусом - квартус сразу говорит, что не больше одного wait на процесс, вивада делает вид что компилирует, но по факту подключает выход на 1 и все. Может у ментора/кэденса есть шибко умные синтезаторы?

process
begin
    led <= '0';
    for i in 0 to 10000 loop -- 000
        wait until clk = '1';
    end loop;
    led <= '1';
    for i in 0 to 20000 loop
        wait until clk = '1';
    end loop;
end process;

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А есть ли синтезаторы, которые умеют корректно собирать код типа нижеприведенного?

Нет. Лучше тогда освойте Handel-C, SystemC

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А есть ли синтезаторы, которые умеют корректно собирать код типа нижеприведенного? У меня под рукой только вивада с квартусом - квартус сразу говорит, что не больше одного wait на процесс, вивада делает вид что компилирует, но по факту подключает выход на 1 и все. Может у ментора/кэденса есть шибко умные синтезаторы?

process
begin
    led <= '0';
    for i in 0 to 10000 loop -- 000
        wait until clk = '1';
    end loop;
    led <= '1';
    for i in 0 to 20000 loop
        wait until clk = '1';
    end loop;
end process;

не вижу смысла...

Ваше описание легко делается синтезируемым... Обычный ШИМ...

пример:

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity shim is
Port (
clk : in STD_LOGIC;
kod_in : in STD_LOGIC_VECTOR (15 downto 0);
out_shim : out STD_LOGIC );
end shim;

architecture Behavioral of shim is

signal count_shim : STD_LOGIC_VECTOR (15 downto 0);

begin

process (clk)
begin
if clk'event and clk = '1' then 
count_shim <= count_shim + "0000000000000001";
end if;
end process;

process (clk)
begin
if clk'event and clk = '1' then
if count_shim < kod_in then
out_shim <= '1'; 
  else 
out_shim <= '0';
end if; end if;
end process;

end Behavioral;

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

пример:

шим не правильный: максимальная скважность 65535/65536 ;)

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

шим не правильный: максимальная скважность 65535/65536 ;)

надеюсь разрядность счетчика не будет проблемой для ТС ;)

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

не вижу смысла...

Ваше описание легко делается синтезируемым... Обычный ШИМ...

 

Речь ведь шла не о реализации ШИМ, а о подходе в целом. Понятно, что все можно написать на RTL. Но стиль из примера выше можно использовать для построения разного рода последовательных управляющих автоматов - как более удобный вариант записи, чем через классическое описание КА. Почти как программа для процессора, но без процессора :)

Жаль, что не получится. Спасибо всем за участие...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А Вы попробуйте C и Vivado HLS;

 

Vivado HLS как раз преобразует последовательные операции в программе Си в синтезируемый код VHDL

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...