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

Z-статус по gatelevel

вообщем есть объявление

 

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 ) бита - но почему именно ?

 

 

post-60371-1312237071_thumb.png

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


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

вообщем есть объявление

 

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 не забыли?

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


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

вообщем есть объявление

 

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');

так лучше не делать...

 

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


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

Либо sensitivity list, либо, как у автора, wait.

 

 

В исходном посте написано:

 

что в итоге, на gate-level выпадает в Z ,

 

Как Modelsim оптимизирует gate-level с wait, можно гадать.

 

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


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

вообщем Quartus, который используется для синтеза - спокойно говорит что один WAIT UNTIL в process - это нормально и годится, ( два или по времени - не годится для синтеза )

( ради интереса - Synplify Pro - тоже ест WAIT UNTIL )

 

 

NCSim/gatelevel netlist - показывает интересную ситуацию...

 

я попробую ради интереса убрать WAIT UNTIL конечно но как то странно это все :)

 

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


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

вообщем Quartus, который используется для синтеза - спокойно говорит что один WAIT UNTIL в process - это нормально и годится, ( два или по времени - не годится для синтеза )

( ради интереса - Synplify Pro - тоже ест WAIT UNTIL )

 

 

NCSim/gatelevel netlist - показывает интересную ситуацию...

 

я попробую ради интереса убрать WAIT UNTIL конечно но как то странно это все :)

 

Честно говоря, сколько не видел проектов (может конечно я мало их видел :) ), но

(по крайней мере в синтезируемых) WAIT UNTIL в процессах не встречал.

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


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

вообщем Quartus, который используется для синтеза - спокойно говорит что один WAIT UNTIL в process - это нормально и годится, ( два или по времени - не годится для синтеза )

( ради интереса - Synplify Pro - тоже ест WAIT UNTIL )

 

 

NCSim/gatelevel netlist - показывает интересную ситуацию...

 

я попробую ради интереса убрать WAIT UNTIL конечно но как то странно это все :)

 

 

Может быть достаточным убрать из под WAIT UNTIL VSS_RESET='0'

 

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


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

Честно говоря, сколько не видел проектов (может конечно я мало их видел :) ), но

(по крайней мере в синтезируемых) WAIT UNTIL в процессах не встречал.

 

ради академической дискуссии и только :)

 

http://www.altera.co.uk/support/kdb/soluti...152006_288.html

 

как именно заменить предлагается ?

 

Может быть достаточным убрать из под WAIT UNTIL VSS_RESET='0'

 

убрал VSS_RESET='0'

для проверки - не помогло...

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


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

ради академической дискуссии и только :)

 

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

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


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

2 Victor, понял, поддерживаю, но не помогло решить текущую проблему :(

 

IMHO все же это Quartus и его синтезис глючит

 

Synplify Pro говорит честно

Register bit vs_sent(0) is always 1, optimizing ...

 

и кстати прав! я действительно просмотрел из за простого copy and paste

 

:)

post-60371-1312316787_thumb.png

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


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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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