EmbDev.net

Forum: FPGA, VHDL & Verilog calling a process


von Wafa (Guest)


Rate this post
useful
not useful
Good morning,

is it possible in an architecture to call a process several times only 
by changing its variables ?!
for example, if i have a process called calculate

calculate:process(A,B,C)
 begin
C<=A+B;
end process calculate;

then i want to use the same process for D,E and F

is it possible to call calculate without writing the instructions again?
if its possible,how ?

best regards


Wafa

von Na sowas (Guest)


Rate this post
useful
not useful
What you need is a function for calculate.

> calculate:process(A,B,C)
>  begin
>  C<=A+B;
> end process calculate;
> then i want to use the same process for D,E and F
> is it possible to call calculate without writing the instructions again?
You do not call a process.
The process above is sensitive on A, B and C.

> is it possible in an architecture to call a process several times only
> by changing its variables ?!
These aren't variables but signals!

But for this here:
1
calculate:process(A,B,C)
2
   begin
3
   C<=A+B;
4
end process calculate;
you do not need a process at all. Write it down this way:
1
   C<=A+B;
Thats the concurrent style.

von Wafa (Guest)


Rate this post
useful
not useful
u didnt realy answer my question,  i know A B and C are signals,
 u said  i need a function , so how can i write this and call it for D E 
and F  ?!

thank you

von Na sowas (Guest)


Rate this post
useful
not useful
> u didnt realy answer my question
Because the question itself doen't make much sense...
In the process
calculate: process(A,B,C)
the Symbols A, B, and C are not parameters that are handed over to the 
process. The are just flags, which say to recalculate the process on 
every change of each of them.

>  i need a function , so how can i write this
1
function calculate (da : std_logic_vector, db : std_logic_vector)
2
                           return std_logic_vector is
3
  variable t : std_logic_vector := '0';  
4
begin
5
  t := da + db;  -- higly dependent on libraries
6
  return t;
7
end calculate ;
8
:
9
:  
10
  c <= calculate(a,b);
11
  f <= calculate(d,e);
But what about typing in the words function+vhdl into google?


On the other hand duplicating ressources can be done with a generate 
statement or a loop.

von Wafa (Guest)


Rate this post
useful
not useful
Thank you realy much :)

von Bernd (Guest)


Rate this post
useful
not useful
regarding functions in VHDL:

keep in mind that the output of synthesis tools has to be watched 
carefully if you use high-level vhdl constructs like functions...

the output may in some cases be not very effective or not of that kind 
as you expected

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.