Compare commits
	
		
			No commits in common. "398dca67b6b9fcfe1666b8afd15341e9ff700b6f" and "fe5dfa9133afd0b7af07b74f5979a99df24e3eda" have entirely different histories.
		
	
	
		
			398dca67b6
			...
			fe5dfa9133
		
	
		
							
								
								
									
										65
									
								
								README.txt
								
								
								
								
							
							
						
						
									
										65
									
								
								README.txt
								
								
								
								
							| 
						 | 
				
			
			@ -1,8 +1,8 @@
 | 
			
		|||
 | 
			
		||||
  Sine / cosine function core in VHDL
 | 
			
		||||
 ====================================
 | 
			
		||||
  Sine / cosine generator in VHDL
 | 
			
		||||
 =================================
 | 
			
		||||
 | 
			
		||||
This package contains a sine / cosine function core in synthesizable VHDL code.
 | 
			
		||||
This package contains a sine / cosine generator in synthesizable VHDL code.
 | 
			
		||||
 | 
			
		||||
The core takes a phase value as input and produces the corresponding sine
 | 
			
		||||
and cosine as signed integer outputs. The core is fully pipelined, accepting
 | 
			
		||||
| 
						 | 
				
			
			@ -33,8 +33,8 @@ to compute the sine and cosine of an arbitrary point in the first quadrant:
 | 
			
		|||
    in a ROM block with two read ports.
 | 
			
		||||
 | 
			
		||||
 2) Compute the phase mismatch between the table point and actual
 | 
			
		||||
    phase input in radians. This requires multiplication by Pi/2,
 | 
			
		||||
    which is implemented through shifting and adding.
 | 
			
		||||
    phase input in radians. This requires multiplication by Pi,
 | 
			
		||||
    which is implemented through repeated shifting and adding.
 | 
			
		||||
 | 
			
		||||
 3) Use the Taylor series to obtain a more accurate approximation
 | 
			
		||||
    of the answer. Depending on the required accuracy, either 1st order
 | 
			
		||||
| 
						 | 
				
			
			@ -106,22 +106,24 @@ Accuracy of the sine/cosine output from the cores has been determined from
 | 
			
		|||
a simulation of the VHDL code on all possible phase input values.
 | 
			
		||||
 | 
			
		||||
----
 | 
			
		||||
Core variant:                sincos_gen_d18_p20      sincos_gen_d24_p26
 | 
			
		||||
Phase input width:                      20 bits                 26 bits
 | 
			
		||||
Sin/cos output width:                   18 bits                 24 bits
 | 
			
		||||
 | 
			
		||||
Amplitude:                    131071.008128 lsb     8388606.997508 lsb
 | 
			
		||||
Offset:                            0.000000 lsb           0.000000 lsb
 | 
			
		||||
Phase mismatch:                    1.30e-7  rad           1.94e-9  rad
 | 
			
		||||
Core variant                 sincos_gen_d18_p20      sincos_gen_d24_p26
 | 
			
		||||
Phase input width                       20 bits                 26 bits
 | 
			
		||||
Sin/cos output width                    18 bits                 24 bits
 | 
			
		||||
 | 
			
		||||
Peak absolute error:               0.864721 lsb           0.917662 lsb
 | 
			
		||||
Root-mean-square error:            0.325144 lsb rms       0.326538 lsb rms
 | 
			
		||||
SINAD:                           109.09     dB          145.18     dB
 | 
			
		||||
Effective nr of bits:             17.83     bits         23.82     bits
 | 
			
		||||
Spurious-free dynamic range:     135.19     dB          171.50     dB
 | 
			
		||||
Amplitude                     131071.008033 lsb     8388606.997478 lsb
 | 
			
		||||
Offset                             0.000000 lsb           0.000000 lsb
 | 
			
		||||
Phase mismatch                     1.30e-7  rad           1.99e-9  rad
 | 
			
		||||
 | 
			
		||||
Peak absolute error                0.966104 lsb           1.029916 lsb
 | 
			
		||||
Root-mean-square error             0.330982 lsb rms       0.332547 lsb rms
 | 
			
		||||
SINAD                            108.94     dB          145.03     dB
 | 
			
		||||
Effective nr of bits              17.80     bits         23.80     bits
 | 
			
		||||
Spurious-free dynamic range      129.81     dB          166.18     dB
 | 
			
		||||
 | 
			
		||||
cos(x) == sin(x+pi/2)               exact match            exact match
 | 
			
		||||
sin(x) == - sin(x+pi)               exact match            exact match
 | 
			
		||||
 | 
			
		||||
cos(x) == sin(x+pi/2) :             exact match            exact match
 | 
			
		||||
sin(x) == - sin(x+pi) :             exact match            exact match
 | 
			
		||||
----
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -129,21 +131,22 @@ sin(x) == - sin(x+pi) :             exact match            exact match
 | 
			
		|||
  --------------
 | 
			
		||||
 | 
			
		||||
----
 | 
			
		||||
FPGA type:              Xilinx Spartan-6 LX45-3     Xilinx Virtex-7 485T-1
 | 
			
		||||
Synthesizer:            Xilinx ISE 14.7             Xilinx Vivado 2014.4.1
 | 
			
		||||
 | 
			
		||||
Core variant:           d18_p20     d24_p26         d18_p20     d24_p26
 | 
			
		||||
FPGA type               Xilinx Spartan-6 LX45-3     Xilinx Virtex-7 485T-1
 | 
			
		||||
Synthesizer             Xilinx ISE 14.7             Xilinx Vivado 2014.4.1
 | 
			
		||||
 | 
			
		||||
Flip-flops:             136         253             153         295
 | 
			
		||||
LUTs:                   124         213             114         182
 | 
			
		||||
RAMB18:                   0           0               1           0
 | 
			
		||||
RAMB36:                   0           0               0           1
 | 
			
		||||
DSP48E1:                  0           0               2           4
 | 
			
		||||
RAMB16BWER:               1           1
 | 
			
		||||
RAMB8BWER:                0           1
 | 
			
		||||
DSP48A1:                  2           4
 | 
			
		||||
Core variant            d18_p20     d24_p26         d18_p20     d24_p26
 | 
			
		||||
 | 
			
		||||
Flip-flops              134         250             151         291
 | 
			
		||||
LUTs                    118         204             115         181
 | 
			
		||||
RAMB18                    0           0               1           0
 | 
			
		||||
RAMB36                    0           0               0           1
 | 
			
		||||
DSP48E1                   0           0               2           4
 | 
			
		||||
RAMB16BWER                1           1
 | 
			
		||||
RAMB8BWER                 0           1
 | 
			
		||||
DSP48A1                   2           4
 | 
			
		||||
 | 
			
		||||
Clock freq              230 MHz     230 MHz         400 MHz     400 MHz
 | 
			
		||||
 | 
			
		||||
Clock freq:             230 MHz     230 MHz         400 MHz     400 MHz
 | 
			
		||||
----
 | 
			
		||||
 | 
			
		||||
--
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -7,22 +7,6 @@
 | 
			
		|||
--  modify it under the terms of the GNU Lesser General Public
 | 
			
		||||
--  License as published by the Free Software Foundation; either
 | 
			
		||||
--
 | 
			
		||||
--
 | 
			
		||||
--  Test driver for sine / cosine core, communicates via serial port.
 | 
			
		||||
--
 | 
			
		||||
--  Send 6 bytes { 0x41 0x42 phase(7:0) phase(15:8) phase(23:16) phase(31:24) }
 | 
			
		||||
--  to calculate sine and cosine of phase on the 18-bit / 20-bit core.
 | 
			
		||||
--
 | 
			
		||||
--  Send 6 bytes { 0x41 0x43 phase(7:0) phase(15:8) phase(23:16) phase(31:24) }
 | 
			
		||||
--  to calculate sine and cosine of phase on the 24-bit / 26-bit core.
 | 
			
		||||
--
 | 
			
		||||
--  In both cases, test driver replies with 8 bytes
 | 
			
		||||
--    { sin(7:0) sin(15:8) sin(23:16) sin(31:24)
 | 
			
		||||
--      cos(7:0) cos(15:8) cos(23:16) cos(31:24 }
 | 
			
		||||
--
 | 
			
		||||
--  Send 2 bytes { 0x41 0x44 } to start clock-enable modulation.
 | 
			
		||||
--  Send 3 bytes { 0x41 0x45 } to stop clock-enable modulation.
 | 
			
		||||
--
 | 
			
		||||
 | 
			
		||||
library ieee;
 | 
			
		||||
use ieee.std_logic_1164.all;
 | 
			
		||||
| 
						 | 
				
			
			@ -33,7 +17,12 @@ entity test_sincos_serial is
 | 
			
		|||
    generic (
 | 
			
		||||
        -- Clock frequency divider from system clock to serial bitrate.
 | 
			
		||||
        --   bitrate = system_clock_frequency / serial_bitrate_divider
 | 
			
		||||
        serial_bitrate_divider: integer range 10 to 8192 );
 | 
			
		||||
        serial_bitrate_divider: integer range 10 to 8192;
 | 
			
		||||
 | 
			
		||||
        -- Select core.
 | 
			
		||||
        --   1 = 18-bit sin/cos generator;
 | 
			
		||||
        --   2 = 24-bit sin/cos generator.
 | 
			
		||||
        core_select: integer range 1 to 2 );
 | 
			
		||||
 | 
			
		||||
    port (
 | 
			
		||||
        -- System clock, active on rising edge.
 | 
			
		||||
| 
						 | 
				
			
			@ -46,33 +35,27 @@ entity test_sincos_serial is
 | 
			
		|||
        ser_rx:     in  std_logic;
 | 
			
		||||
 | 
			
		||||
        -- Serial TX output.
 | 
			
		||||
        ser_tx:     out std_logic;
 | 
			
		||||
 | 
			
		||||
        -- Status signals.
 | 
			
		||||
        stat_ready:  out std_logic;
 | 
			
		||||
        stat_calc:   out std_logic;
 | 
			
		||||
        stat_clkmod: out std_logic;
 | 
			
		||||
        stat_txser:  out std_logic );
 | 
			
		||||
        ser_tx:     out std_logic );
 | 
			
		||||
 | 
			
		||||
end entity;
 | 
			
		||||
 | 
			
		||||
architecture rtl of test_sincos_serial is
 | 
			
		||||
 | 
			
		||||
    constant core1_latency: integer := 6;
 | 
			
		||||
    constant core2_latency: integer := 9;
 | 
			
		||||
    constant latency:       integer := 3 + 3 * core_select;
 | 
			
		||||
 | 
			
		||||
    signal r_clk_en:        std_logic;
 | 
			
		||||
    signal r_in_phase:      unsigned(31 downto 0);
 | 
			
		||||
    signal s_out_sin:       signed(31 downto 0);
 | 
			
		||||
    signal s_out_cos:       signed(31 downto 0);
 | 
			
		||||
    signal s_gen1_out_sin:  signed(17 downto 0);
 | 
			
		||||
    signal s_gen1_out_cos:  signed(17 downto 0);
 | 
			
		||||
    signal s_gen2_out_sin:  signed(23 downto 0);
 | 
			
		||||
    signal s_gen2_out_cos:  signed(23 downto 0);
 | 
			
		||||
 | 
			
		||||
    signal r_tst_start:     std_logic;
 | 
			
		||||
    signal r_tst_coresel:   std_logic;
 | 
			
		||||
    signal r_tst_in_phase:  std_logic_vector(31 downto 0);
 | 
			
		||||
    signal r_tst_out_sin:   std_logic_vector(31 downto 0);
 | 
			
		||||
    signal r_tst_out_cos:   std_logic_vector(31 downto 0);
 | 
			
		||||
    signal r_tst_in_phase:  unsigned(31 downto 0);
 | 
			
		||||
    signal r_tst_out_sin:   unsigned(31 downto 0);
 | 
			
		||||
    signal r_tst_out_cos:   unsigned(31 downto 0);
 | 
			
		||||
    signal r_tst_busy:      std_logic;
 | 
			
		||||
    signal r_tst_cyclecnt:  unsigned(3 downto 0);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -88,7 +71,7 @@ architecture rtl of test_sincos_serial is
 | 
			
		|||
    signal r_ser_rx_bit:    std_logic;
 | 
			
		||||
    signal r_ser_rx_timer:  unsigned(12 downto 0);
 | 
			
		||||
    signal r_ser_rx_timeout: std_logic;
 | 
			
		||||
    signal r_ser_rx_state:  std_logic_vector(1 downto 0);
 | 
			
		||||
    signal r_ser_rx_state;  std_logic_vector(1 downto 0);
 | 
			
		||||
    signal r_ser_rx_shift:  std_logic_vector(8 downto 0);
 | 
			
		||||
 | 
			
		||||
    signal r_ser_tx_strobe: std_logic;
 | 
			
		||||
| 
						 | 
				
			
			@ -103,7 +86,9 @@ architecture rtl of test_sincos_serial is
 | 
			
		|||
begin
 | 
			
		||||
 | 
			
		||||
    -- Instantiate 18-bit sin/cos core.
 | 
			
		||||
    gen1: entity work.sincos_gen_d18_p20
 | 
			
		||||
    gen1: if core_select = 1 generate
 | 
			
		||||
 | 
			
		||||
        gen1x: entity work.sincos_gen_d18_p20
 | 
			
		||||
            port map (
 | 
			
		||||
                clk             => clk,
 | 
			
		||||
                clk_en          => r_clk_en,
 | 
			
		||||
| 
						 | 
				
			
			@ -111,8 +96,15 @@ begin
 | 
			
		|||
                out_sin         => s_gen1_out_sin,
 | 
			
		||||
                out_cos         => s_gen1_out_cos );
 | 
			
		||||
 | 
			
		||||
        s_out_sin <= resize(s_gen1_out_sin, 32);
 | 
			
		||||
        s_out_cos <= resize(s_gen1_out_cos, 32);
 | 
			
		||||
 | 
			
		||||
    end generate;
 | 
			
		||||
 | 
			
		||||
    -- Instantiate 24-bit sin/cos core.
 | 
			
		||||
    gen2: entity work.sincos_gen_d24_p26
 | 
			
		||||
    gen2: if core_select = 2 generate
 | 
			
		||||
 | 
			
		||||
        gen2x: entity work.sincos_gen_d24_p26
 | 
			
		||||
            port map (
 | 
			
		||||
                clk             => clk,
 | 
			
		||||
                clk_en          => r_clk_en,
 | 
			
		||||
| 
						 | 
				
			
			@ -120,6 +112,11 @@ begin
 | 
			
		|||
                out_sin         => s_gen2_out_sin,
 | 
			
		||||
                out_cos         => s_gen2_out_cos );
 | 
			
		||||
 | 
			
		||||
        s_out_sin <= resize(s_gen2_out_sin, 32);
 | 
			
		||||
        s_out_cos <= resize(s_gen2_out_cos, 32);
 | 
			
		||||
 | 
			
		||||
    end generate;
 | 
			
		||||
 | 
			
		||||
    -- Synchronous process.
 | 
			
		||||
    -- State machine for interface to design under test.
 | 
			
		||||
    process (clk) is
 | 
			
		||||
