Forum: FPGA, VHDL & Verilog How to read this code

Author: Amna Khan (Company: none) (compengr)
Posted on:

Rate this post
0 useful
not useful
I am a beginner in vhdl, struggling with vhdl programming. I am 
currently reading books and trying to understand code by other authors. 
i have to understand a code structure like this:
entity declaration

architecture behavioral of entity is

signal declarations:

signal(0) <= '1' when signal_1(0)='0' and signal_2(0)='1' else '0';
signal(1) <= '1' when signal_1(1)='0' and signal_2(1)='1' else '0';
signal(2) <= '1' when signal_1(2)='0' and signal_2(2)='1' else '0';
signal(3) <= '1' when signal_1(3)='0' and signal_2(3)='1' else '0';

inport <=  data_in and not signal;

signal_4(0) <= '1' when signal(0)='0' and signal_2(0)='1' else '0';
signal_4(1) <= '1' when signal(1)='0' and signal_2(1)='1' else '0';
signal_4(2) <= '1' when signal(2)='0' and signal_2(2)='1' else '0';
signal_4(3) <= '1' when signal(3)='0' and signal_2(3)='1' else '0';

inport_1 <= signal or signal_4;

do something here
end  process

end behavioral

my question is:

1)how this code will work, for behavioral part all statements execute 
concurrently, but signal_4 depends on signal so will second when-else 
would wait for signal computation?
2) how inport would be computed, concurrently or sequentially?
3)are all when else for signal computed simultaneously?
4)if i want to count how many bits of signal are turning to '1' after 
all 4 bits are computed is the 1's counter after when else for signal is 
the only way to do it? can i somehow count 1's within the when else?
5) if i want the same number of bits to go high for signal and signal_4, 
how can i do it?

I appreciate any help.

Author: Lothar Miller (lkmiller) (Moderator)
Posted on:

Rate this post
0 useful
not useful
Amna Khan wrote:
> my question is:
Mine is: is this homework?
If so then show at least a start point of yours to discuss about.
If not then do the same...
signal(0) <= '1' when signal_1(0)='0' and signal_2(0)='1' else '0';
"signal" is a VHDL keyword an cannot be used as a signals name!


Entering an e-mail address is optional. If you want to receive reply notifications by e-mail, please log in.

Rules — please read before posting

  • Post long source code as attachment, not in the text
  • Posting advertisements is forbidden.

Formatting options

  • [c]C code[/c]
  • [avrasm]AVR assembler code[/avrasm]
  • [vhdl]VHDL code[/vhdl]
  • [code]code in other languages, ASCII drawings[/code]
  • [math]formula (LaTeX syntax)[/math]

Bild automatisch verkleinern, falls nötig
Note: the original post is older than 6 months. Please don't ask any new questions in this thread, but start a new one.