mikrocontroller.net

Forum: FPGA, VHDL & Co. VHDL code to infere DCM


Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gestern in einem englischen Forum gelesen, dass es auch möglich
sein soll auf DCM Wizard zu verzichten und DCM aus dem Code inferieren
zu lassen. Es war der Verweis auf lib.pdf, in welchem ich auch
nachgeschaut habe. Fand dort allerdings nichts. lib.pdf ist 2008 datiert
und ist leicht mit google zu finden: library xilinx

Now I am looking for the vhdl code pattern which would let xst
to infere DCM. Does someone of you guys know how do it?

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Eat this  ;-)

Top-level module:
:
:
   component xilinx_dcm
      Port ( clkin  : in  STD_LOGIC;
             reset  : in  STD_LOGIC;
             clkout : out  STD_LOGIC
      );
   end component;
:
:
   CLOCK_x7 : xilinx_dcm
   port map ( clkin  => lvdsclkin,
              reset  => resetdcm,
              clkout => CLK
   );
:

Autor: Niklas Gürtler (erlkoenig)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Inferieren bedeutet ja, dass man einen allgemeinen VHDL-Befehl schreibt, 
der auf verschiedener Hardware verschieden umgesetzt werden könnte, und 
das Synthese Tool erkennt das und inferiert dann eben ein Element der 
jeweiligen Zielhardware (so wie ein if CLK='1' and CLK'event ein FF 
inferiert, obwohl das nicht direkt daraus hervorgeht).
Die Library jedoch ist eine Sammlung von Macros und Primitives, die 
direkt verschiedene Elemente der Hardware repräsentieren - LUT's, FF's, 
IOB's, BRAM's, und eben auch DCM's (beim Spartan heißt es DCM_SP). Diese 
primitives kann man in VHDL-Code verwenden, das ist aber dann 
hardwareabhängig und nennt sich Instantiation. So kann man ohne 
DCM-Wizard direkt in VHDL-Code DCM's verwenden - aber es ist halt nicht 
inferieren.
Der Hinweis auf eine Library im Zusammenhang mit Inferieren ist also 
widersprüchlich.
Diese Library wird automatisch verwendet, wenn du mit der ISE ein 
Projekt für einen bestimmten FPGA anlegst, du kannst die Primitives 
sofort im VHDL-Code verwenden.
Im ISE Manual Index 
(http://www.xilinx.com/itp/xilinx10/books/manuals.pdf) befinden sich 
Links zu den Anleitungen der Libraries der einzelnen FPGA-Typen (dort 
heißen sie Libraries Guide).

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das implizite Inferieren eines DCM war mir so abwegig, dass ich nicht 
mal auf die Idee kam, es könnte damit nicht Instantiieren gemeint sein.
 :-o

Es stimmt natürlich:
Abhängig von der Beschreibung kann die Synthese z.B. selbständig aus 
einer generischen Beschreibung eines getakteten RAMS ein Block-RAM 
inferieren. Der Code bleibt portabel.

Ich kann das Bauteil aber auch von Hand instantiieren und verdrahten. 
Dieser Code kann nur für Xilinx-FPGAs verwendet werden.

Beides läuft aber auf reiner VHDL-Beschreibung ohne irgendwelche 
Wizzards ab.

EDIT:
> Links zu den Anleitungen der Libraries der einzelnen FPGA-Typen
Erwähnenswert hierbei auch die Datei xst.pdf, wo beschrieben ist, was 
die Xilinx-Synthese selber erkennen kann und was daraus gemacht wird.
Bzw. im Umkehrschluss, wie eine Beschreibung aussehen muß, dass ein 
bestimmtes Bauteil daraus synthetisiert wird.

Autor: Amel Elh (imilia)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo,
ich habe ein problem ,kann jemand von euch mir helfen?
ich habe ein programm geschrieben und habe ein problem dass die 
simulation nicht ganz fonktioniert wie ich das vorgestellt habe.
ich will 256 bits in einem speicher als 8 mal 32 bits speichern dafür 
habe ich einen Zähler verwendet. der zähler zählt von 0 bis 7 und jedes 
mal sollen 32 bits zu einem speicher(fsl_M_Data) geschickt werden dh 8 
mal sollen 32 bits gespeichert. wenn jede paket bzw 32bits zum speicher 
(FSL_M_Data) angekomen sind ,soll das code FSL_M_Full='1' eingesetzt 
wird das soll nach jeder paket passieren .aber FSL_M_FULL wird auf 1 
eingesetzt nur nach erster pakete. mein programm sieht so aus:
states : process (

current_state,
CRPT_Clk,

CRPT_result_rdy
)
variable l: integer := 0;

Begin
CASE current_state IS
WHEN Adapter =>

 m <= CRPT_result;
 crpt_next_result<='1';

WHEN MP_Ubergabe =>


FSL_M_Full<='0'  ;

FSL_M_Data<=m(((32*L)+0) to ((32*L)+31));
--(da werden die pakete dh jede 32 bits  zum FSL_M_data geschickt)

L:= L + 1;  --das ist der Zähler

--hier habe ich FSL_M_Data mit dem wert erster 32 bits eingesetzt
if (FSL_M_data="00000000000000000000000000000001")then
 FSL_M_Full<='1';

 was soll ich machen  wenn FSL_M_full ='1' ist wenn jedes mal FSL_M_Data 
32bits bekommt? dh FSL_M_Full='1'wenn fSL_M_Data sich wechselt ?
danke schön.

Autor: Duke Scarring (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Amel Elh (imilia):

Bitte mach mit Deiner Frage ein neues Thema auf. Außerdem ist komplette 
Quelltext (inklusive einer Testbench!) viel eher zur Fehlersuche 
geeignet, als irgendwelche Codeschnipsel.

Duke

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.