- added helper functions for DCM frequency synthesis
Committed on the Free edition of March Hare Software CVSNT Server. Upgrade to CVS Suite for more features and support: http://march-hare.com/cvsnt/ git-svn-id: http://moon:8086/svn/vhdl/trunk@576 cc03376c-175c-47c8-b038-4cd826a8556b
This commit is contained in:
+43
-1
@@ -1,5 +1,5 @@
|
|||||||
-----------------------------------------------------------------------
|
-----------------------------------------------------------------------
|
||||||
-- $Header: /tmp/cvsroot/VHDL/lib/misc/utils_pkg.vhd,v 1.2 2009-01-02 15:28:01 Jens Exp $
|
-- $Header: /tmp/cvsroot/VHDL/lib/misc/utils_pkg.vhd,v 1.3 2009-11-03 20:38:30 Jens Exp $
|
||||||
-----------------------------------------------------------------------
|
-----------------------------------------------------------------------
|
||||||
|
|
||||||
library IEEE;
|
library IEEE;
|
||||||
@@ -18,6 +18,9 @@ package utils_pkg is
|
|||||||
function NextExpBaseTwo(x : natural) return natural;
|
function NextExpBaseTwo(x : natural) return natural;
|
||||||
function GCD(a, b : natural) return natural;
|
function GCD(a, b : natural) return natural;
|
||||||
function LCM(a, b : natural) return natural;
|
function LCM(a, b : natural) return natural;
|
||||||
|
function UTILS_PERIOD_NS(f_in_hz : natural) return real;
|
||||||
|
function UTILS_FREQ_M(f_in_hz, f_out_hz : natural) return natural;
|
||||||
|
function UTILS_FREQ_D(f_in_hz, f_out_hz : natural) return natural;
|
||||||
|
|
||||||
end utils_pkg;
|
end utils_pkg;
|
||||||
|
|
||||||
@@ -71,6 +74,45 @@ package body utils_pkg is
|
|||||||
|
|
||||||
end LCM;
|
end LCM;
|
||||||
|
|
||||||
|
function UTILS_PERIOD_NS(f_in_hz : natural) return real is
|
||||||
|
begin
|
||||||
|
|
||||||
|
return 1.0E9/real(f_in_hz);
|
||||||
|
|
||||||
|
end UTILS_PERIOD_NS;
|
||||||
|
|
||||||
|
function UTILS_FREQ_M(f_in_hz, f_out_hz : natural) return natural is
|
||||||
|
variable f_in_mhz : natural;
|
||||||
|
variable f_out_mhz : natural;
|
||||||
|
variable m : natural;
|
||||||
|
begin
|
||||||
|
f_in_mhz := f_in_hz/1E6;
|
||||||
|
f_out_mhz := f_out_hz/1E6;
|
||||||
|
m := f_out_mhz/GCD(f_in_mhz, f_out_mhz);
|
||||||
|
|
||||||
|
if m = 1 then
|
||||||
|
m := 2;
|
||||||
|
end if;
|
||||||
|
|
||||||
|
return m;
|
||||||
|
|
||||||
|
end UTILS_FREQ_M;
|
||||||
|
|
||||||
|
function UTILS_FREQ_D(f_in_hz, f_out_hz : natural) return natural is
|
||||||
|
variable f_in_mhz : natural;
|
||||||
|
variable f_out_mhz : natural;
|
||||||
|
variable m : natural;
|
||||||
|
variable d : natural;
|
||||||
|
begin
|
||||||
|
m := UTILS_FREQ_M(f_in_hz, f_out_hz);
|
||||||
|
f_in_mhz := f_in_hz/1E6;
|
||||||
|
f_out_mhz := f_out_hz/1E6;
|
||||||
|
d := m*f_in_mhz/f_out_mhz;
|
||||||
|
|
||||||
|
return d;
|
||||||
|
|
||||||
|
end UTILS_FREQ_D;
|
||||||
|
|
||||||
end utils_pkg;
|
end utils_pkg;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user