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

Subversion Repositories ofdm

[/] [ofdm/] [trunk/] [vhdl/] [qam.vhd] - Rev 13

Compare with Previous | Blame | View Log

library IEEE;
use IEEE.STD_LOGIC_1164.all;
use IEEE.STD_LOGIC_ARITH.all;
use IEEE.STD_LOGIC_UNSIGNED.all;
 
--  Uncomment the following lines to use the declarations that are
--  provided for instantiating Xilinx primitive components.
--library UNISIM;
--use UNISIM.VComponents.all;
 
entity qam is
  port (
    clk   : in  std_logic;
    rst   : in  std_logic;
    input : in  std_logic_vector(1 downto 0);
    Iout  : out std_logic_vector(11 downto 0);
    Qout  : out std_logic_vector(11 downto 0));
end qam;
 
architecture qam of qam is
 
begin
 
  process (clk, rst)
    constant mais1  : std_logic_vector(11 downto 0) := "001100000000";
    constant menos1 : std_logic_vector(11 downto 0) := "110100000000";
  begin
    if rst = '1' then
      Iout <= (others => '0');
      Qout <= (others => '0');
    elsif clk'event and clk = '1' then
-- 0123.45678901 bits
--      0011.00000000 = +1
--      1101.00000000 = -1
 
--                Q
--        o       |       o 
--        01      |       00
--                |
--        ----------------- I
--                |
--        11      |       10
--        o       |        o
 
      case input is
        when "00" =>
          Iout <= mais1;
          Qout <= mais1;
        when "01" =>
          Iout <= menos1;
          Qout <= mais1;
        when "10" =>
          Iout <= mais1;
          Qout <= menos1;
        when others =>
          Iout <= menos1;
          Qout <= menos1;
      end case;
    end if;
  end process;
 
end qam;
 

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

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