mikrocontroller.net

Forum: FPGA, VHDL & Co. CORDIC


Autor: Chindji (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich Arbeite momentane mit der Cordic-core von Xilinx für ein ADC/FPGA 
und ich versucht eine Synthese von Cosinus/Sinus paare mit einstellbare 
Frequenz damit alle 8 ns ein neuer wert Berechnet werden.
Wer hat eine Idee wie kann ich das hin kriegen.
Hier ist meine cordic Algorithmus mit VHDL

LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
-- synthesis translate_off
Library XilinxCoreLib;
-- synthesis translate_on
ENTITY cos_sin_core IS
  port (
  phase_in: IN std_logic_VECTOR(15 downto 0);
  x_out: OUT std_logic_VECTOR(15 downto 0);
  y_out: OUT std_logic_VECTOR(15 downto 0);
  rdy: OUT std_logic;
  clk: IN std_logic;
  ce: IN std_logic;
  aclr: IN std_logic;
  sclr: IN std_logic);
END cos_sin_core;

ARCHITECTURE cos_sin_core_a OF cos_sin_core IS
-- synthesis translate_off
component wrapped_cos_sin_core
  port (
  phase_in: IN std_logic_VECTOR(15 downto 0);
  x_out: OUT std_logic_VECTOR(15 downto 0);
  y_out: OUT std_logic_VECTOR(15 downto 0);
  rdy: OUT std_logic;
  clk: IN std_logic;
  ce: IN std_logic;
  aclr: IN std_logic;
  sclr: IN std_logic);
end component;

-- Configuration specification
  for all : wrapped_cos_sin_core use entity 
XilinxCoreLib.cordic_v3_0(behavioral)
    generic map(
      c_has_clk => 1,
      c_has_x_out => 1,
      c_has_y_in => 0,
      c_reg_inputs => 1,
      c_architecture => 2,
      c_input_width => 16,
      c_iterations => 3,
      c_precision => 16,
      c_has_rdy => 1,
      c_has_sclr => 1,
      c_has_nd => 0,
      c_scale_comp => 0,
      c_enable_rlocs => 1,
      c_has_phase_in => 1,
      c_has_rfd => 0,
      c_cordic_function => 2,
      c_has_ce => 1,
      c_mif_file_prefix => "cor1",
      c_round_mode => 3,
      c_has_aclr => 1,
      c_sync_enable => 1,
      c_has_y_out => 1,
      c_data_format => 0,
      c_reg_outputs => 1,
      c_coarse_rotate => 1,
      c_phase_format => 0,
      c_has_phase_out => 0,
      c_has_x_in => 0,
      c_pipeline_mode => -2,
      c_output_width => 16);
-- synthesis translate_on
BEGIN
-- synthesis translate_off
U0 : wrapped_cos_sin_core
    port map (
      phase_in => phase_in,
      x_out => x_out,
      y_out => y_out,
      rdy => rdy,
      clk => clk,
      ce => ce,
      aclr => aclr,
      sclr => sclr);
-- synthesis translate_on

END cos_sin_core_a;




Danke
CHINCO

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.