Here is my code that divides a 32-bit number by a 32-bit number, where both\noperands are of type UNSIGNED(31 downto 0) and provides a 16-bit fractional\nnumber(the divisor is always greater than the dividend).\n\nprocess(CLK)\nvariable count : integer range -1 to 15 := -1;\nvariable tempVal : UNSIGNED(47 downto 0);\nbegin\nif(RISING_EDGE(CLK) and go = '1') then\nif(count = -1) then\ntempVal(47 downto 32) := (others => '0');\ntempVal(31 downto 0) := dividend;\nquotient <= (others => '0');\ncount := 15;\nend if;\n\ntempVal := SHL(tempVal, CONV_UNSIGNED(1,1));\n\nif(tempVal >= divisor) then\nquotient(count) <= '1';\ntempVal := tempVal - divisor;\nend if;\ncount := count - 1;\nend if;\nend process;\n\n\nWhen I synthesize this, my maximum clock frequency is 53.110Mhz. Is there a\nreason why this code runs so slowly? Am I doing something that I shoudln't\nbe doing? Now, I haven't tested this code yet, so if functionally it's\nwrong, just ignore that, but why is it so slow? Thanks for any help.