VHDL_loop problem

OP (Company: jiit noida) #2226297
Rate this post
useful
not useful
hi...
i was having some problem in running a while loop..even though i have 
given condition still it goes infinite..help me out..Thanx in advance.


library ieee,work;
USE ieee.std_logic_1164.all;
USE work.myfunc.find;
USE work.myfunc1.diffarray;
USE work.myfunc2.subarray1;

ENTITY division IS
port(divi,divs : in bit_vector(7 downto 0);
quot,rema :out bit_vector(7 downto 0));
END ENTITY;


Architecture div of division is

signal cdivi,cdivs,msubarray,crema: bit_vector(7 downto 0);
signal hpdivi,hpdivs,maindiff,test1,i,tcount: integer := 0;

begin

process(divi,divs,cdivi,cdivs,maindiff,hpdivs,test1,msubarray,crema)

variable vsubarray,vdivs,vcrema : bit_vector(7 downto 0);
variable vhpdivi,vhpdivs,vhpdivs1,vdiff,test,count :integer :=0;

begin

vcrema := divi;
cdivs <= divs;
vdivs := cdivs;

while(vcrema > vdivs) loop
count := count + 1;
cdivi <= vcrema;
find(cdivi,vhpdivi);
find(cdivs,vhpdivs);
maindiff <= vhpdivi - vhpdivs ;
vdiff := maindiff;
hpdivs <= vhpdivs ;
test := hpdivs + maindiff ;
test1 <= test;

-- formation of subtractor array
for i in 0 to hpdivs loop
vsubarray(test - i) := vdivs(hpdivs - i);
end loop;
msubarray <= vsubarray;

diffarray(cdivi,msubarray,crema);
vcrema := crema ;

exit when count > 4;
--formation of quotient
end loop;
tcount <= count;
rema <= crema;

end process;
end div;
Guest #2227634
Rate this post
useful
not useful
I think a "hanging" loop can happen in simulation, but I think a 
synthesis tool would present some errors ;-)

OR

it won't function as expected.

Remember: don't use LOOP in VHDL if you are a beginner and you want to 
synthesize your design

If you use it, use it carefully and double-check that your synthesis 
tool likes LOOP and handles it the way you planned it.
It would be better to think about the hardware logic that does your job 
and implement it the right way then (maybe there will be LOOP in it).
Admin #2227933
Rate this post
useful
not useful
akshay bhandari wrote:
> hi..thanx for the reply..actually i am in IT branch.. so i dont have
> much knowledge in VHDL..just know the basic syntax..

This way you might be able to write VHDL that runs in the simulator, but 
never something that can be synthesized. Learn the basics of synchronous 
processes in VHDL, and follow these rules: 
http://embdev.net/articles/VHDL

Reply

Please log in before posting.

or

Log in with Google account

Registration is free and takes only a minute.

Register now