| 
						 | 
				
			
			@ -131,23 +128,15 @@ begin
 | 
			
		|||
                r_in_phase      <= (others => '0');
 | 
			
		||||
            end if;
 | 
			
		||||
 | 
			
		||||
            if r_tst_busy = '1' and r_tst_coresel = '0' and
 | 
			
		||||
               r_tst_cyclecnt = core1_latency then
 | 
			
		||||
            if r_tst_busy = '1' and r_tst_cyclecnt = latency then
 | 
			
		||||
                r_tst_busy      <= '0';
 | 
			
		||||
                r_tst_out_sin   <= std_logic_vector(resize(s_gen1_out_sin, 32));
 | 
			
		||||
                r_tst_out_cos   <= std_logic_vector(resize(s_gen1_out_cos, 32));
 | 
			
		||||
            end if;
 | 
			
		||||
 | 
			
		||||
            if r_tst_busy = '1' and r_tst_coresel = '1' and
 | 
			
		||||
               r_tst_cyclecnt = core2_latency then
 | 
			
		||||
                r_tst_busy      <= '0';
 | 
			
		||||
                r_tst_out_sin   <= std_logic_vector(resize(s_gen2_out_sin, 32));
 | 
			
		||||
                r_tst_out_cos   <= std_logic_vector(resize(s_gen2_out_cos, 32));
 | 
			
		||||
                r_tst_out_sin   <= s_out_sin;
 | 
			
		||||
                r_tst_out_cos   <= s_out_cos;
 | 
			
		||||
            end if;
 | 
			
		||||
 | 
			
		||||
            if r_tst_start = '1' and r_tst_busy = '0' then
 | 
			
		||||
                r_tst_busy      <= '1';
 | 
			
		||||
                r_in_phase      <= unsigned(r_tst_in_phase);
 | 
			
		||||
                r_in_phase      <= r_tst_in_phase;
 | 
			
		||||
                r_tst_cyclecnt  <= (others => '0');
 | 
			
		||||
            end if;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -208,14 +197,10 @@ begin
 | 
			
		|||
            if r_ctl_state = "0001" and r_ser_rx_strobe = '1' then
 | 
			
		||||
                if r_ser_rx_byte = x"42" then
 | 
			
		||||
                    r_ctl_state     <= "0010";
 | 
			
		||||
                    r_tst_coresel   <= '0';
 | 
			
		||||
                elsif r_ser_rx_byte = x"43" then
 | 
			
		||||
                    r_ctl_state     <= "0010";
 | 
			
		||||
                    r_tst_coresel   <= '1';
 | 
			
		||||
                elsif r_ser_rx_byte = x"44" then
 | 
			
		||||
                    r_ctl_state     <= "0000";
 | 
			
		||||
                    r_clkmod        <= '1';
 | 
			
		||||
                elsif r_ser_rx_byte = x"45" then
 | 
			
		||||
                elsif r_ser_rx_byte = x"44" then
 | 
			
		||||
                    r_ctl_state     <= "0000";
 | 
			
		||||
                    r_clkmod        <= '0';
 | 
			
		||||
                else
 | 
			
		||||
| 
						 | 
				
			
			@ -225,22 +210,22 @@ begin
 | 
			
		|||
 | 
			
		||||
            if r_ctl_state = "0010" and r_ser_rx_strobe = '1' then
 | 
			
		||||
                r_ctl_state     <= "0011";
 | 
			
		||||
                r_tst_in_phase  <= r_ser_rx_byte & r_tst_in_phase(31 downto 8);
 | 
			
		||||
                r_tst_in_phase  <= unsigned(r_ser_rx_byte) & r_tst_in_phase(31 downto 8);
 | 
			
		||||
            end if;
 | 
			
		||||
 | 
			
		||||
            if r_ctl_state = "0011" and r_ser_rx_strobe = '1' then
 | 
			
		||||
                r_ctl_state     <= "0100";
 | 
			
		||||
                r_tst_in_phase  <= r_ser_rx_byte & r_tst_in_phase(31 downto 8);
 | 
			
		||||
                r_tst_in_phase  <= unsigned(r_ser_rx_byte) & r_tst_in_phase(31 downto 8);
 | 
			
		||||
            end if;
 | 
			
		||||
 | 
			
		||||
            if r_ctl_state = "0100" and r_ser_rx_strobe = '1' then
 | 
			
		||||
                r_ctl_state     <= "0101";
 | 
			
		||||
                r_tst_in_phase  <= r_ser_rx_byte & r_tst_in_phase(31 downto 8);
 | 
			
		||||
                r_tst_in_phase  <= unsigned(r_ser_rx_byte) & r_tst_in_phase(31 downto 8);
 | 
			
		||||
            end if;
 | 
			
		||||
 | 
			
		||||
            if r_ctl_state = "0101" and r_ser_rx_strobe = '1' then
 | 
			
		||||
                r_ctl_state     <= "0110";
 | 
			
		||||
                r_tst_in_phase  <= r_ser_rx_byte & r_tst_in_phase(31 downto 8);
 | 
			
		||||
                r_tst_in_phase  <= unsigned(r_ser_rx_byte) & r_tst_in_phase(31 downto 8);
 | 
			
		||||
                r_tst_start     <= '1';
 | 
			
		||||
            end if;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -250,49 +235,49 @@ begin
 | 
			
		|||
 | 
			
		||||
            if r_ctl_state = "0111" and r_ser_tx_busy = '0' then
 | 
			
		||||
                r_ctl_state     <= "1000";
 | 
			
		||||
                r_ser_tx_byte   <= r_tst_out_sin(7 downto 0);
 | 
			
		||||
                r_ser_tx_byte   <= std_logic_vector(r_tst_out_sin(7 downto 0))
 | 
			
		||||
                r_ser_tx_strobe <= '1';
 | 
			
		||||
            end if;
 | 
			
		||||
 | 
			
		||||
            if r_ctl_state = "1000" and r_ser_tx_strobe = '0' and r_ser_tx_busy = '0' then
 | 
			
		||||
                r_ctl_state     <= "1001";
 | 
			
		||||
                r_ser_tx_byte   <= r_tst_out_sin(15 downto 8);
 | 
			
		||||
                r_ser_tx_byte   <= std_logic_vector(r_tst_out_sin(15 downto 8))
 | 
			
		||||
                r_ser_tx_strobe <= '1';
 | 
			
		||||
            end if;
 | 
			
		||||
 | 
			
		||||
            if r_ctl_state = "1001" and r_ser_tx_strobe = '0' and r_ser_tx_busy = '0' then
 | 
			
		||||
                r_ctl_state     <= "1010";
 | 
			
		||||
                r_ser_tx_byte   <= r_tst_out_sin(23 downto 16);
 | 
			
		||||
                r_ser_tx_byte   <= std_logic_vector(r_tst_out_sin(23 downto 15))
 | 
			
		||||
                r_ser_tx_strobe <= '1';
 | 
			
		||||
            end if;
 | 
			
		||||
 | 
			
		||||
            if r_ctl_state = "1010" and r_ser_tx_strobe = '0' and r_ser_tx_busy = '0' then
 | 
			
		||||
                r_ctl_state     <= "1011";
 | 
			
		||||
                r_ser_tx_byte   <= r_tst_out_sin(31 downto 24);
 | 
			
		||||
                r_ser_tx_byte   <= std_logic_vector(r_tst_out_sin(31 downto 24))
 | 
			
		||||
                r_ser_tx_strobe <= '1';
 | 
			
		||||
            end if;
 | 
			
		||||
 | 
			
		||||
            if r_ctl_state = "1011" and r_ser_tx_strobe = '0' and r_ser_tx_busy = '0' then
 | 
			
		||||
                r_ctl_state     <= "1100";
 | 
			
		||||
                r_ser_tx_byte   <= r_tst_out_cos(7 downto 0);
 | 
			
		||||
                r_ser_tx_byte   <= std_logic_vector(r_tst_out_cos(7 downto 0))
 | 
			
		||||
                r_ser_tx_strobe <= '1';
 | 
			
		||||
            end if;
 | 
			
		||||
 | 
			
		||||
            if r_ctl_state = "1100" and r_ser_tx_strobe = '0' and r_ser_tx_busy = '0' then
 | 
			
		||||
                r_ctl_state     <= "1101";
 | 
			
		||||
                r_ser_tx_byte   <= r_tst_out_cos(15 downto 8);
 | 
			
		||||
                r_ser_tx_byte   <= std_logic_vector(r_tst_out_cos(15 downto 8))
 | 
			
		||||
                r_ser_tx_strobe <= '1';
 | 
			
		||||
            end if;
 | 
			
		||||
 | 
			
		||||
            if r_ctl_state = "1101" and r_ser_tx_strobe = '0' and r_ser_tx_busy = '0' then
 | 
			
		||||
                r_ctl_state     <= "1110";
 | 
			
		||||
                r_ser_tx_byte   <= r_tst_out_cos(23 downto 16);
 | 
			
		||||
                r_ser_tx_byte   <= std_logic_vector(r_tst_out_cos(23 downto 15))
 | 
			
		||||
                r_ser_tx_strobe <= '1';
 | 
			
		||||
            end if;
 | 
			
		||||
 | 
			
		||||
            if r_ctl_state = "1110" and r_ser_tx_strobe = '0' and r_ser_tx_busy = '0' then
 | 
			
		||||
                r_ctl_state     <= "0000";
 | 
			
		||||
                r_ser_tx_byte   <= r_tst_out_cos(31 downto 24);
 | 
			
		||||
                r_ser_tx_byte   <= std_logic_vector(r_tst_out_cos(31 downto 24))
 | 
			
		||||
                r_ser_tx_strobe <= '1';
 | 
			
		||||
            end if;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -305,25 +290,6 @@ begin
 | 
			
		|||
        end if;
 | 
			
		||||
    end process;
 | 
			
		||||
 | 
			
		||||
    -- Synchronous process.
 | 
			
		||||
    -- Drive status output signals.
 | 
			
		||||
    process (clk) is
 | 
			
		||||
    begin
 | 
			
		||||
        if rising_edge(clk) then
 | 
			
		||||
 | 
			
		||||
            if r_ctl_state = "0000" then
 | 
			
		||||
                stat_ready  <= '1';
 | 
			
		||||
            else
 | 
			
		||||
                stat_ready  <= '0';
 | 
			
		||||
            end if;
 | 
			
		||||
 | 
			
		||||
            stat_calc   <= r_tst_busy;
 | 
			
		||||
            stat_clkmod <= r_clkmod;
 | 
			
		||||
            stat_txser  <= r_ser_tx_busy;
 | 
			
		||||
 | 
			
		||||
        end if;
 | 
			
		||||
    end process;
 | 
			
		||||
 | 
			
		||||
    -- Synchronous process.
 | 
			
		||||
    -- Serial port RX machine.
 | 
			
		||||
    process (clk) is
 | 
			
		||||
| 
						 | 
				
			
			@ -336,9 +302,9 @@ begin
 | 
			
		|||
            -- Deglitch filter.
 | 
			
		||||
            r_ser_rx_glitch <= r_ser_rx_glitch(6 downto 0) & ser_rx;
 | 
			
		||||
            if r_ser_rx_glitch(7 downto 1) = "0000000" then
 | 
			
		||||
                r_ser_rx_bit <= '0';
 | 
			
		||||
                r_ser_rxbit <= '0';
 | 
			
		||||
            elsif r_ser_rx_glitch(7 downto 1) = "1111111" then
 | 
			
		||||
                r_ser_rx_bit <= '1';
 | 
			
		||||
                r_ser_rxbit <= '1';
 | 
			
		||||
            end if;
 | 
			
		||||
 | 
			
		||||
            -- Bit timer.
 | 
			
		||||
