DevL 0 1 августа, 2011 Опубликовано 1 августа, 2011 · Жалоба вообщем есть объявление signal vs_sent: std_logic_vector(1 downto 0) := "01"; spi_sent :process begin WAIT UNTIL( vs_clock'event AND vs_clock='1' AND VSS_RESET='0'); if VSS_IRQ = '0' then vs_sent <= "01"; else vs_sent <= vs_sent OR "10"; end if; end process spi_sent; что в итоге, на gate-level выпадает в Z , видно что проблемы идут от младшего ( 0 ) бита - но почему именно ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
LV26 0 2 августа, 2011 Опубликовано 2 августа, 2011 · Жалоба вообщем есть объявление signal vs_sent: std_logic_vector(1 downto 0) := "01"; spi_sent :process begin WAIT UNTIL( vs_clock'event AND vs_clock='1' AND VSS_RESET='0'); if VSS_IRQ = '0' then vs_sent <= "01"; else vs_sent <= vs_sent OR "10"; end if; end process spi_sent; что в итоге, на gate-level выпадает в Z , видно что проблемы идут от младшего ( 0 ) бита - но почему именно ? sensitivity list не забыли? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 14 2 августа, 2011 Опубликовано 2 августа, 2011 · Жалоба sensitivity list не забыли? Либо sensitivity list, либо, как у автора, wait. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Maverick_ 15 2 августа, 2011 Опубликовано 2 августа, 2011 · Жалоба вообщем есть объявление signal vs_sent: std_logic_vector(1 downto 0) := "01"; spi_sent :process begin WAIT UNTIL( vs_clock'event AND vs_clock='1' AND VSS_RESET='0'); if VSS_IRQ = '0' then vs_sent <= "01"; else vs_sent <= vs_sent OR "10"; end if; end process spi_sent; что в итоге, на gate-level выпадает в Z , видно что проблемы идут от младшего ( 0 ) бита - но почему именно ? WAIT UNTIL( vs_clock'event AND vs_clock='1' AND VSS_RESET='0'); так лучше не делать... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EugeneS 0 2 августа, 2011 Опубликовано 2 августа, 2011 · Жалоба Либо sensitivity list, либо, как у автора, wait. В исходном посте написано: что в итоге, на gate-level выпадает в Z , Как Modelsim оптимизирует gate-level с wait, можно гадать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DevL 0 2 августа, 2011 Опубликовано 2 августа, 2011 · Жалоба вообщем Quartus, который используется для синтеза - спокойно говорит что один WAIT UNTIL в process - это нормально и годится, ( два или по времени - не годится для синтеза ) ( ради интереса - Synplify Pro - тоже ест WAIT UNTIL ) NCSim/gatelevel netlist - показывает интересную ситуацию... я попробую ради интереса убрать WAIT UNTIL конечно но как то странно это все :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
LV26 0 2 августа, 2011 Опубликовано 2 августа, 2011 · Жалоба вообщем Quartus, который используется для синтеза - спокойно говорит что один WAIT UNTIL в process - это нормально и годится, ( два или по времени - не годится для синтеза ) ( ради интереса - Synplify Pro - тоже ест WAIT UNTIL ) NCSim/gatelevel netlist - показывает интересную ситуацию... я попробую ради интереса убрать WAIT UNTIL конечно но как то странно это все :) Честно говоря, сколько не видел проектов (может конечно я мало их видел :) ), но (по крайней мере в синтезируемых) WAIT UNTIL в процессах не встречал. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EugeneS 0 2 августа, 2011 Опубликовано 2 августа, 2011 · Жалоба вообщем Quartus, который используется для синтеза - спокойно говорит что один WAIT UNTIL в process - это нормально и годится, ( два или по времени - не годится для синтеза ) ( ради интереса - Synplify Pro - тоже ест WAIT UNTIL ) NCSim/gatelevel netlist - показывает интересную ситуацию... я попробую ради интереса убрать WAIT UNTIL конечно но как то странно это все :) Может быть достаточным убрать из под WAIT UNTIL VSS_RESET='0' Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DevL 0 2 августа, 2011 Опубликовано 2 августа, 2011 · Жалоба Честно говоря, сколько не видел проектов (может конечно я мало их видел :) ), но (по крайней мере в синтезируемых) WAIT UNTIL в процессах не встречал. ради академической дискуссии и только :) http://www.altera.co.uk/support/kdb/soluti...152006_288.html как именно заменить предлагается ? Может быть достаточным убрать из под WAIT UNTIL VSS_RESET='0' убрал VSS_RESET='0' для проверки - не помогло... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
LV26 0 2 августа, 2011 Опубликовано 2 августа, 2011 · Жалоба ради академической дискуссии и только :) http://www.altera.co.uk/support/kdb/soluti...152006_288.html как именно заменить предлагается ? убрал VSS_RESET='0' для проверки - не помогло... Как вариант вынести в сигнал с типом boolean то что в скобках под WAIT UNTIL... Вообще "Since multiple wait statements are allowed, a process with wait statements can be used to model complex timing behavior and sequential events. However, in synthesis, only few well-defined forms of wait statements can be used, and normally only one wait statement is allowed in a process. Since a process with a sensitivity list can clearly show the input signals and make the code clearer and more descriptive, we prefer this form and normally don't use the wait statement in this book. " RTL HARDWARE DESIGN USING VHDL Coding for Efficiency, Portability, and Scalability PONG P. CHU Cleveland State University Если уж припекло с WAIT - вот смотрите примеры. -- This process is used to generate a flip-flop that clocks the value of dinto -- q when the clock input has a rising edge. PROCESS BEGIN WAIT UNTIL clock = ‘1’ AND clock’EVENT; q <= d; END PROCESS; -- A synchronous reset can be created by -- the following: PROCESS BEGIN WAIT UNTIL clock = ‘1’ AND clock’EVENT; IF (reset = ‘1’) THEN q <= ‘0’; ELSE q <= d; END IF; END PROCESS; -- An asynchronous reset can be added as follows: PROCESS BEGIN IF (reset = ‘1’) THEN q <= ‘0’; ELSIF clock’EVENT AND clock = ‘1’ THEN q <= d; END IF; WAIT ON reset, clock; END PROCESS; VHDL: Programming by Example Douglas L. Perry Fourth Edition Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DevL 0 2 августа, 2011 Опубликовано 2 августа, 2011 · Жалоба 2 Victor, понял, поддерживаю, но не помогло решить текущую проблему :( IMHO все же это Quartus и его синтезис глючит Synplify Pro говорит честно Register bit vs_sent(0) is always 1, optimizing ... и кстати прав! я действительно просмотрел из за простого copy and paste :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться