Express a given function using a PLD.

OP #7391125
Rate this post
• ▲ useful
▼ not useful

Hi! I have an assignment, where we have to express a function f, using a PLDcell.

The PLDcell is defined as such:

1
y <= i xor ((x(5) and x(4) and x(3)) or (x(2) and x(1) and x(0)));

How do I go about doing this? go from my function to expressing it using a single PLDcell? (I am not trying to find the solution, I am trying to learn/understand) I am stuck at the fact that the minimized function only has 3 or-terms and 3 different variables, meanwhile the defined PLDcell has 7 inputs..

I tried doing a truth table for each, the function and the PLDcell, and try to find where it matches? but it doesn't seem like the correct way because the PLDcell has 2^7 possible combinations. Happy to read stuff, if someone can point me in the right direction :)

#7399842
Rate this post
• ▲ useful
▼ not useful

Karnaugh is not usuable for your expression. There are 7 input signals (x(0) ... x(5) + i) - by far too much for Karnaugh. If you want to transform the expression into a PLD representation (NOT - AND - OR stages) you should look for 'De Morgan's rules'. Also, XOR must be translated into a NOT/AND/OR expression first. It is a lot of paper work to bring it into the right format. I would suggest to do this first for an easier expression than this one. However, you can ignore the science behind and just use the expression as is. The PLD compiler will do the work for you.

#7399877
Rate this post
• ▲ useful
▼ not useful

y <= i xor ((x(5) and x(4) and x(3)) or (x(2) and x(1) and x(0)));

I am stuck at the fact that the minimized function only has 3 or-terms and 3 different variables, meanwhile the defined PLDcell has 7 inputs..

Then you made a mistake in the minimization. None of the 7 variables (i, x(0) to x(5)) can be eliminated.

#7399886
Rate this post
• ▲ useful
▼ not useful

This is how the PLD logic interprets your formula:

1
y =
2
   (    x(0) and     x(1) and x(2) and not i)
3
or (not x(0) and not x(3)          and     i) 
4
or (not x(0) and not x(4)          and     i) 
5
or (not x(0) and not x(5)          and     i) 
6
or (not x(1) and not x(3)          and     i) 
7
or (not x(1) and not x(4)          and     i) 
8
or (not x(1) and not x(5)          and     i) 
9
or (not x(2) and not x(3)          and     i) 
10
or (not x(2) and not x(4)          and     i) 
11
or (not x(2) and not x(5)          and     i) 
12
or (    x(3) and     x(4) and x(5) and not i)

It is indeed very complex to come here, but you can try it by hand and check your result using an online calculator, e.g. https://www.dcode.fr/boolean-expressions-calculator (replace x(0) with a, x(1) with b a.s.o.)

(Company: group) #7425882
Rate this post
• ▲ useful
▼ not useful

I tried doing a truth table for each, the function and the PLDcell, and try to find where it matches? but it doesn't seem like the correct way because the PLDcell has 2^7 possible combinations. Happy to read stuff, if someone can point me in the right direction

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.