alexadmin 0 18 ноября, 2014 Опубликовано 18 ноября, 2014 · Жалоба А есть ли синтезаторы, которые умеют корректно собирать код типа нижеприведенного? У меня под рукой только вивада с квартусом - квартус сразу говорит, что не больше одного 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; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Krys 2 18 ноября, 2014 Опубликовано 18 ноября, 2014 · Жалоба А надо? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 18 ноября, 2014 Опубликовано 18 ноября, 2014 · Жалоба А есть ли синтезаторы, которые умеют корректно собирать код типа нижеприведенного? Нет. Лучше тогда освойте Handel-C, SystemC Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Maverick_ 15 18 ноября, 2014 Опубликовано 18 ноября, 2014 · Жалоба А есть ли синтезаторы, которые умеют корректно собирать код типа нижеприведенного? У меня под рукой только вивада с квартусом - квартус сразу говорит, что не больше одного 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; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 18 ноября, 2014 Опубликовано 18 ноября, 2014 · Жалоба пример: шим не правильный: максимальная скважность 65535/65536 ;) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Maverick_ 15 18 ноября, 2014 Опубликовано 18 ноября, 2014 · Жалоба шим не правильный: максимальная скважность 65535/65536 ;) надеюсь разрядность счетчика не будет проблемой для ТС ;) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexadmin 0 19 ноября, 2014 Опубликовано 19 ноября, 2014 · Жалоба не вижу смысла... Ваше описание легко делается синтезируемым... Обычный ШИМ... Речь ведь шла не о реализации ШИМ, а о подходе в целом. Понятно, что все можно написать на RTL. Но стиль из примера выше можно использовать для построения разного рода последовательных управляющих автоматов - как более удобный вариант записи, чем через классическое описание КА. Почти как программа для процессора, но без процессора :) Жаль, что не получится. Спасибо всем за участие... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dsmv 0 21 ноября, 2014 Опубликовано 21 ноября, 2014 · Жалоба А Вы попробуйте C и Vivado HLS; Vivado HLS как раз преобразует последовательные операции в программе Си в синтезируемый код VHDL Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться