Hallo, habe einen Bustreiber geschrieben, den ich in einem gößeren Design nutzen möchte. Wollte mal eure Meinung dazu wissen. Verbesserungsvorschläge erwünscht!! mfg Christian
hmm, bin nicht besonders begeistert von deinem Design. Es ist fraglich was die Synthese daraus macht. Ich würde die Xilinx Logic Primitive benutzen und entsprechend deinen Anforderungen Register einfügen. Hier mal die Instanzierung des passenden IOBUF IOBUF_inst : IOBUF port map ( O => O, -- Buffer output IO => IO, -- Buffer inout port (connect directly to top-level port) I => I, -- Buffer input T => T -- 3-state enable input );
Die Synthese sollte das schon korrekt machen. Die Frage ist nur ob es sich wirklich auszahlt, dafür ein eigenes Modul zu schreiben, weil jedes Design ein bischen anders ist. Nicht jedes Design braucht z.B. taktsynchrones Enable. Meines Erachtens ist es dann einfacher und verständlich im TopLevel Design zu schreiben: Pin <= DataOut when Enable = '1' else (others => 'Z'); In jedem Fall ist das Modul von Christian ein bischen irreführend, weil man meinen könnte, nach der Taktflanke ist immer nach der gleichen Verzögerung der Ausgang entweder hochohmig oder hat einen neuen Wert. In Wirklichkeit geht das tri-staten meist langsamer. Die Xilinx-Primitive würde ich nicht verwenden, weil das Design dann nicht mehr so portabel ist. Christian, wenn Du das Modul verwenden willst, würde ich es von einfachen Signalen auf Signal-Vektoren erweitern. Außerdem bin ich ein gläubiger Anhänger der rising_edge() Funktion. Grüße Klaus
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.