Jump to content

    
Sign in to follow this  
DevL

Z-статус по gatelevel

Recommended Posts

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

 

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

Share this post


Link to post
Share on other sites
вообщем есть объявление

 

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

Share this post


Link to post
Share on other sites
вообщем есть объявление

 

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

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

 

Share this post


Link to post
Share on other sites
Либо sensitivity list, либо, как у автора, wait.

 

 

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

 

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

 

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

 

Share this post


Link to post
Share on other sites

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

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

 

 

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

 

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

 

Share this post


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

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

 

 

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

 

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

 

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

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

Share this post


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

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

 

 

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

 

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

 

 

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

 

Share this post


Link to post
Share on other sites
Честно говоря, сколько не видел проектов (может конечно я мало их видел :) ), но

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

 

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

 

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

 

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

 

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

 

убрал VSS_RESET='0'

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

Share this post


Link to post
Share on other sites
ради академической дискуссии и только :)

 

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

Share this post


Link to post
Share on other sites

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

 

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

 

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

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

 

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

 

:)

post-60371-1312316787_thumb.png

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this