74LS573 und 74LS245 im CPLD nachbilden

Gast #1351387
Lesenswert?

Ich möchte in einem Xilinx CPLD sowas wie einen internen Bus nachbilden. 
Mir schweben da Standardbauteile, wie 74LS573 und 74LS245 vor. Welche 
Elemente kann ich dafür in meinen Schaltplan benutzen? Entweder ich bin 
blind oder in der Biblio "Latch" gibt es keine "tristate" (in den CPLD 
hinein)  Funktionsblöcke. Geht das überhaupt?
Persönliche Seite #1356807
Lesenswert?

nummernschalter schrieb:
> Ich möchte in einem Xilinx CPLD sowas wie einen internen Bus nachbilden.
Was genau möchtest du den, IM CPLD einen Bus nachbilden (das geht nur 
mit einem MUX) oder soll der CPLD AN einen Bus später rangehängt 
werden und intern was machen?

> Mir schweben da Standardbauteile, wie 74LS573 und 74LS245 vor.
Als orientierun okay aber wenn dich nichts dazu zwingt solltest du dich 
von den Bauteilen lösen das macht nur dein Design unötig komplex

> Welche Elemente kann ich dafür in meinen Schaltplan benutzen?
> Ist "LD8" der richtige Funktionsblock für diese Aufgabe?
Beschreibe doch alles in VHDL, dann mußt du dir darüber kaum/keine 
Gedanken machen.

Hier mal zwei Beispiele wie es aussehen könnte.
1
----------------------------------------------------------------------------------
2
-- Create Date:    09:47:43 08/02/2009 
3
-- Module Name:    74LS573 - Behavioral 
4
----------------------------------------------------------------------------------
5
library IEEE;
6
use IEEE.STD_LOGIC_1164.ALL;
7
use IEEE.STD_LOGIC_ARITH.ALL;
8
use IEEE.STD_LOGIC_UNSIGNED.ALL;
9

10
entity CPLD_74LS573 is
11
    Port ( nOE : in  STD_LOGIC;
12
           LE  : in  STD_LOGIC;
13
           D   : in  STD_LOGIC_VECTOR (7 downto 0);
14
           Q   : out  STD_LOGIC_VECTOR (7 downto 0));
15
end CPLD_74LS573;
16

17
architecture Behavioral of CPLD_74LS573 is
18
signal latch : std_logic_vector(7 downto 0);
19
begin
20

21
    -- Solange LE High werden die Daten durchgereicht
22
    -- bei Low wird der alte Zustand beibehalten
23
    latch <= D when LE = '1' else latch;
24
    
25
    -- Wenn nOE = LOW erscheint latch Data am Ausgang
26
    -- Sonst High-Z
27
    Q <= latch when nOE = '0' else (7 downto 0 => 'Z');
28

29
end Behavioral;
Und nochmal der 74LS245
1
----------------------------------------------------------------------------------
2
-- Create Date:    09:59:36 08/02/2009 
3
-- Module Name:    74LS245 - Behavioral 
4
----------------------------------------------------------------------------------
5
library IEEE;
6
use IEEE.STD_LOGIC_1164.ALL;
7
use IEEE.STD_LOGIC_ARITH.ALL;
8
use IEEE.STD_LOGIC_UNSIGNED.ALL;
9

10
entity CPLD_74LS245 is
11
    Port ( nE  : in  STD_LOGIC;
12
           dir : in  STD_LOGIC;
13
           B   : inout  STD_LOGIC_VECTOR (7 downto 0);
14
           A   : inout  STD_LOGIC_VECTOR (7 downto 0));
15
end CPLD_74LS245;
16

17
architecture Behavioral of CPLD_74LS245 is
18
begin
19

20
    -- Wenn nE = 1 oder dir = '1' dann HighZ
21
    -- Sonst B
22
    A <= (7 downto 0 => 'Z') when nE = '1' OR dir = '1' else B;
23
    
24
    -- Wenn nE = 1 oder dir = '1' dann HighZ
25
    -- Sonst A
26
    B <= (7 downto 0 => 'Z') when nE = '1' OR dir = '0' else A;
27

28
end Behavioral;

Jezt müßtest du nurnoch deine Logik dazufügen oder das entsprechend 
verdrahten. Benötigt mind 24 Makrozellen.
#1370993
Lesenswert?

@  nummernschalter (Gast)

>Da mein CPLD noch Platz hat, würde ich gerne einen statischen Taktteiler
>mit einbauen. Allerdings soll er keine Ganzzahl, sondern durch 2,5
>teilen. Hat sowas schon mal jemand gemacht?

Sicher. Bau einen Zähler, welcher durch 5 teilt. Bit #1 wird mittels 
FlipFLop auf der anderen Taktflanke nochmals abgetastet. Dein  durch 2,5 
Takt entsteht durch ODER-Verknüpfung von Bit#1 und dem um 1/2 Takt 
verzögerten Bit.

MFG
Falk
Gast #1371561
Lesenswert?

Danke. Läuft soweit auch.

Jetzt ist noch ein Problem aufgetaucht. Ich will der Schaltung den 
originalen und den geteilten Takt zuführen können. Hatte mir das wie auf 
dem Anhang vorgestellt. Der Einfachheit halber, habe ich den 
problematischen Teil noch mal neu gezeichnet. Die Schaltung befindet 
sich aber innerhalb des CPLD und hat keine direkte Verbindung nach 
außen.

Wie kann ich das umgehen?
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren