URL
https://opencores.org/ocsvn/all_digital_fm_receiver/all_digital_fm_receiver/trunk
Subversion Repositories all_digital_fm_receiver
Compare Revisions
- This comparison shows the changes necessary to convert path
/
- from Rev 4 to Rev 5
- ↔ Reverse comparison
Rev 4 → Rev 5
/tags/ver-1/loop_filter.vhd
File deleted
/tags/ver-1/fmTri.txt
File deleted
/tags/ver-1/nco.vhd
File deleted
/tags/ver-1/fir.vhd
File deleted
\ No newline at end of file
/tags/ver-1/fm.txt
File deleted
/tags/ver-1/cos.txt
File deleted
/tags/ver-1/circuit.vhd
File deleted
/tags/ver-1/multiplier.vhd
File deleted
/tags/ver-1/circuit_tb.vhd
File deleted
/trunk/fmTri.txt
File deleted
/trunk/nco.vhd
File deleted
/trunk/fir.vhd
File deleted
\ No newline at end of file
/trunk/fm.txt
File deleted
/trunk/cos.txt
File deleted
/trunk/circuit.vhd
File deleted
/trunk/adfmreceiver.pdf
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
trunk/adfmreceiver.pdf
Property changes :
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Index: trunk/multiplier.vhd
===================================================================
--- trunk/multiplier.vhd (revision 4)
+++ trunk/multiplier.vhd (nonexistent)
@@ -1,142 +0,0 @@
-LIBRARY ieee;
-USE ieee.std_logic_1164.all;
-USE IEEE.numeric_std.ALL;
-
-
-ENTITY multiplier IS
--- Declarations
-port (CLK : in std_logic;
- RESET : in std_logic;
- input1 : in std_logic_vector(7 downto 0);
- input2 : in signed(7 downto 0);
- output : out signed(7 downto 0)
- );
-END multiplier ;
-
-
-ARCHITECTURE behavior OF multiplier IS
-
-signal out_temp : signed(15 downto 0);
-signal input1_buf : signed(15 downto 0);
-signal part0, part1, part2, part3, part4, part5, part6, part7 : signed(15 downto 0);
-
-begin
-
-process(CLK, RESET)
-begin
- if (RESET='1') then
- out_temp <= (others => '0');
- output <= (others => '0');
- input1_buf <= (others => '0');
- part0 <= (others => '0');
- part1 <= (others => '0');
- part2 <= (others => '0');
- part3 <= (others => '0');
- part4 <= (others => '0');
- part5 <= (others => '0');
- part6 <= (others => '0');
- part7 <= (others => '0');
- elsif rising_edge(CLK) then
- input1_buf <= input1(7)&input1(7)&input1(7)&input1(7)&input1(7)&input1(7)&input1(7)&input1(7)&signed(input1);
- if (input2(0)='1') then
- part0 <= -(input1_buf);
- else
- part0 <= (others => '0');
- end if;
- if (input2(1)='1') then
- if (input2(0)='1') then
- part1 <= (others => '0');
- else
- part1 <= -(input1_buf);
- end if;
- else
- if (input2(0)='1') then
- part1 <= input1_buf;
- else
- part1 <= (others => '0');
- end if;
- end if;
- if (input2(2)='1') then
- if (input2(1)='1') then
- part2 <= (others => '0');
- else
- part2 <= -(input1_buf);
- end if;
- else
- if (input2(1)='1') then
- part2 <= input1_buf;
- else
- part2 <= (others => '0');
- end if;
- end if;
- if (input2(3)='1') then
- if (input2(2)='1') then
- part3 <= (others => '0');
- else
- part3 <= -(input1_buf);
- end if;
- else
- if (input2(2)='1') then
- part3 <= input1_buf;
- else
- part3 <= (others => '0');
- end if;
- end if;
- if (input2(4)='1') then
- if (input2(3)='1') then
- part4 <= (others => '0');
- else
- part4 <= -(input1_buf);
- end if;
- else
- if (input2(3)='1') then
- part4 <= input1_buf;
- else
- part4 <= (others => '0');
- end if;
- end if;
- if (input2(5)='1') then
- if (input2(4)='1') then
- part5 <= (others => '0');
- else
- part5 <= -(input1_buf);
- end if;
- else
- if (input2(4)='1') then
- part5 <= input1_buf;
- else
- part5 <= (others => '0');
- end if;
- end if;
- if (input2(6)='1') then
- if (input2(5)='1') then
- part6 <= (others => '0');
- else
- part6 <= -(input1_buf);
- end if;
- else
- if (input2(5)='1') then
- part6 <= input1_buf;
- else
- part6 <= (others => '0');
- end if;
- end if;
- if (input2(7)='1') then
- if (input2(6)='1') then
- part7 <= (others => '0');
- else
- part7 <= -(input1_buf);
- end if;
- else
- if (input2(6)='1') then
- part7 <= input1_buf;
- else
- part7 <= (others => '0');
- end if;
- end if;
- out_temp <= part0+(part1(14 downto 0)&'0')+(part2(13 downto 0)&"00")+(part3(12 downto 0)&"000")+(part4(11 downto 0)&"0000")+(part5(10 downto 0)&"00000")+(part6(9 downto 0)&"000000")+(part7(8 downto 0)&"0000000");
- output <= out_temp(15 downto 8);
-end if;
-end process;
-END behavior;
-
Index: trunk/circuit_tb.vhd
===================================================================
--- trunk/circuit_tb.vhd (revision 4)
+++ trunk/circuit_tb.vhd (nonexistent)
@@ -1,64 +0,0 @@
-LIBRARY ieee;
-USE ieee.std_logic_1164.ALL;
-USE IEEE.numeric_std.ALL;
-USE std.textio.ALL;
-
-ENTITY circuit_tb IS
-END circuit_tb;
-
-ARCHITECTURE behavior OF circuit_tb IS
-
-file vectors: text open read_mode is "fm.txt";
-
-
- COMPONENT circuit
- PORT(
- clk : IN std_logic;
- reset : IN std_logic;
- fmin : IN std_logic_vector(7 downto 0);
- dmout : OUT std_logic_vector(11 downto 0)
- );
- END COMPONENT;
-
- SIGNAL clk : std_logic := '0' ;
- SIGNAL reset : std_logic := '1';
- SIGNAL fmin : std_logic_vector(7 downto 0);
- SIGNAL dmout : std_logic_vector(11 downto 0);
- constant clkperiod : time := 62.5 ns; -- 16 MHz of frequency
-
-BEGIN
-
- uut: circuit PORT MAP(
- clk => clk,
- reset => reset,
- fmin => fmin,
- dmout => dmout
- );
-
- RESET_GEN: process
- begin
- LOOP1: for N in 0 to 3 loop
- wait until falling_edge(CLK);
- end loop LOOP1;
- RESET <= '0' ;
- end process RESET_GEN;
-
-clk <= not clk after clkperiod / 2;
-
-process
-variable vectorline : line;
-variable fmin_var : bit_vector(7 downto 0);
-begin
-while not endfile(vectors) loop
- if (reset = '1') then
- fmin <= (others => '0');
- else
- readline(vectors, vectorline);
- read(vectorline, fmin_var);
- fmin <= to_stdlogicvector(fmin_var);
- end if;
- wait for clkperiod;
-end loop;
-end process;
-
-END;
Index: trunk/loop_filter.vhd
===================================================================
--- trunk/loop_filter.vhd (revision 4)
+++ trunk/loop_filter.vhd (nonexistent)
@@ -1,38 +0,0 @@
-LIBRARY ieee;
-USE ieee.std_logic_1164.all;
-USE IEEE.numeric_std.ALL;
-
-
-
-ENTITY loop_filter IS
--- Declarations
- port ( CLK : in std_logic;
- RESET : in std_logic;
- C : in signed(7 downto 0);
- D1 : out signed(11 downto 0);
- D2 : out signed(11 downto 0)
- );
-END loop_filter ;
-
-
-ARCHITECTURE behavior OF loop_filter IS
-
-signal E : signed(11 downto 0);
-signal dtemp : signed(11 downto 0);
-
-begin
-process(CLK, RESET)
-begin
- if (RESET='1') then
- D1 <= (others => '0');
- D2 <= (others => '0');
- E <= (others => '0');
- dtemp <= (others => '0');
- elsif rising_edge(CLK) then
- dtemp <= (C(7)&C(7)&C(7)&C&'0') + dtemp - E;
- E <= dtemp(11)&dtemp(11)&dtemp(11)&dtemp(11)&dtemp(11 downto 4);
- D1 <= dtemp;
- D2 <= dtemp(11 downto 4)&"0000";
- end if;
-end process;
-END behavior;
Index: all_digital_fm_receiver/trunk/adfmreceiver.pdf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: all_digital_fm_receiver/trunk/adfmreceiver.pdf
===================================================================
--- all_digital_fm_receiver/trunk/adfmreceiver.pdf (nonexistent)
+++ all_digital_fm_receiver/trunk/adfmreceiver.pdf (revision 5)
all_digital_fm_receiver/trunk/adfmreceiver.pdf
Property changes :
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: all_digital_fm_receiver/trunk/fmTri.txt
===================================================================
--- all_digital_fm_receiver/trunk/fmTri.txt (nonexistent)
+++ all_digital_fm_receiver/trunk/fmTri.txt (revision 5)
@@ -0,0 +1,1000 @@
+01111111
+01110110
+01011011
+00110010
+00000010
+11010001
+10101000
+10001011
+10000000
+10001000
+10100010
+11001010
+11111010
+00101011
+01010110
+01110011
+01111111
+01111001
+01100000
+00111001
+00001001
+11011000
+10101101
+10001110
+10000000
+10000110
+10011110
+11000100
+11110100
+00100101
+01010001
+01110001
+01111111
+01111011
+01100100
+00111110
+00001111
+11011101
+10110001
+10010001
+10000001
+10000100
+10011010
+11000000
+11101111
+00100000
+01001101
+01101110
+01111111
+01111100
+01100111
+01000010
+00010011
+11100010
+10110101
+10010011
+10000010
+10000011
+10011000
+10111100
+11101011
+00011101
+01001010
+01101100
+01111110
+01111101
+01101001
+01000101
+00010111
+11100101
+10110111
+10010101
+10000010
+10000011
+10010110
+10111010
+11101000
+00011010
+01001000
+01101011
+01111110
+01111101
+01101010
+01000111
+00011001
+11100111
+10111001
+10010101
+10000010
+10000010
+10010110
+10111001
+11100111
+00011001
+01000111
+01101010
+01111110
+01111110
+01101011
+01000111
+00011001
+11100111
+10111001
+10010110
+10000011
+10000010
+10010101
+10111001
+11100111
+00011001
+01000111
+01101010
+01111110
+01111110
+01101010
+01000111
+00011001
+11100111
+10111000
+10010101
+10000010
+10000011
+10010110
+10111010
+11101000
+00011010
+01001000
+01101011
+01111110
+01111101
+01101001
+01000101
+00010111
+11100101
+10110111
+10010100
+10000010
+10000011
+10010111
+10111100
+11101011
+00011101
+01001010
+01101101
+01111110
+01111101
+01101000
+01000011
+00010100
+11100010
+10110100
+10010010
+10000001
+10000100
+10011010
+10111111
+11101110
+00100001
+01001110
+01101111
+01111111
+01111011
+01100101
+00111111
+00001111
+11011101
+10110000
+10010000
+10000001
+10000101
+10011101
+11000011
+11110011
+00100110
+01010010
+01110001
+01111111
+01111010
+01100001
+00111010
+00001001
+11011000
+10101100
+10001101
+10000000
+10000111
+10100001
+11001001
+11111010
+00101100
+01010111
+01110100
+01111111
+01111000
+01011101
+00110100
+00000010
+11010001
+10100111
+10001010
+10000000
+10001010
+10100110
+11010000
+00000001
+00110011
+01011100
+01110111
+01111111
+01110101
+01010111
+00101101
+11111011
+11001010
+10100001
+10000111
+10000000
+10001101
+10101011
+11010111
+00001001
+00111001
+01100001
+01111010
+01111111
+01110010
+01010010
+00100110
+11110100
+11000100
+10011101
+10000101
+10000001
+10010000
+10110000
+11011100
+00001110
+00111110
+01100101
+01111011
+01111111
+01101111
+01001110
+00100001
+11101111
+11000000
+10011010
+10000100
+10000001
+10010010
+10110011
+11100001
+00010011
+01000010
+01100111
+01111100
+01111110
+01101101
+01001011
+00011101
+11101011
+10111100
+10011000
+10000011
+10000010
+10010100
+10110110
+11100100
+00010110
+01000101
+01101001
+01111101
+01111110
+01101100
+01001001
+00011011
+11101001
+10111010
+10010110
+10000011
+10000010
+10010101
+10111000
+11100110
+00011000
+01000110
+01101010
+01111101
+01111110
+01101011
+01001000
+00011001
+11100111
+10111001
+10010110
+10000011
+10000010
+10010101
+10111001
+11100111
+00011001
+01000111
+01101010
+01111101
+01111110
+01101011
+01000111
+00011001
+11100111
+10111001
+10010110
+10000011
+10000010
+10010101
+10111000
+11100110
+00011000
+01000110
+01101010
+01111101
+01111110
+01101011
+01001000
+00011010
+11101001
+10111010
+10010111
+10000011
+10000010
+10010100
+10110111
+11100100
+00010110
+01000101
+01101001
+01111101
+01111110
+01101100
+01001010
+00011101
+11101011
+10111101
+10011000
+10000011
+10000010
+10010011
+10110100
+11100001
+00010011
+01000010
+01100111
+01111100
+01111111
+01101110
+01001101
+00100000
+11101111
+11000000
+10011011
+10000100
+10000001
+10010001
+10110001
+11011101
+00001111
+00111110
+01100100
+01111011
+01111111
+01110001
+01010001
+00100101
+11110100
+11000100
+10011110
+10000110
+10000000
+10001110
+10101101
+11011000
+00001001
+00111001
+01100000
+01111001
+01111111
+01110011
+01010110
+00101011
+11111010
+11001010
+10100010
+10001000
+10000000
+10001011
+10101000
+11010001
+00000010
+00110010
+01011011
+01110110
+01111111
+01110110
+01011011
+00110010
+00000010
+11010001
+10101000
+10001011
+10000000
+10001000
+10100010
+11001010
+11111010
+00101011
+01010110
+01110011
+01111111
+01111001
+01100000
+00111001
+00001001
+11011000
+10101101
+10001110
+10000000
+10000110
+10011110
+11000100
+11110100
+00100101
+01010001
+01110001
+01111111
+01111011
+01100100
+00111110
+00001111
+11011101
+10110001
+10010001
+10000001
+10000100
+10011010
+11000000
+11101111
+00100000
+01001101
+01101110
+01111111
+01111100
+01100111
+01000010
+00010011
+11100010
+10110101
+10010011
+10000010
+10000011
+10011000
+10111100
+11101011
+00011101
+01001010
+01101100
+01111110
+01111101
+01101001
+01000101
+00010111
+11100101
+10110111
+10010101
+10000010
+10000011
+10010110
+10111010
+11101000
+00011010
+01001000
+01101011
+01111110
+01111101
+01101010
+01000111
+00011001
+11100111
+10111001
+10010101
+10000010
+10000010
+10010110
+10111001
+11100111
+00011001
+01000111
+01101010
+01111110
+01111110
+01101011
+01000111
+00011001
+11100111
+10111001
+10010110
+10000011
+10000010
+10010101
+10111001
+11100111
+00011001
+01000111
+01101010
+01111110
+01111110
+01101010
+01000111
+00011001
+11100111
+10111000
+10010101
+10000010
+10000011
+10010110
+10111010
+11101000
+00011010
+01001000
+01101011
+01111110
+01111101
+01101001
+01000101
+00010111
+11100101
+10110111
+10010100
+10000010
+10000011
+10010111
+10111100
+11101011
+00011101
+01001010
+01101101
+01111110
+01111101
+01101000
+01000011
+00010100
+11100010
+10110100
+10010010
+10000001
+10000100
+10011010
+10111111
+11101110
+00100001
+01001110
+01101111
+01111111
+01111011
+01100101
+00111111
+00001111
+11011101
+10110000
+10010000
+10000001
+10000101
+10011101
+11000011
+11110011
+00100110
+01010010
+01110001
+01111111
+01111010
+01100001
+00111010
+00001001
+11011000
+10101100
+10001101
+10000000
+10000111
+10100001
+11001001
+11111010
+00101100
+01010111
+01110100
+01111111
+01111000
+01011101
+00110100
+00000010
+11010001
+10100111
+10001010
+10000000
+10001010
+10100110
+11010000
+00000001
+00110011
+01011100
+01110111
+01111111
+01110101
+01010111
+00101101
+11111011
+11001010
+10100001
+10000111
+10000000
+10001101
+10101011
+11010111
+00001001
+00111001
+01100001
+01111010
+01111111
+01110010
+01010010
+00100110
+11110100
+11000100
+10011101
+10000101
+10000001
+10010000
+10110000
+11011100
+00001110
+00111110
+01100101
+01111011
+01111111
+01101111
+01001110
+00100001
+11101111
+11000000
+10011010
+10000100
+10000001
+10010010
+10110011
+11100001
+00010011
+01000010
+01100111
+01111100
+01111110
+01101101
+01001011
+00011101
+11101011
+10111100
+10011000
+10000011
+10000010
+10010100
+10110110
+11100100
+00010110
+01000101
+01101001
+01111101
+01111110
+01101100
+01001001
+00011011
+11101001
+10111010
+10010110
+10000011
+10000010
+10010101
+10111000
+11100110
+00011000
+01000110
+01101010
+01111101
+01111110
+01101011
+01001000
+00011001
+11100111
+10111001
+10010110
+10000011
+10000010
+10010101
+10111001
+11100111
+00011001
+01000111
+01101010
+01111101
+01111110
+01101011
+01000111
+00011001
+11100111
+10111001
+10010110
+10000011
+10000010
+10010101
+10111000
+11100110
+00011000
+01000110
+01101010
+01111101
+01111110
+01101011
+01001000
+00011010
+11101001
+10111010
+10010111
+10000011
+10000010
+10010100
+10110111
+11100100
+00010110
+01000101
+01101001
+01111101
+01111110
+01101100
+01001010
+00011101
+11101011
+10111101
+10011000
+10000011
+10000010
+10010011
+10110100
+11100001
+00010011
+01000010
+01100111
+01111100
+01111111
+01101110
+01001101
+00100000
+11101111
+11000000
+10011011
+10000100
+10000001
+10010001
+10110001
+11011101
+00001111
+00111110
+01100100
+01111011
+01111111
+01110001
+01010001
+00100101
+11110100
+11000100
+10011110
+10000110
+10000000
+10001110
+10101101
+11011000
+00001001
+00111001
+01100000
+01111001
+01111111
+01110011
+01010110
+00101011
+11111010
+11001010
+10100010
+10001000
+10000000
+10001011
+10101000
+11010001
+00000010
+00110010
+01011011
+01110110
+01111111
+01110110
+01011011
+00110010
+00000010
+11010001
+10101000
+10001011
+10000000
+10001000
+10100010
+11001010
+11111010
+00101011
+01010110
+01110011
+01111111
+01111001
+01100000
+00111001
+00001001
+11011000
+10101101
+10001110
+10000000
+10000110
+10011110
+11000100
+11110100
+00100101
+01010001
+01110001
+01111111
+01111011
+01100100
+00111110
+00001111
+11011101
+10110001
+10010001
+10000001
+10000100
+10011010
+11000000
+11101111
+00100000
+01001101
+01101110
+01111111
+01111100
+01100111
+01000010
+00010011
+11100010
+10110101
+10010011
+10000010
+10000011
+10011000
+10111100
+11101011
+00011101
+01001010
+01101100
+01111110
+01111101
+01101001
+01000101
+00010111
+11100101
+10110111
+10010101
+10000010
+10000011
+10010110
+10111010
+11101000
+00011010
+01001000
+01101011
+01111110
+01111101
+01101010
+01000111
+00011001
+11100111
+10111001
+10010101
+10000010
+10000010
+10010110
+10111001
+11100111
+00011001
+01000111
+01101010
+01111110
+01111110
+01101011
+01000111
+00011001
+11100111
+10111001
+10010110
+10000011
+10000010
+10010101
+10111001
+11100111
+00011001
+01000111
+01101010
+01111110
+01111110
+01101010
+01000111
+00011001
+11100111
+10111000
+10010101
+10000010
+10000011
+10010110
+10111010
+11101000
+00011010
+01001000
+01101011
+01111110
+01111101
+01101001
+01000101
+00010111
+11100101
+10110111
+10010100
+10000010
+10000011
+10010111
+10111100
+11101011
+00011101
+01001010
+01101101
+01111110
+01111101
+01101000
+01000011
+00010100
+11100010
+10110100
+10010010
+10000001
+10000100
+10011010
+10111111
+11101110
+00100001
+01001110
+01101111
+01111111
+01111011
+01100101
+00111111
+00001111
+11011101
+10110000
+10010000
+10000001
+10000101
+10011101
+11000011
+11110011
+00100110
+01010010
+01110001
+01111111
+01111010
+01100001
+00111010
+00001001
+11011000
+10101100
+10001101
+10000000
+10000111
+10100001
+11001001
+11111010
+00101100
+01010111
+01110100
+01111111
+01111000
+01011101
+00110100
+00000010
+11010001
+10100111
+10001010
Index: all_digital_fm_receiver/trunk/nco.vhd
===================================================================
--- all_digital_fm_receiver/trunk/nco.vhd (nonexistent)
+++ all_digital_fm_receiver/trunk/nco.vhd (revision 5)
@@ -0,0 +1,308 @@
+LIBRARY ieee;
+USE ieee.std_logic_1164.all;
+USE IEEE.numeric_std.ALL;
+
+
+
+ENTITY nco IS
+-- Declarations
+ port ( clk : in std_logic;
+ reset : in std_logic;
+ din : in signed(11 downto 0);
+ dout : out signed(7 downto 0)
+ );
+END nco ;
+
+-- hds interface_end
+ARCHITECTURE behavior OF nco IS
+type vectype is array (0 to 256) of signed(7 downto 0);
+-- ROM cosrom
+constant cosrom : vectype := (
+0 => "01111111",
+1 => "01111111",
+2 => "01111111",
+3 => "01111111",
+4 => "01111111",
+5 => "01111111",
+6 => "01111111",
+7 => "01111111",
+8 => "01111111",
+9 => "01111111",
+10 => "01111111",
+11 => "01111111",
+12 => "01111111",
+13 => "01111111",
+14 => "01111111",
+15 => "01111111",
+16 => "01111111",
+17 => "01111111",
+18 => "01111111",
+19 => "01111111",
+20 => "01111111",
+21 => "01111111",
+22 => "01111111",
+23 => "01111111",
+24 => "01111111",
+25 => "01111110",
+26 => "01111110",
+27 => "01111110",
+28 => "01111110",
+29 => "01111110",
+30 => "01111110",
+31 => "01111110",
+32 => "01111110",
+33 => "01111101",
+34 => "01111101",
+35 => "01111101",
+36 => "01111101",
+37 => "01111101",
+38 => "01111101",
+39 => "01111100",
+40 => "01111100",
+41 => "01111100",
+42 => "01111100",
+43 => "01111100",
+44 => "01111011",
+45 => "01111011",
+46 => "01111011",
+47 => "01111011",
+48 => "01111010",
+49 => "01111010",
+50 => "01111010",
+51 => "01111010",
+52 => "01111010",
+53 => "01111001",
+54 => "01111001",
+55 => "01111001",
+56 => "01111001",
+57 => "01111000",
+58 => "01111000",
+59 => "01111000",
+60 => "01110111",
+61 => "01110111",
+62 => "01110111",
+63 => "01110111",
+64 => "01110110",
+65 => "01110110",
+66 => "01110110",
+67 => "01110101",
+68 => "01110101",
+69 => "01110101",
+70 => "01110100",
+71 => "01110100",
+72 => "01110100",
+73 => "01110011",
+74 => "01110011",
+75 => "01110011",
+76 => "01110010",
+77 => "01110010",
+78 => "01110010",
+79 => "01110001",
+80 => "01110001",
+81 => "01110001",
+82 => "01110000",
+83 => "01110000",
+84 => "01101111",
+85 => "01101111",
+86 => "01101111",
+87 => "01101110",
+88 => "01101110",
+89 => "01101101",
+90 => "01101101",
+91 => "01101101",
+92 => "01101100",
+93 => "01101100",
+94 => "01101011",
+95 => "01101011",
+96 => "01101010",
+97 => "01101010",
+98 => "01101010",
+99 => "01101001",
+100 => "01101001",
+101 => "01101000",
+102 => "01101000",
+103 => "01100111",
+104 => "01100111",
+105 => "01100110",
+106 => "01100110",
+107 => "01100101",
+108 => "01100101",
+109 => "01100100",
+110 => "01100100",
+111 => "01100011",
+112 => "01100011",
+113 => "01100010",
+114 => "01100010",
+115 => "01100001",
+116 => "01100001",
+117 => "01100000",
+118 => "01100000",
+119 => "01011111",
+120 => "01011111",
+121 => "01011110",
+122 => "01011110",
+123 => "01011101",
+124 => "01011101",
+125 => "01011100",
+126 => "01011100",
+127 => "01011011",
+128 => "01011011",
+129 => "01011010",
+130 => "01011001",
+131 => "01011001",
+132 => "01011000",
+133 => "01011000",
+134 => "01010111",
+135 => "01010111",
+136 => "01010110",
+137 => "01010101",
+138 => "01010101",
+139 => "01010100",
+140 => "01010100",
+141 => "01010011",
+142 => "01010010",
+143 => "01010010",
+144 => "01010001",
+145 => "01010001",
+146 => "01010000",
+147 => "01001111",
+148 => "01001111",
+149 => "01001110",
+150 => "01001110",
+151 => "01001101",
+152 => "01001100",
+153 => "01001100",
+154 => "01001011",
+155 => "01001010",
+156 => "01001010",
+157 => "01001001",
+158 => "01001000",
+159 => "01001000",
+160 => "01000111",
+161 => "01000111",
+162 => "01000110",
+163 => "01000101",
+164 => "01000101",
+165 => "01000100",
+166 => "01000011",
+167 => "01000011",
+168 => "01000010",
+169 => "01000001",
+170 => "01000001",
+171 => "01000000",
+172 => "00111111",
+173 => "00111110",
+174 => "00111110",
+175 => "00111101",
+176 => "00111100",
+177 => "00111100",
+178 => "00111011",
+179 => "00111010",
+180 => "00111010",
+181 => "00111001",
+182 => "00111000",
+183 => "00111000",
+184 => "00110111",
+185 => "00110110",
+186 => "00110101",
+187 => "00110101",
+188 => "00110100",
+189 => "00110011",
+190 => "00110011",
+191 => "00110010",
+192 => "00110001",
+193 => "00110000",
+194 => "00110000",
+195 => "00101111",
+196 => "00101110",
+197 => "00101101",
+198 => "00101101",
+199 => "00101100",
+200 => "00101011",
+201 => "00101010",
+202 => "00101010",
+203 => "00101001",
+204 => "00101000",
+205 => "00100111",
+206 => "00100111",
+207 => "00100110",
+208 => "00100101",
+209 => "00100100",
+210 => "00100100",
+211 => "00100011",
+212 => "00100010",
+213 => "00100001",
+214 => "00100001",
+215 => "00100000",
+216 => "00011111",
+217 => "00011110",
+218 => "00011110",
+219 => "00011101",
+220 => "00011100",
+221 => "00011011",
+222 => "00011011",
+223 => "00011010",
+224 => "00011001",
+225 => "00011000",
+226 => "00011000",
+227 => "00010111",
+228 => "00010110",
+229 => "00010101",
+230 => "00010100",
+231 => "00010100",
+232 => "00010011",
+233 => "00010010",
+234 => "00010001",
+235 => "00010001",
+236 => "00010000",
+237 => "00001111",
+238 => "00001110",
+239 => "00001101",
+240 => "00001101",
+241 => "00001100",
+242 => "00001011",
+243 => "00001010",
+244 => "00001010",
+245 => "00001001",
+246 => "00001000",
+247 => "00000111",
+248 => "00000110",
+249 => "00000110",
+250 => "00000101",
+251 => "00000100",
+252 => "00000011",
+253 => "00000010",
+254 => "00000010",
+255 => "00000001",
+256 => "00000000");
+
+signal dtemp : unsigned(17 downto 0);
+signal din_buf : signed(17 downto 0);
+signal dtemp1 : integer;
+constant offset : unsigned(17 downto 0) := "000100000000000000";
+
+begin
+
+process(CLK, RESET)
+begin
+ if (RESET='1') then
+ dout <= (others => '0');
+ din_buf <= (others => '0');
+ dtemp <= (others => '0');
+ dtemp1 <= 0;
+ elsif rising_edge(CLK) then
+ din_buf <= din(11)&din(11)&din(11)&din(11)&din(11)&din(11)&din;
+ dtemp <= dtemp + unsigned(din_buf) + offset;
+ dtemp1 <= to_integer(dtemp(17 downto 8));
+ if (dtemp1 >= 0) and (dtemp1 < 257) then
+ dout <= cosrom(dtemp1);
+ elsif (dtemp1 >= 257) and (dtemp1 < 513) then
+ dout <= -cosrom(512-dtemp1);
+ elsif (dtemp1 >= 513) and (dtemp1 < 769) then
+ dout <= -cosrom(dtemp1-512);
+ else
+ dout <= cosrom(1024-dtemp1);
+ end if;
+ end if;
+end process;
+END behavior;
Index: all_digital_fm_receiver/trunk/fir.vhd
===================================================================
--- all_digital_fm_receiver/trunk/fir.vhd (nonexistent)
+++ all_digital_fm_receiver/trunk/fir.vhd (revision 5)
@@ -0,0 +1,64 @@
+LIBRARY ieee;
+USE IEEE.std_logic_1164.all;
+USE IEEE.numeric_std.ALL;
+
+
+entity FIR is
+port(
+ clock : in std_logic;
+ reset : in std_logic;
+ data_in : in signed(11 downto 0);
+ data_out : out std_logic_vector(11 downto 0)
+);
+end FIR;
+
+architecture behavior of FIR is
+
+signal d0,d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,d13,d14,d15 : signed(15 downto 0);
+signal sum : signed(15 downto 0);
+
+begin
+
+process(clock,reset)
+begin
+ if (reset = '1') then
+ d0 <= (others => '0');
+ d1 <= (others => '0');
+ d2 <= (others => '0');
+ d3 <= (others => '0');
+ d4 <= (others => '0');
+ d5 <= (others => '0');
+ d6 <= (others => '0');
+ d7 <= (others => '0');
+ d8 <= (others => '0');
+ d9 <= (others => '0');
+ d10 <= (others => '0');
+ d11 <= (others => '0');
+ d12 <= (others => '0');
+ d13 <= (others => '0');
+ d14 <= (others => '0');
+ d15 <= (others => '0');
+ sum <= (others => '0');
+ data_out <= (others => '0');
+ ELSIF rising_edge(clock) THEN
+ d0 <= data_in(11)&data_in(11)&data_in(11)&data_in(11)&data_in;
+ d1 <= d0;
+ d2 <= d1;
+ d3 <= d2;
+ d4 <= d3;
+ d5 <= d4;
+ d6 <= d5;
+ d7 <= d6;
+ d8 <= d7;
+ d9 <= d8;
+ d10 <= d9;
+ d11 <= d10;
+ d12 <= d11;
+ d13 <= d12;
+ d14 <= d13;
+ d15 <= d14;
+ sum <= (d0+d1+d2+d3+d4+d5+d6+d7+d8+d9+d10+d11+d12+d13+d14+d15) srl 4;
+ data_out <= std_logic_vector(sum(11 downto 0));
+ end if;
+end process;
+end behavior;
\ No newline at end of file
Index: all_digital_fm_receiver/trunk/fm.txt
===================================================================
--- all_digital_fm_receiver/trunk/fm.txt (nonexistent)
+++ all_digital_fm_receiver/trunk/fm.txt (revision 5)
@@ -0,0 +1,1000 @@
+01111111
+01110110
+01011010
+00110000
+11111110
+11001101
+10100011
+10001000
+10000000
+10001100
+10101001
+11010100
+00000110
+00110111
+01011111
+01111001
+01111111
+01110011
+01010100
+00101000
+11110110
+11000101
+10011110
+10000110
+10000001
+10001111
+10101111
+11011100
+00001110
+00111110
+01100101
+01111011
+01111111
+01101111
+01001110
+00100000
+11101110
+10111110
+10011001
+10000100
+10000010
+10010011
+10110110
+11100100
+00010110
+01000101
+01101001
+01111101
+01111110
+01101011
+01000111
+00011000
+11100110
+10111000
+10010100
+10000010
+10000011
+10011000
+10111100
+11101011
+00011110
+01001100
+01101110
+01111111
+01111100
+01100110
+01000000
+00010001
+11011110
+10110001
+10010000
+10000001
+10000101
+10011100
+11000011
+11110011
+00100110
+01010010
+01110010
+01111111
+01111010
+01100001
+00111001
+00001001
+11010111
+10101011
+10001101
+10000000
+10001000
+10100010
+11001010
+11111011
+00101101
+01011000
+01110101
+01111111
+01110111
+01011100
+00110010
+00000001
+11001111
+10100101
+10001001
+10000000
+10001011
+10100111
+11010010
+00000100
+00110101
+01011110
+01111000
+01111111
+01110100
+01010110
+00101010
+11111000
+11001000
+10100000
+10000111
+10000000
+10001110
+10101101
+11011001
+00001100
+00111100
+01100011
+01111011
+01111111
+01110000
+01010000
+00100011
+11110000
+11000001
+10011011
+10000100
+10000001
+10010010
+10110100
+11100001
+00010100
+01000011
+01101000
+01111101
+01111110
+01101100
+01001001
+00011011
+11101001
+10111010
+10010110
+10000010
+10000011
+10010110
+10111010
+11101001
+00011011
+01001010
+01101100
+01111110
+01111101
+01101000
+01000010
+00010011
+11100001
+10110011
+10010010
+10000001
+10000100
+10011011
+11000001
+11110001
+00100011
+01010000
+01110000
+01111111
+01111010
+01100011
+00111011
+00001011
+11011001
+10101101
+10001110
+10000000
+10000111
+10100000
+11001000
+11111001
+00101011
+01010110
+01110100
+01111111
+01111000
+01011101
+00110100
+00000011
+11010001
+10100111
+10001010
+10000000
+10001010
+10100101
+11001111
+11111111
+00110000
+01011001
+01110101
+01111111
+01111000
+01011101
+00110101
+00000101
+11010100
+10101010
+10001100
+10000000
+10000111
+10100000
+11000111
+11110111
+00101000
+01010011
+01110010
+01111111
+01111010
+01100011
+00111100
+00001101
+11011100
+10110000
+10010000
+10000001
+10000101
+10011011
+11000000
+11101111
+00100000
+01001101
+01101110
+01111111
+01111100
+01101000
+01000011
+00010101
+11100100
+10110110
+10010100
+10000010
+10000011
+10010110
+10111001
+11100111
+00011000
+01000110
+01101010
+01111101
+01111110
+01101100
+01001010
+00011101
+11101011
+10111101
+10011001
+10000100
+10000001
+10010010
+10110011
+11011111
+00010001
+00111111
+01100101
+01111011
+01111111
+01110000
+01010000
+00100101
+11110011
+11000100
+10011110
+10000110
+10000000
+10001110
+10101100
+11010111
+00001001
+00111000
+01100000
+01111001
+01111111
+01110100
+01010111
+00101100
+11111011
+11001011
+10100011
+10001001
+10000000
+10001011
+10100111
+11010000
+00000001
+00110001
+01011010
+01110110
+01111111
+01110111
+01011100
+00110100
+00000100
+11010011
+10101001
+10001100
+10000000
+10001000
+10100001
+11001001
+11111000
+00101001
+01010100
+01110011
+01111111
+01111010
+01100010
+00111011
+00001100
+11011010
+10101111
+10001111
+10000001
+10000101
+10011100
+11000001
+11110000
+00100010
+01001110
+01101111
+01111111
+01111100
+01100111
+01000010
+00010100
+11100010
+10110101
+10010011
+10000010
+10000011
+10010111
+10111011
+11101001
+00011010
+01001000
+01101010
+01111101
+01111110
+01101011
+01001001
+00011011
+11101010
+10111100
+10011000
+10000011
+10000010
+10010011
+10110100
+11100001
+00010010
+01000001
+01100110
+01111100
+01111111
+01101111
+01001111
+00100011
+11110010
+11000011
+10011101
+10000110
+10000001
+10001111
+10101110
+11011001
+00001010
+00111010
+01100001
+01111001
+01111111
+01110011
+01010101
+00101011
+11111010
+11001010
+10100010
+10001000
+10000000
+10001011
+10101000
+11010001
+00000010
+00110010
+01011011
+01110110
+01111111
+01110110
+01011010
+00110000
+11111110
+11001101
+10100011
+10001000
+10000000
+10001100
+10101001
+11010100
+00000110
+00110111
+01011111
+01111001
+01111111
+01110011
+01010100
+00101000
+11110110
+11000101
+10011110
+10000110
+10000001
+10001111
+10101111
+11011100
+00001110
+00111110
+01100101
+01111011
+01111111
+01101111
+01001110
+00100000
+11101110
+10111110
+10011001
+10000100
+10000010
+10010011
+10110110
+11100100
+00010110
+01000101
+01101001
+01111101
+01111110
+01101011
+01000111
+00011000
+11100110
+10111000
+10010100
+10000010
+10000011
+10011000
+10111100
+11101011
+00011110
+01001100
+01101110
+01111111
+01111100
+01100110
+01000000
+00010001
+11011110
+10110001
+10010000
+10000001
+10000101
+10011100
+11000011
+11110011
+00100110
+01010010
+01110010
+01111111
+01111010
+01100001
+00111001
+00001001
+11010111
+10101011
+10001101
+10000000
+10001000
+10100010
+11001010
+11111011
+00101101
+01011000
+01110101
+01111111
+01110111
+01011100
+00110010
+00000001
+11001111
+10100101
+10001001
+10000000
+10001011
+10100111
+11010010
+00000100
+00110101
+01011110
+01111000
+01111111
+01110100
+01010110
+00101010
+11111000
+11001000
+10100000
+10000111
+10000000
+10001110
+10101101
+11011001
+00001100
+00111100
+01100011
+01111011
+01111111
+01110000
+01010000
+00100011
+11110000
+11000001
+10011011
+10000100
+10000001
+10010010
+10110100
+11100001
+00010100
+01000011
+01101000
+01111101
+01111110
+01101100
+01001001
+00011011
+11101001
+10111010
+10010110
+10000010
+10000011
+10010110
+10111010
+11101001
+00011011
+01001010
+01101100
+01111110
+01111101
+01101000
+01000010
+00010011
+11100001
+10110011
+10010010
+10000001
+10000100
+10011011
+11000001
+11110001
+00100011
+01010000
+01110000
+01111111
+01111010
+01100011
+00111011
+00001011
+11011001
+10101101
+10001110
+10000000
+10000111
+10100000
+11001000
+11111001
+00101011
+01010110
+01110100
+01111111
+01111000
+01011101
+00110100
+00000011
+11010001
+10100111
+10001010
+10000000
+10001010
+10100101
+11001111
+11111111
+00110000
+01011001
+01110101
+01111111
+01111000
+01011101
+00110101
+00000101
+11010100
+10101010
+10001100
+10000000
+10000111
+10100000
+11000111
+11110111
+00101000
+01010011
+01110010
+01111111
+01111010
+01100011
+00111100
+00001101
+11011100
+10110000
+10010000
+10000001
+10000101
+10011011
+11000000
+11101111
+00100000
+01001101
+01101110
+01111111
+01111100
+01101000
+01000011
+00010101
+11100100
+10110110
+10010100
+10000010
+10000011
+10010110
+10111001
+11100111
+00011000
+01000110
+01101010
+01111101
+01111110
+01101100
+01001010
+00011101
+11101011
+10111101
+10011001
+10000100
+10000001
+10010010
+10110011
+11011111
+00010001
+00111111
+01100101
+01111011
+01111111
+01110000
+01010000
+00100101
+11110011
+11000100
+10011110
+10000110
+10000000
+10001110
+10101100
+11010111
+00001001
+00111000
+01100000
+01111001
+01111111
+01110100
+01010111
+00101100
+11111011
+11001011
+10100011
+10001001
+10000000
+10001011
+10100111
+11010000
+00000001
+00110001
+01011010
+01110110
+01111111
+01110111
+01011100
+00110100
+00000100
+11010011
+10101001
+10001100
+10000000
+10001000
+10100001
+11001001
+11111000
+00101001
+01010100
+01110011
+01111111
+01111010
+01100010
+00111011
+00001100
+11011010
+10101111
+10001111
+10000001
+10000101
+10011100
+11000001
+11110000
+00100010
+01001110
+01101111
+01111111
+01111100
+01100111
+01000010
+00010100
+11100010
+10110101
+10010011
+10000010
+10000011
+10010111
+10111011
+11101001
+00011010
+01001000
+01101010
+01111101
+01111110
+01101011
+01001001
+00011011
+11101010
+10111100
+10011000
+10000011
+10000010
+10010011
+10110100
+11100001
+00010010
+01000001
+01100110
+01111100
+01111111
+01101111
+01001111
+00100011
+11110010
+11000011
+10011101
+10000110
+10000001
+10001111
+10101110
+11011001
+00001010
+00111010
+01100001
+01111001
+01111111
+01110011
+01010101
+00101011
+11111010
+11001010
+10100010
+10001000
+10000000
+10001011
+10101000
+11010001
+00000010
+00110010
+01011011
+01110110
+01111111
+01110110
+01011010
+00110000
+11111110
+11001101
+10100011
+10001000
+10000000
+10001100
+10101001
+11010100
+00000110
+00110111
+01011111
+01111001
+01111111
+01110011
+01010100
+00101000
+11110110
+11000101
+10011110
+10000110
+10000001
+10001111
+10101111
+11011100
+00001110
+00111110
+01100101
+01111011
+01111111
+01101111
+01001110
+00100000
+11101110
+10111110
+10011001
+10000100
+10000010
+10010011
+10110110
+11100100
+00010110
+01000101
+01101001
+01111101
+01111110
+01101011
+01000111
+00011000
+11100110
+10111000
+10010100
+10000010
+10000011
+10011000
+10111100
+11101011
+00011110
+01001100
+01101110
+01111111
+01111100
+01100110
+01000000
+00010001
+11011110
+10110001
+10010000
+10000001
+10000101
+10011100
+11000011
+11110011
+00100110
+01010010
+01110010
+01111111
+01111010
+01100001
+00111001
+00001001
+11010111
+10101011
+10001101
+10000000
+10001000
+10100010
+11001010
+11111011
+00101101
+01011000
+01110101
+01111111
+01110111
+01011100
+00110010
+00000001
+11001111
+10100101
+10001001
+10000000
+10001011
+10100111
+11010010
+00000100
+00110101
+01011110
+01111000
+01111111
+01110100
+01010110
+00101010
+11111000
+11001000
+10100000
+10000111
+10000000
+10001110
+10101101
+11011001
+00001100
+00111100
+01100011
+01111011
+01111111
+01110000
+01010000
+00100011
+11110000
+11000001
+10011011
+10000100
+10000001
+10010010
+10110100
+11100001
+00010100
+01000011
+01101000
+01111101
+01111110
+01101100
+01001001
+00011011
+11101001
+10111010
+10010110
+10000010
+10000011
+10010110
+10111010
+11101001
+00011011
+01001010
+01101100
+01111110
+01111101
+01101000
+01000010
+00010011
+11100001
+10110011
+10010010
+10000001
+10000100
+10011011
+11000001
+11110001
+00100011
+01010000
+01110000
+01111111
+01111010
+01100011
+00111011
+00001011
+11011001
+10101101
+10001110
+10000000
+10000111
+10100000
+11001000
+11111001
+00101011
+01010110
+01110100
+01111111
+01111000
+01011101
+00110100
+00000011
+11010001
+10100111
+10001010
+10000000
+10001010
Index: all_digital_fm_receiver/trunk/circuit.vhd
===================================================================
--- all_digital_fm_receiver/trunk/circuit.vhd (nonexistent)
+++ all_digital_fm_receiver/trunk/circuit.vhd (revision 5)
@@ -0,0 +1,101 @@
+LIBRARY ieee;
+USE ieee.std_logic_1164.all;
+USE IEEE.numeric_std.ALL;
+
+
+
+ENTITY circuit IS
+-- Declarations
+ PORT(
+ clk : IN std_logic;
+ reset : IN std_logic;
+ fmin : IN std_logic_vector(7 downto 0);
+ dmout : OUT std_logic_vector (11 DOWNTO 0)
+ );
+END circuit ;
+
+
+ARCHITECTURE behavior OF circuit IS
+
+ -- Architecture declarations
+
+ -- Internal signal declarations
+ SIGNAL d1 : signed(11 DOWNTO 0);
+ SIGNAL d2 : signed(11 DOWNTO 0);
+ SIGNAL dout : signed(7 DOWNTO 0);
+ SIGNAL output : signed(7 DOWNTO 0);
+
+
+
+ -- Component Declarations
+ COMPONENT multiplier
+ PORT (
+ clk : IN std_logic ;
+ reset : IN std_logic ;
+ input1 : IN std_logic_vector (7 DOWNTO 0);
+ input2 : IN signed (7 DOWNTO 0);
+ output : OUT signed (7 DOWNTO 0)
+ );
+ END COMPONENT;
+ COMPONENT fir
+ PORT (
+ clock : IN std_logic ;
+ reset : IN std_logic ;
+ data_in : IN signed (11 DOWNTO 0);
+ data_out : OUT std_logic_vector (11 DOWNTO 0)
+ );
+ END COMPONENT;
+ COMPONENT loop_filter
+ PORT (
+ clk : IN std_logic ;
+ reset : IN std_logic ;
+ c : IN signed (7 DOWNTO 0);
+ d1 : OUT signed (11 DOWNTO 0);
+ d2 : OUT signed (11 DOWNTO 0)
+ );
+ END COMPONENT;
+ COMPONENT nco
+ PORT (
+ clk : IN std_logic ;
+ reset : IN std_logic ;
+ din : IN signed (11 DOWNTO 0);
+ dout : OUT signed (7 DOWNTO 0)
+ );
+ END COMPONENT;
+
+
+BEGIN
+ -- Instance port mappings.
+ I1 : multiplier
+ PORT MAP (
+ clk => clk,
+ reset => reset,
+ input1 => fmin,
+ input2 => dout,
+ output => output
+ );
+ I4 : fir
+ PORT MAP (
+ clock => clk,
+ reset => reset,
+ data_in => d1,
+ data_out => dmout
+ );
+ I3 : loop_filter
+ PORT MAP (
+ clk => clk,
+ reset => reset,
+ c => output,
+ d1 => d1,
+ d2 => d2
+ );
+ I2 : nco
+ PORT MAP (
+ clk => clk,
+ reset => reset,
+ din => d2,
+ dout => dout
+ );
+
+
+ END behavior;
Index: all_digital_fm_receiver/trunk/cos.txt
===================================================================
--- all_digital_fm_receiver/trunk/cos.txt (nonexistent)
+++ all_digital_fm_receiver/trunk/cos.txt (revision 5)
@@ -0,0 +1,1024 @@
+01111111
+01111111
+01111111
+01111111
+01111111
+01111111
+01111111
+01111111
+01111111
+01111111
+01111111
+01111111
+01111111
+01111111
+01111111
+01111111
+01111111
+01111111
+01111111
+01111111
+01111111
+01111111
+01111111
+01111111
+01111111
+01111110
+01111110
+01111110
+01111110
+01111110
+01111110
+01111110
+01111110
+01111101
+01111101
+01111101
+01111101
+01111101
+01111101
+01111100
+01111100
+01111100
+01111100
+01111100
+01111011
+01111011
+01111011
+01111011
+01111010
+01111010
+01111010
+01111010
+01111010
+01111001
+01111001
+01111001
+01111001
+01111000
+01111000
+01111000
+01110111
+01110111
+01110111
+01110111
+01110110
+01110110
+01110110
+01110101
+01110101
+01110101
+01110100
+01110100
+01110100
+01110011
+01110011
+01110011
+01110010
+01110010
+01110010
+01110001
+01110001
+01110001
+01110000
+01110000
+01101111
+01101111
+01101111
+01101110
+01101110
+01101101
+01101101
+01101101
+01101100
+01101100
+01101011
+01101011
+01101010
+01101010
+01101010
+01101001
+01101001
+01101000
+01101000
+01100111
+01100111
+01100110
+01100110
+01100101
+01100101
+01100100
+01100100
+01100011
+01100011
+01100010
+01100010
+01100001
+01100001
+01100000
+01100000
+01011111
+01011111
+01011110
+01011110
+01011101
+01011101
+01011100
+01011100
+01011011
+01011011
+01011010
+01011001
+01011001
+01011000
+01011000
+01010111
+01010111
+01010110
+01010101
+01010101
+01010100
+01010100
+01010011
+01010010
+01010010
+01010001
+01010001
+01010000
+01001111
+01001111
+01001110
+01001110
+01001101
+01001100
+01001100
+01001011
+01001010
+01001010
+01001001
+01001000
+01001000
+01000111
+01000111
+01000110
+01000101
+01000101
+01000100
+01000011
+01000011
+01000010
+01000001
+01000001
+01000000
+00111111
+00111110
+00111110
+00111101
+00111100
+00111100
+00111011
+00111010
+00111010
+00111001
+00111000
+00111000
+00110111
+00110110
+00110101
+00110101
+00110100
+00110011
+00110011
+00110010
+00110001
+00110000
+00110000
+00101111
+00101110
+00101101
+00101101
+00101100
+00101011
+00101010
+00101010
+00101001
+00101000
+00100111
+00100111
+00100110
+00100101
+00100100
+00100100
+00100011
+00100010
+00100001
+00100001
+00100000
+00011111
+00011110
+00011110
+00011101
+00011100
+00011011
+00011011
+00011010
+00011001
+00011000
+00011000
+00010111
+00010110
+00010101
+00010100
+00010100
+00010011
+00010010
+00010001
+00010001
+00010000
+00001111
+00001110
+00001101
+00001101
+00001100
+00001011
+00001010
+00001010
+00001001
+00001000
+00000111
+00000110
+00000110
+00000101
+00000100
+00000011
+00000010
+00000010
+00000001
+00000000
+11111111
+11111111
+11111110
+11111101
+11111100
+11111011
+11111011
+11111010
+11111001
+11111000
+11110111
+11110111
+11110110
+11110101
+11110100
+11110100
+11110011
+11110010
+11110001
+11110000
+11110000
+11101111
+11101110
+11101101
+11101101
+11101100
+11101011
+11101010
+11101001
+11101001
+11101000
+11100111
+11100110
+11100110
+11100101
+11100100
+11100011
+11100011
+11100010
+11100001
+11100000
+11011111
+11011111
+11011110
+11011101
+11011100
+11011100
+11011011
+11011010
+11011001
+11011001
+11011000
+11010111
+11010110
+11010110
+11010101
+11010100
+11010100
+11010011
+11010010
+11010001
+11010001
+11010000
+11001111
+11001110
+11001110
+11001101
+11001100
+11001100
+11001011
+11001010
+11001001
+11001001
+11001000
+11000111
+11000111
+11000110
+11000101
+11000100
+11000100
+11000011
+11000010
+11000010
+11000001
+11000000
+11000000
+10111111
+10111110
+10111110
+10111101
+10111100
+10111100
+10111011
+10111010
+10111010
+10111001
+10111000
+10111000
+10110111
+10110110
+10110110
+10110101
+10110100
+10110100
+10110011
+10110011
+10110010
+10110001
+10110001
+10110000
+10110000
+10101111
+10101110
+10101110
+10101101
+10101101
+10101100
+10101011
+10101011
+10101010
+10101010
+10101001
+10101000
+10101000
+10100111
+10100111
+10100110
+10100110
+10100101
+10100100
+10100100
+10100011
+10100011
+10100010
+10100010
+10100001
+10100001
+10100000
+10100000
+10011111
+10011111
+10011110
+10011110
+10011101
+10011101
+10011100
+10011100
+10011011
+10011011
+10011010
+10011010
+10011001
+10011001
+10011000
+10011000
+10010111
+10010111
+10010111
+10010110
+10010110
+10010101
+10010101
+10010100
+10010100
+10010100
+10010011
+10010011
+10010010
+10010010
+10010001
+10010001
+10010001
+10010000
+10010000
+10010000
+10001111
+10001111
+10001110
+10001110
+10001110
+10001101
+10001101
+10001101
+10001100
+10001100
+10001100
+10001011
+10001011
+10001011
+10001010
+10001010
+10001010
+10001010
+10001001
+10001001
+10001001
+10001000
+10001000
+10001000
+10001000
+10000111
+10000111
+10000111
+10000111
+10000110
+10000110
+10000110
+10000110
+10000101
+10000101
+10000101
+10000101
+10000100
+10000100
+10000100
+10000100
+10000100
+10000100
+10000011
+10000011
+10000011
+10000011
+10000011
+10000010
+10000010
+10000010
+10000010
+10000010
+10000010
+10000010
+10000010
+10000001
+10000001
+10000001
+10000001
+10000001
+10000001
+10000001
+10000001
+10000001
+10000001
+10000000
+10000000
+10000000
+10000000
+10000000
+10000000
+10000000
+10000000
+10000000
+10000000
+10000000
+10000000
+10000000
+10000000
+10000000
+10000000
+10000000
+10000000
+10000000
+10000000
+10000000
+10000000
+10000000
+10000000
+10000000
+10000000
+10000000
+10000000
+10000000
+10000001
+10000001
+10000001
+10000001
+10000001
+10000001
+10000001
+10000001
+10000001
+10000001
+10000001
+10000010
+10000010
+10000010
+10000010
+10000010
+10000010
+10000010
+10000011
+10000011
+10000011
+10000011
+10000011
+10000011
+10000100
+10000100
+10000100
+10000100
+10000100
+10000101
+10000101
+10000101
+10000101
+10000101
+10000110
+10000110
+10000110
+10000110
+10000111
+10000111
+10000111
+10000111
+10001000
+10001000
+10001000
+10001000
+10001001
+10001001
+10001001
+10001010
+10001010
+10001010
+10001011
+10001011
+10001011
+10001100
+10001100
+10001100
+10001101
+10001101
+10001101
+10001110
+10001110
+10001110
+10001111
+10001111
+10001111
+10010000
+10010000
+10010001
+10010001
+10010001
+10010010
+10010010
+10010010
+10010011
+10010011
+10010100
+10010100
+10010101
+10010101
+10010101
+10010110
+10010110
+10010111
+10010111
+10011000
+10011000
+10011001
+10011001
+10011010
+10011010
+10011010
+10011011
+10011011
+10011100
+10011100
+10011101
+10011101
+10011110
+10011110
+10011111
+10011111
+10100000
+10100000
+10100001
+10100010
+10100010
+10100011
+10100011
+10100100
+10100100
+10100101
+10100101
+10100110
+10100110
+10100111
+10101000
+10101000
+10101001
+10101001
+10101010
+10101010
+10101011
+10101100
+10101100
+10101101
+10101101
+10101110
+10101111
+10101111
+10110000
+10110000
+10110001
+10110010
+10110010
+10110011
+10110100
+10110100
+10110101
+10110101
+10110110
+10110111
+10110111
+10111000
+10111001
+10111001
+10111010
+10111011
+10111011
+10111100
+10111101
+10111101
+10111110
+10111111
+10111111
+11000000
+11000001
+11000001
+11000010
+11000011
+11000011
+11000100
+11000101
+11000110
+11000110
+11000111
+11001000
+11001000
+11001001
+11001010
+11001010
+11001011
+11001100
+11001101
+11001101
+11001110
+11001111
+11001111
+11010000
+11010001
+11010010
+11010010
+11010011
+11010100
+11010101
+11010101
+11010110
+11010111
+11011000
+11011000
+11011001
+11011010
+11011011
+11011011
+11011100
+11011101
+11011110
+11011110
+11011111
+11100000
+11100001
+11100001
+11100010
+11100011
+11100100
+11100100
+11100101
+11100110
+11100111
+11101000
+11101000
+11101001
+11101010
+11101011
+11101011
+11101100
+11101101
+11101110
+11101110
+11101111
+11110000
+11110001
+11110010
+11110010
+11110011
+11110100
+11110101
+11110110
+11110110
+11110111
+11111000
+11111001
+11111001
+11111010
+11111011
+11111100
+11111101
+11111101
+11111110
+11111111
+00000000
+00000000
+00000001
+00000010
+00000011
+00000100
+00000100
+00000101
+00000110
+00000111
+00001000
+00001000
+00001001
+00001010
+00001011
+00001011
+00001100
+00001101
+00001110
+00001111
+00001111
+00010000
+00010001
+00010010
+00010010
+00010011
+00010100
+00010101
+00010110
+00010110
+00010111
+00011000
+00011001
+00011001
+00011010
+00011011
+00011100
+00011100
+00011101
+00011110
+00011111
+00100000
+00100000
+00100001
+00100010
+00100011
+00100011
+00100100
+00100101
+00100110
+00100110
+00100111
+00101000
+00101001
+00101001
+00101010
+00101011
+00101100
+00101100
+00101101
+00101110
+00101110
+00101111
+00110000
+00110001
+00110001
+00110010
+00110011
+00110100
+00110100
+00110101
+00110110
+00110110
+00110111
+00111000
+00111001
+00111001
+00111010
+00111011
+00111011
+00111100
+00111101
+00111101
+00111110
+00111111
+00111111
+01000000
+01000001
+01000010
+01000010
+01000011
+01000100
+01000100
+01000101
+01000110
+01000110
+01000111
+01000111
+01001000
+01001001
+01001001
+01001010
+01001011
+01001011
+01001100
+01001101
+01001101
+01001110
+01001110
+01001111
+01010000
+01010000
+01010001
+01010010
+01010010
+01010011
+01010011
+01010100
+01010101
+01010101
+01010110
+01010110
+01010111
+01010111
+01011000
+01011001
+01011001
+01011010
+01011010
+01011011
+01011011
+01011100
+01011100
+01011101
+01011110
+01011110
+01011111
+01011111
+01100000
+01100000
+01100001
+01100001
+01100010
+01100010
+01100011
+01100011
+01100100
+01100100
+01100101
+01100101
+01100110
+01100110
+01100111
+01100111
+01101000
+01101000
+01101000
+01101001
+01101001
+01101010
+01101010
+01101011
+01101011
+01101100
+01101100
+01101100
+01101101
+01101101
+01101110
+01101110
+01101110
+01101111
+01101111
+01110000
+01110000
+01110000
+01110001
+01110001
+01110001
+01110010
+01110010
+01110011
+01110011
+01110011
+01110100
+01110100
+01110100
+01110101
+01110101
+01110101
+01110101
+01110110
+01110110
+01110110
+01110111
+01110111
+01110111
+01111000
+01111000
+01111000
+01111000
+01111001
+01111001
+01111001
+01111001
+01111010
+01111010
+01111010
+01111010
+01111011
+01111011
+01111011
+01111011
+01111011
+01111100
+01111100
+01111100
+01111100
+01111100
+01111101
+01111101
+01111101
+01111101
+01111101
+01111101
+01111110
+01111110
+01111110
+01111110
+01111110
+01111110
+01111110
+01111111
+01111111
+01111111
+01111111
+01111111
+01111111
+01111111
+01111111
+01111111
+01111111
+01111111
+01111111
+01111111
+01111111
+01111111
+01111111
+01111111
+01111111
+01111111
+01111111
+01111111
+01111111
+01111111
+01111111
Index: all_digital_fm_receiver/trunk/multiplier.vhd
===================================================================
--- all_digital_fm_receiver/trunk/multiplier.vhd (nonexistent)
+++ all_digital_fm_receiver/trunk/multiplier.vhd (revision 5)
@@ -0,0 +1,142 @@
+LIBRARY ieee;
+USE ieee.std_logic_1164.all;
+USE IEEE.numeric_std.ALL;
+
+
+ENTITY multiplier IS
+-- Declarations
+port (CLK : in std_logic;
+ RESET : in std_logic;
+ input1 : in std_logic_vector(7 downto 0);
+ input2 : in signed(7 downto 0);
+ output : out signed(7 downto 0)
+ );
+END multiplier ;
+
+
+ARCHITECTURE behavior OF multiplier IS
+
+signal out_temp : signed(15 downto 0);
+signal input1_buf : signed(15 downto 0);
+signal part0, part1, part2, part3, part4, part5, part6, part7 : signed(15 downto 0);
+
+begin
+
+process(CLK, RESET)
+begin
+ if (RESET='1') then
+ out_temp <= (others => '0');
+ output <= (others => '0');
+ input1_buf <= (others => '0');
+ part0 <= (others => '0');
+ part1 <= (others => '0');
+ part2 <= (others => '0');
+ part3 <= (others => '0');
+ part4 <= (others => '0');
+ part5 <= (others => '0');
+ part6 <= (others => '0');
+ part7 <= (others => '0');
+ elsif rising_edge(CLK) then
+ input1_buf <= input1(7)&input1(7)&input1(7)&input1(7)&input1(7)&input1(7)&input1(7)&input1(7)&signed(input1);
+ if (input2(0)='1') then
+ part0 <= -(input1_buf);
+ else
+ part0 <= (others => '0');
+ end if;
+ if (input2(1)='1') then
+ if (input2(0)='1') then
+ part1 <= (others => '0');
+ else
+ part1 <= -(input1_buf);
+ end if;
+ else
+ if (input2(0)='1') then
+ part1 <= input1_buf;
+ else
+ part1 <= (others => '0');
+ end if;
+ end if;
+ if (input2(2)='1') then
+ if (input2(1)='1') then
+ part2 <= (others => '0');
+ else
+ part2 <= -(input1_buf);
+ end if;
+ else
+ if (input2(1)='1') then
+ part2 <= input1_buf;
+ else
+ part2 <= (others => '0');
+ end if;
+ end if;
+ if (input2(3)='1') then
+ if (input2(2)='1') then
+ part3 <= (others => '0');
+ else
+ part3 <= -(input1_buf);
+ end if;
+ else
+ if (input2(2)='1') then
+ part3 <= input1_buf;
+ else
+ part3 <= (others => '0');
+ end if;
+ end if;
+ if (input2(4)='1') then
+ if (input2(3)='1') then
+ part4 <= (others => '0');
+ else
+ part4 <= -(input1_buf);
+ end if;
+ else
+ if (input2(3)='1') then
+ part4 <= input1_buf;
+ else
+ part4 <= (others => '0');
+ end if;
+ end if;
+ if (input2(5)='1') then
+ if (input2(4)='1') then
+ part5 <= (others => '0');
+ else
+ part5 <= -(input1_buf);
+ end if;
+ else
+ if (input2(4)='1') then
+ part5 <= input1_buf;
+ else
+ part5 <= (others => '0');
+ end if;
+ end if;
+ if (input2(6)='1') then
+ if (input2(5)='1') then
+ part6 <= (others => '0');
+ else
+ part6 <= -(input1_buf);
+ end if;
+ else
+ if (input2(5)='1') then
+ part6 <= input1_buf;
+ else
+ part6 <= (others => '0');
+ end if;
+ end if;
+ if (input2(7)='1') then
+ if (input2(6)='1') then
+ part7 <= (others => '0');
+ else
+ part7 <= -(input1_buf);
+ end if;
+ else
+ if (input2(6)='1') then
+ part7 <= input1_buf;
+ else
+ part7 <= (others => '0');
+ end if;
+ end if;
+ out_temp <= part0+(part1(14 downto 0)&'0')+(part2(13 downto 0)&"00")+(part3(12 downto 0)&"000")+(part4(11 downto 0)&"0000")+(part5(10 downto 0)&"00000")+(part6(9 downto 0)&"000000")+(part7(8 downto 0)&"0000000");
+ output <= out_temp(15 downto 8);
+end if;
+end process;
+END behavior;
+
Index: all_digital_fm_receiver/trunk/circuit_tb.vhd
===================================================================
--- all_digital_fm_receiver/trunk/circuit_tb.vhd (nonexistent)
+++ all_digital_fm_receiver/trunk/circuit_tb.vhd (revision 5)
@@ -0,0 +1,64 @@
+LIBRARY ieee;
+USE ieee.std_logic_1164.ALL;
+USE IEEE.numeric_std.ALL;
+USE std.textio.ALL;
+
+ENTITY circuit_tb IS
+END circuit_tb;
+
+ARCHITECTURE behavior OF circuit_tb IS
+
+file vectors: text open read_mode is "fm.txt";
+
+
+ COMPONENT circuit
+ PORT(
+ clk : IN std_logic;
+ reset : IN std_logic;
+ fmin : IN std_logic_vector(7 downto 0);
+ dmout : OUT std_logic_vector(11 downto 0)
+ );
+ END COMPONENT;
+
+ SIGNAL clk : std_logic := '0' ;
+ SIGNAL reset : std_logic := '1';
+ SIGNAL fmin : std_logic_vector(7 downto 0);
+ SIGNAL dmout : std_logic_vector(11 downto 0);
+ constant clkperiod : time := 62.5 ns; -- 16 MHz of frequency
+
+BEGIN
+
+ uut: circuit PORT MAP(
+ clk => clk,
+ reset => reset,
+ fmin => fmin,
+ dmout => dmout
+ );
+
+ RESET_GEN: process
+ begin
+ LOOP1: for N in 0 to 3 loop
+ wait until falling_edge(CLK);
+ end loop LOOP1;
+ RESET <= '0' ;
+ end process RESET_GEN;
+
+clk <= not clk after clkperiod / 2;
+
+process
+variable vectorline : line;
+variable fmin_var : bit_vector(7 downto 0);
+begin
+while not endfile(vectors) loop
+ if (reset = '1') then
+ fmin <= (others => '0');
+ else
+ readline(vectors, vectorline);
+ read(vectorline, fmin_var);
+ fmin <= to_stdlogicvector(fmin_var);
+ end if;
+ wait for clkperiod;
+end loop;
+end process;
+
+END;
Index: all_digital_fm_receiver/trunk/loop_filter.vhd
===================================================================
--- all_digital_fm_receiver/trunk/loop_filter.vhd (nonexistent)
+++ all_digital_fm_receiver/trunk/loop_filter.vhd (revision 5)
@@ -0,0 +1,38 @@
+LIBRARY ieee;
+USE ieee.std_logic_1164.all;
+USE IEEE.numeric_std.ALL;
+
+
+
+ENTITY loop_filter IS
+-- Declarations
+ port ( CLK : in std_logic;
+ RESET : in std_logic;
+ C : in signed(7 downto 0);
+ D1 : out signed(11 downto 0);
+ D2 : out signed(11 downto 0)
+ );
+END loop_filter ;
+
+
+ARCHITECTURE behavior OF loop_filter IS
+
+signal E : signed(11 downto 0);
+signal dtemp : signed(11 downto 0);
+
+begin
+process(CLK, RESET)
+begin
+ if (RESET='1') then
+ D1 <= (others => '0');
+ D2 <= (others => '0');
+ E <= (others => '0');
+ dtemp <= (others => '0');
+ elsif rising_edge(CLK) then
+ dtemp <= (C(7)&C(7)&C(7)&C&'0') + dtemp - E;
+ E <= dtemp(11)&dtemp(11)&dtemp(11)&dtemp(11)&dtemp(11 downto 4);
+ D1 <= dtemp;
+ D2 <= dtemp(11 downto 4)&"0000";
+ end if;
+end process;
+END behavior;
Index: all_digital_fm_receiver/trunk
===================================================================
--- all_digital_fm_receiver/trunk (nonexistent)
+++ all_digital_fm_receiver/trunk (revision 5)
all_digital_fm_receiver/trunk
Property changes :
Added: svn:mergeinfo
## -0,0 +0,0 ##
Index: all_digital_fm_receiver/web_uploads
===================================================================
--- all_digital_fm_receiver/web_uploads (nonexistent)
+++ all_digital_fm_receiver/web_uploads (revision 5)
all_digital_fm_receiver/web_uploads
Property changes :
Added: svn:mergeinfo
## -0,0 +0,0 ##
Index: all_digital_fm_receiver/branches
===================================================================
--- all_digital_fm_receiver/branches (nonexistent)
+++ all_digital_fm_receiver/branches (revision 5)
all_digital_fm_receiver/branches
Property changes :
Added: svn:mergeinfo
## -0,0 +0,0 ##
Index: all_digital_fm_receiver/tags/ver-1/fmTri.txt
===================================================================
--- all_digital_fm_receiver/tags/ver-1/fmTri.txt (nonexistent)
+++ all_digital_fm_receiver/tags/ver-1/fmTri.txt (revision 5)
@@ -0,0 +1,1000 @@
+01111111
+01110110
+01011011
+00110010
+00000010
+11010001
+10101000
+10001011
+10000000
+10001000
+10100010
+11001010
+11111010
+00101011
+01010110
+01110011
+01111111
+01111001
+01100000
+00111001
+00001001
+11011000
+10101101
+10001110
+10000000
+10000110
+10011110
+11000100
+11110100
+00100101
+01010001
+01110001
+01111111
+01111011
+01100100
+00111110
+00001111
+11011101
+10110001
+10010001
+10000001
+10000100
+10011010
+11000000
+11101111
+00100000
+01001101
+01101110
+01111111
+01111100
+01100111
+01000010
+00010011
+11100010
+10110101
+10010011
+10000010
+10000011
+10011000
+10111100
+11101011
+00011101
+01001010
+01101100
+01111110
+01111101
+01101001
+01000101
+00010111
+11100101
+10110111
+10010101
+10000010
+10000011
+10010110
+10111010
+11101000
+00011010
+01001000
+01101011
+01111110
+01111101
+01101010
+01000111
+00011001
+11100111
+10111001
+10010101
+10000010
+10000010
+10010110
+10111001
+11100111
+00011001
+01000111
+01101010
+01111110
+01111110
+01101011
+01000111
+00011001
+11100111
+10111001
+10010110
+10000011
+10000010
+10010101
+10111001
+11100111
+00011001
+01000111
+01101010
+01111110
+01111110
+01101010
+01000111
+00011001
+11100111
+10111000
+10010101
+10000010
+10000011
+10010110
+10111010
+11101000
+00011010
+01001000
+01101011
+01111110
+01111101
+01101001
+01000101
+00010111
+11100101
+10110111
+10010100
+10000010
+10000011
+10010111
+10111100
+11101011
+00011101
+01001010
+01101101
+01111110
+01111101
+01101000
+01000011
+00010100
+11100010
+10110100
+10010010
+10000001
+10000100
+10011010
+10111111
+11101110
+00100001
+01001110
+01101111
+01111111
+01111011
+01100101
+00111111
+00001111
+11011101
+10110000
+10010000
+10000001
+10000101
+10011101
+11000011
+11110011
+00100110
+01010010
+01110001
+01111111
+01111010
+01100001
+00111010
+00001001
+11011000
+10101100
+10001101
+10000000
+10000111
+10100001
+11001001
+11111010
+00101100
+01010111
+01110100
+01111111
+01111000
+01011101
+00110100
+00000010
+11010001
+10100111
+10001010
+10000000
+10001010
+10100110
+11010000
+00000001
+00110011
+01011100
+01110111
+01111111
+01110101
+01010111
+00101101
+11111011
+11001010
+10100001
+10000111
+10000000
+10001101
+10101011
+11010111
+00001001
+00111001
+01100001
+01111010
+01111111
+01110010
+01010010
+00100110
+11110100
+11000100
+10011101
+10000101
+10000001
+10010000
+10110000
+11011100
+00001110
+00111110
+01100101
+01111011
+01111111
+01101111
+01001110
+00100001
+11101111
+11000000
+10011010
+10000100
+10000001
+10010010
+10110011
+11100001
+00010011
+01000010
+01100111
+01111100
+01111110
+01101101
+01001011
+00011101
+11101011
+10111100
+10011000
+10000011
+10000010
+10010100
+10110110
+11100100
+00010110
+01000101
+01101001
+01111101
+01111110
+01101100
+01001001
+00011011
+11101001
+10111010
+10010110
+10000011
+10000010
+10010101
+10111000
+11100110
+00011000
+01000110
+01101010
+01111101
+01111110
+01101011
+01001000
+00011001
+11100111
+10111001
+10010110
+10000011
+10000010
+10010101
+10111001
+11100111
+00011001
+01000111
+01101010
+01111101
+01111110
+01101011
+01000111
+00011001
+11100111
+10111001
+10010110
+10000011
+10000010
+10010101
+10111000
+11100110
+00011000
+01000110
+01101010
+01111101
+01111110
+01101011
+01001000
+00011010
+11101001
+10111010
+10010111
+10000011
+10000010
+10010100
+10110111
+11100100
+00010110
+01000101
+01101001
+01111101
+01111110
+01101100
+01001010
+00011101
+11101011
+10111101
+10011000
+10000011
+10000010
+10010011
+10110100
+11100001
+00010011
+01000010
+01100111
+01111100
+01111111
+01101110
+01001101
+00100000
+11101111
+11000000
+10011011
+10000100
+10000001
+10010001
+10110001
+11011101
+00001111
+00111110
+01100100
+01111011
+01111111
+01110001
+01010001
+00100101
+11110100
+11000100
+10011110
+10000110
+10000000
+10001110
+10101101
+11011000
+00001001
+00111001
+01100000
+01111001
+01111111
+01110011
+01010110
+00101011
+11111010
+11001010
+10100010
+10001000
+10000000
+10001011
+10101000
+11010001
+00000010
+00110010
+01011011
+01110110
+01111111
+01110110
+01011011
+00110010
+00000010
+11010001
+10101000
+10001011
+10000000
+10001000
+10100010
+11001010
+11111010
+00101011
+01010110
+01110011
+01111111
+01111001
+01100000
+00111001
+00001001
+11011000
+10101101
+10001110
+10000000
+10000110
+10011110
+11000100
+11110100
+00100101
+01010001
+01110001
+01111111
+01111011
+01100100
+00111110
+00001111
+11011101
+10110001
+10010001
+10000001
+10000100
+10011010
+11000000
+11101111
+00100000
+01001101
+01101110
+01111111
+01111100
+01100111
+01000010
+00010011
+11100010
+10110101
+10010011
+10000010
+10000011
+10011000
+10111100
+11101011
+00011101
+01001010
+01101100
+01111110
+01111101
+01101001
+01000101
+00010111
+11100101
+10110111
+10010101
+10000010
+10000011
+10010110
+10111010
+11101000
+00011010
+01001000
+01101011
+01111110
+01111101
+01101010
+01000111
+00011001
+11100111
+10111001
+10010101
+10000010
+10000010
+10010110
+10111001
+11100111
+00011001
+01000111
+01101010
+01111110
+01111110
+01101011
+01000111
+00011001
+11100111
+10111001
+10010110
+10000011
+10000010
+10010101
+10111001
+11100111
+00011001
+01000111
+01101010
+01111110
+01111110
+01101010
+01000111
+00011001
+11100111
+10111000
+10010101
+10000010
+10000011
+10010110
+10111010
+11101000
+00011010
+01001000
+01101011
+01111110
+01111101
+01101001
+01000101
+00010111
+11100101
+10110111
+10010100
+10000010
+10000011
+10010111
+10111100
+11101011
+00011101
+01001010
+01101101
+01111110
+01111101
+01101000
+01000011
+00010100
+11100010
+10110100
+10010010
+10000001
+10000100
+10011010
+10111111
+11101110
+00100001
+01001110
+01101111
+01111111
+01111011
+01100101
+00111111
+00001111
+11011101
+10110000
+10010000
+10000001
+10000101
+10011101
+11000011
+11110011
+00100110
+01010010
+01110001
+01111111
+01111010
+01100001
+00111010
+00001001
+11011000
+10101100
+10001101
+10000000
+10000111
+10100001
+11001001
+11111010
+00101100
+01010111
+01110100
+01111111
+01111000
+01011101
+00110100
+00000010
+11010001
+10100111
+10001010
+10000000
+10001010
+10100110
+11010000
+00000001
+00110011
+01011100
+01110111
+01111111
+01110101
+01010111
+00101101
+11111011
+11001010
+10100001
+10000111
+10000000
+10001101
+10101011
+11010111
+00001001
+00111001
+01100001
+01111010
+01111111
+01110010
+01010010
+00100110
+11110100
+11000100
+10011101
+10000101
+10000001
+10010000
+10110000
+11011100
+00001110
+00111110
+01100101
+01111011
+01111111
+01101111
+01001110
+00100001
+11101111
+11000000
+10011010
+10000100
+10000001
+10010010
+10110011
+11100001
+00010011
+01000010
+01100111
+01111100
+01111110
+01101101
+01001011
+00011101
+11101011
+10111100
+10011000
+10000011
+10000010
+10010100
+10110110
+11100100
+00010110
+01000101
+01101001
+01111101
+01111110
+01101100
+01001001
+00011011
+11101001
+10111010
+10010110
+10000011
+10000010
+10010101
+10111000
+11100110
+00011000
+01000110
+01101010
+01111101
+01111110
+01101011
+01001000
+00011001
+11100111
+10111001
+10010110
+10000011
+10000010
+10010101
+10111001
+11100111
+00011001
+01000111
+01101010
+01111101
+01111110
+01101011
+01000111
+00011001
+11100111
+10111001
+10010110
+10000011
+10000010
+10010101
+10111000
+11100110
+00011000
+01000110
+01101010
+01111101
+01111110
+01101011
+01001000
+00011010
+11101001
+10111010
+10010111
+10000011
+10000010
+10010100
+10110111
+11100100
+00010110
+01000101
+01101001
+01111101
+01111110
+01101100
+01001010
+00011101
+11101011
+10111101
+10011000
+10000011
+10000010
+10010011
+10110100
+11100001
+00010011
+01000010
+01100111
+01111100
+01111111
+01101110
+01001101
+00100000
+11101111
+11000000
+10011011
+10000100
+10000001
+10010001
+10110001
+11011101
+00001111
+00111110
+01100100
+01111011
+01111111
+01110001
+01010001
+00100101
+11110100
+11000100
+10011110
+10000110
+10000000
+10001110
+10101101
+11011000
+00001001
+00111001
+01100000
+01111001
+01111111
+01110011
+01010110
+00101011
+11111010
+11001010
+10100010
+10001000
+10000000
+10001011
+10101000
+11010001
+00000010
+00110010
+01011011
+01110110
+01111111
+01110110
+01011011
+00110010
+00000010
+11010001
+10101000
+10001011
+10000000
+10001000
+10100010
+11001010
+11111010
+00101011
+01010110
+01110011
+01111111
+01111001
+01100000
+00111001
+00001001
+11011000
+10101101
+10001110
+10000000
+10000110
+10011110
+11000100
+11110100
+00100101
+01010001
+01110001
+01111111
+01111011
+01100100
+00111110
+00001111
+11011101
+10110001
+10010001
+10000001
+10000100
+10011010
+11000000
+11101111
+00100000
+01001101
+01101110
+01111111
+01111100
+01100111
+01000010
+00010011
+11100010
+10110101
+10010011
+10000010
+10000011
+10011000
+10111100
+11101011
+00011101
+01001010
+01101100
+01111110
+01111101
+01101001
+01000101
+00010111
+11100101
+10110111
+10010101
+10000010
+10000011
+10010110
+10111010
+11101000
+00011010
+01001000
+01101011
+01111110
+01111101
+01101010
+01000111
+00011001
+11100111
+10111001
+10010101
+10000010
+10000010
+10010110
+10111001
+11100111
+00011001
+01000111
+01101010
+01111110
+01111110
+01101011
+01000111
+00011001
+11100111
+10111001
+10010110
+10000011
+10000010
+10010101
+10111001
+11100111
+00011001
+01000111
+01101010
+01111110
+01111110
+01101010
+01000111
+00011001
+11100111
+10111000
+10010101
+10000010
+10000011
+10010110
+10111010
+11101000
+00011010
+01001000
+01101011
+01111110
+01111101
+01101001
+01000101
+00010111
+11100101
+10110111
+10010100
+10000010
+10000011
+10010111
+10111100
+11101011
+00011101
+01001010
+01101101
+01111110
+01111101
+01101000
+01000011
+00010100
+11100010
+10110100
+10010010
+10000001
+10000100
+10011010
+10111111
+11101110
+00100001
+01001110
+01101111
+01111111
+01111011
+01100101
+00111111
+00001111
+11011101
+10110000
+10010000
+10000001
+10000101
+10011101
+11000011
+11110011
+00100110
+01010010
+01110001
+01111111
+01111010
+01100001
+00111010
+00001001
+11011000
+10101100
+10001101
+10000000
+10000111
+10100001
+11001001
+11111010
+00101100
+01010111
+01110100
+01111111
+01111000
+01011101
+00110100
+00000010
+11010001
+10100111
+10001010
Index: all_digital_fm_receiver/tags/ver-1/nco.vhd
===================================================================
--- all_digital_fm_receiver/tags/ver-1/nco.vhd (nonexistent)
+++ all_digital_fm_receiver/tags/ver-1/nco.vhd (revision 5)
@@ -0,0 +1,308 @@
+LIBRARY ieee;
+USE ieee.std_logic_1164.all;
+USE IEEE.numeric_std.ALL;
+
+
+
+ENTITY nco IS
+-- Declarations
+ port ( clk : in std_logic;
+ reset : in std_logic;
+ din : in signed(11 downto 0);
+ dout : out signed(7 downto 0)
+ );
+END nco ;
+
+-- hds interface_end
+ARCHITECTURE behavior OF nco IS
+type vectype is array (0 to 256) of signed(7 downto 0);
+-- ROM cosrom
+constant cosrom : vectype := (
+0 => "01111111",
+1 => "01111111",
+2 => "01111111",
+3 => "01111111",
+4 => "01111111",
+5 => "01111111",
+6 => "01111111",
+7 => "01111111",
+8 => "01111111",
+9 => "01111111",
+10 => "01111111",
+11 => "01111111",
+12 => "01111111",
+13 => "01111111",
+14 => "01111111",
+15 => "01111111",
+16 => "01111111",
+17 => "01111111",
+18 => "01111111",
+19 => "01111111",
+20 => "01111111",
+21 => "01111111",
+22 => "01111111",
+23 => "01111111",
+24 => "01111111",
+25 => "01111110",
+26 => "01111110",
+27 => "01111110",
+28 => "01111110",
+29 => "01111110",
+30 => "01111110",
+31 => "01111110",
+32 => "01111110",
+33 => "01111101",
+34 => "01111101",
+35 => "01111101",
+36 => "01111101",
+37 => "01111101",
+38 => "01111101",
+39 => "01111100",
+40 => "01111100",
+41 => "01111100",
+42 => "01111100",
+43 => "01111100",
+44 => "01111011",
+45 => "01111011",
+46 => "01111011",
+47 => "01111011",
+48 => "01111010",
+49 => "01111010",
+50 => "01111010",
+51 => "01111010",
+52 => "01111010",
+53 => "01111001",
+54 => "01111001",
+55 => "01111001",
+56 => "01111001",
+57 => "01111000",
+58 => "01111000",
+59 => "01111000",
+60 => "01110111",
+61 => "01110111",
+62 => "01110111",
+63 => "01110111",
+64 => "01110110",
+65 => "01110110",
+66 => "01110110",
+67 => "01110101",
+68 => "01110101",
+69 => "01110101",
+70 => "01110100",
+71 => "01110100",
+72 => "01110100",
+73 => "01110011",
+74 => "01110011",
+75 => "01110011",
+76 => "01110010",
+77 => "01110010",
+78 => "01110010",
+79 => "01110001",
+80 => "01110001",
+81 => "01110001",
+82 => "01110000",
+83 => "01110000",
+84 => "01101111",
+85 => "01101111",
+86 => "01101111",
+87 => "01101110",
+88 => "01101110",
+89 => "01101101",
+90 => "01101101",
+91 => "01101101",
+92 => "01101100",
+93 => "01101100",
+94 => "01101011",
+95 => "01101011",
+96 => "01101010",
+97 => "01101010",
+98 => "01101010",
+99 => "01101001",
+100 => "01101001",
+101 => "01101000",
+102 => "01101000",
+103 => "01100111",
+104 => "01100111",
+105 => "01100110",
+106 => "01100110",
+107 => "01100101",
+108 => "01100101",
+109 => "01100100",
+110 => "01100100",
+111 => "01100011",
+112 => "01100011",
+113 => "01100010",
+114 => "01100010",
+115 => "01100001",
+116 => "01100001",
+117 => "01100000",
+118 => "01100000",
+119 => "01011111",
+120 => "01011111",
+121 => "01011110",
+122 => "01011110",
+123 => "01011101",
+124 => "01011101",
+125 => "01011100",
+126 => "01011100",
+127 => "01011011",
+128 => "01011011",
+129 => "01011010",
+130 => "01011001",
+131 => "01011001",
+132 => "01011000",
+133 => "01011000",
+134 => "01010111",
+135 => "01010111",
+136 => "01010110",
+137 => "01010101",
+138 => "01010101",
+139 => "01010100",
+140 => "01010100",
+141 => "01010011",
+142 => "01010010",
+143 => "01010010",
+144 => "01010001",
+145 => "01010001",
+146 => "01010000",
+147 => "01001111",
+148 => "01001111",
+149 => "01001110",
+150 => "01001110",
+151 => "01001101",
+152 => "01001100",
+153 => "01001100",
+154 => "01001011",
+155 => "01001010",
+156 => "01001010",
+157 => "01001001",
+158 => "01001000",
+159 => "01001000",
+160 => "01000111",
+161 => "01000111",
+162 => "01000110",
+163 => "01000101",
+164 => "01000101",
+165 => "01000100",
+166 => "01000011",
+167 => "01000011",
+168 => "01000010",
+169 => "01000001",
+170 => "01000001",
+171 => "01000000",
+172 => "00111111",
+173 => "00111110",
+174 => "00111110",
+175 => "00111101",
+176 => "00111100",
+177 => "00111100",
+178 => "00111011",
+179 => "00111010",
+180 => "00111010",
+181 => "00111001",
+182 => "00111000",
+183 => "00111000",
+184 => "00110111",
+185 => "00110110",
+186 => "00110101",
+187 => "00110101",
+188 => "00110100",
+189 => "00110011",
+190 => "00110011",
+191 => "00110010",
+192 => "00110001",
+193 => "00110000",
+194 => "00110000",
+195 => "00101111",
+196 => "00101110",
+197 => "00101101",
+198 => "00101101",
+199 => "00101100",
+200 => "00101011",
+201 => "00101010",
+202 => "00101010",
+203 => "00101001",
+204 => "00101000",
+205 => "00100111",
+206 => "00100111",
+207 => "00100110",
+208 => "00100101",
+209 => "00100100",
+210 => "00100100",
+211 => "00100011",
+212 => "00100010",
+213 => "00100001",
+214 => "00100001",
+215 => "00100000",
+216 => "00011111",
+217 => "00011110",
+218 => "00011110",
+219 => "00011101",
+220 => "00011100",
+221 => "00011011",
+222 => "00011011",
+223 => "00011010",
+224 => "00011001",
+225 => "00011000",
+226 => "00011000",
+227 => "00010111",
+228 => "00010110",
+229 => "00010101",
+230 => "00010100",
+231 => "00010100",
+232 => "00010011",
+233 => "00010010",
+234 => "00010001",
+235 => "00010001",
+236 => "00010000",
+237 => "00001111",
+238 => "00001110",
+239 => "00001101",
+240 => "00001101",
+241 => "00001100",
+242 => "00001011",
+243 => "00001010",
+244 => "00001010",
+245 => "00001001",
+246 => "00001000",
+247 => "00000111",
+248 => "00000110",
+249 => "00000110",
+250 => "00000101",
+251 => "00000100",
+252 => "00000011",
+253 => "00000010",
+254 => "00000010",
+255 => "00000001",
+256 => "00000000");
+
+signal dtemp : unsigned(17 downto 0);
+signal din_buf : signed(17 downto 0);
+signal dtemp1 : integer;
+constant offset : unsigned(17 downto 0) := "000100000000000000";
+
+begin
+
+process(CLK, RESET)
+begin
+ if (RESET='1') then
+ dout <= (others => '0');
+ din_buf <= (others => '0');
+ dtemp <= (others => '0');
+ dtemp1 <= 0;
+ elsif rising_edge(CLK) then
+ din_buf <= din(11)&din(11)&din(11)&din(11)&din(11)&din(11)&din;
+ dtemp <= dtemp + unsigned(din_buf) + offset;
+ dtemp1 <= to_integer(dtemp(17 downto 8));
+ if (dtemp1 >= 0) and (dtemp1 < 257) then
+ dout <= cosrom(dtemp1);
+ elsif (dtemp1 >= 257) and (dtemp1 < 513) then
+ dout <= -cosrom(512-dtemp1);
+ elsif (dtemp1 >= 513) and (dtemp1 < 769) then
+ dout <= -cosrom(dtemp1-512);
+ else
+ dout <= cosrom(1024-dtemp1);
+ end if;
+ end if;
+end process;
+END behavior;
Index: all_digital_fm_receiver/tags/ver-1/fir.vhd
===================================================================
--- all_digital_fm_receiver/tags/ver-1/fir.vhd (nonexistent)
+++ all_digital_fm_receiver/tags/ver-1/fir.vhd (revision 5)
@@ -0,0 +1,64 @@
+LIBRARY ieee;
+USE IEEE.std_logic_1164.all;
+USE IEEE.numeric_std.ALL;
+
+
+entity FIR is
+port(
+ clock : in std_logic;
+ reset : in std_logic;
+ data_in : in signed(11 downto 0);
+ data_out : out std_logic_vector(11 downto 0)
+);
+end FIR;
+
+architecture behavior of FIR is
+
+signal d0,d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,d13,d14,d15 : signed(15 downto 0);
+signal sum : signed(15 downto 0);
+
+begin
+
+process(clock,reset)
+begin
+ if (reset = '1') then
+ d0 <= (others => '0');
+ d1 <= (others => '0');
+ d2 <= (others => '0');
+ d3 <= (others => '0');
+ d4 <= (others => '0');
+ d5 <= (others => '0');
+ d6 <= (others => '0');
+ d7 <= (others => '0');
+ d8 <= (others => '0');
+ d9 <= (others => '0');
+ d10 <= (others => '0');
+ d11 <= (others => '0');
+ d12 <= (others => '0');
+ d13 <= (others => '0');
+ d14 <= (others => '0');
+ d15 <= (others => '0');
+ sum <= (others => '0');
+ data_out <= (others => '0');
+ ELSIF rising_edge(clock) THEN
+ d0 <= data_in(11)&data_in(11)&data_in(11)&data_in(11)&data_in;
+ d1 <= d0;
+ d2 <= d1;
+ d3 <= d2;
+ d4 <= d3;
+ d5 <= d4;
+ d6 <= d5;
+ d7 <= d6;
+ d8 <= d7;
+ d9 <= d8;
+ d10 <= d9;
+ d11 <= d10;
+ d12 <= d11;
+ d13 <= d12;
+ d14 <= d13;
+ d15 <= d14;
+ sum <= (d0+d1+d2+d3+d4+d5+d6+d7+d8+d9+d10+d11+d12+d13+d14+d15) srl 4;
+ data_out <= std_logic_vector(sum(11 downto 0));
+ end if;
+end process;
+end behavior;
\ No newline at end of file
Index: all_digital_fm_receiver/tags/ver-1/fm.txt
===================================================================
--- all_digital_fm_receiver/tags/ver-1/fm.txt (nonexistent)
+++ all_digital_fm_receiver/tags/ver-1/fm.txt (revision 5)
@@ -0,0 +1,1000 @@
+01111111
+01110110
+01011010
+00110000
+11111110
+11001101
+10100011
+10001000
+10000000
+10001100
+10101001
+11010100
+00000110
+00110111
+01011111
+01111001
+01111111
+01110011
+01010100
+00101000
+11110110
+11000101
+10011110
+10000110
+10000001
+10001111
+10101111
+11011100
+00001110
+00111110
+01100101
+01111011
+01111111
+01101111
+01001110
+00100000
+11101110
+10111110
+10011001
+10000100
+10000010
+10010011
+10110110
+11100100
+00010110
+01000101
+01101001
+01111101
+01111110
+01101011
+01000111
+00011000
+11100110
+10111000
+10010100
+10000010
+10000011
+10011000
+10111100
+11101011
+00011110
+01001100
+01101110
+01111111
+01111100
+01100110
+01000000
+00010001
+11011110
+10110001
+10010000
+10000001
+10000101
+10011100
+11000011
+11110011
+00100110
+01010010
+01110010
+01111111
+01111010
+01100001
+00111001
+00001001
+11010111
+10101011
+10001101
+10000000
+10001000
+10100010
+11001010
+11111011
+00101101
+01011000
+01110101
+01111111
+01110111
+01011100
+00110010
+00000001
+11001111
+10100101
+10001001
+10000000
+10001011
+10100111
+11010010
+00000100
+00110101
+01011110
+01111000
+01111111
+01110100
+01010110
+00101010
+11111000
+11001000
+10100000
+10000111
+10000000
+10001110
+10101101
+11011001
+00001100
+00111100
+01100011
+01111011
+01111111
+01110000
+01010000
+00100011
+11110000
+11000001
+10011011
+10000100
+10000001
+10010010
+10110100
+11100001
+00010100
+01000011
+01101000
+01111101
+01111110
+01101100
+01001001
+00011011
+11101001
+10111010
+10010110
+10000010
+10000011
+10010110
+10111010
+11101001
+00011011
+01001010
+01101100
+01111110
+01111101
+01101000
+01000010
+00010011
+11100001
+10110011
+10010010
+10000001
+10000100
+10011011
+11000001
+11110001
+00100011
+01010000
+01110000
+01111111
+01111010
+01100011
+00111011
+00001011
+11011001
+10101101
+10001110
+10000000
+10000111
+10100000
+11001000
+11111001
+00101011
+01010110
+01110100
+01111111
+01111000
+01011101
+00110100
+00000011
+11010001
+10100111
+10001010
+10000000
+10001010
+10100101
+11001111
+11111111
+00110000
+01011001
+01110101
+01111111
+01111000
+01011101
+00110101
+00000101
+11010100
+10101010
+10001100
+10000000
+10000111
+10100000
+11000111
+11110111
+00101000
+01010011
+01110010
+01111111
+01111010
+01100011
+00111100
+00001101
+11011100
+10110000
+10010000
+10000001
+10000101
+10011011
+11000000
+11101111
+00100000
+01001101
+01101110
+01111111
+01111100
+01101000
+01000011
+00010101
+11100100
+10110110
+10010100
+10000010
+10000011
+10010110
+10111001
+11100111
+00011000
+01000110
+01101010
+01111101
+01111110
+01101100
+01001010
+00011101
+11101011
+10111101
+10011001
+10000100
+10000001
+10010010
+10110011
+11011111
+00010001
+00111111
+01100101
+01111011
+01111111
+01110000
+01010000
+00100101
+11110011
+11000100
+10011110
+10000110
+10000000
+10001110
+10101100
+11010111
+00001001
+00111000
+01100000
+01111001
+01111111
+01110100
+01010111
+00101100
+11111011
+11001011
+10100011
+10001001
+10000000
+10001011
+10100111
+11010000
+00000001
+00110001
+01011010
+01110110
+01111111
+01110111
+01011100
+00110100
+00000100
+11010011
+10101001
+10001100
+10000000
+10001000
+10100001
+11001001
+11111000
+00101001
+01010100
+01110011
+01111111
+01111010
+01100010
+00111011
+00001100
+11011010
+10101111
+10001111
+10000001
+10000101
+10011100
+11000001
+11110000
+00100010
+01001110
+01101111
+01111111
+01111100
+01100111
+01000010
+00010100
+11100010
+10110101
+10010011
+10000010
+10000011
+10010111
+10111011
+11101001
+00011010
+01001000
+01101010
+01111101
+01111110
+01101011
+01001001
+00011011
+11101010
+10111100
+10011000
+10000011
+10000010
+10010011
+10110100
+11100001
+00010010
+01000001
+01100110
+01111100
+01111111
+01101111
+01001111
+00100011
+11110010
+11000011
+10011101
+10000110
+10000001
+10001111
+10101110
+11011001
+00001010
+00111010
+01100001
+01111001
+01111111
+01110011
+01010101
+00101011
+11111010
+11001010
+10100010
+10001000
+10000000
+10001011
+10101000
+11010001
+00000010
+00110010
+01011011
+01110110
+01111111
+01110110
+01011010
+00110000
+11111110
+11001101
+10100011
+10001000
+10000000
+10001100
+10101001
+11010100
+00000110
+00110111
+01011111
+01111001
+01111111
+01110011
+01010100
+00101000
+11110110
+11000101
+10011110
+10000110
+10000001
+10001111
+10101111
+11011100
+00001110
+00111110
+01100101
+01111011
+01111111
+01101111
+01001110
+00100000
+11101110
+10111110
+10011001
+10000100
+10000010
+10010011
+10110110
+11100100
+00010110
+01000101
+01101001
+01111101
+01111110
+01101011
+01000111
+00011000
+11100110
+10111000
+10010100
+10000010
+10000011
+10011000
+10111100
+11101011
+00011110
+01001100
+01101110
+01111111
+01111100
+01100110
+01000000
+00010001
+11011110
+10110001
+10010000
+10000001
+10000101
+10011100
+11000011
+11110011
+00100110
+01010010
+01110010
+01111111
+01111010
+01100001
+00111001
+00001001
+11010111
+10101011
+10001101
+10000000
+10001000
+10100010
+11001010
+11111011
+00101101
+01011000
+01110101
+01111111
+01110111
+01011100
+00110010
+00000001
+11001111
+10100101
+10001001
+10000000
+10001011
+10100111
+11010010
+00000100
+00110101
+01011110
+01111000
+01111111
+01110100
+01010110
+00101010
+11111000
+11001000
+10100000
+10000111
+10000000
+10001110
+10101101
+11011001
+00001100
+00111100
+01100011
+01111011
+01111111
+01110000
+01010000
+00100011
+11110000
+11000001
+10011011
+10000100
+10000001
+10010010
+10110100
+11100001
+00010100
+01000011
+01101000
+01111101
+01111110
+01101100
+01001001
+00011011
+11101001
+10111010
+10010110
+10000010
+10000011
+10010110
+10111010
+11101001
+00011011
+01001010
+01101100
+01111110
+01111101
+01101000
+01000010
+00010011
+11100001
+10110011
+10010010
+10000001
+10000100
+10011011
+11000001
+11110001
+00100011
+01010000
+01110000
+01111111
+01111010
+01100011
+00111011
+00001011
+11011001
+10101101
+10001110
+10000000
+10000111
+10100000
+11001000
+11111001
+00101011
+01010110
+01110100
+01111111
+01111000
+01011101
+00110100
+00000011
+11010001
+10100111
+10001010
+10000000
+10001010
+10100101
+11001111
+11111111
+00110000
+01011001
+01110101
+01111111
+01111000
+01011101
+00110101
+00000101
+11010100
+10101010
+10001100
+10000000
+10000111
+10100000
+11000111
+11110111
+00101000
+01010011
+01110010
+01111111
+01111010
+01100011
+00111100
+00001101
+11011100
+10110000
+10010000
+10000001
+10000101
+10011011
+11000000
+11101111
+00100000
+01001101
+01101110
+01111111
+01111100
+01101000
+01000011
+00010101
+11100100
+10110110
+10010100
+10000010
+10000011
+10010110
+10111001
+11100111
+00011000
+01000110
+01101010
+01111101
+01111110
+01101100
+01001010
+00011101
+11101011
+10111101
+10011001
+10000100
+10000001
+10010010
+10110011
+11011111
+00010001
+00111111
+01100101
+01111011
+01111111
+01110000
+01010000
+00100101
+11110011
+11000100
+10011110
+10000110
+10000000
+10001110
+10101100
+11010111
+00001001
+00111000
+01100000
+01111001
+01111111
+01110100
+01010111
+00101100
+11111011
+11001011
+10100011
+10001001
+10000000
+10001011
+10100111
+11010000
+00000001
+00110001
+01011010
+01110110
+01111111
+01110111
+01011100
+00110100
+00000100
+11010011
+10101001
+10001100
+10000000
+10001000
+10100001
+11001001
+11111000
+00101001
+01010100
+01110011
+01111111
+01111010
+01100010
+00111011
+00001100
+11011010
+10101111
+10001111
+10000001
+10000101
+10011100
+11000001
+11110000
+00100010
+01001110
+01101111
+01111111
+01111100
+01100111
+01000010
+00010100
+11100010
+10110101
+10010011
+10000010
+10000011
+10010111
+10111011
+11101001
+00011010
+01001000
+01101010
+01111101
+01111110
+01101011
+01001001
+00011011
+11101010
+10111100
+10011000
+10000011
+10000010
+10010011
+10110100
+11100001
+00010010
+01000001
+01100110
+01111100
+01111111
+01101111
+01001111
+00100011
+11110010
+11000011
+10011101
+10000110
+10000001
+10001111
+10101110
+11011001
+00001010
+00111010
+01100001
+01111001
+01111111
+01110011
+01010101
+00101011
+11111010
+11001010
+10100010
+10001000
+10000000
+10001011
+10101000
+11010001
+00000010
+00110010
+01011011
+01110110
+01111111
+01110110
+01011010
+00110000
+11111110
+11001101
+10100011
+10001000
+10000000
+10001100
+10101001
+11010100
+00000110
+00110111
+01011111
+01111001
+01111111
+01110011
+01010100
+00101000
+11110110
+11000101
+10011110
+10000110
+10000001
+10001111
+10101111
+11011100
+00001110
+00111110
+01100101
+01111011
+01111111
+01101111
+01001110
+00100000
+11101110
+10111110
+10011001
+10000100
+10000010
+10010011
+10110110
+11100100
+00010110
+01000101
+01101001
+01111101
+01111110
+01101011
+01000111
+00011000
+11100110
+10111000
+10010100
+10000010
+10000011
+10011000
+10111100
+11101011
+00011110
+01001100
+01101110
+01111111
+01111100
+01100110
+01000000
+00010001
+11011110
+10110001
+10010000
+10000001
+10000101
+10011100
+11000011
+11110011
+00100110
+01010010
+01110010
+01111111
+01111010
+01100001
+00111001
+00001001
+11010111
+10101011
+10001101
+10000000
+10001000
+10100010
+11001010
+11111011
+00101101
+01011000
+01110101
+01111111
+01110111
+01011100
+00110010
+00000001
+11001111
+10100101
+10001001
+10000000
+10001011
+10100111
+11010010
+00000100
+00110101
+01011110
+01111000
+01111111
+01110100
+01010110
+00101010
+11111000
+11001000
+10100000
+10000111
+10000000
+10001110
+10101101
+11011001
+00001100
+00111100
+01100011
+01111011
+01111111
+01110000
+01010000
+00100011
+11110000
+11000001
+10011011
+10000100
+10000001
+10010010
+10110100
+11100001
+00010100
+01000011
+01101000
+01111101
+01111110
+01101100
+01001001
+00011011
+11101001
+10111010
+10010110
+10000010
+10000011
+10010110
+10111010
+11101001
+00011011
+01001010
+01101100
+01111110
+01111101
+01101000
+01000010
+00010011
+11100001
+10110011
+10010010
+10000001
+10000100
+10011011
+11000001
+11110001
+00100011
+01010000
+01110000
+01111111
+01111010
+01100011
+00111011
+00001011
+11011001
+10101101
+10001110
+10000000
+10000111
+10100000
+11001000
+11111001
+00101011
+01010110
+01110100
+01111111
+01111000
+01011101
+00110100
+00000011
+11010001
+10100111
+10001010
+10000000
+10001010
Index: all_digital_fm_receiver/tags/ver-1/circuit.vhd
===================================================================
--- all_digital_fm_receiver/tags/ver-1/circuit.vhd (nonexistent)
+++ all_digital_fm_receiver/tags/ver-1/circuit.vhd (revision 5)
@@ -0,0 +1,101 @@
+LIBRARY ieee;
+USE ieee.std_logic_1164.all;
+USE IEEE.numeric_std.ALL;
+
+
+
+ENTITY circuit IS
+-- Declarations
+ PORT(
+ clk : IN std_logic;
+ reset : IN std_logic;
+ fmin : IN std_logic_vector(7 downto 0);
+ dmout : OUT std_logic_vector (11 DOWNTO 0)
+ );
+END circuit ;
+
+
+ARCHITECTURE behavior OF circuit IS
+
+ -- Architecture declarations
+
+ -- Internal signal declarations
+ SIGNAL d1 : signed(11 DOWNTO 0);
+ SIGNAL d2 : signed(11 DOWNTO 0);
+ SIGNAL dout : signed(7 DOWNTO 0);
+ SIGNAL output : signed(7 DOWNTO 0);
+
+
+
+ -- Component Declarations
+ COMPONENT multiplier
+ PORT (
+ clk : IN std_logic ;
+ reset : IN std_logic ;
+ input1 : IN std_logic_vector (7 DOWNTO 0);
+ input2 : IN signed (7 DOWNTO 0);
+ output : OUT signed (7 DOWNTO 0)
+ );
+ END COMPONENT;
+ COMPONENT fir
+ PORT (
+ clock : IN std_logic ;
+ reset : IN std_logic ;
+ data_in : IN signed (11 DOWNTO 0);
+ data_out : OUT std_logic_vector (11 DOWNTO 0)
+ );
+ END COMPONENT;
+ COMPONENT loop_filter
+ PORT (
+ clk : IN std_logic ;
+ reset : IN std_logic ;
+ c : IN signed (7 DOWNTO 0);
+ d1 : OUT signed (11 DOWNTO 0);
+ d2 : OUT signed (11 DOWNTO 0)
+ );
+ END COMPONENT;
+ COMPONENT nco
+ PORT (
+ clk : IN std_logic ;
+ reset : IN std_logic ;
+ din : IN signed (11 DOWNTO 0);
+ dout : OUT signed (7 DOWNTO 0)
+ );
+ END COMPONENT;
+
+
+BEGIN
+ -- Instance port mappings.
+ I1 : multiplier
+ PORT MAP (
+ clk => clk,
+ reset => reset,
+ input1 => fmin,
+ input2 => dout,
+ output => output
+ );
+ I4 : fir
+ PORT MAP (
+ clock => clk,
+ reset => reset,
+ data_in => d1,
+ data_out => dmout
+ );
+ I3 : loop_filter
+ PORT MAP (
+ clk => clk,
+ reset => reset,
+ c => output,
+ d1 => d1,
+ d2 => d2
+ );
+ I2 : nco
+ PORT MAP (
+ clk => clk,
+ reset => reset,
+ din => d2,
+ dout => dout
+ );
+
+
+ END behavior;
Index: all_digital_fm_receiver/tags/ver-1/cos.txt
===================================================================
--- all_digital_fm_receiver/tags/ver-1/cos.txt (nonexistent)
+++ all_digital_fm_receiver/tags/ver-1/cos.txt (revision 5)
@@ -0,0 +1,1024 @@
+01111111
+01111111
+01111111
+01111111
+01111111
+01111111
+01111111
+01111111
+01111111
+01111111
+01111111
+01111111
+01111111
+01111111
+01111111
+01111111
+01111111
+01111111
+01111111
+01111111
+01111111
+01111111
+01111111
+01111111
+01111111
+01111110
+01111110
+01111110
+01111110
+01111110
+01111110
+01111110
+01111110
+01111101
+01111101
+01111101
+01111101
+01111101
+01111101
+01111100
+01111100
+01111100
+01111100
+01111100
+01111011
+01111011
+01111011
+01111011
+01111010
+01111010
+01111010
+01111010
+01111010
+01111001
+01111001
+01111001
+01111001
+01111000
+01111000
+01111000
+01110111
+01110111
+01110111
+01110111
+01110110
+01110110
+01110110
+01110101
+01110101
+01110101
+01110100
+01110100
+01110100
+01110011
+01110011
+01110011
+01110010
+01110010
+01110010
+01110001
+01110001
+01110001
+01110000
+01110000
+01101111
+01101111
+01101111
+01101110
+01101110
+01101101
+01101101
+01101101
+01101100
+01101100
+01101011
+01101011
+01101010
+01101010
+01101010
+01101001
+01101001
+01101000
+01101000
+01100111
+01100111
+01100110
+01100110
+01100101
+01100101
+01100100
+01100100
+01100011
+01100011
+01100010
+01100010
+01100001
+01100001
+01100000
+01100000
+01011111
+01011111
+01011110
+01011110
+01011101
+01011101
+01011100
+01011100
+01011011
+01011011
+01011010
+01011001
+01011001
+01011000
+01011000
+01010111
+01010111
+01010110
+01010101
+01010101
+01010100
+01010100
+01010011
+01010010
+01010010
+01010001
+01010001
+01010000
+01001111
+01001111
+01001110
+01001110
+01001101
+01001100
+01001100
+01001011
+01001010
+01001010
+01001001
+01001000
+01001000
+01000111
+01000111
+01000110
+01000101
+01000101
+01000100
+01000011
+01000011
+01000010
+01000001
+01000001
+01000000
+00111111
+00111110
+00111110
+00111101
+00111100
+00111100
+00111011
+00111010
+00111010
+00111001
+00111000
+00111000
+00110111
+00110110
+00110101
+00110101
+00110100
+00110011
+00110011
+00110010
+00110001
+00110000
+00110000
+00101111
+00101110
+00101101
+00101101
+00101100
+00101011
+00101010
+00101010
+00101001
+00101000
+00100111
+00100111
+00100110
+00100101
+00100100
+00100100
+00100011
+00100010
+00100001
+00100001
+00100000
+00011111
+00011110
+00011110
+00011101
+00011100
+00011011
+00011011
+00011010
+00011001
+00011000
+00011000
+00010111
+00010110
+00010101
+00010100
+00010100
+00010011
+00010010
+00010001
+00010001
+00010000
+00001111
+00001110
+00001101
+00001101
+00001100
+00001011
+00001010
+00001010
+00001001
+00001000
+00000111
+00000110
+00000110
+00000101
+00000100
+00000011
+00000010
+00000010
+00000001
+00000000
+11111111
+11111111
+11111110
+11111101
+11111100
+11111011
+11111011
+11111010
+11111001
+11111000
+11110111
+11110111
+11110110
+11110101
+11110100
+11110100
+11110011
+11110010
+11110001
+11110000
+11110000
+11101111
+11101110
+11101101
+11101101
+11101100
+11101011
+11101010
+11101001
+11101001
+11101000
+11100111
+11100110
+11100110
+11100101
+11100100
+11100011
+11100011
+11100010
+11100001
+11100000
+11011111
+11011111
+11011110
+11011101
+11011100
+11011100
+11011011
+11011010
+11011001
+11011001
+11011000
+11010111
+11010110
+11010110
+11010101
+11010100
+11010100
+11010011
+11010010
+11010001
+11010001
+11010000
+11001111
+11001110
+11001110
+11001101
+11001100
+11001100
+11001011
+11001010
+11001001
+11001001
+11001000
+11000111
+11000111
+11000110
+11000101
+11000100
+11000100
+11000011
+11000010
+11000010
+11000001
+11000000
+11000000
+10111111
+10111110
+10111110
+10111101
+10111100
+10111100
+10111011
+10111010
+10111010
+10111001
+10111000
+10111000
+10110111
+10110110
+10110110
+10110101
+10110100
+10110100
+10110011
+10110011
+10110010
+10110001
+10110001
+10110000
+10110000
+10101111
+10101110
+10101110
+10101101
+10101101
+10101100
+10101011
+10101011
+10101010
+10101010
+10101001
+10101000
+10101000
+10100111
+10100111
+10100110
+10100110
+10100101
+10100100
+10100100
+10100011
+10100011
+10100010
+10100010
+10100001
+10100001
+10100000
+10100000
+10011111
+10011111
+10011110
+10011110
+10011101
+10011101
+10011100
+10011100
+10011011
+10011011
+10011010
+10011010
+10011001
+10011001
+10011000
+10011000
+10010111
+10010111
+10010111
+10010110
+10010110
+10010101
+10010101
+10010100
+10010100
+10010100
+10010011
+10010011
+10010010
+10010010
+10010001
+10010001
+10010001
+10010000
+10010000
+10010000
+10001111
+10001111
+10001110
+10001110
+10001110
+10001101
+10001101
+10001101
+10001100
+10001100
+10001100
+10001011
+10001011
+10001011
+10001010
+10001010
+10001010
+10001010
+10001001
+10001001
+10001001
+10001000
+10001000
+10001000
+10001000
+10000111
+10000111
+10000111
+10000111
+10000110
+10000110
+10000110
+10000110
+10000101
+10000101
+10000101
+10000101
+10000100
+10000100
+10000100
+10000100
+10000100
+10000100
+10000011
+10000011
+10000011
+10000011
+10000011
+10000010
+10000010
+10000010
+10000010
+10000010
+10000010
+10000010
+10000010
+10000001
+10000001
+10000001
+10000001
+10000001
+10000001
+10000001
+10000001
+10000001
+10000001
+10000000
+10000000
+10000000
+10000000
+10000000
+10000000
+10000000
+10000000
+10000000
+10000000
+10000000
+10000000
+10000000
+10000000
+10000000
+10000000
+10000000
+10000000
+10000000
+10000000
+10000000
+10000000
+10000000
+10000000
+10000000
+10000000
+10000000
+10000000
+10000000
+10000001
+10000001
+10000001
+10000001
+10000001
+10000001
+10000001
+10000001
+10000001
+10000001
+10000001
+10000010
+10000010
+10000010
+10000010
+10000010
+10000010
+10000010
+10000011
+10000011
+10000011
+10000011
+10000011
+10000011
+10000100
+10000100
+10000100
+10000100
+10000100
+10000101
+10000101
+10000101
+10000101
+10000101
+10000110
+10000110
+10000110
+10000110
+10000111
+10000111
+10000111
+10000111
+10001000
+10001000
+10001000
+10001000
+10001001
+10001001
+10001001
+10001010
+10001010
+10001010
+10001011
+10001011
+10001011
+10001100
+10001100
+10001100
+10001101
+10001101
+10001101
+10001110
+10001110
+10001110
+10001111
+10001111
+10001111
+10010000
+10010000
+10010001
+10010001
+10010001
+10010010
+10010010
+10010010
+10010011
+10010011
+10010100
+10010100
+10010101
+10010101
+10010101
+10010110
+10010110
+10010111
+10010111
+10011000
+10011000
+10011001
+10011001
+10011010
+10011010
+10011010
+10011011
+10011011
+10011100
+10011100
+10011101
+10011101
+10011110
+10011110
+10011111
+10011111
+10100000
+10100000
+10100001
+10100010
+10100010
+10100011
+10100011
+10100100
+10100100
+10100101
+10100101
+10100110
+10100110
+10100111
+10101000
+10101000
+10101001
+10101001
+10101010
+10101010
+10101011
+10101100
+10101100
+10101101
+10101101
+10101110
+10101111
+10101111
+10110000
+10110000
+10110001
+10110010
+10110010
+10110011
+10110100
+10110100
+10110101
+10110101
+10110110
+10110111
+10110111
+10111000
+10111001
+10111001
+10111010
+10111011
+10111011
+10111100
+10111101
+10111101
+10111110
+10111111
+10111111
+11000000
+11000001
+11000001
+11000010
+11000011
+11000011
+11000100
+11000101
+11000110
+11000110
+11000111
+11001000
+11001000
+11001001
+11001010
+11001010
+11001011
+11001100
+11001101
+11001101
+11001110
+11001111
+11001111
+11010000
+11010001
+11010010
+11010010
+11010011
+11010100
+11010101
+11010101
+11010110
+11010111
+11011000
+11011000
+11011001
+11011010
+11011011
+11011011
+11011100
+11011101
+11011110
+11011110
+11011111
+11100000
+11100001
+11100001
+11100010
+11100011
+11100100
+11100100
+11100101
+11100110
+11100111
+11101000
+11101000
+11101001
+11101010
+11101011
+11101011
+11101100
+11101101
+11101110
+11101110
+11101111
+11110000
+11110001
+11110010
+11110010
+11110011
+11110100
+11110101
+11110110
+11110110
+11110111
+11111000
+11111001
+11111001
+11111010
+11111011
+11111100
+11111101
+11111101
+11111110
+11111111
+00000000
+00000000
+00000001
+00000010
+00000011
+00000100
+00000100
+00000101
+00000110
+00000111
+00001000
+00001000
+00001001
+00001010
+00001011
+00001011
+00001100
+00001101
+00001110
+00001111
+00001111
+00010000
+00010001
+00010010
+00010010
+00010011
+00010100
+00010101
+00010110
+00010110
+00010111
+00011000
+00011001
+00011001
+00011010
+00011011
+00011100
+00011100
+00011101
+00011110
+00011111
+00100000
+00100000
+00100001
+00100010
+00100011
+00100011
+00100100
+00100101
+00100110
+00100110
+00100111
+00101000
+00101001
+00101001
+00101010
+00101011
+00101100
+00101100
+00101101
+00101110
+00101110
+00101111
+00110000
+00110001
+00110001
+00110010
+00110011
+00110100
+00110100
+00110101
+00110110
+00110110
+00110111
+00111000
+00111001
+00111001
+00111010
+00111011
+00111011
+00111100
+00111101
+00111101
+00111110
+00111111
+00111111
+01000000
+01000001
+01000010
+01000010
+01000011
+01000100
+01000100
+01000101
+01000110
+01000110
+01000111
+01000111
+01001000
+01001001
+01001001
+01001010
+01001011
+01001011
+01001100
+01001101
+01001101
+01001110
+01001110
+01001111
+01010000
+01010000
+01010001
+01010010
+01010010
+01010011
+01010011
+01010100
+01010101
+01010101
+01010110
+01010110
+01010111
+01010111
+01011000
+01011001
+01011001
+01011010
+01011010
+01011011
+01011011
+01011100
+01011100
+01011101
+01011110
+01011110
+01011111
+01011111
+01100000
+01100000
+01100001
+01100001
+01100010
+01100010
+01100011
+01100011
+01100100
+01100100
+01100101
+01100101
+01100110
+01100110
+01100111
+01100111
+01101000
+01101000
+01101000
+01101001
+01101001
+01101010
+01101010
+01101011
+01101011
+01101100
+01101100
+01101100
+01101101
+01101101
+01101110
+01101110
+01101110
+01101111
+01101111
+01110000
+01110000
+01110000
+01110001
+01110001
+01110001
+01110010
+01110010
+01110011
+01110011
+01110011
+01110100
+01110100
+01110100
+01110101
+01110101
+01110101
+01110101
+01110110
+01110110
+01110110
+01110111
+01110111
+01110111
+01111000
+01111000
+01111000
+01111000
+01111001
+01111001
+01111001
+01111001
+01111010
+01111010
+01111010
+01111010
+01111011
+01111011
+01111011
+01111011
+01111011
+01111100
+01111100
+01111100
+01111100
+01111100
+01111101
+01111101
+01111101
+01111101
+01111101
+01111101
+01111110
+01111110
+01111110
+01111110
+01111110
+01111110
+01111110
+01111111
+01111111
+01111111
+01111111
+01111111
+01111111
+01111111
+01111111
+01111111
+01111111
+01111111
+01111111
+01111111
+01111111
+01111111
+01111111
+01111111
+01111111
+01111111
+01111111
+01111111
+01111111
+01111111
+01111111
Index: all_digital_fm_receiver/tags/ver-1/multiplier.vhd
===================================================================
--- all_digital_fm_receiver/tags/ver-1/multiplier.vhd (nonexistent)
+++ all_digital_fm_receiver/tags/ver-1/multiplier.vhd (revision 5)
@@ -0,0 +1,142 @@
+LIBRARY ieee;
+USE ieee.std_logic_1164.all;
+USE IEEE.numeric_std.ALL;
+
+
+ENTITY multiplier IS
+-- Declarations
+port (CLK : in std_logic;
+ RESET : in std_logic;
+ input1 : in std_logic_vector(7 downto 0);
+ input2 : in signed(7 downto 0);
+ output : out signed(7 downto 0)
+ );
+END multiplier ;
+
+
+ARCHITECTURE behavior OF multiplier IS
+
+signal out_temp : signed(15 downto 0);
+signal input1_buf : signed(15 downto 0);
+signal part0, part1, part2, part3, part4, part5, part6, part7 : signed(15 downto 0);
+
+begin
+
+process(CLK, RESET)
+begin
+ if (RESET='1') then
+ out_temp <= (others => '0');
+ output <= (others => '0');
+ input1_buf <= (others => '0');
+ part0 <= (others => '0');
+ part1 <= (others => '0');
+ part2 <= (others => '0');
+ part3 <= (others => '0');
+ part4 <= (others => '0');
+ part5 <= (others => '0');
+ part6 <= (others => '0');
+ part7 <= (others => '0');
+ elsif rising_edge(CLK) then
+ input1_buf <= input1(7)&input1(7)&input1(7)&input1(7)&input1(7)&input1(7)&input1(7)&input1(7)&signed(input1);
+ if (input2(0)='1') then
+ part0 <= -(input1_buf);
+ else
+ part0 <= (others => '0');
+ end if;
+ if (input2(1)='1') then
+ if (input2(0)='1') then
+ part1 <= (others => '0');
+ else
+ part1 <= -(input1_buf);
+ end if;
+ else
+ if (input2(0)='1') then
+ part1 <= input1_buf;
+ else
+ part1 <= (others => '0');
+ end if;
+ end if;
+ if (input2(2)='1') then
+ if (input2(1)='1') then
+ part2 <= (others => '0');
+ else
+ part2 <= -(input1_buf);
+ end if;
+ else
+ if (input2(1)='1') then
+ part2 <= input1_buf;
+ else
+ part2 <= (others => '0');
+ end if;
+ end if;
+ if (input2(3)='1') then
+ if (input2(2)='1') then
+ part3 <= (others => '0');
+ else
+ part3 <= -(input1_buf);
+ end if;
+ else
+ if (input2(2)='1') then
+ part3 <= input1_buf;
+ else
+ part3 <= (others => '0');
+ end if;
+ end if;
+ if (input2(4)='1') then
+ if (input2(3)='1') then
+ part4 <= (others => '0');
+ else
+ part4 <= -(input1_buf);
+ end if;
+ else
+ if (input2(3)='1') then
+ part4 <= input1_buf;
+ else
+ part4 <= (others => '0');
+ end if;
+ end if;
+ if (input2(5)='1') then
+ if (input2(4)='1') then
+ part5 <= (others => '0');
+ else
+ part5 <= -(input1_buf);
+ end if;
+ else
+ if (input2(4)='1') then
+ part5 <= input1_buf;
+ else
+ part5 <= (others => '0');
+ end if;
+ end if;
+ if (input2(6)='1') then
+ if (input2(5)='1') then
+ part6 <= (others => '0');
+ else
+ part6 <= -(input1_buf);
+ end if;
+ else
+ if (input2(5)='1') then
+ part6 <= input1_buf;
+ else
+ part6 <= (others => '0');
+ end if;
+ end if;
+ if (input2(7)='1') then
+ if (input2(6)='1') then
+ part7 <= (others => '0');
+ else
+ part7 <= -(input1_buf);
+ end if;
+ else
+ if (input2(6)='1') then
+ part7 <= input1_buf;
+ else
+ part7 <= (others => '0');
+ end if;
+ end if;
+ out_temp <= part0+(part1(14 downto 0)&'0')+(part2(13 downto 0)&"00")+(part3(12 downto 0)&"000")+(part4(11 downto 0)&"0000")+(part5(10 downto 0)&"00000")+(part6(9 downto 0)&"000000")+(part7(8 downto 0)&"0000000");
+ output <= out_temp(15 downto 8);
+end if;
+end process;
+END behavior;
+
Index: all_digital_fm_receiver/tags/ver-1/circuit_tb.vhd
===================================================================
--- all_digital_fm_receiver/tags/ver-1/circuit_tb.vhd (nonexistent)
+++ all_digital_fm_receiver/tags/ver-1/circuit_tb.vhd (revision 5)
@@ -0,0 +1,64 @@
+LIBRARY ieee;
+USE ieee.std_logic_1164.ALL;
+USE IEEE.numeric_std.ALL;
+USE std.textio.ALL;
+
+ENTITY circuit_tb IS
+END circuit_tb;
+
+ARCHITECTURE behavior OF circuit_tb IS
+
+file vectors: text open read_mode is "fm.txt";
+
+
+ COMPONENT circuit
+ PORT(
+ clk : IN std_logic;
+ reset : IN std_logic;
+ fmin : IN std_logic_vector(7 downto 0);
+ dmout : OUT std_logic_vector(11 downto 0)
+ );
+ END COMPONENT;
+
+ SIGNAL clk : std_logic := '0' ;
+ SIGNAL reset : std_logic := '1';
+ SIGNAL fmin : std_logic_vector(7 downto 0);
+ SIGNAL dmout : std_logic_vector(11 downto 0);
+ constant clkperiod : time := 62.5 ns; -- 16 MHz of frequency
+
+BEGIN
+
+ uut: circuit PORT MAP(
+ clk => clk,
+ reset => reset,
+ fmin => fmin,
+ dmout => dmout
+ );
+
+ RESET_GEN: process
+ begin
+ LOOP1: for N in 0 to 3 loop
+ wait until falling_edge(CLK);
+ end loop LOOP1;
+ RESET <= '0' ;
+ end process RESET_GEN;
+
+clk <= not clk after clkperiod / 2;
+
+process
+variable vectorline : line;
+variable fmin_var : bit_vector(7 downto 0);
+begin
+while not endfile(vectors) loop
+ if (reset = '1') then
+ fmin <= (others => '0');
+ else
+ readline(vectors, vectorline);
+ read(vectorline, fmin_var);
+ fmin <= to_stdlogicvector(fmin_var);
+ end if;
+ wait for clkperiod;
+end loop;
+end process;
+
+END;
Index: all_digital_fm_receiver/tags/ver-1/loop_filter.vhd
===================================================================
--- all_digital_fm_receiver/tags/ver-1/loop_filter.vhd (nonexistent)
+++ all_digital_fm_receiver/tags/ver-1/loop_filter.vhd (revision 5)
@@ -0,0 +1,38 @@
+LIBRARY ieee;
+USE ieee.std_logic_1164.all;
+USE IEEE.numeric_std.ALL;
+
+
+
+ENTITY loop_filter IS
+-- Declarations
+ port ( CLK : in std_logic;
+ RESET : in std_logic;
+ C : in signed(7 downto 0);
+ D1 : out signed(11 downto 0);
+ D2 : out signed(11 downto 0)
+ );
+END loop_filter ;
+
+
+ARCHITECTURE behavior OF loop_filter IS
+
+signal E : signed(11 downto 0);
+signal dtemp : signed(11 downto 0);
+
+begin
+process(CLK, RESET)
+begin
+ if (RESET='1') then
+ D1 <= (others => '0');
+ D2 <= (others => '0');
+ E <= (others => '0');
+ dtemp <= (others => '0');
+ elsif rising_edge(CLK) then
+ dtemp <= (C(7)&C(7)&C(7)&C&'0') + dtemp - E;
+ E <= dtemp(11)&dtemp(11)&dtemp(11)&dtemp(11)&dtemp(11 downto 4);
+ D1 <= dtemp;
+ D2 <= dtemp(11 downto 4)&"0000";
+ end if;
+end process;
+END behavior;
Index: all_digital_fm_receiver/tags
===================================================================
--- all_digital_fm_receiver/tags (nonexistent)
+++ all_digital_fm_receiver/tags (revision 5)
all_digital_fm_receiver/tags
Property changes :
Added: svn:mergeinfo
## -0,0 +0,0 ##