Forum: FPGA, VHDL & Co. Filter Bauen mit VHDL


von Chindji A. (feukam)


Lesenswert?

Hallo
ich bin VHDl Anfänger  und moechte ein Filter bzw. CIC filter bauen . 
Ich habe vorher  eine Mischung von der sinus/cosinus mit des ADC-Daten 
gemacht und möchte die Ergebnissen Filter.
Ungefähr          W= cos*ADC_DATEN;
                  Z= Sin*ADC_DATEN;
Eine CIC-Filter gibt es schon in Xilinx IP-Core aber wie Kann ich das 
machen? Hat jemand einen Tipp fuer mich?


Danke

Gruß.
Auguste


-- You must compile the wrapper file CICDecimator.vhd when simulating
-- the core, CICDecimator. When compiling the wrapper file, be sure to
-- reference the XilinxCoreLib VHDL simulation library. For detailed
-- instructions, please refer to the "CORE Generator Help".

-- The synthesis directives "translate_off/translate_on" specified
-- below are supported by Xilinx, Mentor Graphics and Synplicity
-- synthesis tools. Ensure they are correct for your synthesis tool(s).

LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
-- synthesis translate_off
Library XilinxCoreLib;
-- synthesis translate_on
ENTITY CICDecimator IS
  port (
  DIN: IN std_logic_VECTOR(9 downto 0);
  ND: IN std_logic;
  RFD: OUT std_logic;
  CLK: IN std_logic;
  DOUT: OUT std_logic_VECTOR(22 downto 0);
  RDY: OUT std_logic;
  LD_DIN: IN std_logic_VECTOR(13 downto 0);
  WE: IN std_logic);
END CICDecimator;

ARCHITECTURE CICDecimator_a OF CICDecimator IS
-- synthesis translate_off
component wrapped_CICDecimator
  port (
  DIN: IN std_logic_VECTOR(9 downto 0);
  ND: IN std_logic;
  RFD: OUT std_logic;
  CLK: IN std_logic;
  DOUT: OUT std_logic_VECTOR(22 downto 0);
  RDY: OUT std_logic;
  LD_DIN: IN std_logic_VECTOR(13 downto 0);
  WE: IN std_logic);
end component;

-- Configuration specification
  for all : wrapped_CICDecimator use entity 
XilinxCoreLib.C_CIC_V3_0(behavioral)
    generic map(
      c_differential_delay => 1,
      c_sample_rate_change_max => 16383,
      c_number_channels => 1,
      c_filter_type => 2,
      c_result_width => 23,
      c_enable_rlocs => 0,
      c_sample_rate_change => 4,
      c_latency => 1,
      c_sample_rate_change_min => 4,
      c_sample_rate_change_type => 1,
      c_data_width => 10,
      c_stages => 1);
-- synthesis translate_on
BEGIN
-- synthesis translate_off
U0 : wrapped_CICDecimator
    port map (
      DIN => DIN,
      ND => ND,
      RFD => RFD,
      CLK => CLK,
      DOUT => DOUT,
      RDY => RDY,
      LD_DIN => LD_DIN,
      WE => WE);
-- synthesis translate_on

END CICDecimator_a;

von Xilinxuser (Gast)


Lesenswert?

Du hast den CIC ja schon gefunden. Du musst im Xilin ISE dieses 
Wrapperfile einbinden (dazuladen) und im vorhandenen VHDl, wo es benutzt 
werden soll, als Componnente delarieren. Dann einmal / mehrfach 
instanzirien und anschliessen.

Wie die Komponente heissen muss, steht im Wrapperfile.

Nach der Synthese findet Xilinx ISE den core und baut in grafisch als 
Unterpunkt in deine VHDL ein.

du brauchst dann nur noch eine state machine, die dieses Filter mit 
Daten füttert.

von Chindji A. (feukam)


Lesenswert?

Danke  für den Tipp
Ich habe leider nicht den
Wrapperfile  gefunden . Wird das auch mit der CIC-Core generiert?
 Wie ich das verstanden habe muss ich jetzt eine Automat bauen ?
Grüß
Chindji

von Rick Dangerus (Gast)


Lesenswert?

Das was Du gepostet hast, ist das Wrapperfile. Mehr VHDL wirst Du von 
dem Core nicht zu sehen bekommen.

Rick

von Gast (Gast)


Lesenswert?

ISE gibt mittels des core Generators ein " *.xco " aus, das in das 
aktive Verzeichnis muss. Der wrapper muss ins Projekt. Eingebunden wird 
über HDL-Instanzierung oder Generation eines Symbols und Benutzung im 
SCH-Design.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.