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

Subversion Repositories funbase_ip_library

[/] [funbase_ip_library/] [trunk/] [TUT/] [ip.hwp.accelerator/] [dctqidct/] [1.0/] [hdl/] [common_da/] [Parallel2Serial.vhd] - Blame information for rev 145

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 145 lanttu
------------------------------------------------------------------------------
2
-- Author               : Timo Alho
3
-- e-mail               : timo.a.alho@tut.fi
4
-- Date                 : 14.06.2004 14:00:59
5
-- File                 : Parallel2Serial.vhd
6
-- Design               : VHDL Entity DCT2_lib.Parallel2Serial.rtl
7
------------------------------------------------------------------------------
8
-- Description  : Parallel to serial converter. When signal 'load' is active,
9
-- new data from input 'd_in' is loaded into registers. Otherwise contents of
10
-- registers is shifted (arithmetically) to right by one, and last bit is sent
11
-- to 'd_out'.
12
------------------------------------------------------------------------------
13
LIBRARY ieee;
14
USE ieee.std_logic_1164.ALL;
15
USE ieee.std_logic_arith.ALL;
16
 
17
LIBRARY common_da;
18
 
19
ENTITY Parallel2Serial IS
20
   GENERIC(
21
      dataw_g : integer := 18
22
   );
23
   PORT(
24
      clk   : IN     std_logic;
25
      d_in  : IN     std_logic_vector (dataw_g-1 DOWNTO 0);  --parallel input data
26
      load  : IN     std_logic;                              --'1' => d_in is loaded in
27
      rst_n : IN     std_logic;
28
      d_out : OUT    std_logic                               --serial output data
29
   );
30
 
31
-- Declarations
32
 
33
END Parallel2Serial ;
34
 
35
--
36
ARCHITECTURE rtl OF Parallel2Serial IS
37
  SIGNAL data_r : std_logic_vector(dataw_g-1 DOWNTO 0);
38
BEGIN
39
 
40
  clocked : PROCESS (clk, rst_n)
41
  BEGIN  -- PROCESS clocked
42
    IF rst_n = '0' THEN                 -- asynchronous reset (active low)
43
      data_r <= (OTHERS => '0');
44
 
45
    ELSIF clk'event AND clk = '1' THEN  -- rising clock edge
46
      IF (load = '1') THEN
47
        --load new data into shiftregister
48
        data_r <= d_in;
49
      ELSE
50
        --shift data by one
51
        data_r <= conv_std_logic_vector(SHR(signed(data_r),
52
                                            conv_unsigned(1, 1)), dataw_g);
53
      END IF;
54
    END IF;
55
  END PROCESS clocked;
56
 
57
  --concurrent signal assignment
58
  d_out <= data_r(0);
59
END rtl;
60
 

powered by: WebSVN 2.1.0

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