EmbDev.net

Forum: FPGA, VHDL & Verilog VHDL Code error


von Hareesh M. (Company: Mindteck) (hareeshp)


Rate this post
useful
not useful
hi,
i have an if statement in my code
1
if(a and (not b) and c = '1') then
2
          output <= '1';
3
      else
4
           output <= '0';
5
       end if;

a, b, and c are internal signal of type std_logic;
output is signal out std_logic;

when compile this code it is showing an error

Error (10476): VHDL error at PowerSeq1.vhd(486): type of identifier "a" 
does not agree with its usage as "boolean" type

von C. A. Rotwang (Guest)


Rate this post
useful
not useful
Hareesh M. wrote:


> if (a and (not b) and c = '1') then
                        -------
                              |_ type: boolean


the and operator needs operands of the same type, i.e all operands are 
boolean, or all of type std_logic.

The comparsion "c = '1'" results into type boolean; the sub-term "a and 
(not b)" into type std_logic (because a and b are of type std_logic)-> 
the rightmost "and" faces type missmatch.

von Lothar M. (Company: Titel) (lkmiller) (Moderator)


Rate this post
useful
not useful
Hareesh M. wrote:
> if(a and (not b) and c = '1') then
Try this:
 if (a and (not b) and c) then...
And this:
 if (a='1' and b='0' and c='1') then...
Then think about it.

: Edited by Moderator
von Markus F. (mfro)


Rate this post
useful
not useful
Lothar M. wrote:
> Hareesh M. wrote:
>> if(a and (not b) and c = '1') then
> Try this:
>  if (a and (not b) and c) then...
> And this:
>  if (a='1' and b='0' and c='1') then...


if (?? a) and (?? (not b)) and c = 1 then


> Then think about it.

von Hareesh M. (Company: Mindteck) (hareeshp)


Rate this post
useful
not useful
thanks for your reply,

it is solved
1
if((a and (not b) and c) ='1' ) then
2
  output <= '1';
3
else 
4
 output <= '0';
5
end if;

von Lothar M. (Company: Titel) (lkmiller) (Moderator)


Rate this post
useful
not useful
Hareesh M. wrote:
> it is solved
> if((a and (not b) and c) ='1' ) then
I would prefer this:
if (a='1' and b='0' and c='1') then
Because there it is absolutely obvoius to see whats wanted without doing 
any logical calculations and digging around with the (not b) together 
with the ='1'...

von Hareesh M. (Company: Mindteck) (hareeshp)


Rate this post
useful
not useful
thanks, i will change as per your suggestions.

Please log in before posting. Registration is free and takes only a minute.
Existing account
Do you have a Google/GoogleMail account? No registration required!
Log in with Google account
No account? Register here.