www.mikrocontroller.net

Forum: FPGA, VHDL & Co. Digital Schalter


Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich braeuchte für ein Projekt mehrere 74HC4052 / 4053 und einige or's
zur kombinierten Quellumschaltung.

Ich dachte mir ein kleiner XC9536XL duerfte weniger Platz kosten und es
würde auch kein TTL Grab entstehen.

Ich habe erstmal angefangen einen kleinen TTL Quellwahlschalter
zubeschreiben. Dieser Schalter funktioniert aber nur wenn ich die
I/O's als IN und Outs definiere in der Simulation. Ich würde gerne
aber die I/O's bidirektional haben. Ich bekomme aber die Logik nicht
simuliert wenn diese Bidirektional arbeiten soll.

Kann mir jemand weiterhelfen wie ich die Logik birektional simulieren
kann?

Ich benutze als Simulationsprogramm Modelsim und zur synthese ISE7.1.

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

---- Uncomment the following library declaration if instantiating
---- any Xilinx primitives in this code.
--library UNISIM;
--use UNISIM.VComponents.all;

entity dffd is
PORT
    (
        Y   : OUT STD_LOGIC; --  Y  : INOUT STD_LOGIC; geht nicht
        X  : OUT STD_LOGIC; --  X  : INOUT STD_LOGIC;
  X0   : IN STD_LOGIC; -- X0   : INOUT STD_LOGIC;
        X1   : IN STD_LOGIC; -- X1   : INOUT STD_LOGIC;
      Y0    : IN STD_LOGIC; -- Y0   : INOUT STD_LOGIC;
        Y1    : IN STD_LOGIC; -- Y1   : INOUT STD_LOGIC;
  ENABLE : IN STD_LOGIC
   );

end dffd;

architecture Behavioral of dffd is
begin

PROCESS (enable,X0,X1,Y0,Y1)
        BEGIN
        IF( enable = '1') THEN
            X <= X1;
            Y <= Y1;
        ELSE                    X <= X0;
            Y <= Y0;
  END IF;
END PROCESS;



end Behavioral;

Autor: FPGA-User (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Dirk,

einen 4052 kann man im FPGA nicht 100 Pro nachbilden, aber
bidirektionale IO/s sind generell kein Problem.
Bei der Simulation nehme ich an, dass Du ein 'X' bei den Signalen
bekommen hast.
Der Simulator ist manchmal wie ein kleines, bockiges Kind...
Wenn Du an einen bidir. Pin KEIN Signal anlegen willst, dann musst
Du es ihm sagen, d.h. zu Beginn der Simulation gleich mal 'Z'
zuweisen, und zwar für jeden INOUT -Pin, das sollte helfen.

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

erstmal ein nettes danke FPGA-User.

>einen 4052 kann man im FPGA nicht 100 Pro nachbilden, aber
>bidirektionale IO/s sind generell kein Problem.

Was kann man den nicht 100% Nachbilden? Das einzige was mir einfaellt
waere der Spannungsbereich.

Ich brauche nur 3 74HC4053 + 1 Levelshifter. Die 74HC4053 dienen als
Quellwahlschalter und den Levelshifter benoetige ich weil ein µC mit 5V
arbeitet der andere mit 3,3V.

Werde dein Tipp gleich mal testen. Es waere trotzdem nett wenn du mir
meine Frage beantworten koenntest.

Gruß,
Dirk

Autor: Dirk (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

habe es nun gleich versucht. Leider funktioniert es immer noch nicht.

Ich haenge mal das Projekt an und hoffe jemand kann mir auf die
Spruenge helfen.

Gruß,
Dirk

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

so laut Synthese Report meckert er alle INOUT Pins an. Diese werden
nicht benutzt. Ich denke das liegt daran das ich keine direkten Wert in
die Pins schreibe, aber soetwas einfaches sollte sich doch schon
simulieren lassen. Y und X usw. lege ich im Testbench mit Logikpegeln
fest, weil ich nur pruefen moechte ob meine logische Verkettung der
I/O's funktioniert.

Ist Modelsim mit sowas einfachen ueberfordert?

Gruß,
Dirk

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

7 Downloads und keiner eine Idee? bzw. vielleicht noch ein paar Tipps?

Gruß,
Dirk

Autor: FPGA-User (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Dirk,

schau Dir mal die Files im Anhang an.
Das INOUT ist zwar nicht nötig, da Du in Deinem Projekt
X, X0, X1 usw. jeweils nur in einer Richtung betreibst
aber prinzipiell ist es natürlich möglich, solange
die Richtungsumschaltung über ein Signal gemacht wird.

Du kannst in einem FPGA keinen Analog-Schalter realisieren,
dieser wirkt ja in beide Richtungen, also wie ein echter
Schalter. Wenn Du 2 Pins verbinden willst, dann ist immer
1 Pin der Eingang und der andere der Ausgang.
Hoffe es ist klar geworden, dass man keinen 4052 ins FPGA
bauen kann.

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

danke FPGA-User.

Nachdem ich gestern mein Beitrag gepostet habe wollte ich mal das
Design auf nen Karoblatt malen. Ich hab es nachher nur mit Inputs und
Outputs gemalt. Eigentlich lag der Sinn darin die I/O's als INOUT
zudefinieren sich weniger Gedanken bei der internen Beschreibung machen
zumuessen.

>Du kannst in einem FPGA keinen Analog-Schalter realisieren,
>dieser wirkt ja in beide Richtungen, also wie ein echter
>Schalter.

Wirkt aber das Design nicht als Analogschalter, wenn ich beide I/O's
als INOUT definiere und mit einem internen Signal arbeite?

Insgesamt habe ich nun 5Stk 74HC4053 (ohne Z) realisiert und bin
eigentlich sehr froh nen kleinen CPLD zumissbrauchen zukoennen. Der
CPLD macht die Platine extrem kleiner und preislich ist es auch noch
akzeptabel.

Gruß,
Dirk

Gruß,
Dirk

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der HC4053 ist prinzipbedingt bidirektional (eben wie ein richtiger
Schalter) und der läßt sich nicht in einem der bekannten CPLDs
umsetzten. Einen Multiplexer allerdings zu implementieren ist kein
Problem. Wo kommen denn deine Signale her und wo sollen diese hin ?

Gruß Thomas

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.