Skip to content
Snippets Groups Projects
Commit 655767cc authored by ARZEL Matthieu's avatar ARZEL Matthieu
Browse files

mise à jour des noms de port et des signaux+coeff sur 16 bits+nouveau fichier...

mise à jour des noms de port et des signaux+coeff sur 16 bits+nouveau fichier verilog pour l'unité operative
parent a4f9528a
No related branches found
No related tags found
No related merge requests found
...@@ -11,7 +11,7 @@ set_property -dict {PACKAGE_PIN R4 IOSTANDARD LVCMOS33} [get_ports CLK100MHZ] ...@@ -11,7 +11,7 @@ set_property -dict {PACKAGE_PIN R4 IOSTANDARD LVCMOS33} [get_ports CLK100MHZ]
##LEDs ##LEDs
#set_property -dict {PACKAGE_PIN T14 IOSTANDARD LVCMOS25} [get_ports {LED[0]}] #set_property -dict {PACKAGE_PIN T14 IOSTANDARD LVCMOS25} [get_ports {LED[0]}]
#set_property -dict {PACKAGE_PIN T15 IOSTANDARD LVCMOS25} [get_ports {LED[1]}] #set_property -dict {PACKAGE_PIN T15 IOSTANDARD LVCMOS25} [get_ports {LED[1]}]
#set_property -dict {PACKAGE_PIN T16 IOSTANDARD LVCMOS25} [get_ports {LED[2]}] set_property -dict {PACKAGE_PIN T16 IOSTANDARD LVCMOS25} [get_ports { led2 }];
set_property -dict {PACKAGE_PIN U16 IOSTANDARD LVCMOS25} [get_ports { led3 }];#[get_ports {LED[3]}] set_property -dict {PACKAGE_PIN U16 IOSTANDARD LVCMOS25} [get_ports { led3 }];#[get_ports {LED[3]}]
set_property -dict {PACKAGE_PIN V15 IOSTANDARD LVCMOS25} [get_ports { led4 }];#[get_ports {LED[4]}] set_property -dict {PACKAGE_PIN V15 IOSTANDARD LVCMOS25} [get_ports { led4 }];#[get_ports {LED[4]}]
set_property -dict {PACKAGE_PIN W16 IOSTANDARD LVCMOS25} [get_ports { led5 }];#[get_ports {LED[5]}] set_property -dict {PACKAGE_PIN W16 IOSTANDARD LVCMOS25} [get_ports { led5 }];#[get_ports {LED[5]}]
...@@ -31,7 +31,7 @@ set_property -dict {PACKAGE_PIN G4 IOSTANDARD LVCMOS15} [get_ports rstn] ...@@ -31,7 +31,7 @@ set_property -dict {PACKAGE_PIN G4 IOSTANDARD LVCMOS15} [get_ports rstn]
##Switches ##Switches
set_property -dict {PACKAGE_PIN E22 IOSTANDARD LVCMOS33} [get_ports sw] set_property -dict {PACKAGE_PIN E22 IOSTANDARD LVCMOS33} [get_ports sw]
#set_property -dict { PACKAGE_PIN F21 } [get_ports { sw[1] }]; #IO_25_16 Sch=sw[1] #set_property -dict { PACKAGE_PIN F21 } [get_ports { sw[1] }]; #IO_25_16 Sch=sw[1]
#set_property -dict { PACKAGE_PIN G21 } [get_ports { sw[2] }]; #IO_L24P_T3_16 Sch=sw[2] set_property -dict { PACKAGE_PIN G21 IOSTANDARD LVCMOS33} [get_ports { sw2 }]; #IO_L24P_T3_16 Sch=sw[2]
set_property -dict { PACKAGE_PIN G22 IOSTANDARD LVCMOS33} [get_ports { sw3 }]; #IO_L24N_T3_16 Sch=sw[3] set_property -dict { PACKAGE_PIN G22 IOSTANDARD LVCMOS33} [get_ports { sw3 }]; #IO_L24N_T3_16 Sch=sw[3]
set_property -dict { PACKAGE_PIN H17 IOSTANDARD LVCMOS33} [get_ports { sw4 }]; #IO_L6P_T0_15 Sch=sw[4] set_property -dict { PACKAGE_PIN H17 IOSTANDARD LVCMOS33} [get_ports { sw4 }]; #IO_L6P_T0_15 Sch=sw[4]
set_property -dict { PACKAGE_PIN J16 IOSTANDARD LVCMOS33} [get_ports { sw5 }]; #IO_0_15 Sch=sw[5] set_property -dict { PACKAGE_PIN J16 IOSTANDARD LVCMOS33} [get_ports { sw5 }]; #IO_0_15 Sch=sw[5]
......
...@@ -27,11 +27,13 @@ module audioProc( ...@@ -27,11 +27,13 @@ module audioProc(
input rstn, input rstn,
input sw, input sw,
//input [3:0]sw, //input [3:0]sw,
input sw2,
input sw3, input sw3,
input sw4, input sw4,
input sw5, input sw5,
input sw6, input sw6,
input sw7, input sw7,
output led2,
output led3, output led3,
output led4, output led4,
output led5, output led5,
...@@ -177,15 +179,17 @@ module audioProc( ...@@ -177,15 +179,17 @@ module audioProc(
// Marz // Marz
///////////////////////////// /////////////////////////////
wire [23:0] inputLeftSample, inputRightSample,outputLeftSample,outputRightSample; wire [23:0] inputLeftSample, inputRightSample,outputLeftSample,outputRightSample;
wire [4:0] configSw; wire [5:0] configSw;
assign inputLeftSample = in_audioL; assign inputLeftSample = in_audioL;
assign inputRightSample = in_audioR; assign inputRightSample = in_audioR;
assign configSw[0]=sw3; assign configSw[0]=sw2;
assign configSw[1]=sw4; assign configSw[1]=sw3;
assign configSw[2]=sw5; assign configSw[2]=sw4;
assign configSw[3]=sw6; assign configSw[3]=sw5;
assign configSw[4]=sw7; assign configSw[4]=sw6;
assign configSw[5]=sw7;
assign led2=sw2;
assign led3=sw3; assign led3=sw3;
assign led4=sw4; assign led4=sw4;
assign led5=sw5; assign led5=sw5;
......
...@@ -5,13 +5,13 @@ use ieee.numeric_std.all; ...@@ -5,13 +5,13 @@ use ieee.numeric_std.all;
entity fir is entity fir is
generic ( generic (
dwidth : natural := 18; dwidth : natural := 24;
ntaps : natural := 15); ntaps : natural := 15);
port ( port (
din : in std_logic_vector(dwidth-1 downto 0); din : in std_logic_vector(dwidth-1 downto 0);
dout : out std_logic_vector(dwidth-1 downto 0); dout : out std_logic_vector(dwidth-1 downto 0);
config_sw : in std_logic_vector(4 downto 0); --inutilise dans le TP majeure config_sw : in std_logic_vector(5 downto 0); --inutilise dans le TP majeure
clk : in std_logic; clk : in std_logic;
rst : in std_logic; rst : in std_logic;
ce : in std_logic; -- signal de validation de din a la frequence des echantillons audio ce : in std_logic; -- signal de validation de din a la frequence des echantillons audio
...@@ -31,9 +31,9 @@ architecture myarch of fir is ...@@ -31,9 +31,9 @@ architecture myarch of fir is
port ( port (
I_clock : in std_logic; I_clock : in std_logic;
I_reset : in std_logic; I_reset : in std_logic;
I_inputSample : in std_logic_vector(7 downto 0); I_inputSample : in std_logic_vector(15 downto 0);
I_inputSampleValid : in std_logic; I_inputSampleValid : in std_logic;
O_filteredSample : out std_logic_vector(7 downto 0); O_filteredSample : out std_logic_vector(15 downto 0);
O_filteredSampleValid : out std_logic); O_filteredSampleValid : out std_logic);
end component firUnit; end component firUnit;
...@@ -42,33 +42,26 @@ architecture myarch of fir is ...@@ -42,33 +42,26 @@ architecture myarch of fir is
begin -- myarch begin -- myarch
-- Quantization on 8 bits or less -- Quantization on 16 bits or less
-- When config_sw(3)='1', rounding is made by finding the nearest value else rounding is made by truncating. -- When config_sw(0)='1', rounding is made by finding the nearest value else rounding is made by truncating.
prc : process (config_sw(3 downto 0), din) is prc : process (config_sw(4 downto 0), din) is
variable w : integer;
begin -- process prc begin -- process prc
case to_integer(unsigned(config_sw(3 downto 0))) is w:=to_integer(unsigned(config_sw(4 downto 1))); -- number of removed bits
when 0 => D_in <= din(dwidth-1 downto dwidth -8); D_in <= (others=> '0');
when 1 => D_in <= din(dwidth-1 downto dwidth -7)&'0'; if(config_sw(0)='1') then
when 2 => D_in <= din(dwidth-1 downto dwidth -6)&"00"; D_in(15 downto w) <= din(dwidth-1 downto dwidth-16+w); -- truncate
when 3 => D_in <= din(dwidth-1 downto dwidth -5)&"000"; else
when 4 => D_in <= din(dwidth-1 downto dwidth -4)&"0000"; if(din(dwidth-16+w-1)='1') then
when 5 => D_in <= din(dwidth-1 downto dwidth -3)&"00000"; D_in(15 downto w) <= std_logic_vector(signed(din(dwidth-1 downto dwidth-16+w))+1); --round to the upper
when 6 => D_in <= din(dwidth-1 downto dwidth -2)&"000000"; else
when 7 => D_in <= din(dwidth-1)&"0000000"; D_in(15 downto w) <= din(dwidth-1 downto dwidth-16+w);--round to the lower
when 8 => if din(dwidth-8) = '0' then D_in <= din(dwidth-1 downto dwidth -8);else D_in <=std_logic_vector(signed(din(dwidth-1 downto dwidth -8))+1); end if; end if;
when 9 => if din(dwidth-8) = '0' then D_in <= din(dwidth-1 downto dwidth -7)&'0'; else D_in <=std_logic_vector(signed(din(dwidth-1 downto dwidth -7))+1)&'0'; end if; end if;
when 10 => if din(dwidth-7) = '0' then D_in <= din(dwidth-1 downto dwidth -6)&"00"; else D_in <=std_logic_vector(signed(din(dwidth-1 downto dwidth -6))+1)&"00"; end if;
when 11 => if din(dwidth-6) = '0' then D_in <= din(dwidth-1 downto dwidth -5)&"000"; else D_in <=std_logic_vector(signed(din(dwidth-1 downto dwidth -5))+1)&"000"; end if;
when 12 => if din(dwidth-5) = '0' then D_in <= din(dwidth-1 downto dwidth -4)&"0000"; else D_in <=std_logic_vector(signed(din(dwidth-1 downto dwidth -4))+1)&"0000"; end if;
when 13 => if din(dwidth-4) = '0' then D_in <= din(dwidth-1 downto dwidth -3)&"00000"; else D_in <=std_logic_vector(signed(din(dwidth-1 downto dwidth -3))+1)&"00000"; end if;
when 14 => if din(dwidth-3) = '0' then D_in <= din(dwidth-1 downto dwidth -2)&"000000"; else D_in <=std_logic_vector(signed(din(dwidth-1 downto dwidth -2))+1)&"000000"; end if;
when 15 => D_in <= din(dwidth-1)&"0000000";
when others => D_in <= (others => '0');
end case;
end process prc; end process prc;
--FIR over 8 bits --FIR over 16 bits
firUnit_1 : entity work.firUnit firUnit_1 : entity work.firUnit
port map ( port map (
...@@ -83,8 +76,8 @@ begin -- myarch ...@@ -83,8 +76,8 @@ begin -- myarch
-- End of FIR -- End of FIR
dout(dwidth-1 downto dwidth -8) <= D_out when config_sw(4) = '1' else D_in; dout(dwidth-1 downto dwidth -16) <= D_out when config_sw(5) = '1' else D_in;
dout(dwidth-9 downto 0) <= (others => '0'); dout(dwidth-17 downto 0) <= (others => '0');
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment