OpenCores
URL https://opencores.org/ocsvn/qfp32/qfp32/trunk

Subversion Repositories qfp32

[/] [qfp32/] [trunk/] [Quartus/] [top.vhd] - Blame information for rev 2

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 mgraep
library IEEE;
2
use IEEE.std_logic_1164.all;
3
use IEEE.numeric_std.all;
4
 
5
library work;
6
use work.qfp32_unit_p.all;
7
use work.qfp_p.all;
8
 
9
entity Top is
10
 
11
  port (
12
    clock_50 : in  std_ulogic;
13
    key      : in  std_ulogic_vector(1 downto 0);
14
    sw       : in  std_ulogic_vector(3 downto 0);
15
    led      : out std_ulogic_vector(7 downto 0));
16
 
17
end Top;
18
 
19
architecture Rtl of Top is
20
 
21
  component qfp_unit
22
    generic (
23
      config : natural);
24
    port (
25
      clk_i      : in  std_ulogic;
26
      reset_n_i  : in  std_ulogic;
27
      cmd_i      : in  qfp_cmd_t;
28
      ready_o    : out std_ulogic;
29
      start_i    : in  std_ulogic;
30
      regA_i     : in  std_ulogic_vector(31 downto 0);
31
      regB_i     : in  std_ulogic_vector(31 downto 0);
32
      result_o   : out std_ulogic_vector(31 downto 0);
33
      cmp_gt_o   : out std_ulogic;
34
      cmp_z_o    : out std_ulogic;
35
      complete_o : out std_ulogic);
36
  end component;
37
 
38
  signal din : std_ulogic_vector(69 downto 0);
39
  signal dout : std_ulogic_vector(35 downto 0);
40
  signal count : unsigned(4 downto 0);
41
 
42
  signal clk      : std_ulogic;
43
  signal reset_n  : std_ulogic;
44
  signal cmd      : qfp_cmd_t;
45
  signal ready    : std_ulogic;
46
  signal start    : std_ulogic;
47
  signal regA     : std_ulogic_vector(31 downto 0);
48
  signal regB     : std_ulogic_vector(31 downto 0);
49
  signal result   : std_ulogic_vector(31 downto 0);
50
  signal cmp_gt   : std_ulogic;
51
  signal cmp_z    : std_ulogic;
52
  signal complete : std_ulogic;
53
 
54
begin  -- Rtl
55
 
56
  clk <= clock_50;
57
  reset_n <= key(0);
58
 
59
  process (clk, reset_n)
60
  begin  -- process
61
    if reset_n = '0' then               -- asynchronous reset (active low)
62
      din <= (others => '0');
63
      dout <= (others => '0');
64
      count <= to_unsigned(0,5);
65
    elsif clk'event and clk = '1' then  -- rising clock edge
66
      if count = to_unsigned(21,5) then
67
        count <= to_unsigned(0,5);
68
        din <= (others => '0');
69
        dout <= result & cmp_gt & cmp_z & complete & ready;
70
      else
71
        din <= din(din'length-5 downto 0) & sw;-- shift in
72
        dout <= "0000" & dout(dout'length-1 downto 4);
73
        count <= count+1;
74
      end if;
75
    end if;
76
  end process;
77
 
78
  cmd.unit <= unsigned(din(2 downto 0));
79
  cmd.sub_cmd <= din(4 downto 3);
80
  start <= din(5);
81
  regA <= din(37 downto 6);
82
  regB <= din(69 downto 38);
83
 
84
  led(3 downto 0) <= dout(3 downto 0);
85
 
86
  qfp_unit_1: qfp_unit
87
    generic map (
88
      config => qfp_config_add+qfp_config_mul+qfp_config_recp+qfp_config_misc)
89
    port map (
90
      clk_i      => clk,
91
      reset_n_i  => reset_n,
92
      cmd_i      => cmd,
93
      ready_o    => ready,
94
      start_i    => start,
95
      regA_i     => regA,
96
      regB_i     => regB,
97
      result_o   => result,
98
      cmp_gt_o   => cmp_gt,
99
      cmp_z_o    => cmp_z,
100
      complete_o => complete);
101
 
102
end Rtl;

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.