- Joined
- Jan 22, 2008
- Messages
- 53,351
- Helped
- 14,796
- Reputation
- 29,879
- Reaction score
- 14,335
- Trophy points
- 1,393
- Location
- Bochum, Germany
- Activity points
- 302,083
is process statement without sensitivity list synthesizable? if no then fine . but if yes then then how ??
are u atall getting my point . the thing which u said , thats wat i have said in my above post . so wat to do if i want to assign a signal with two different values in a process without a sensitivity list . shouls io give a delay (using a counter ) after each signal assignment .
begin
process
begin
a<='1';
a<='0';
end process;
begin
process
begin
a<='1';
wait for 10 ns;
a<='0';
wait for 10 ns;
end process;
are u atall getting my point . the thing which u said , thats wat i have said in my above post . so wat to do if i want to assign a signal with two different values in a process without a sensitivity list . shouls io give a delay (using a counter ) after each signal assignment .
fsm_proc : process (clk) is
begin
if rising_edge(clk) = '1' then
cnt <= cnt + 1; -- default logic, if nothing else wants to change cnt, cnt will increment.
-- cnt will not increment on this line. The intent to change cnt will be noted.
case (state) is
when INIT_WAIT_100MS =>
if cnt >= SOME_VALUE then -- you can also use =, sometimes = will synthesize better, sometimes >= will.
state <= SET_1; -- change to next state
cnt <= 0; -- this overrides the "cnt <= cnt + 1" line.
lcd(3 downto 0) <= "0011"; -- setting the value on the transition to the next state will mean the value is set
-- upon entering the state, not 1 cycle after entering the state. This is unimportant for this design*.
end if;
when SET_1 =>
-- very similar code here.
-- similar code for each step of the design. **
end case;
if rst = '1' then -- placing the reset at the end is more common in FPGA designs***
-- where not all signals are reset.
lcd <= (others => '0');
cnt <= 0;
-- other signals that need to be reset
end if;
end if;
end process; -- and here is where the actual updates will occur, at the end of the process
-- and after all triggered processes have been evaluated.
You have to design a synchronous logic circuit that does the same thing.so what to do??
process ( clock_100mhz , reset ) is
begin
if reset = '1' then
a <= '0' ;
fsm_state <= idle ;
elsif rising_edge ( clock_100mhz ) then
case fsm_state is
when idle =>
if shoot = '1' then
a <= '1' ;
fsm_state <= shooting ;
end if ;
when shooting =>
a <= '0' ;
fsm_state <= idle ;
end case ;
end if ;
end process ;
process
a <= '1';
wait for 10 ns;
a <= '0';
end process;
a | a+
---+---
x | 0
That's true,Its a simple enough problem - doesnt need a process at all..
process ( A , B , C ) is
begin
C <=
not
(
( not ( A and B ) )
and
( not ( ( not ( A and B ) ) or B ) )
) ;
end process ;
-- Given pure combinatorial logic ( no flip flops ) - notice that all signals ( a,b,c ) are in the sensitivity list.
process ( clock ) is
begin
if rising_edge ( clock ) the
Y <= C ;
end if ;
end process ;
-- This Flip Flop is sensitive only to the 'clock' signal - so only this signal is in the sensitivity list.
Given pure combinatorial logic ( no flip flops ) - notice that all signals ( a,b,c ) are in the sensitivity list.
You shouldn't have 'C' in the list. It may not matter (eg, if the simulator determines 'C' has no effect on the process).
Think of a VHDL process as a block of code that obeys certain rules.
The statements, which describe the behavior in a process, are executed sequentially, in the order you specified them.
Once the last line is exited the values get updated. This repeats itself in an infinite loop.
The "sensitivity list" has no effect on the synthesized logic - it's used for simulation only.
Every time a signal in the sensitivity list is changes - the process is entered. Think of it as a "hint" to the simulator that tells it when to look evaluate the statements inside the process.
C <=
not
(
( not ( A and B ) )
and
( not ( ( not ( A and B ) ) or B ) )
) ;
process(clk)
begin
if rising_edge(clk) then
Q <= D;
end if;
end process;
OK, THAT MEANS WHEN AM TRYING TO SYNTHESIZE THE code , then no matter watever may be the sensitivity list , the process goes on repeating even if there occurs no change in the signal value of the sensitivity list.
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?