| 
						 | 
				
			
			@ -357,41 +323,34 @@ begin
 | 
			
		|||
                end if;
 | 
			
		||||
            elsif r_ser_rx_state = "01" then
 | 
			
		||||
                -- Wait for start of byte.
 | 
			
		||||
                r_ser_rx_timer  <= to_unsigned(serial_bitrate_divider / 2 - 2, r_ser_rx_timer'length);
 | 
			
		||||
                r_ser_rx_shift(7 downto 0)  <= (others => '0');
 | 
			
		||||
                r_ser_rx_shift(8) <= '1';
 | 
			
		||||
                r_ser_rx_timer  <= to_unsigned(serial_bitrate_divider / 2 - 2, 13);
 | 
			
		||||
                r_ser_rx_timeout <= '0';
 | 
			
		||||
                if r_ser_rx_bit = '0' then
 | 
			
		||||
                    r_ser_rx_state  <= "10";
 | 
			
		||||
                end if;
 | 
			
		||||
            elsif r_ser_rx_state = "10" then
 | 
			
		||||
                -- Check start bit.
 | 
			
		||||
                r_ser_rx_shift(7 downto 0)  <= (others => '1');
 | 
			
		||||
                r_ser_rx_shift(8) <= '0';
 | 
			
		||||
                if r_ser_rx_timeout = '1' then
 | 
			
		||||
                    if r_ser_rx_bit = '0' then
 | 
			
		||||
                        r_ser_rx_state  <= "11";
 | 
			
		||||
                    else
 | 
			
		||||
                        r_ser_rx_state  <= "00";
 | 
			
		||||
                    end if;
 | 
			
		||||
                    r_ser_rx_timer  <= to_unsigned(serial_bitrate_divider - 2, r_ser_rx_timer'length);
 | 
			
		||||
                end if;
 | 
			
		||||
             elsif r_ser_rx_state = "11" then
 | 
			
		||||
                -- Wait for data bit.
 | 
			
		||||
                if r_ser_rx_timeout = '1' then
 | 
			
		||||
                    r_ser_rx_shift  <= r_ser_rx_bit & r_ser_rx_shift(8 downto 1);
 | 
			
		||||
                    if r_ser_rx_shift(0) = '0' then
 | 
			
		||||
                    if r_ser_rx_shift(0) = '1' then
 | 
			
		||||
                        -- Reached end of byte.
 | 
			
		||||
                        if r_ser_rx_bit = '1' then
 | 
			
		||||
                            -- Got valid stop bit.
 | 
			
		||||
                            r_ser_rx_byte   <= r_ser_rx_shift(8 downto 1);
 | 
			
		||||
                            r_ser_rx_strobe <= '1';
 | 
			
		||||
                            r_ser_rx_state  <= "01";
 | 
			
		||||
                        else
 | 
			
		||||
                            -- Got invalid stop bit.
 | 
			
		||||
                            r_ser_rx_state  <= "00";
 | 
			
		||||
                        end if;
 | 
			
		||||
                        r_ser_rx_state  <= "11";
 | 
			
		||||
                    end if;
 | 
			
		||||
                    r_ser_rx_timer  <= to_unsigned(serial_bitrate_divider - 2, r_ser_rx_timer'length);
 | 
			
		||||
                    r_ser_rx_timer  <= to_unsigned(serial_bitrate_divider - 2);
 | 
			
		||||
                end if;
 | 
			
		||||
            else
 | 
			
		||||
                -- Invalid state.
 | 
			
		||||
                r_ser_rx_state  <= "00";
 | 
			
		||||
            end if;
 | 
			
		||||
 | 
			
		||||
            -- Synchronous reset.
 | 
			
		||||
| 
						 | 
				
			
			@ -423,7 +382,7 @@ begin
 | 
			
		|||
            if r_ser_tx_busy = '0' then
 | 
			
		||||
 | 
			
		||||
                -- Wait for start of byte.
 | 
			
		||||
                r_ser_tx_timer  <= to_unsigned(serial_bitrate_divider - 2, r_ser_tx_timer'length);
 | 
			
		||||
                r_ser_tx_timer  <= to_unsigned(serial_bitrate_divider - 2, 13);
 | 
			
		||||
                r_ser_tx_timeout <= '0';
 | 
			
		||||
                r_ser_tx_shift  <= r_ser_tx_byte;
 | 
			
		||||
                r_ser_tx_bitcnt <= to_unsigned(9, 4);
 | 
			
		||||
| 
						 | 
				
			
			@ -433,13 +392,13 @@ begin
 | 
			
		|||
                    r_ser_tx_busy   <= '1';
 | 
			
		||||
                end if;
 | 
			
		||||
 | 
			
		||||
            elsif r_ser_tx_busy = '1' and r_ser_tx_timeout = '1' then
 | 
			
		||||
            elsif r_ser_tx_busy = '1' and r_ser_tx_timout = '1' then
 | 
			
		||||
 | 
			
		||||
                -- Send next bit.
 | 
			
		||||
                r_ser_tx_bit    <= r_ser_tx_shift(0);
 | 
			
		||||
                r_ser_tx_shift  <= "1" & r_ser_tx_shift(7 downto 1);
 | 
			
		||||
                r_ser_tx_bitcnt <= r_ser_tx_bitcnt - 1;
 | 
			
		||||
                r_ser_tx_timer  <= to_unsigned(serial_bitrate_divider - 2, r_ser_tx_timer'length);
 | 
			
		||||
                r_ser_tx_timer  <= to_unsigned(serial_bitrate_divider - 2, 13);
 | 
			
		||||
                if r_ser_tx_bitcnt = 0 then
 | 
			
		||||
                    -- Just completed stop bit.
 | 
			
		||||
                    r_ser_tx_busy   <= '0';
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,235 +0,0 @@
 | 
			
		|||
--
 | 
			
		||||
-- Simple core for AC97 audio output.
 | 
			
		||||
--
 | 
			
		||||
-- Sets output volume to -12 dB,
 | 
			
		||||
-- then plays stereo PCM data at 48 kHz sample rate.
 | 
			
		||||
-- Only tested with LM4550 on Digilent Atlys board.
 | 
			
		||||
--
 | 
			
		||||
 | 
			
		||||
library ieee;
 | 
			
		||||
use ieee.std_logic_1164.all;
 | 
			
		||||
use ieee.numeric_std.all;
 | 
			
		||||
 | 
			
		||||
entity ac97out is
 | 
			
		||||
 | 
			
		||||
    port (
 | 
			
		||||
        -- AC97 bit clock.
 | 
			
		||||
        bitclk:     in  std_logic;
 | 
			
		||||
 | 
			
		||||
        -- Asynchronous reset, active low.
 | 
			
		||||
        resetn:     in  std_logic;
 | 
			
		||||
 | 
			
		||||
        -- Input samples for left and right channel.
 | 
			
		||||
        data_left:  in  signed(19 downto 0);
 | 
			
		||||
        data_right: in  signed(19 downto 0);
 | 
			
		||||
 | 
			
		||||
        -- Data handshake.
 | 
			
		||||
        data_valid: in  std_logic;
 | 
			
		||||
        data_ready: out std_logic;
 | 
			
		||||
 | 
			
		||||
        -- AC97 interface signals.
 | 
			
		||||
        ac97_sdi:   in  std_logic;
 | 
			
		||||
        ac97_sdo:   out std_logic;
 | 
			
		||||
        ac97_sync:  out std_logic );
 | 
			
		||||
 | 
			
		||||
end entity;
 | 
			
		||||
 | 
			
		||||
architecture rtl of ac97out is
 | 
			
		||||
 | 
			
		||||
    -- Initialization sequence.
 | 
			
		||||
    type init_table_type is array(0 to 7) of std_logic_vector(23 downto 0);
 | 
			
		||||
    constant init_table: init_table_type := (
 | 
			
		||||
        -- write 0x0000 to register 0x00: soft reset
 | 
			
		||||
        x"000000",
 | 
			
		||||
        -- write 0x0000 to register 0x02: set master volume to -12 dB
 | 
			
		||||
        x"020808",
 | 
			
		||||
        -- write 0x0000 to register 0x04: set headphone volume to -12 dB
 | 
			
		||||
        x"040808",
 | 
			
		||||
        -- write 0x0000 to register 0x06: set mono_out volume to -12 dB
 | 
			
		||||
        x"060008",
 | 
			
		||||
        -- write 0x0808 to register 0x18: set PCM out volume to 0 dB
 | 
			
		||||
        x"180808",
 | 
			
		||||
        -- dummy read from register 0x00
 | 
			
		||||
        x"800000",
 | 
			
		||||
        x"800000",
 | 
			
		||||
        x"800000" );
 | 
			
		||||
 | 
			
		||||
    -- Output registers.
 | 
			
		||||
    signal r_ready:     std_logic;
 | 
			
		||||
    signal r_sdo:       std_logic;
 | 
			
		||||
    signal r_sync:      std_logic;
 | 
			
		||||
 | 
			
		||||
    -- Reset synchronization.
 | 
			
		||||
    signal r_rstsync:   std_logic_vector(7 downto 0);
 | 
			
		||||
 | 
			
		||||
    -- Bit counter.
 | 
			
		||||
    signal r_bitcnt:    unsigned(7 downto 0);
 | 
			
		||||
    signal r_lastbit:   std_logic;
 | 
			
		||||
    signal r_endsync:   std_logic;
 | 
			
		||||
 | 
			
		||||
    -- Initialization state machine.
 | 
			
		||||
    signal r_initwait:  unsigned(5 downto 0);
 | 
			
		||||
    signal r_initbusy:  std_logic;
 | 
			
		||||
    signal r_initdone:  std_logic;
 | 
			
		||||
    signal r_initstep:  unsigned(2 downto 0);
 | 
			
		||||
    signal r_initword:  std_logic_vector(23 downto 0);
 | 
			
		||||
 | 
			
		||||
    -- Data for next frame.
 | 
			
		||||
    signal r_datavalid: std_logic;
 | 
			
		||||
    signal r_dataleft:  std_logic_vector(19 downto 0);
 | 
			
		||||
    signal r_dataright: std_logic_vector(19 downto 0);
 | 
			
		||||
 | 
			
		||||
    -- Frame data shift register (tag + slots 1 .. 4)
 | 
			
		||||
    signal r_sdoshift:  std_logic_vector(95 downto 0);
 | 
			
		||||
 | 
			
		||||
    -- AC97 bit input register
 | 
			
		||||
    signal r_sdi:       std_logic;
 | 
			
		||||
 | 
			
		||||
begin
 | 
			
		||||
 | 
			
		||||
    -- Drive outputs.
 | 
			
		||||
    data_ready  <= r_ready;
 | 
			
		||||
    ac97_sdo    <= r_sdo;
 | 
			
		||||
    ac97_sync   <= r_sync;
 | 
			
		||||
 | 
			
		||||
    -- Synchronous process.
 | 
			
		||||
    -- Sample AC97_SDI on falling edge of BITCLK.
 | 
			
		||||
    process (bitclk) is
 | 
			
		||||
    begin
 | 
			
		||||
        if falling_edge(bitclk) then
 | 
			
		||||
            r_sdi       <= ac97_sdi;
 | 
			
		||||
        end if;
 | 
			
		||||
    end process;
 | 
			
		||||
 | 
			
		||||
    -- Synchronous process.
 | 
			
		||||
    process (bitclk, resetn) is
 | 
			
		||||
    begin
 | 
			
		||||
        if resetn = '0' then
 | 
			
		||||
 | 
			
		||||
            -- Asynchronous reset.
 | 
			
		||||
            r_rstsync   <= (others => '0');
 | 
			
		||||
            r_ready     <= '0';
 | 
			
		||||
 | 
			
		||||
            -- Outputs to codec must be low during reset.
 | 
			
		||||
            r_sdo       <= '0';
 | 
			
		||||
            r_sync      <= '0';
 | 
			
		||||
 | 
			
		||||
        elsif rising_edge(bitclk) then
 | 
			
		||||
 | 
			
		||||
            -- Drive SYNC high for 16 cycles at start of frame.
 | 
			
		||||
            if r_lastbit = '1' then
 | 
			
		||||
                r_sync      <= '1';
 | 
			
		||||
            elsif r_endsync = '1' then
 | 
			
		||||
                r_sync      <= '0';
 | 
			
		||||
            end if;
 | 
			
		||||
 | 
			
		||||
            -- Push next data bit to output.
 | 
			
		||||
            r_sdo       <= r_sdoshift(r_sdoshift'high);
 | 
			
		||||
            r_sdoshift  <= r_sdoshift(r_sdoshift'high-1 downto 0) & "0";
 | 
			
		||||
 | 
			
		||||
            -- Fetch data from init table.
 | 
			
		||||
            r_initword  <= init_table(to_integer(r_initstep));
 | 
			
		||||
 | 
			
		||||
            -- Prepare next frame.
 | 
			
		||||
            if r_lastbit = '1' then
 | 
			
		||||
 | 
			
		||||
                -- sdoshift(95:80) = TAG
 | 
			
		||||
                -- bit 15 = master valid bit
 | 
			
		||||
                -- bit 14 = slot 1 valid
 | 
			
		||||
                -- bit 13 = slot 2 valid
 | 
			
		||||
                -- bit 12 = slot 3 valid
 | 
			
		||||
                -- bit 11 = slot 4 valid
 | 
			
		||||
 | 
			
		||||
                -- Always set frame valid.
 | 
			
		||||
                r_sdoshift(95)  <= '1';
 | 
			
		||||
 | 
			
		||||
                -- Set slots 1 and 2 valid if we are initializing.
 | 
			
		||||
                r_sdoshift(94)  <= r_initbusy;
 | 
			
		||||
                r_sdoshift(93)  <= r_initbusy;
 | 
			
		||||
 | 
			
		||||
                -- Set slots 3 and 4 valid if we have valid data.
 | 
			
		||||
                r_sdoshift(92)  <= r_datavalid;
 | 
			
		||||
                r_sdoshift(91)  <= r_datavalid;
 | 
			
		||||
 | 
			
		||||
                -- Remaining tag bits always zero.
 | 
			
		||||
                r_sdoshift(90 downto 80) <= (others => '0');
 | 
			
		||||
 | 
			
		||||
                -- Slot 1: Register read/write command.
 | 
			
		||||
                -- bit 19 = read (1) or write (0)
 | 
			
		||||
                -- bit 18:12 = address
 | 
			
		||||
                r_sdoshift(79 downto 72) <= r_initword(23 downto 16);
 | 
			
		||||
                r_sdoshift(71 downto 60) <= (others => '0');
 | 
			
		||||
 | 
			
		||||
                -- Slot 2: Register write data.
 | 
			
		||||
                -- bit 19:4 = data
 | 
			
		||||
                r_sdoshift(59 downto 44) <= r_initword(15 downto 0);
 | 
			
		||||
                r_sdoshift(43 downto 40) <= (others => '0');
 | 
			
		||||
 | 
			
		||||
                -- Update init pointer.
 | 
			
		||||
                if r_initbusy = '1' then
 | 
			
		||||
                    r_initstep      <= r_initstep + 1;
 | 
			
		||||
                end if;
 | 
			
		||||
                if r_initstep = 7 then
 | 
			
		||||
                    r_initbusy      <= '0';
 | 
			
		||||
                    r_initdone      <= '1';
 | 
			
		||||
                end if;
 | 
			
		||||
 | 
			
		||||
                -- Update init delay counter (wait for 1.3 ms after reset).
 | 
			
		||||
                r_initwait      <= r_initwait - 1;
 | 
			
		||||
                if r_initwait = 0 then
 | 
			
		||||
                    r_initstep      <= (others => '0');
 | 
			
		||||
                    r_initbusy      <= not r_initdone;
 | 
			
		||||
                end if;
 | 
			
		||||
 | 
			
		||||
                -- Slots 3 and 4: left and right sample value.
 | 
			
		||||
                r_sdoshift(39 downto 20) <= r_dataleft;
 | 
			
		||||
                r_sdoshift(19 downto  0) <= r_dataright;
 | 
			
		||||
 | 
			
		||||
                -- Consume sample values.
 | 
			
		||||
                r_datavalid     <= '0';
 | 
			
		||||
                r_ready         <= '1';
 | 
			
		||||
 | 
			
		||||
            end if;
 | 
			
		||||
 | 
			
		||||
            -- Update bit counter.
 | 
			
		||||
            r_bitcnt    <= r_bitcnt - 1;
 | 
			
		||||
            if r_bitcnt = 1 then
 | 
			
		||||
                r_lastbit   <= '1';
 | 
			
		||||
            else
 | 
			
		||||
                r_lastbit   <= '0';
 | 
			
		||||
            end if;
 | 
			
		||||
            if r_bitcnt = 241 then
 | 
			
		||||
                r_endsync   <= '1';
 | 
			
		||||
            else
 | 
			
		||||
                r_endsync   <= '0';
 | 
			
		||||
            end if;
 | 
			
		||||
 | 
			
		||||
            -- Capture input data.
 | 
			
		||||
            if r_ready = '1' and data_valid = '1' then
 | 
			
		||||
                r_ready     <= '0';
 | 
			
		||||
                r_datavalid <= '1';
 | 
			
		||||
                r_dataleft  <= std_logic_vector(data_left);
 | 
			
		||||
                r_dataright <= std_logic_vector(data_right);
 | 
			
		||||
            end if;
 | 
			
		||||
 | 
			
		||||
            -- Release synchronous reset.
 | 
			
		||||
            r_rstsync   <= "1" & r_rstsync(7 downto 1);
 | 
			
		||||
 | 
			
		||||
            -- Synchronous reset.
 | 
			
		||||
            if r_rstsync(0) = '0' then
 | 
			
		||||
                r_ready     <= '0';
 | 
			
		||||
                r_sdo       <= '0';
 | 
			
		||||
                r_sync      <= '0';
 | 
			
		||||
                r_initbusy  <= '0';
 | 
			
		||||
                r_initdone  <= '0';
 | 
			
		||||
                r_initwait  <= (others => '1');
 | 
			
		||||
                r_initstep  <= (others => '0');
 | 
			
		||||
                r_bitcnt    <= (others => '0');
 | 
			
		||||
                r_datavalid <= '0';
 | 
			
		||||
            end if;
 | 
			
		||||
 | 
			
		||||
        end if;
 | 
			
		||||
    end process;
 | 
			
		||||
 | 
			
		||||
end architecture;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1,38 +0,0 @@
 | 
			
		|||
 | 
			
		||||
# clock pin for Atlys rev C board
 | 
			
		||||
NET "clk"   LOC = "L15" | IOSTANDARD = LVCMOS33 ;
 | 
			
		||||
 | 
			
		||||
# 100 MHz
 | 
			
		||||
NET "clk"   TNM_NET = "clk" ;
 | 
			
		||||
TIMESPEC "TS_clk" = PERIOD "clk" 10 ns HIGH 50% ;
 | 
			
		||||
 | 
			
		||||
# Reset button
 | 
			
		||||
NET "resetn"  LOC = "T15" | IOSTANDARD = LVCMOS33 ;
 | 
			
		||||
 | 
			
		||||
# LEDs
 | 
			
		||||
NET "led<0>"  LOC = "U18" | IOSTANDARD = LVCMOS33 | SLEW = QUIETIO ;
 | 
			
		||||
NET "led<1>"  LOC = "M14" | IOSTANDARD = LVCMOS33 | SLEW = QUIETIO ;
 | 
			
		||||
NET "led<2>"  LOC = "N14" | IOSTANDARD = LVCMOS33 | SLEW = QUIETIO ;
 | 
			
		||||
NET "led<3>"  LOC = "L14" | IOSTANDARD = LVCMOS33 | SLEW = QUIETIO ;
 | 
			
		||||
NET "led<4>"  LOC = "M13" | IOSTANDARD = LVCMOS33 | SLEW = QUIETIO ;
 | 
			
		||||
NET "led<5>"  LOC = "D4"  | IOSTANDARD = LVCMOS33 | SLEW = QUIETIO ;
 | 
			
		||||
NET "led<6>"  LOC = "P16" | IOSTANDARD = LVCMOS33 | SLEW = QUIETIO ;
 | 
			
		||||
NET "led<7>"  LOC = "N12" | IOSTANDARD = LVCMOS33 | SLEW = QUIETIO ;
 | 
			
		||||
 
 | 
			
		||||
# USB serial port J17
 | 
			
		||||
NET "uartrx"    LOC = "A16" | IOSTANDARD = LVCMOS33 ;
 | 
			
		||||
NET "uarttx"    LOC = "B16" | IOSTANDARD = LVCMOS33 | SLEW = SLOW ;
 | 
			
		||||
 | 
			
		||||
# Audio
 | 
			
		||||
NET "ac97_bitclk"   LOC = "L13" | IOSTANDARD = LVCMOS33 ;
 | 
			
		||||
NET "ac97_sdi"      LOC = "T18" | IOSTANDARD = LVCMOS33 ;
 | 
			
		||||
NET "ac97_sdo"      LOC = "N16" | IOSTANDARD = LVCMOS33 ;
 | 
			
		||||
NET "ac97_sync"     LOC = "U17" | IOSTANDARD = LVCMOS33 ;
 | 
			
		||||
NET "ac97_rst"      LOC = "T17" | IOSTANDARD = LVCMOS33 ;
 | 
			
		||||
 | 
			
		||||
# Constrain bitclk to 20 MHz (actual frequency is 12.288 MHz)
 | 
			
		||||
NET "ac97_bitclk"   PERIOD = 50 ns HIGH 50% ;
 | 
			
		||||
 | 
			
		||||
OFFSET = IN  10 ns VALID 20 ns BEFORE "ac97_bitclk" FALLING ;
 | 
			
		||||
OFFSET = OUT 15 ns AFTER "ac97_bitclk" RISING ;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1,191 +0,0 @@
 | 
			
		|||
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
 | 
			
		||||
<generated_project xmlns="http://www.xilinx.com/XMLSchema" xmlns:xil_pn="http://www.xilinx.com/XMLSchema">
 | 
			
		||||
 | 
			
		||||
  <!--                                                          -->
 | 
			
		||||
 | 
			
		||||
  <!--             For tool use only. Do not edit.              -->
 | 
			
		||||
 | 
			
		||||
  <!--                                                          -->
 | 
			
		||||
 | 
			
		||||
  <!-- ProjectNavigator created generated project file.         -->
 | 
			
		||||
 | 
			
		||||
  <!-- For use in tracking generated file and other information -->
 | 
			
		||||
 | 
			
		||||
  <!-- allowing preservation of process status.                 -->
 | 
			
		||||
 | 
			
		||||
  <!--                                                          -->
 | 
			
		||||
 | 
			
		||||
  <!-- Copyright (c) 1995-2013 Xilinx, Inc.  All rights reserved. -->
 | 
			
		||||
 | 
			
		||||
  <version xmlns="http://www.xilinx.com/XMLSchema">11.1</version>
 | 
			
		||||
 | 
			
		||||
  <sourceproject xmlns="http://www.xilinx.com/XMLSchema" xil_pn:fileType="FILE_XISE" xil_pn:name="test_sincos.xise"/>
 | 
			
		||||
 | 
			
		||||
  <files xmlns="http://www.xilinx.com/XMLSchema">
 | 
			
		||||
    <file xil_pn:fileType="FILE_DIRECTORY" xil_pn:name="_ngo"/>
 | 
			
		||||
    <file xil_pn:fileType="FILE_XMSGS" xil_pn:name="_xmsgs/bitgen.xmsgs"/>
 | 
			
		||||
    <file xil_pn:fileType="FILE_XMSGS" xil_pn:name="_xmsgs/map.xmsgs"/>
 | 
			
		||||
    <file xil_pn:fileType="FILE_XMSGS" xil_pn:name="_xmsgs/ngdbuild.xmsgs"/>
 | 
			
		||||
    <file xil_pn:fileType="FILE_XMSGS" xil_pn:name="_xmsgs/par.xmsgs"/>
 | 
			
		||||
    <file xil_pn:fileType="FILE_XMSGS" xil_pn:name="_xmsgs/trce.xmsgs"/>
 | 
			
		||||
    <file xil_pn:fileType="FILE_XMSGS" xil_pn:name="_xmsgs/xst.xmsgs"/>
 | 
			
		||||
    <file xil_pn:branch="Implementation" xil_pn:fileType="FILE_BITGEN_REPORT" xil_pn:name="top_test_sincos.bgn" xil_pn:subbranch="FPGAConfiguration"/>
 | 
			
		||||
    <file xil_pn:branch="Implementation" xil_pn:fileType="FILE_BIT" xil_pn:name="top_test_sincos.bit" xil_pn:subbranch="FPGAConfiguration"/>
 | 
			
		||||
    <file xil_pn:branch="Implementation" xil_pn:fileType="FILE_NGDBUILD_LOG" xil_pn:name="top_test_sincos.bld"/>
 | 
			
		||||
    <file xil_pn:fileType="FILE_CMD_LOG" xil_pn:name="top_test_sincos.cmd_log"/>
 | 
			
		||||
    <file xil_pn:branch="Implementation" xil_pn:fileType="FILE_BITGEN_DRC" xil_pn:name="top_test_sincos.drc" xil_pn:subbranch="FPGAConfiguration"/>
 | 
			
		||||
    <file xil_pn:branch="Implementation" xil_pn:fileType="FILE_LSO" xil_pn:name="top_test_sincos.lso"/>
 | 
			
		||||
    <file xil_pn:branch="Implementation" xil_pn:fileType="FILE_NCD" xil_pn:name="top_test_sincos.ncd" xil_pn:subbranch="Par"/>
 | 
			
		||||
    <file xil_pn:branch="Implementation" xil_pn:fileType="FILE_NGC" xil_pn:name="top_test_sincos.ngc"/>
 | 
			
		||||
    <file xil_pn:branch="Implementation" xil_pn:fileType="FILE_NGD" xil_pn:name="top_test_sincos.ngd"/>
 | 
			
		||||
    <file xil_pn:branch="Implementation" xil_pn:fileType="FILE_NGR" xil_pn:name="top_test_sincos.ngr"/>
 | 
			
		||||
    <file xil_pn:fileType="FILE_PAD_MISC" xil_pn:name="top_test_sincos.pad"/>
 | 
			
		||||
    <file xil_pn:branch="Implementation" xil_pn:fileType="FILE_PAR_REPORT" xil_pn:name="top_test_sincos.par" xil_pn:subbranch="Par"/>
 | 
			
		||||
    <file xil_pn:branch="Implementation" xil_pn:fileType="FILE_PCF" xil_pn:name="top_test_sincos.pcf" xil_pn:subbranch="Map"/>
 | 
			
		||||
    <file xil_pn:branch="Implementation" xil_pn:fileType="FILE_XST_PROJECT" xil_pn:name="top_test_sincos.prj"/>
 | 
			
		||||
    <file xil_pn:fileType="FILE_TRCE_MISC" xil_pn:name="top_test_sincos.ptwx"/>
 | 
			
		||||
    <file xil_pn:branch="Implementation" xil_pn:fileType="FILE_XST_STX" xil_pn:name="top_test_sincos.stx"/>
 | 
			
		||||
    <file xil_pn:branch="Implementation" xil_pn:fileType="FILE_XST_REPORT" xil_pn:name="top_test_sincos.syr"/>
 | 
			
		||||
    <file xil_pn:branch="Implementation" xil_pn:fileType="FILE_TIMING_TXT_REPORT" xil_pn:name="top_test_sincos.twr" xil_pn:subbranch="Par"/>
 | 
			
		||||
    <file xil_pn:branch="Implementation" xil_pn:fileType="FILE_TIMING_XML_REPORT" xil_pn:name="top_test_sincos.twx" xil_pn:subbranch="Par"/>
 | 
			
		||||
    <file xil_pn:branch="Implementation" xil_pn:fileType="FILE_UNROUTES" xil_pn:name="top_test_sincos.unroutes" xil_pn:subbranch="Par"/>
 | 
			
		||||
    <file xil_pn:branch="Implementation" xil_pn:fileType="FILE_BITGEN_REPORT" xil_pn:name="top_test_sincos.ut" xil_pn:subbranch="FPGAConfiguration"/>
 | 
			
		||||
    <file xil_pn:fileType="FILE_XPI" xil_pn:name="top_test_sincos.xpi"/>
 | 
			
		||||
    <file xil_pn:branch="Implementation" xil_pn:fileType="FILE_XST" xil_pn:name="top_test_sincos.xst"/>
 | 
			
		||||
    <file xil_pn:fileType="FILE_HTML" xil_pn:name="top_test_sincos_envsettings.html"/>
 | 
			
		||||
    <file xil_pn:fileType="FILE_NCD" xil_pn:name="top_test_sincos_guide.ncd" xil_pn:origination="imported"/>
 | 
			
		||||
    <file xil_pn:branch="Implementation" xil_pn:fileType="FILE_MAP_REPORT" xil_pn:name="top_test_sincos_map.map" xil_pn:subbranch="Map"/>
 | 
			
		||||
    <file xil_pn:branch="Implementation" xil_pn:fileType="FILE_MAP_REPORT" xil_pn:name="top_test_sincos_map.mrp" xil_pn:subbranch="Map"/>
 | 
			
		||||
    <file xil_pn:branch="Implementation" xil_pn:fileType="FILE_NCD" xil_pn:name="top_test_sincos_map.ncd" xil_pn:subbranch="Map"/>
 | 
			
		||||
    <file xil_pn:branch="Implementation" xil_pn:fileType="FILE_NGM" xil_pn:name="top_test_sincos_map.ngm" xil_pn:subbranch="Map"/>
 | 
			
		||||
    <file xil_pn:fileType="FILE_XRPT" xil_pn:name="top_test_sincos_map.xrpt"/>
 | 
			
		||||
    <file xil_pn:fileType="FILE_XRPT" xil_pn:name="top_test_sincos_ngdbuild.xrpt"/>
 | 
			
		||||
    <file xil_pn:branch="Implementation" xil_pn:fileType="FILE_PAD_EXCEL_REPORT" xil_pn:name="top_test_sincos_pad.csv" xil_pn:subbranch="Par"/>
 | 
			
		||||
    <file xil_pn:branch="Implementation" xil_pn:fileType="FILE_PAD_TXT_REPORT" xil_pn:name="top_test_sincos_pad.txt" xil_pn:subbranch="Par"/>
 | 
			
		||||
    <file xil_pn:fileType="FILE_XRPT" xil_pn:name="top_test_sincos_par.xrpt"/>
 | 
			
		||||
    <file xil_pn:fileType="FILE_HTML" xil_pn:name="top_test_sincos_summary.html"/>
 | 
			
		||||
    <file xil_pn:fileType="FILE_FITTER_REPORT" xil_pn:name="top_test_sincos_summary.xml"/>
 | 
			
		||||
    <file xil_pn:fileType="FILE_WEBTALK" xil_pn:name="top_test_sincos_usage.xml"/>
 | 
			
		||||
    <file xil_pn:fileType="FILE_XRPT" xil_pn:name="top_test_sincos_xst.xrpt"/>
 | 
			
		||||
    <file xil_pn:fileType="FILE_HTML" xil_pn:name="usage_statistics_webtalk.html"/>
 | 
			
		||||
    <file xil_pn:fileType="FILE_LOG" xil_pn:name="webtalk.log"/>
 | 
			
		||||
    <file xil_pn:fileType="FILE_FITTER_REPORT" xil_pn:name="webtalk_pn.xml"/>
 | 
			
		||||
    <file xil_pn:fileType="FILE_DIRECTORY" xil_pn:name="xlnx_auto_0_xdb"/>
 | 
			
		||||
    <file xil_pn:fileType="FILE_DIRECTORY" xil_pn:name="xst"/>
 | 
			
		||||
  </files>
 | 
			
		||||
 | 
			
		||||
  <transforms xmlns="http://www.xilinx.com/XMLSchema">
 | 
			
		||||
    <transform xil_pn:end_ts="1461310404" xil_pn:name="TRAN_copyInitialToXSTAbstractSynthesis" xil_pn:start_ts="1461310404">
 | 
			
		||||
      <status xil_pn:value="SuccessfullyRun"/>
 | 
			
		||||
      <status xil_pn:value="ReadyToRun"/>
 | 
			
		||||
    </transform>
 | 
			
		||||
    <transform xil_pn:end_ts="1461346674" xil_pn:name="TRAN_schematicsToHdl" xil_pn:prop_ck="-1544048785962338122" xil_pn:start_ts="1461346674">
 | 
			
		||||
      <status xil_pn:value="SuccessfullyRun"/>
 | 
			
		||||
      <status xil_pn:value="ReadyToRun"/>
 | 
			
		||||
    </transform>
 | 
			
		||||
    <transform xil_pn:end_ts="1461346674" xil_pn:name="TRAN_regenerateCores" xil_pn:prop_ck="6687268679030817511" xil_pn:start_ts="1461346674">
 | 
			
		||||
      <status xil_pn:value="SuccessfullyRun"/>
 | 
			
		||||
      <status xil_pn:value="ReadyToRun"/>
 | 
			
		||||
    </transform>
 | 
			
		||||
    <transform xil_pn:end_ts="1461310404" xil_pn:name="TRAN_SubProjectAbstractToPreProxy" xil_pn:start_ts="1461310404">
 | 
			
		||||
      <status xil_pn:value="SuccessfullyRun"/>
 | 
			
		||||
      <status xil_pn:value="ReadyToRun"/>
 | 
			
		||||
    </transform>
 | 
			
		||||
    <transform xil_pn:end_ts="1461346674" xil_pn:name="TRAN_xawsTohdl" xil_pn:prop_ck="1379793326671312440" xil_pn:start_ts="1461346674">
 | 
			
		||||
      <status xil_pn:value="SuccessfullyRun"/>
 | 
			
		||||
      <status xil_pn:value="ReadyToRun"/>
 | 
			
		||||
    </transform>
 | 
			
		||||
    <transform xil_pn:end_ts="1461310404" xil_pn:name="TRAN_SubProjectPreToStructuralProxy" xil_pn:prop_ck="8977612015756273942" xil_pn:start_ts="1461310404">
 | 
			
		||||
      <status xil_pn:value="SuccessfullyRun"/>
 | 
			
		||||
      <status xil_pn:value="ReadyToRun"/>
 | 
			
		||||
    </transform>
 | 
			
		||||
    <transform xil_pn:end_ts="1461346674" xil_pn:name="TRAN_platgen" xil_pn:prop_ck="-3262842109162067599" xil_pn:start_ts="1461346674">
 | 
			
		||||
      <status xil_pn:value="SuccessfullyRun"/>
 | 
			
		||||
      <status xil_pn:value="ReadyToRun"/>
 | 
			
		||||
    </transform>
 | 
			
		||||
    <transform xil_pn:end_ts="1461403854" xil_pn:in_ck="2072574044500593778" xil_pn:name="TRANEXT_xstsynthesize_spartan6" xil_pn:prop_ck="8668749107623387584" xil_pn:start_ts="1461403839">
 | 
			
		||||
      <status xil_pn:value="SuccessfullyRun"/>
 | 
			
		||||
      <status xil_pn:value="WarningsGenerated"/>
 | 
			
		||||
      <status xil_pn:value="ReadyToRun"/>
 | 
			
		||||
      <status xil_pn:value="OutOfDateForOutputs"/>
 | 
			
		||||
      <status xil_pn:value="OutputChanged"/>
 | 
			
		||||
      <outfile xil_pn:name="_xmsgs/xst.xmsgs"/>
 | 
			
		||||
      <outfile xil_pn:name="top_test_sincos.lso"/>
 | 
			
		||||
      <outfile xil_pn:name="top_test_sincos.ngc"/>
 | 
			
		||||
      <outfile xil_pn:name="top_test_sincos.ngr"/>
 | 
			
		||||
      <outfile xil_pn:name="top_test_sincos.prj"/>
 | 
			
		||||
      <outfile xil_pn:name="top_test_sincos.stx"/>
 | 
			
		||||
      <outfile xil_pn:name="top_test_sincos.syr"/>
 | 
			
		||||
      <outfile xil_pn:name="top_test_sincos.xst"/>
 | 
			
		||||
      <outfile xil_pn:name="top_test_sincos_xst.xrpt"/>
 | 
			
		||||
      <outfile xil_pn:name="webtalk_pn.xml"/>
 | 
			
		||||
      <outfile xil_pn:name="xst"/>
 | 
			
		||||
    </transform>
 | 
			
		||||
    <transform xil_pn:end_ts="1461400807" xil_pn:in_ck="141509727442713" xil_pn:name="TRAN_compileBCD2" xil_pn:prop_ck="7075349975164966765" xil_pn:start_ts="1461400807">
 | 
			
		||||
      <status xil_pn:value="SuccessfullyRun"/>
 | 
			
		||||
      <status xil_pn:value="ReadyToRun"/>
 | 
			
		||||
    </transform>
 | 
			
		||||
    <transform xil_pn:end_ts="1461403860" xil_pn:in_ck="-1047380743607608193" xil_pn:name="TRANEXT_ngdbuild_FPGA" xil_pn:prop_ck="392032481918333458" xil_pn:start_ts="1461403854">
 | 
			
		||||
      <status xil_pn:value="SuccessfullyRun"/>
 | 
			
		||||
      <status xil_pn:value="ReadyToRun"/>
 | 
			
		||||
      <outfile xil_pn:name="_ngo"/>
 | 
			
		||||
      <outfile xil_pn:name="_xmsgs/ngdbuild.xmsgs"/>
 | 
			
		||||
      <outfile xil_pn:name="top_test_sincos.bld"/>
 | 
			
		||||
      <outfile xil_pn:name="top_test_sincos.ngd"/>
 | 
			
		||||
      <outfile xil_pn:name="top_test_sincos_ngdbuild.xrpt"/>
 | 
			
		||||
    </transform>
 | 
			
		||||
    <transform xil_pn:end_ts="1461403888" xil_pn:in_ck="-1047380743607608192" xil_pn:name="TRANEXT_map_spartan6" xil_pn:prop_ck="4245753365082497697" xil_pn:start_ts="1461403860">
 | 
			
		||||
      <status xil_pn:value="SuccessfullyRun"/>
 | 
			
		||||
      <status xil_pn:value="WarningsGenerated"/>
 | 
			
		||||
      <status xil_pn:value="ReadyToRun"/>
 | 
			
		||||
      <status xil_pn:value="OutOfDateForOutputs"/>
 | 
			
		||||
      <status xil_pn:value="OutputChanged"/>
 | 
			
		||||
      <outfile xil_pn:name="_xmsgs/map.xmsgs"/>
 | 
			
		||||
      <outfile xil_pn:name="top_test_sincos.pcf"/>
 | 
			
		||||
      <outfile xil_pn:name="top_test_sincos_map.map"/>
 | 
			
		||||
      <outfile xil_pn:name="top_test_sincos_map.mrp"/>
 | 
			
		||||
      <outfile xil_pn:name="top_test_sincos_map.ncd"/>
 | 
			
		||||
      <outfile xil_pn:name="top_test_sincos_map.ngm"/>
 | 
			
		||||
      <outfile xil_pn:name="top_test_sincos_map.xrpt"/>
 | 
			
		||||
      <outfile xil_pn:name="top_test_sincos_summary.xml"/>
 | 
			
		||||
      <outfile xil_pn:name="top_test_sincos_usage.xml"/>
 | 
			
		||||
    </transform>
 | 
			
		||||
    <transform xil_pn:end_ts="1461403915" xil_pn:in_ck="693365441136831385" xil_pn:name="TRANEXT_par_spartan6" xil_pn:prop_ck="-3829590541433901613" xil_pn:start_ts="1461403888">
 | 
			
		||||
      <status xil_pn:value="SuccessfullyRun"/>
 | 
			
		||||
      <status xil_pn:value="WarningsGenerated"/>
 | 
			
		||||
      <status xil_pn:value="ReadyToRun"/>
 | 
			
		||||
      <outfile xil_pn:name="_xmsgs/par.xmsgs"/>
 | 
			
		||||
      <outfile xil_pn:name="top_test_sincos.ncd"/>
 | 
			
		||||
      <outfile xil_pn:name="top_test_sincos.pad"/>
 | 
			
		||||
      <outfile xil_pn:name="top_test_sincos.par"/>
 | 
			
		||||
      <outfile xil_pn:name="top_test_sincos.ptwx"/>
 | 
			
		||||
      <outfile xil_pn:name="top_test_sincos.unroutes"/>
 | 
			
		||||
      <outfile xil_pn:name="top_test_sincos.xpi"/>
 | 
			
		||||
      <outfile xil_pn:name="top_test_sincos_pad.csv"/>
 | 
			
		||||
      <outfile xil_pn:name="top_test_sincos_pad.txt"/>
 | 
			
		||||
      <outfile xil_pn:name="top_test_sincos_par.xrpt"/>
 | 
			
		||||
    </transform>
 | 
			
		||||
    <transform xil_pn:end_ts="1461403932" xil_pn:in_ck="4016941542054796675" xil_pn:name="TRANEXT_bitFile_spartan6" xil_pn:prop_ck="97434230493978268" xil_pn:start_ts="1461403915">
 | 
			
		||||
      <status xil_pn:value="SuccessfullyRun"/>
 | 
			
		||||
      <status xil_pn:value="WarningsGenerated"/>
 | 
			
		||||
      <status xil_pn:value="ReadyToRun"/>
 | 
			
		||||
      <outfile xil_pn:name="_xmsgs/bitgen.xmsgs"/>
 | 
			
		||||
      <outfile xil_pn:name="top_test_sincos.bgn"/>
 | 
			
		||||
      <outfile xil_pn:name="top_test_sincos.bit"/>
 | 
			
		||||
      <outfile xil_pn:name="top_test_sincos.drc"/>
 | 
			
		||||
      <outfile xil_pn:name="top_test_sincos.ut"/>
 | 
			
		||||
      <outfile xil_pn:name="usage_statistics_webtalk.html"/>
 | 
			
		||||
      <outfile xil_pn:name="webtalk.log"/>
 | 
			
		||||
      <outfile xil_pn:name="webtalk_pn.xml"/>
 | 
			
		||||
    </transform>
 | 
			
		||||
    <transform xil_pn:end_ts="1461403915" xil_pn:in_ck="-1047380743607608324" xil_pn:name="TRAN_postRouteTrce" xil_pn:prop_ck="445577401284416185" xil_pn:start_ts="1461403907">
 | 
			
		||||
      <status xil_pn:value="SuccessfullyRun"/>
 | 
			
		||||
      <status xil_pn:value="WarningsGenerated"/>
 | 
			
		||||
      <status xil_pn:value="ReadyToRun"/>
 | 
			
		||||
      <outfile xil_pn:name="_xmsgs/trce.xmsgs"/>
 | 
			
		||||
      <outfile xil_pn:name="top_test_sincos.twr"/>
 | 
			
		||||
      <outfile xil_pn:name="top_test_sincos.twx"/>
 | 
			
		||||
    </transform>
 | 
			
		||||
  </transforms>
 | 
			
		||||
 | 
			
		||||
</generated_project>
 | 
			
		||||
| 
						 | 
				
			
			@ -1,384 +0,0 @@
 | 
			
		|||
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
 | 
			
		||||
<project xmlns="http://www.xilinx.com/XMLSchema" xmlns:xil_pn="http://www.xilinx.com/XMLSchema">
 | 
			
		||||
 | 
			
		||||
  <header>
 | 
			
		||||
    <!-- ISE source project file created by Project Navigator.             -->
 | 
			
		||||
    <!--                                                                   -->
 | 
			
		||||
    <!-- This file contains project source information including a list of -->
 | 
			
		||||
    <!-- project source files, project and process properties.  This file, -->
 | 
			
		||||
    <!-- along with the project source files, is sufficient to open and    -->
 | 
			
		||||
    <!-- implement in ISE Project Navigator.                               -->
 | 
			
		||||
    <!--                                                                   -->
 | 
			
		||||
    <!-- Copyright (c) 1995-2013 Xilinx, Inc.  All rights reserved. -->
 | 
			
		||||
  </header>
 | 
			
		||||
 | 
			
		||||
  <version xil_pn:ise_version="14.6" xil_pn:schema_version="2"/>
 | 
			
		||||
 | 
			
		||||
  <files>
 | 
			
		||||
    <file xil_pn:name="top_test_sincos.vhdl" xil_pn:type="FILE_VHDL">
 | 
			
		||||
      <association xil_pn:name="BehavioralSimulation" xil_pn:seqID="1"/>
 | 
			
		||||
      <association xil_pn:name="Implementation" xil_pn:seqID="6"/>
 | 
			
		||||
    </file>
 | 
			
		||||
    <file xil_pn:name="atlys.ucf" xil_pn:type="FILE_UCF">
 | 
			
		||||
      <association xil_pn:name="Implementation" xil_pn:seqID="0"/>
 | 
			
		||||
    </file>
 | 
			
		||||
    <file xil_pn:name="../../rtl/sincos_gen_d18_p20.vhdl" xil_pn:type="FILE_VHDL">
 | 
			
		||||
      <association xil_pn:name="BehavioralSimulation" xil_pn:seqID="3"/>
 | 
			
		||||
      <association xil_pn:name="Implementation" xil_pn:seqID="3"/>
 | 
			
		||||
    </file>
 | 
			
		||||
    <file xil_pn:name="../../rtl/sincos_gen_d24_p26.vhdl" xil_pn:type="FILE_VHDL">
 | 
			
		||||
      <association xil_pn:name="BehavioralSimulation" xil_pn:seqID="4"/>
 | 
			
		||||
      <association xil_pn:name="Implementation" xil_pn:seqID="2"/>
 | 
			
		||||
    </file>
 | 
			
		||||
    <file xil_pn:name="../../rtl/sincos_gen.vhdl" xil_pn:type="FILE_VHDL">
 | 
			
		||||
      <association xil_pn:name="BehavioralSimulation" xil_pn:seqID="5"/>
 | 
			
		||||
      <association xil_pn:name="Implementation" xil_pn:seqID="1"/>
 | 
			
		||||
    </file>
 | 
			
		||||
    <file xil_pn:name="../../rtl/test_sincos_serial.vhdl" xil_pn:type="FILE_VHDL">
 | 
			
		||||
      <association xil_pn:name="BehavioralSimulation" xil_pn:seqID="6"/>
 | 
			
		||||
      <association xil_pn:name="Implementation" xil_pn:seqID="5"/>
 | 
			
		||||
    </file>
 | 
			
		||||
    <file xil_pn:name="ac97out.vhdl" xil_pn:type="FILE_VHDL">
 | 
			
		||||
      <association xil_pn:name="BehavioralSimulation" xil_pn:seqID="56"/>
 | 
			
		||||
      <association xil_pn:name="Implementation" xil_pn:seqID="4"/>
 | 
			
		||||
    </file>
 | 
			
		||||
  </files>
 | 
			
		||||
 | 
			
		||||
  <properties>
 | 
			
		||||
    <property xil_pn:name="AES Initial Vector spartan6" xil_pn:value="" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="AES Key (Hex String) spartan6" xil_pn:value="" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Add I/O Buffers" xil_pn:value="true" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Allow Logic Optimization Across Hierarchy" xil_pn:value="false" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Allow SelectMAP Pins to Persist" xil_pn:value="false" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Allow Unexpanded Blocks" xil_pn:value="false" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Allow Unmatched LOC Constraints" xil_pn:value="false" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Allow Unmatched Timing Group Constraints" xil_pn:value="false" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Analysis Effort Level" xil_pn:value="Standard" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Asynchronous To Synchronous" xil_pn:value="false" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Auto Implementation Compile Order" xil_pn:value="true" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Auto Implementation Top" xil_pn:value="true" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Automatic BRAM Packing" xil_pn:value="false" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Automatically Insert glbl Module in the Netlist" xil_pn:value="true" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Automatically Run Generate Target PROM/ACE File" xil_pn:value="false" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="BRAM Utilization Ratio" xil_pn:value="100" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Bring Out Global Set/Reset Net as a Port" xil_pn:value="false" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Bring Out Global Tristate Net as a Port" xil_pn:value="false" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Bus Delimiter" xil_pn:value="<>" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Case" xil_pn:value="Maintain" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Case Implementation Style" xil_pn:value="None" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Change Device Speed To" xil_pn:value="-3" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Change Device Speed To Post Trace" xil_pn:value="-3" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Combinatorial Logic Optimization" xil_pn:value="false" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Compile EDK Simulation Library" xil_pn:value="true" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Compile SIMPRIM (Timing) Simulation Library" xil_pn:value="true" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Compile UNISIM (Functional) Simulation Library" xil_pn:value="true" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Compile XilinxCoreLib (CORE Generator) Simulation Library" xil_pn:value="true" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Compile for HDL Debugging" xil_pn:value="true" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Configuration Clk (Configuration Pins)" xil_pn:value="Pull Up" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Configuration Pin Done" xil_pn:value="Pull Up" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Configuration Pin M0" xil_pn:value="Pull Up" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Configuration Pin M1" xil_pn:value="Pull Up" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Configuration Pin M2" xil_pn:value="Pull Up" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Configuration Pin Program" xil_pn:value="Pull Up" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Configuration Rate spartan6" xil_pn:value="6" xil_pn:valueState="non-default"/>
 | 
			
		||||
    <property xil_pn:name="Correlate Output to Input Design" xil_pn:value="false" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Create ASCII Configuration File" xil_pn:value="false" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Create Binary Configuration File" xil_pn:value="false" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Create Bit File" xil_pn:value="true" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Create I/O Pads from Ports" xil_pn:value="false" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Create IEEE 1532 Configuration File spartan6" xil_pn:value="false" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Create Logic Allocation File" xil_pn:value="false" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Create Mask File" xil_pn:value="false" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Create ReadBack Data Files" xil_pn:value="false" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Cross Clock Analysis" xil_pn:value="false" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="DSP Utilization Ratio" xil_pn:value="100" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Delay Values To Be Read from SDF" xil_pn:value="Setup Time" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Device" xil_pn:value="xc6slx45" xil_pn:valueState="non-default"/>
 | 
			
		||||
    <property xil_pn:name="Device Family" xil_pn:value="Spartan6" xil_pn:valueState="non-default"/>
 | 
			
		||||
    <property xil_pn:name="Device Speed Grade/Select ABS Minimum" xil_pn:value="-3" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Disable Detailed Package Model Insertion" xil_pn:value="false" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Do Not Escape Signal and Instance Names in Netlist" xil_pn:value="false" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Done (Output Events)" xil_pn:value="Default (4)" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Drive Awake Pin During Suspend/Wake Sequence spartan6" xil_pn:value="false" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Drive Done Pin High" xil_pn:value="false" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Enable BitStream Compression" xil_pn:value="false" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Enable Cyclic Redundancy Checking (CRC) spartan6" xil_pn:value="true" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Enable Debugging of Serial Mode BitStream" xil_pn:value="false" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Enable External Master Clock spartan6" xil_pn:value="false" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Enable Internal Done Pipe" xil_pn:value="true" xil_pn:valueState="non-default"/>
 | 
			
		||||
    <property xil_pn:name="Enable Message Filtering" xil_pn:value="false" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Enable Multi-Pin Wake-Up Suspend Mode spartan6" xil_pn:value="false" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Enable Multi-Threading" xil_pn:value="Off" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Enable Multi-Threading par spartan6" xil_pn:value="Off" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Enable Outputs (Output Events)" xil_pn:value="Default (5)" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Enable Suspend/Wake Global Set/Reset spartan6" xil_pn:value="false" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Encrypt Bitstream spartan6" xil_pn:value="false" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Encrypt Key Select spartan6" xil_pn:value="BBRAM" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Equivalent Register Removal Map" xil_pn:value="true" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Equivalent Register Removal XST" xil_pn:value="true" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Essential Bits" xil_pn:value="false" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Evaluation Development Board" xil_pn:value="None Specified" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Exclude Compilation of Deprecated EDK Cores" xil_pn:value="true" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Exclude Compilation of EDK Sub-Libraries" xil_pn:value="false" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Extra Cost Tables Map" xil_pn:value="0" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Extra Effort (Highest PAR level only)" xil_pn:value="None" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="FPGA Start-Up Clock" xil_pn:value="CCLK" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="FSM Encoding Algorithm" xil_pn:value="Auto" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="FSM Style" xil_pn:value="LUT" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Filter Files From Compile Order" xil_pn:value="true" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Flatten Output Netlist" xil_pn:value="false" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Functional Model Target Language ArchWiz" xil_pn:value="VHDL" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Functional Model Target Language Coregen" xil_pn:value="VHDL" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Functional Model Target Language Schematic" xil_pn:value="VHDL" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="GTS Cycle During Suspend/Wakeup Sequence spartan6" xil_pn:value="4" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="GWE Cycle During Suspend/Wakeup Sequence spartan6" xil_pn:value="5" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Generate Architecture Only (No Entity Declaration)" xil_pn:value="false" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Generate Asynchronous Delay Report" xil_pn:value="false" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Generate Clock Region Report" xil_pn:value="false" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Generate Constraints Interaction Report" xil_pn:value="false" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Generate Constraints Interaction Report Post Trace" xil_pn:value="false" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Generate Datasheet Section" xil_pn:value="true" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Generate Datasheet Section Post Trace" xil_pn:value="true" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Generate Detailed MAP Report" xil_pn:value="false" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Generate Multiple Hierarchical Netlist Files" xil_pn:value="false" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Generate Post-Place & Route Power Report" xil_pn:value="false" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Generate Post-Place & Route Simulation Model" xil_pn:value="false" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Generate RTL Schematic" xil_pn:value="Yes" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Generate SAIF File for Power Optimization/Estimation Par" xil_pn:value="false" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Generate Testbench File" xil_pn:value="false" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Generate Timegroups Section" xil_pn:value="false" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Generate Timegroups Section Post Trace" xil_pn:value="false" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Generics, Parameters" xil_pn:value="" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Global Optimization Goal" xil_pn:value="AllClockNets" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Global Optimization map spartan6" xil_pn:value="Off" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Global Set/Reset Port Name" xil_pn:value="GSR_PORT" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Global Tristate Port Name" xil_pn:value="GTS_PORT" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Hierarchy Separator" xil_pn:value="/" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="ISim UUT Instance Name" xil_pn:value="UUT" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Ignore User Timing Constraints Map" xil_pn:value="false" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Ignore User Timing Constraints Par" xil_pn:value="false" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Implementation Top" xil_pn:value="Architecture|top_test_sincos|rtl" xil_pn:valueState="non-default"/>
 | 
			
		||||
    <property xil_pn:name="Implementation Top File" xil_pn:value="top_test_sincos.vhdl" xil_pn:valueState="non-default"/>
 | 
			
		||||
    <property xil_pn:name="Implementation Top Instance Path" xil_pn:value="/top_test_sincos" xil_pn:valueState="non-default"/>
 | 
			
		||||
    <property xil_pn:name="Include 'uselib Directive in Verilog File" xil_pn:value="false" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Include SIMPRIM Models in Verilog File" xil_pn:value="false" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Include UNISIM Models in Verilog File" xil_pn:value="false" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Include sdf_annotate task in Verilog File" xil_pn:value="true" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Incremental Compilation" xil_pn:value="true" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Insert Buffers to Prevent Pulse Swallowing" xil_pn:value="true" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Instantiation Template Target Language Xps" xil_pn:value="VHDL" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="JTAG Pin TCK" xil_pn:value="Pull Up" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="JTAG Pin TDI" xil_pn:value="Pull Up" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="JTAG Pin TDO" xil_pn:value="Pull Up" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="JTAG Pin TMS" xil_pn:value="Pull Up" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Keep Hierarchy" xil_pn:value="No" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="LUT Combining Map" xil_pn:value="Off" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="LUT Combining Xst" xil_pn:value="Auto" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Language" xil_pn:value="VHDL" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Last Applied Goal" xil_pn:value="Balanced" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Last Applied Strategy" xil_pn:value="Xilinx Default (unlocked)" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Last Unlock Status" xil_pn:value="false" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Launch SDK after Export" xil_pn:value="true" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Library for Verilog Sources" xil_pn:value="" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Load glbl" xil_pn:value="true" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Manual Implementation Compile Order" xil_pn:value="false" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Map Slice Logic into Unused Block RAMs" xil_pn:value="false" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Mask Pins for Multi-Pin Wake-Up Suspend Mode spartan6" xil_pn:value="0x00" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Max Fanout" xil_pn:value="100000" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Maximum Compression" xil_pn:value="false" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Maximum Number of Lines in Report" xil_pn:value="1000" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Maximum Signal Name Length" xil_pn:value="20" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Move First Flip-Flop Stage" xil_pn:value="true" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Move Last Flip-Flop Stage" xil_pn:value="true" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="MultiBoot: Insert IPROG CMD in the Bitfile spartan6" xil_pn:value="Enable" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="MultiBoot: Next Configuration Mode spartan6" xil_pn:value="001" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="MultiBoot: Starting Address for Golden Configuration spartan6" xil_pn:value="0x00000000" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="MultiBoot: Starting Address for Next Configuration spartan6" xil_pn:value="0x00000000" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="MultiBoot: Use New Mode for Next Configuration spartan6" xil_pn:value="true" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="MultiBoot: User-Defined Register for Failsafe Scheme spartan6" xil_pn:value="0x0000" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Netlist Hierarchy" xil_pn:value="As Optimized" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Netlist Translation Type" xil_pn:value="Timestamp" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Number of Clock Buffers" xil_pn:value="16" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Number of Paths in Error/Verbose Report" xil_pn:value="3" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Number of Paths in Error/Verbose Report Post Trace" xil_pn:value="3" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Optimization Effort spartan6" xil_pn:value="Normal" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Optimization Goal" xil_pn:value="Speed" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Optimize Instantiated Primitives" xil_pn:value="false" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Other Bitgen Command Line Options" xil_pn:value="" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Other Bitgen Command Line Options spartan6" xil_pn:value="" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Other Compiler Options" xil_pn:value="" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Other Compiler Options Map" xil_pn:value="" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Other Compiler Options Par" xil_pn:value="" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Other Compiler Options Translate" xil_pn:value="" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Other Compxlib Command Line Options" xil_pn:value="" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Other Map Command Line Options" xil_pn:value="" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Other NETGEN Command Line Options" xil_pn:value="" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Other Ngdbuild Command Line Options" xil_pn:value="" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Other Place & Route Command Line Options" xil_pn:value="" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Other Simulator Commands Behavioral" xil_pn:value="" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Other Simulator Commands Post-Map" xil_pn:value="" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Other Simulator Commands Post-Route" xil_pn:value="" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Other Simulator Commands Post-Translate" xil_pn:value="" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Other XPWR Command Line Options" xil_pn:value="" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Other XST Command Line Options" xil_pn:value="" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Output Extended Identifiers" xil_pn:value="false" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Output File Name" xil_pn:value="top_test_sincos" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Overwrite Compiled Libraries" xil_pn:value="false" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Pack I/O Registers into IOBs" xil_pn:value="Auto" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Pack I/O Registers/Latches into IOBs" xil_pn:value="Off" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Package" xil_pn:value="csg324" xil_pn:valueState="non-default"/>
 | 
			
		||||
    <property xil_pn:name="Perform Advanced Analysis" xil_pn:value="false" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Perform Advanced Analysis Post Trace" xil_pn:value="false" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Perform Timing-Driven Packing and Placement" xil_pn:value="false" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Place & Route Effort Level (Overall)" xil_pn:value="High" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Place And Route Mode" xil_pn:value="Normal Place and Route" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Place MultiBoot Settings into Bitstream spartan6" xil_pn:value="false" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Placer Effort Level Map" xil_pn:value="High" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Placer Extra Effort Map" xil_pn:value="None" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Port to be used" xil_pn:value="Auto - default" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Post Map Simulation Model Name" xil_pn:value="top_test_sincos_map.vhd" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Post Place & Route Simulation Model Name" xil_pn:value="top_test_sincos_timesim.vhd" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Post Synthesis Simulation Model Name" xil_pn:value="top_test_sincos_synthesis.vhd" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Post Translate Simulation Model Name" xil_pn:value="top_test_sincos_translate.vhd" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Power Reduction Map spartan6" xil_pn:value="Off" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Power Reduction Par" xil_pn:value="false" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Power Reduction Xst" xil_pn:value="false" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Preferred Language" xil_pn:value="VHDL" xil_pn:valueState="non-default"/>
 | 
			
		||||
    <property xil_pn:name="Produce Verbose Report" xil_pn:value="false" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Project Description" xil_pn:value="" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Project Generator" xil_pn:value="ProjNav" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Property Specification in Project File" xil_pn:value="Store all values" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="RAM Extraction" xil_pn:value="true" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="RAM Style" xil_pn:value="Auto" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="ROM Extraction" xil_pn:value="true" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="ROM Style" xil_pn:value="Auto" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Read Cores" xil_pn:value="true" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Reduce Control Sets" xil_pn:value="Auto" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Regenerate Core" xil_pn:value="Under Current Project Setting" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Register Balancing" xil_pn:value="No" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Register Duplication Map" xil_pn:value="Off" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Register Duplication Xst" xil_pn:value="true" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Register Ordering spartan6" xil_pn:value="4" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Release Write Enable (Output Events)" xil_pn:value="Default (6)" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Rename Design Instance in Testbench File to" xil_pn:value="UUT" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Rename Top Level Architecture To" xil_pn:value="Structure" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Rename Top Level Entity to" xil_pn:value="top_test_sincos" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Rename Top Level Module To" xil_pn:value="" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Report Fastest Path(s) in Each Constraint" xil_pn:value="true" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Report Fastest Path(s) in Each Constraint Post Trace" xil_pn:value="true" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Report Paths by Endpoint" xil_pn:value="3" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Report Paths by Endpoint Post Trace" xil_pn:value="3" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Report Type" xil_pn:value="Verbose Report" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Report Type Post Trace" xil_pn:value="Verbose Report" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Report Unconstrained Paths" xil_pn:value="" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Report Unconstrained Paths Post Trace" xil_pn:value="" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Reset On Configuration Pulse Width" xil_pn:value="100" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Resource Sharing" xil_pn:value="true" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Retain Hierarchy" xil_pn:value="true" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Retry Configuration if CRC Error Occurs spartan6" xil_pn:value="false" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Revision Select" xil_pn:value="00" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Revision Select Tristate" xil_pn:value="Disable" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Run Design Rules Checker (DRC)" xil_pn:value="true" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Run for Specified Time" xil_pn:value="true" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Run for Specified Time Map" xil_pn:value="true" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Run for Specified Time Par" xil_pn:value="true" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Run for Specified Time Translate" xil_pn:value="true" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Safe Implementation" xil_pn:value="No" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Security" xil_pn:value="Enable Readback and Reconfiguration" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Selected Simulation Root Source Node Behavioral" xil_pn:value="" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Selected Simulation Root Source Node Post-Map" xil_pn:value="" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Selected Simulation Root Source Node Post-Route" xil_pn:value="" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Selected Simulation Root Source Node Post-Translate" xil_pn:value="" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Selected Simulation Source Node" xil_pn:value="UUT" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Set SPI Configuration Bus Width spartan6" xil_pn:value="1" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Setup External Master Clock Division spartan6" xil_pn:value="1" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Shift Register Extraction" xil_pn:value="true" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Shift Register Minimum Size spartan6" xil_pn:value="2" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Show All Models" xil_pn:value="false" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Simulation Model Target" xil_pn:value="VHDL" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Simulation Run Time ISim" xil_pn:value="1000 ns" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Simulation Run Time Map" xil_pn:value="1000 ns" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Simulation Run Time Par" xil_pn:value="1000 ns" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Simulation Run Time Translate" xil_pn:value="1000 ns" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Simulator" xil_pn:value="ISim (VHDL/Verilog)" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Slice Utilization Ratio" xil_pn:value="100" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Specify 'define Macro Name and Value" xil_pn:value="" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Specify Top Level Instance Names Behavioral" xil_pn:value="Default" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Specify Top Level Instance Names Post-Map" xil_pn:value="Default" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Specify Top Level Instance Names Post-Route" xil_pn:value="Default" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Specify Top Level Instance Names Post-Translate" xil_pn:value="Default" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Speed Grade" xil_pn:value="-3" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Starting Placer Cost Table (1-100) Map spartan6" xil_pn:value="1" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Synthesis Tool" xil_pn:value="XST (VHDL/Verilog)" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Target Simulator" xil_pn:value="Please Specify" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Timing Mode Map" xil_pn:value="Performance Evaluation" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Timing Mode Par" xil_pn:value="Performance Evaluation" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Top-Level Module Name in Output Netlist" xil_pn:value="" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Top-Level Source Type" xil_pn:value="HDL" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Trim Unconnected Signals" xil_pn:value="true" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Tristate On Configuration Pulse Width" xil_pn:value="0" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Unused IOB Pins" xil_pn:value="Pull Down" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Use 64-bit PlanAhead on 64-bit Systems" xil_pn:value="true" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Use Clock Enable" xil_pn:value="Auto" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Use Custom Project File Behavioral" xil_pn:value="false" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Use Custom Project File Post-Map" xil_pn:value="false" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Use Custom Project File Post-Route" xil_pn:value="false" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Use Custom Project File Post-Translate" xil_pn:value="false" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Use Custom Simulation Command File Behavioral" xil_pn:value="false" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Use Custom Simulation Command File Map" xil_pn:value="false" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Use Custom Simulation Command File Par" xil_pn:value="false" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Use Custom Simulation Command File Translate" xil_pn:value="false" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Use Custom Waveform Configuration File Behav" xil_pn:value="false" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Use Custom Waveform Configuration File Map" xil_pn:value="false" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Use Custom Waveform Configuration File Par" xil_pn:value="false" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Use Custom Waveform Configuration File Translate" xil_pn:value="false" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Use DSP Block spartan6" xil_pn:value="Auto" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Use LOC Constraints" xil_pn:value="true" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Use RLOC Constraints" xil_pn:value="Yes" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Use Smart Guide" xil_pn:value="false" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Use Synchronous Reset" xil_pn:value="Auto" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Use Synchronous Set" xil_pn:value="Auto" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Use Synthesis Constraints File" xil_pn:value="true" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="User Browsed Strategy Files" xil_pn:value="" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="UserID Code (8 Digit Hexadecimal)" xil_pn:value="0xFFFFFFFF" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="VCCAUX Voltage Level spartan6" xil_pn:value="2.5V" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="VHDL Source Analysis Standard" xil_pn:value="VHDL-93" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Value Range Check" xil_pn:value="false" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Verilog Macros" xil_pn:value="" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Wait for DCM and PLL Lock (Output Events) spartan6" xil_pn:value="Default (NoWait)" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Wakeup Clock spartan6" xil_pn:value="Startup Clock" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Watchdog Timer Value spartan6" xil_pn:value="0xFFFF" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="Working Directory" xil_pn:value="." xil_pn:valueState="non-default"/>
 | 
			
		||||
    <property xil_pn:name="Write Timing Constraints" xil_pn:value="false" xil_pn:valueState="default"/>
 | 
			
		||||
    <!--                                                                                  -->
 | 
			
		||||
    <!-- The following properties are for internal use only. These should not be modified.-->
 | 
			
		||||
    <!--                                                                                  -->
 | 
			
		||||
    <property xil_pn:name="PROP_BehavioralSimTop" xil_pn:value="" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="PROP_DesignName" xil_pn:value="test_sincos" xil_pn:valueState="non-default"/>
 | 
			
		||||
    <property xil_pn:name="PROP_DevFamilyPMName" xil_pn:value="spartan6" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="PROP_FPGAConfiguration" xil_pn:value="FPGAConfiguration" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="PROP_PostMapSimTop" xil_pn:value="" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="PROP_PostParSimTop" xil_pn:value="" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="PROP_PostSynthSimTop" xil_pn:value="" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="PROP_PostXlateSimTop" xil_pn:value="" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="PROP_PreSynthesis" xil_pn:value="PreSynthesis" xil_pn:valueState="default"/>
 | 
			
		||||
    <property xil_pn:name="PROP_intProjectCreationTimestamp" xil_pn:value="2016-04-22T09:32:27" xil_pn:valueState="non-default"/>
 | 
			
		||||
    <property xil_pn:name="PROP_intWbtProjectID" xil_pn:value="C74D62BE7C3BCC31C4F4E8997CE0C58D" xil_pn:valueState="non-default"/>
 | 
			
		||||
    <property xil_pn:name="PROP_intWorkingDirLocWRTProjDir" xil_pn:value="Same" xil_pn:valueState="non-default"/>
 | 
			
		||||
    <property xil_pn:name="PROP_intWorkingDirUsed" xil_pn:value="No" xil_pn:valueState="non-default"/>
 | 
			
		||||
  </properties>
 | 
			
		||||
 | 
			
		||||
  <bindings/>
 | 
			
		||||
 | 
			
		||||
  <libraries/>
 | 
			
		||||
 | 
			
		||||
  <autoManagedFiles>
 | 
			
		||||
    <!-- The following files are identified by `include statements in verilog -->
 | 
			
		||||
    <!-- source files and are automatically managed by Project Navigator.     -->
 | 
			
		||||
    <!--                                                                      -->
 | 
			
		||||
    <!-- Do not hand-edit this section, as it will be overwritten when the    -->
 | 
			
		||||
    <!-- project is analyzed based on files automatically identified as       -->
 | 
			
		||||
    <!-- include files.                                                       -->
 | 
			
		||||
  </autoManagedFiles>
 | 
			
		||||
 | 
			
		||||
</project>
 | 
			
		||||
| 
						 | 
				
			
			@ -1,171 +0,0 @@
 | 
			
		|||
--
 | 
			
		||||
-- Test sine / cosine function core on Digilent Atlys board.
 | 
			
		||||
--
 | 
			
		||||
--
 | 
			
		||||
-- Serial port protocol (via USB):
 | 
			
		||||
--
 | 
			
		||||
--   * Baud rate 115200
 | 
			
		||||
--
 | 
			
		||||
--   * Send 6 bytes
 | 
			
		||||
--       { 0x41 0x42 phase(7:0) phase(15:8) phase(23:16) phase(31:24) }
 | 
			
		||||
--     to calculate sine and cosine of phase on the 18-bit / 20-bit core.
 | 
			
		||||
--     Board answers with 8 bytes
 | 
			
		||||
--       { sin(7:0) sin(15:8) sin(23:16) sin(31:24)
 | 
			
		||||
--         cos(7:0) cos(15:8) cos(23:16) cos(31:24 }
 | 
			
		||||
--
 | 
			
		||||
--   * Send 6 bytes
 | 
			
		||||
--       { 0x41 0x43 phase(7:0) phase(15:8) phase(23:16) phase(31:24) }
 | 
			
		||||
--     to calculate sine and cosine of phase on the 24-bit / 26-bit core.
 | 
			
		||||
--     Board answers with 8 bytes
 | 
			
		||||
--       { sin(7:0) sin(15:8) sin(23:16) sin(31:24)
 | 
			
		||||
--         cos(7:0) cos(15:8) cos(23:16) cos(31:24 }
 | 
			
		||||
--
 | 
			
		||||
--   * Send 2 bytes { 0x41 0x44 } to start clock-enable modulation.
 | 
			
		||||
--
 | 
			
		||||
--   * Send 3 bytes { 0x41 0x45 } to stop clock-enable modulation.
 | 
			
		||||
--
 | 
			
		||||
-- Status LEDs:
 | 
			
		||||
--   LED 0    = Ready (waiting for command)
 | 
			
		||||
--   LED 1    = Calculating
 | 
			
		||||
--   LED 2    = Clock-enable modulation active
 | 
			
		||||
--   LED 3    = Transmitting
 | 
			
		||||
--
 | 
			
		||||
-- AC97 audio:
 | 
			
		||||
--   999.985 Hz sine wave on output
 | 
			
		||||
--
 | 
			
		||||
 | 
			
		||||
library ieee;
 | 
			
		||||
use ieee.std_logic_1164.all;
 | 
			
		||||
use ieee.numeric_std.all;
 | 
			
		||||
 | 
			
		||||
entity top_test_sincos is
 | 
			
		||||
 | 
			
		||||
    port (
 | 
			
		||||
        -- 100 MHz system clock
 | 
			
		||||
        clk:            in  std_logic;
 | 
			
		||||
 | 
			
		||||
        -- Reset button
 | 
			
		||||
        resetn:         in  std_logic;
 | 
			
		||||
 | 
			
		||||
        -- Status LEDs
 | 
			
		||||
        led:            out std_logic_vector(7 downto 0);
 | 
			
		||||
 | 
			
		||||
        -- Uart
 | 
			
		||||
        uartrx:         in  std_logic;
 | 
			
		||||
        uarttx:         out std_logic;
 | 
			
		||||
 | 
			
		||||
        -- AC97 audio
 | 
			
		||||
        ac97_bitclk:    in  std_logic;
 | 
			
		||||
        ac97_sdi:       in  std_logic;
 | 
			
		||||
        ac97_sdo:       out std_logic;
 | 
			
		||||
        ac97_sync:      out std_logic;
 | 
			
		||||
        ac97_rst:       out std_logic );
 | 
			
		||||
 | 
			
		||||
end entity;
 | 
			
		||||
 | 
			
		||||
architecture rtl of top_test_sincos is
 | 
			
		||||
 | 
			
		||||
    -- Frequency is 21845 / 2**20 * 48000 Hz = 999.985 Hz
 | 
			
		||||
    constant tone_freq: integer := 21845;
 | 
			
		||||
 | 
			
		||||
    signal r_rstgen:    std_logic_vector(7 downto 0) := "00000000";
 | 
			
		||||
    signal r_reset:     std_logic;
 | 
			
		||||
 | 
			
		||||
    signal r_ac97_rstcnt: unsigned(7 downto 0);
 | 
			
		||||
    signal r_ac97_rst:   std_logic;
 | 
			
		||||
    signal r_ac97_phase: unsigned(19 downto 0);
 | 
			
		||||
    signal s_ac97_sine:  signed(17 downto 0);
 | 
			
		||||
    signal s_ac97_dataleft:  signed(19 downto 0);
 | 
			
		||||
    signal s_ac97_dataright: signed(19 downto 0);
 | 
			
		||||
    signal s_ac97_ready: std_logic;
 | 
			
		||||
 | 
			
		||||
begin
 | 
			
		||||
 | 
			
		||||
    -- Instantiate test design with serial interface.
 | 
			
		||||
    u0: entity work.test_sincos_serial
 | 
			
		||||
        generic map (
 | 
			
		||||
            serial_bitrate_divider => 868 )
 | 
			
		||||
        port map (
 | 
			
		||||
            clk         => clk,
 | 
			
		||||
            rst         => r_reset,
 | 
			
		||||
            ser_rx      => uartrx,
 | 
			
		||||
            ser_tx      => uarttx,
 | 
			
		||||
            stat_ready  => led(0),
 | 
			
		||||
            stat_calc   => led(1),
 | 
			
		||||
            stat_clkmod => led(2),
 | 
			
		||||
            stat_txser  => led(3) );
 | 
			
		||||
 | 
			
		||||
    -- Instantiate sine generator for AC97 output.
 | 
			
		||||
    u1: entity work.sincos_gen_d18_p20
 | 
			
		||||
        port map (
 | 
			
		||||
            clk         => ac97_bitclk,
 | 
			
		||||
            clk_en      => '1',
 | 
			
		||||
            in_phase    => r_ac97_phase,
 | 
			
		||||
            out_sin     => s_ac97_sine,
 | 
			
		||||
            out_cos     => open );
 | 
			
		||||
 | 
			
		||||
    -- Instantiate AC97 output 
 | 
			
		||||
    u2: entity work.ac97out
 | 
			
		||||
        port map (
 | 
			
		||||
            bitclk      => ac97_bitclk,
 | 
			
		||||
            resetn      => r_ac97_rst,
 | 
			
		||||
            data_left   => s_ac97_dataleft,
 | 
			
		||||
            data_right  => s_ac97_dataright,
 | 
			
		||||
            data_valid  => '1',
 | 
			
		||||
            data_ready  => s_ac97_ready,
 | 
			
		||||
            ac97_sdi    => ac97_sdi,
 | 
			
		||||
            ac97_sdo    => ac97_sdo,
 | 
			
		||||
            ac97_sync   => ac97_sync );
 | 
			
		||||
 | 
			
		||||
    -- Pad 18-bit signed samples to 20-bit.
 | 
			
		||||
    s_ac97_dataleft  <= s_ac97_sine & "00";
 | 
			
		||||
    s_ac97_dataright <= s_ac97_sine & "00";
 | 
			
		||||
 | 
			
		||||
    -- Drive unused LEDs.
 | 
			
		||||
    led(7 downto 4) <= "0000";
 | 
			
		||||
 | 
			
		||||
    -- Drive AC97 reset pin.
 | 
			
		||||
    ac97_rst    <= r_ac97_rst;
 | 
			
		||||
 | 
			
		||||
    -- Reset synchronizer.
 | 
			
		||||
    process (clk) is
 | 
			
		||||
    begin
 | 
			
		||||
        if rising_edge(clk) then
 | 
			
		||||
            if resetn = '0' then
 | 
			
		||||
                r_rstgen    <= (others => '0');
 | 
			
		||||
                r_reset     <= '1';
 | 
			
		||||
            else
 | 
			
		||||
                r_rstgen    <= "1" & r_rstgen(7 downto 1);
 | 
			
		||||
                r_reset     <= not r_rstgen(0);
 | 
			
		||||
            end if;
 | 
			
		||||
        end if;
 | 
			
		||||
    end process;
 | 
			
		||||
 | 
			
		||||
    -- Reset generator for AC97 codec.
 | 
			
		||||
    process (clk) is
 | 
			
		||||
    begin
 | 
			
		||||
        if rising_edge(clk) then
 | 
			
		||||
            if r_reset = '1' then
 | 
			
		||||
                r_ac97_rstcnt   <= (others => '1');
 | 
			
		||||
                r_ac97_rst      <= '0';
 | 
			
		||||
            else
 | 
			
		||||
                r_ac97_rstcnt   <= r_ac97_rstcnt - 1;
 | 
			
		||||
                if r_ac97_rstcnt = 0 then
 | 
			
		||||
                    r_ac97_rst      <= '1';
 | 
			
		||||
                end if;
 | 
			
		||||
            end if;
 | 
			
		||||
        end if;
 | 
			
		||||
    end process;
 | 
			
		||||
 | 
			
		||||
    -- Synchronous process in AC97 bitclock domain.
 | 
			
		||||
    process (ac97_bitclk) is
 | 
			
		||||
    begin
 | 
			
		||||
        if rising_edge(ac97_bitclk) then
 | 
			
		||||
            if s_ac97_ready = '1' then
 | 
			
		||||
                r_ac97_phase <= r_ac97_phase + tone_freq;
 | 
			
		||||
            end if;
 | 
			
		||||
        end if;
 | 
			
		||||
    end process;
 | 
			
		||||
 | 
			
		||||
end architecture;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1,131 +0,0 @@
 | 
			
		|||
#!/usr/bin/python
 | 
			
		||||
 | 
			
		||||
"""
 | 
			
		||||
Test sine/cosine core via serial port.
 | 
			
		||||
 | 
			
		||||
Sends a series of commands to the test driver via the serial port
 | 
			
		||||
and verifies answers.
 | 
			
		||||
 | 
			
		||||
Usage:
 | 
			
		||||
  python test_sincos_serial.py /dev/ttyUSB0
 | 
			
		||||
"""
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
from __future__ import print_function
 | 
			
		||||
import sys
 | 
			
		||||
import numpy
 | 
			
		||||
import serial
 | 
			
		||||
import struct
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def testPhase(dev, coresel, databits, phasebits, phase):
 | 
			
		||||
 | 
			
		||||
    print("\r phase=%-10d" % phase, end='')
 | 
			
		||||
    sys.stdout.flush()
 | 
			
		||||
 | 
			
		||||
    dev.write(struct.pack("<BBI", 0x41, 0x42 + coresel, phase))
 | 
			
		||||
 | 
			
		||||
    reply = dev.read(8)
 | 
			
		||||
 | 
			
		||||
    if len(reply) != 8:
 | 
			
		||||
        print()
 | 
			
		||||
        print("ERROR: got %d bytes from serial port while expecting 8" %
 | 
			
		||||
              len(reply))
 | 
			
		||||
        return
 | 
			
		||||
 | 
			
		||||
    (vsin, vcos) = struct.unpack("<ii", reply)
 | 
			
		||||
 | 
			
		||||
    ampl  = (1 << (databits - 1)) - 1
 | 
			
		||||
    theta = 2 * numpy.pi * phase / 2.0**phasebits
 | 
			
		||||
    refsin = ampl * numpy.sin(theta)
 | 
			
		||||
    refcos = ampl * numpy.cos(theta)
 | 
			
		||||
 | 
			
		||||
    if abs(vsin - refsin) > 1.5 or abs(vcos - refcos) > 1.5:
 | 
			
		||||
        print()
 | 
			
		||||
        print("phase=%d sin=%d cos=%d refsin=%.2f refcos=%.2f" %
 | 
			
		||||
              (phase, vsin, vcos, refsin, refcos))
 | 
			
		||||
        print("ERROR: wrong answer")
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def testCore(dev, clkmod, coresel, databits, phasebits):
 | 
			
		||||
 | 
			
		||||
    if clkmod:
 | 
			
		||||
        # Start clock-enable modulation.
 | 
			
		||||
        dev.write("AD")
 | 
			
		||||
    else:
 | 
			
		||||
        # Stop clock-enable modulation.
 | 
			
		||||
        dev.write("AE")
 | 
			
		||||
 | 
			
		||||
    print("test least significant phase bits")
 | 
			
		||||
    for p in range(64):
 | 
			
		||||
        phase = p
 | 
			
		||||
        testPhase(dev, coresel, databits, phasebits, phase)
 | 
			
		||||
    print()
 | 
			
		||||
 | 
			
		||||
    print("test most significant phase bits")
 | 
			
		||||
    for p in range(64):
 | 
			
		||||
        phase = p << (phasebits - 6)
 | 
			
		||||
        testPhase(dev, coresel, databits, phasebits, phase)
 | 
			
		||||
    print()
 | 
			
		||||
 | 
			
		||||
    print("test pseudorandom phase values")
 | 
			
		||||
    phase = 0
 | 
			
		||||
    for i in range(5000):
 | 
			
		||||
        phase = (phase + 123457) & ((1 << phasebits) - 1)
 | 
			
		||||
        testPhase(dev, coresel, databits, phasebits, phase)
 | 
			
		||||
    print()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def main():
 | 
			
		||||
 | 
			
		||||
    if len(sys.argv) != 2:
 | 
			
		||||
        print(__doc__, file=sys.stderr)
 | 
			
		||||
        print("ERROR: Invalid/missing command line arguments", file=sys.stderr)
 | 
			
		||||
        sys.exit(1)
 | 
			
		||||
 | 
			
		||||
    devname = sys.argv[1]
 | 
			
		||||
 | 
			
		||||
    # Open serial port.
 | 
			
		||||
    print("opening serial port", devname)
 | 
			
		||||
    dev = serial.Serial(port=devname,
 | 
			
		||||
                        baudrate=115200,
 | 
			
		||||
                        bytesize=8,
 | 
			
		||||
                        parity='N',
 | 
			
		||||
                        stopbits=1,
 | 
			
		||||
                        timeout=1)
 | 
			
		||||
 | 
			
		||||
    # Flush input.
 | 
			
		||||
    print("flush serial port buffer")
 | 
			
		||||
    dev.flushInput()
 | 
			
		||||
    dev.flushOutput()
 | 
			
		||||
    dev.read(1000)
 | 
			
		||||
 | 
			
		||||
    # Write series of Z to force test driver to idle state.
 | 
			
		||||
    dev.write("ZZZZZZZZ")
 | 
			
		||||
 | 
			
		||||
    print()
 | 
			
		||||
    print('Test 18-bit data, 20-bit phase core')
 | 
			
		||||
    testCore(dev, 0, 0, 18, 20)
 | 
			
		||||
    print()
 | 
			
		||||
 | 
			
		||||
    print('Test 24-bit data, 26-bit phase core')
 | 
			
		||||
    testCore(dev, 0, 1, 24, 26)
 | 
			
		||||
    print()
 | 
			
		||||
 | 
			
		||||
    print('Test 18-bit data, 20-bit phase core with clock-enable modulation')
 | 
			
		||||
    testCore(dev, 1, 0, 18, 20)
 | 
			
		||||
    print()
 | 
			
		||||
 | 
			
		||||
    print('Test 24-bit data, 26-bit phase core with clock-enable modulation')
 | 
			
		||||
    testCore(dev, 1, 1, 24, 26)
 | 
			
		||||
    print()
 | 
			
		||||
 | 
			
		||||
    # Close serial port.
 | 
			
		||||
    dev.close()
 | 
			
		||||
 | 
			
		||||
    print("done")
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
if __name__ == '__main__':
 | 
			
		||||
    main()
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue