]> jspc29.x-matter.uni-frankfurt.de Git - trbnet.git/commitdiff
*** empty log message ***
authorhadeshyp <hadeshyp>
Thu, 3 Apr 2008 16:57:47 +0000 (16:57 +0000)
committerhadeshyp <hadeshyp>
Thu, 3 Apr 2008 16:57:47 +0000 (16:57 +0000)
trb_net_std.vhd

index ead1e06563a7e50c4f17e94b78fe717932b5a9e7..618178c24ca09103576ce402f2a0b57239d91ce3 100644 (file)
@@ -1,7 +1,7 @@
 -- std package
 library ieee;
-use ieee.std_logic_1164.all;
-USE IEEE.numeric_std.ALL;
+USE IEEE.std_logic_1164.ALL;
+USE IEEE.std_logic_ARITH.ALL;
 USE IEEE.std_logic_UNSIGNED.ALL;
 
 package trb_net_std is
@@ -104,6 +104,9 @@ package trb_net_std is
   
   function get_bit_position  (arg : std_logic_vector)
     return integer;
+
+  function is_time_reached  (timer : integer; time : integer; period : integer)
+    return std_logic;
   
 end package trb_net_std;
 
@@ -167,7 +170,25 @@ package body trb_net_std is
       return 0;
   end get_bit_position;
 
-
+  function is_time_reached  (timer : integer; time : integer; period : integer)
+    return std_logic is
+    variable i : integer range 0 to 1 := 0;
+    variable t : std_logic_vector(16 downto 0) := conv_std_logic_vector(timer,17);
+    begin
+      i := 0;
+      if period = 10 then
+        case time is
+          when 640000 => if t(16) = '1' then i := 1; end if;
+          when 80000  => if t(13) = '1' then i := 1; end if;
+          when 10000  => if t(10) = '1' then i := 1; end if;
+          when 1200   => if t(7)  = '1' then i := 1; end if;
+          when others => if timer = time/period then i := 1; end if;
+        end case;
+      else
+        if timer = time/period then i := 1; end if;
+      end if;
+      if i = 1 then  return '1'; else return '0'; end if;
+    end is_time_reached;
   
 end package body trb_net_std;