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

daemonDX

Свой
  • Постов

    42
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о daemonDX

  • Звание
    Участник
    Участник
  1. С ISE 9.1i на Windows XP Pro x64 у меня возникла проблема с излишним потреблением памяти для PAR. Server 2003 x64 поднимать было лениво. Собственно, Xilinx и не гарантирует работу 9.1i с WinXP PRO x64. У 9.2i XP x64 уже в списке поддерживаемых систем. Сейчас использую XP x64 c ISE 8.2i. Теоретически, 32-х битный 8.2i под WinXP x64 может получить 4 Гб памяти вместо стандартных 2 Гб, если программисты Xilinx об этом позаботились. Готовлюсь перейти на 9.2i.
  2. Поставил SP2 на x64 - c 9.1i ситуация не изменилась. Снес 9.1i, поставил 8.2i, там все нормально работает. Инсталятор 9.1i ставит на этой винде 64-х битные dll/exe (в папке bin только nt64). А 8.2 - 32-х битные. Хотел обеспечить xst/par хорошим объемом памяти :05: . Насчет требований PAR - синтез в 8.2 на текущем проекте выдает peak memory usage 1280 MB. А на Xilinx так и совсем страшные цифры приведены - http://www.xilinx.com/ise/products/memory.htm. Коллега возгорелся желанием поставить 8 Гб и RedHat WS4 64 :)
  3. Доброго дня, электрониксы ! Проект для xc2v6000 стал требовать под 2 гига памяти на PAR. Решил перейти на XP x64 SP1 и ISE 9.1i. Проект в ISE 9.1i на 32-х битной XP успешно разводится. На XP x64 - при синтезе, по показаниям task manager, xst отъедает 3.3 ГБ. При этом непрерывно растет PF Usage и, соответственно, Commit Charge (использование файла подкачки и объемы запрошенной виртуальной памяти). Как только page file кончается, xst перестает синтезить (загрузка проца снижается до 1-3%). Физической памяти в машине 4 ГБ, page file ставил 32 ГБ. Пробовал ISE 9.1 без SP и с SP3. Результат один и тот же. Собственно, в документации на 9.1 указано, что на x64 был limited testing. Кто-нибудь с x64 связывался ?
  4. Сам не пробовал (мне хватает ISE XST), но этот метод предположительно применителен к любому синтезу, поддерживающему атрибуты Verilog. Атрибуты - часть стандарта Verilog, а не расширение Xilinx.
  5. При использовании verilog в ISE поддерживаются атрибуты, что позволяет использовать в HDL такие конструкции: module top ( (*IOSTANDARD="SSTL2_II"*) input wire [ 7 : 0 ] SAMPLE_IN, (*IOSTANDARD="SSTL2_II_DCI"*) output wire [ 7 : 0 ] SAMPLE_OUT ); Иногда удобно вынести почти все содержимое ucf в модуль верхнего уровня: module top ( (*LOC="AT17 AT14 AT8 AN6 M36 U38"*) (*IOSTANDARD="SSTL2_II"*) input wire [ 7 : 0 ] SAMPLE_IN, (*LOC="M34 AK39 AJ38 AC38 AJ39 AG38 AH38 AF39"*) (*IOSTANDARD="SSTL2_II_DCI"*) output wire [ 7 : 0 ] SAMPLE_OUT );
  6. Попробуйте при подключении компонента в port map использовать open, т.е. : <выход> => open,
  7. Очень советую посмотреть в сторону Xilinx PlanAhead, если уж решили помочь placer'y. По-моему, там все гораздо удобнее.
  8. Itch, вы бы разобрались с присвоениями. В коде в одном синхронном процессе намешаны blocking (<=) и non-blocking (=) присвоения сигналов. Если пока не разбираетесь, что синтез нагенерит на non-blocking в синхронном процессе, то ограничтесь блокирующими (<=). Сюрпризов будет меньше :). Ну и мысли вслух :) . Уж коли триггеров с Z-состояниями вроде бы пока нет, и синтез поставит латч/триггер с тристабильным буфером по выходу, то лучше так и описать - как триггер, выход которого через assign вне процесса назначается по некоторому условию в Z.
  9. sazh, вы правильно подметили, инициализация в Xilinx реализуется с помощью прозрачной для пользователя XST замены конструкции на атрибут INIT. Собственно, именно это и написано в приведенном куске User Guide :) . При моделировании в ModelSim поведенческая модель и генерируемая XST cтруктурная модель с временными характеристиками в отношении инициализации регистров ведут себя одинаково. Т.е. при использовании связки ISE(XST) + ModelSim у меня заковык с инициализацией не возникало. С CPLD не работал, поэтому определенно сказать не могу. Предполагаю, что если у примитивов CPLD есть атрибуты INIT, то велика вероятность, что и для CPLD подобный подход сработает.
  10. XST User Guide: When you give a register an initial value in a declaration, XST sets this value on the output of the register at global reset, or at power up. A value assigned this way is carried in the NGC file as an INIT attribute on the register, and is independent of any local reset. У Altera не знаю. Так что наверное в доках по среде нужно выяснить, а не "Наверно так не стоит делать на верилоге".
  11. В Xilinx ISE при объявлении регистра : reg [ 7 : 0 ] cnt = 8'd15;
  12. Попробуйте так: library IEEE; use IEEE.STD_LOGIC_1164.all; use IEEE.STD_LOGIC_UNSIGNED.all; use work.mylib.all; entity RAM is generic ( bw : integer := 3; --разрядность шины адреса word_size : integer := 4; --разрядность шины данных ram_size : integer := 8 --ёмкость ОЗУ в словах ); port ( clk : in std_logic; ce : in std_logic; wr : in std_logic; oe : in std_logic; addr : in std_logic_vector(bw-1 downto 0); data : inout std_logic_vector(word_size-1 downto 0) ); end RAM; architecture Beh of RAM is subtype ram_word is std_logic_vector(word_size downto 0); type ram_table is array(0 to ram_size-1) of ram_word; signal xRAM : ram_table; signal r_data : std_logic_vector( word_size - 1 downto 0 ); signal r_data_valid : std_logic; begin data <= r_data when ( ( oe = '0' ) and ( r_data_valid = '1' ) ) else (others => 'Z'); write : process(clk) variable bch : std_logic :='1'; begin if clk'event and clk='1' then if ce = '1' then if wr = '0' then bch:=bitchet(data); xRAM(conv_integer(addr))(word_size) <= bch; xRAM(conv_integer(addr))(word_size-1 downto 0) <= data; end if; end if; end if; end process; read : process(clk) variable bch : std_logic :='1'; begin if clk'event and clk='1' then if ( ( ce = '1' ) and ( wr = '1' ) ) then r_data <= xRAM(conv_integer(addr))(word_size-1 downto 0); bch:=bitchet(data); if xRAM(conv_integer(addr))(word_size) /= bch then r_data <= (others => 'X'); end if; end if; if ( ce = '1' ) then r_data_valid <= wr; end if; end if; end process; end Beh; В вашем коде data назначается под clk, то есть является регистром, а регистры с Z не работают.
  13. Инлайн Груп, дистрибютор Xilinx в России проводит курсы. Подробности на http://www.plis.ru/page.php?id=45
  14. Страница 13, DS001-3 (v2.7) September 3, 2003 Period Tolerance: the allowed input clock period change in nanoseconds. "Толерантность периода: допустимое измненение периода входного клока в наносекундах". Это показатель допустимой нестабильности периода опорного клока.
  15. А вы уверены, что код выдает нарисованные вами сигналы ? if (clk'event and clk='1') предполагает изменение всех синхронных сигналов по переднему фронту clk process(clk) -- делитель частоты begin if (clk'event and clk='1') then if res_clk='1' then st<= conv_std_logic_vector(0,16); elsif set_clk='1' then if st=program_CLK-1 then st<= conv_std_logic_vector(0,16); else st<=st+1; end if; end if; if program_CLK="0000000000000001" then out_clk <= clk; elsif (st=program_CLK-1 and set_clk='1' and clk='1')then out_clk <= '1'; else out_clk <= '0'; end if; end if; end process; 0011001100110011001100 0011000000000011000000 Такое только на DDR-регистрах получить можно... Ну или с асинхронной логикой, выдавая gated-клок. И пора бы уже научиться кодами форума пользоваться, а то код смотреть неудобно.
×
×
  • Создать...