VHDL if construct assistance

Guest #5205510
Rate this post
• ▲ useful
▼ not useful
Port w, x, y and z are defined as STD_LOGIC.

In my 'if' construct I use the below condition
if((not w) and (not x) and (not y) and (not z)) then
--Do something

instead of the actual proper syntax as below.

 if( w = '0' and x = '0' and y = '0' and z = '0') then
--Do something

The former implementation fails and returns the below error
type error near w ; current type std_logic; expected type boolean

I understand that VHDL is a strongly typed language and hence it returns 
this error.

However consider a second case i.e. if i had to do an assignment c <= 
not a (Where a and c are of type STD_LOGIC), the execution will proceed 
without an error.

I am looking for a proper reason to give my students as to why the 'if' 
construct fails but the assignment succeeds in VHDL.

Thank you.

Reply

Note: the original post is older than 6 months. Please don't ask any new questions in this thread, but start a new one.

Formatting
  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]code in other languages, ASCII drawings[/code]
  • [math]formula (LaTeX syntax)[/math]
  • [[Title]] – link to an article
  • Link to another post: right-click its post ID (#8078628), copy the address, paste it into the text

More about formatting

Post long source code as an attachment, not in the text.

Already registered? Log in

Not shown to anyone. We send you a link; your post appears once you confirm it there.

By submitting you create a free account and accept the terms of use.