Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

Propagation delay

Mysterion

Newbie
Joined
Jan 20, 2022
Messages
4
Helped
0
Reputation
0
Reaction score
0
Trophy points
1
Activity points
12
Hello everyone :)

I need to modify the XOR operations used in the parity calculation in such a way that the XOR gates described are each supplemented by a hold time and the propagation delay and use the circuit diagram as a guide.

diagram.jpg


For the duration of the hold time, the signal used should be assigned the value "X" (invalid) in the VHDL description, and after the delay time, the new valid signal value. Note that signal delays are non-synthesisable constructs.
I'm just confused about the delay implementation. Should X(0)/X(1) be stable for 5ns or 8ns ? and X(2) for 3ns or 5ns ?

That's the code I wrote, but like I said, I'm not sure about the delay implementation and would appreciate some guidance.

Code:
library ieee;
use ieee.std_logic_1164.all;

entity parity_gen is
   port( x : in std_logic_vector (2 downto 0);
         y : out std_logic_vector (3 downto 0)
         );
end parity_gen;

architecture sig_handling of parity_gen is
   signal peven: std_logic;
 
    begin
    
   process(peven, x)
        begin
      peven  <= x(0) xor x(1) xor x(2) after 10 ns;
      if  (x(0)'stable(8 ns) and x(1)'stable(8 ns) and x(2)'stable(3 ns)) then
         y  <= peven & x ;
      else
         y  <= 'X' & x after 10 ns;
      end if;
    end process;
end sig_handling;
Thank you in advance for your help !
 
Last edited by a moderator:

kaz1

Advanced Member level 4
Joined
Aug 15, 2019
Messages
112
Helped
11
Reputation
22
Reaction score
15
Trophy points
18
Location
UK
Activity points
842
My view:
Assume zero time as t=0
I expect C will be 'X' until t = 3 but available at t = 8 (3+5)
y will be 'X' until C arrives but at t = 8+3(11) and available at t = 8+3+5(16)
 
Last edited:

barry

Advanced Member level 5
Joined
Mar 31, 2005
Messages
5,595
Helped
1,148
Reputation
2,308
Reaction score
1,201
Trophy points
1,393
Location
California, USA
Activity points
30,524
It's not clear what you're trying to accomplish here. First of all, I've never seen 'hold time' associated with a non-clocked process. Maybe you mean something else?

And, why is there a hold time associated with signal "c"? Drawing a timing diagram might help. The way I see it:

At t=3, x0 and x1 transition from X to valid. At t=8 c=>valid. At t=13, y=>valid.
 

kaz1

Advanced Member level 4
Joined
Aug 15, 2019
Messages
112
Helped
11
Reputation
22
Reaction score
15
Trophy points
18
Location
UK
Activity points
842
It's not clear what you're trying to accomplish here. First of all, I've never seen 'hold time' associated with a non-clocked process. Maybe you mean something else?

And, why is there a hold time associated with signal "c"? Drawing a timing diagram might help. The way I see it:

At t=3, x0 and x1 transition from X to valid. At t=8 c=>valid. At t=13, y=>valid.
I think it is about VHDL as the legacy modelling descriptive language when it was founded in the first place before its transition to synthesis subset. A sort of Uni stuff.
 

LaTeX Commands Quick-Menu:

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Top