www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PCI/ISA -Bus?


Autor: Marcel Block (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hi,

hat jemand von euch schonmal irgendwo im netz schonmal was zum PCI oder 
ISA Bus gefunden? Wär doch mal cool ne eigene PCI Karte zu basteln.
Ich google hier schon die ganze zeit und such irgendwelche projekte oder 
dokus zu dem thema aber ich find einfach nix :/

MFG Marcel

Autor: mikki merten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da werden sie geholfen:
http://www.kolter.de/

Autor: Rudolph (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also ISA ist sicherlich der einfacher Standart, aber wenn du was zu 
selbstgebauten PCI-Karten suchst, kannst du mal unter: 
http://elm-chan.org/works/pci/report_e.html gucken.

Rudolph

Autor: Marcel Block (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also der isa-bus scheint wohl ein wenig einfacher zu sein g

hättet ihr auch noch was zu isa?

MFG Marcel

Autor: antti lukats (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ISA (Vater in estonian!) ist TOT, kannst du gleich vergessen.

für PCI is am einfachsten die chips from www.plxtech.com zu
benutzen, das ist einfach.

www.opencores.com hat freie verilog code auch aber das ist
nicht so einfach

www.latticesemi.com hat freie code (für ispMACH)

die meisten anedere PCI IP cores cost über 1000 EUR

antti

Autor: Marcel Block @school (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
jo klar isa ist nicht wirklich up to date aber irgendwie total 
einfach...

kennt denn niemand von euch ne seite auf der man wirklich ne ganz simple 
pci-karte zu sehen bekommt und auch versteht? g

MFG Marcel

Autor: Rolf Freitag (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also Kolter ist für billige minimale Sachen brauchbar, aber wirklich nur 
dafür, denn die PCI-Prototyp-Karte stellt nur 16 Bit zur Verfügung, hat 
kein DMA usw..

Bei HK bekommt man bessere PCI-Karten:

http://www.bln.de/hkmessysteme/

Und für ganz billige u. einfache Sachen sollte man eher den Parallelport 
nehmen, denn der reicht schon aus um LEDs anzusteuern und ist sehr 
einfach zu programmieren.

Autor: Marcel Block (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
jo ich weiß das der parallelport easy zu verwenden is :)

ich würde aber gerne eine EIGENE pci-karte basteln ohne irgendwelche 
prototyp-karten oder sonstiges...

einfach eine ganz ganz ganz simple pci-karte die z.b. ne led zum 
leuchten bringt. Könnt ihr mir da weiterhelfen?

MFG Marcel

Autor: Rolf Freitag (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ohne fertige Prototyp-Karte hast Du praktisch keine Chance, allein schon 
weil auf dem einen Bus sowohl Daten als auch Adressen übertragen werden. 
Dazu kommt noch die Kommunikation mit dem PCI-Controller, damit es bei 
den Interrupts u. Adress-Räumen keine Konflikte gibt. Das ganze muss bei 
mind. 33,33 MHz und zudem bei variablen Takt funktionieren.

Du kannst natürlich selber eine Prototyp-Karte entwickeln, aber schon 
das Löten der ICs mit den engen Pins wird schwierig.

Autor: Marcel Block (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
jo aber für die ganze kommunikation mit dem pci controller usw. kann man 
doch von verschiedenen controllern machen lassen oder?

Hast du vielleicht einen schaltplan von einer minimalen pci-karte?

Marcel

Autor: Antti Lukats (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok, es is eigentlich moglich eine 'poor mans' PCI karte
zu machen, es gibt beispiele wie POST CODE tester
that has LED on port 0080X and ist mit zwei GALs getan.

ich hatte es for mit einem XC9536 eine sehr einfache karte
zu machen, es ist moglich!

tricks sind dabei das man den ganzen plug and play weglasst
und nur auf config space antworted.

ich glaube um einen LED under software zu kontrollieren
kann man karte machen mit etwa 20 macrocells.

dann mus der Treiber jedoch direct auf den slot zu greifen
all enumaration ist weg

Autor: Marcel Block (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok und hast du dazu auch irgendwelche docs oder so?

Marcel

Autor: mikki merten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Antti Lukats (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
oh docs gibt es haufen menge - zb die offizielle PCI
docs kann man auch von internet finden, wenn man ordentlich
sucht.

aber genugend info gibt es auch in docs from vershieden
PCI chips zb von oxford semiconductor

,tja aber eine proto platine mit irgenwas logic musst du
doch machen

antti

Autor: mikki merten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Antti
Ist ja mein reden, PCI Karte ist kein 10 Euro Hobby-Projekt. Und ohne 
entsprechende Messgeräte ist die Fehlersuche wohl auch nahezu unmöglich. 
Es ist halt nicht damit getan man nehme eine paar 74xx IC und ein paar 
Zeilen VB-Code und schon läufts. So ein Projekt ist nun mal nicht 
unbedingt ein Anfänger-Projekt.

Autor: Rolf F. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@mitti
Ja, meine ich auch.

Bei ISA kann man einfach ein paar ICs zusammenlöten und die Karte 
normalerweise hot swap ein- u. ausbauen und wenn man denn alle 
Verbindungen nach dem Schaltplan mit Durchgangsprüfer durchgetestet hat, 
funktioniert das problemlos. Bei PCI gibt es aber schon bei 
"professionellen" Karten viele Probleme: Manche arbeiten auf einigen 
Mainboards überhaupt nicht, manche nur in einem Slot usw. und manche 
machen den Rechner einfach instabil. Das hatte ich schon einige male 
erlebt.
Man kann sich zwar zuverlässige Board mit einem zuverlässigem Chipsatz 
wie Serverworks III oder AMD MPX kaufen, die auch mit nicht der 
PCI-Spezifikation genügenden Karten zurechtkommen, aber ich weiß von der 
Kolter-PCI-Prototyp-Karte, dass die schon ein kompliziertes Timing auf 
der Prototyp-Seite hat und es zudem noch eine erhebliche 
Exemplarstreuung gibt, so dass ich die nicht empfehlen kann.

Autor: Gralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gibt es nicht Experimentierkarten in PCI?
Elektor hat mal eine im Feb2002 veröffentlicht. Die Karte kümmert sich 
um die Kommunikation mit dem Bus und stellt diverse Ports zur Verfügung.
Da kannst Du bestimmt Deine Schaltung anbinden.

Autor: Rolf F. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, die gibt´s hier:

http://www.bln.de/hkmessysteme/

Allerdings kosteten die fast 900 DM, also nicht billig.
Dafür ist die Qualität wirklich gut und man hat 3 verschiedene DMA-Modi, 
die man nutzten kann.

Autor: Torsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie Steuert man denn eigentlich so ein Teil an, falls man es gebaut 
bekommt?
Da muss man doch sicherlich einen Treiber entwickeln, mit outp() wird da 
wohl nix mehr gehen oder?

MfG Torsten

Autor: Antti Lukats (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
DriverLinx DLL und treiber dann geht mist ähnlich wit outp()

:)

Autor: Rolf Freitag (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mit pci-Funktionen bekommt man die Adressbereiche und da gibt´s immer 
einen (meist der erste) für einfaches direktes I/O.
Provisorisch kann man in /proc/pci (Linux/Unix) nachsehen und die 
Adressen nehmen.

Es ist wohl kompliziert, wenn man mehrere gleiche Karten hat, denn die 
Busse u. Devices den einzelnen Slots zuzuordnen ist ohne Kennzeichnungen 
an den Slots nur mit Ausmessen möglich.

Autor: Antti Lukats (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wenn man kann grob es macht dann kann man mit sehr
wenig hardware was zum basteln machen nur die signale

clk
frame
cben
und ein ADx signal

damit kann man schon ein LED zum beispiel ansteurn :)
is dann aber nur durch access zu config space

antti

Autor: Marcel Block (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
oje oje oje :)

also werd ich wohl doch ne isa-karte basteln...
mal sehn wo ich nen testrechner mit nem isa-steckplatz her bekomme g

MFG Marcel

Autor: Rolf Freitag (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es gibt ja viele alte Pläne für solche Karten. Beispielsweise die 
MC-Port-Karte oder wie die heißt. Die müsste von 1988 sein.

Autor: Antti Lukats (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

ich habe jetzt mein erstes PCI design geschaft
siehe anhang da ist VHDL für BIOS Post Code tester
zeigt ganz gut C1 wenn ich RAMs von computer enterferne :)

antti

Autor: Marcel Block (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
der download von der datei funzt irgendwie net

Autor: Antti Lukats (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
kommt alles in message
************


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

entity pm_pci_lc_33 is Port (
  -- 7 Segment LED's
  seg_led_1 : out std_logic_vector(6 downto 0);
  seg_led_2 : out std_logic_vector(6 downto 0);
  -- PCI
  AD_I      : in std_logic_vector(7 downto 0);
  CBE_I     : in std_logic_vector(3 downto 0);
  FRAME_I   : in std_logic;
  IRDY_I    : in std_logic;
  PCLK      : in std_logic);
end pm_pci_lc_33;

architecture Behavioral of pm_pci_lc_33 is

signal data80: std_logic_vector(7 downto 0);

COMPONENT pm_pci_port80 PORT(
  clk : IN std_logic;
  frame : IN std_logic;
  irdy : IN std_logic;
  cbe : IN std_logic_vector(3 downto 0);
  ad : IN std_logic_vector(7 downto 0);
  portdata : OUT std_logic_vector(7 downto 0));
END COMPONENT;

COMPONENT led7seg_decoder PORT(
  data : IN std_logic_vector(3 downto 0);
  seg : OUT std_logic_vector(6 downto 0));
END COMPONENT;

begin
  -- PCI: Port80 Latch
  Inst_pm_pci: pm_pci_port80 PORT MAP(
    clk => PCLK,
    frame => FRAME_I,
    irdy => IRDY_I,
    cbe => CBE_I,
    ad => AD_I,
    portdata => data80);
  -- Segment LED decoders to port 80 Data register
  Inst_led7seg_decoder1: led7seg_decoder PORT MAP(
    data => data80(3 downto 0), seg => seg_led_1);
  Inst_led7seg_decoder2: led7seg_decoder PORT MAP(
    data => data80(7 downto 4), seg => seg_led_2);
end Behavioral;

**************************************

--
-- Poor Man PCI Interface: BIOS POST Code Tester (LED's to Port 0x0080)
-- Checked with Memec Spartan-IIS200 PCI Board
-- Copyright 2003 Nugis Foundation. All rights reserved.
--

library ieee;
use ieee.std_logic_1164.all;
use IEEE.std_logic_arith.all;
use IEEE.std_logic_unsigned.all;

entity PM_Pci_Port80 is port(
  -- PCI Signals
  CLK:   in std_logic;
  FRAME: in std_logic;
  IRDY:  in std_logic;
  CBE:   in std_logic_vector(3 downto 0);
  AD:    in  std_logic_vector(7 downto 0);
  -- Lathced Port 0xXX80 data output
  portdata: out std_logic_vector(7 downto 0));
end PM_Pci_Port80;

architecture arch of PM_Pci_Port80 is

signal pci_io_write: std_logic;
signal pci_state_idle: std_logic;
signal pci_state_1: std_logic;
signal pci_addr: std_logic_vector(7 downto 0);

begin

  process (CLK)
  begin
    -- on falling edge of PCI Clock!
    if (CLK'event) and CLK = '0' then
      -- transaction done
      if (FRAME = '1') and (IRDY = '1') then
      -- idle, abort transaction !
      pci_state_idle <= '1';
      pci_state_1 <= '0';
    else
      -- transaction in progress, track ?
      if pci_state_idle = '1' then
        pci_state_1 <= '1'; -- to next state
        pci_state_idle <= '0'; -- clear idle
        -- first phase after idle,latch!
        -- we are active, latch all stuff: address
  pci_addr(7 downto 0) <= AD(7 downto 0); -- latch address!
  -- and io write
   pci_io_write <= not CBE(3) and not CBE(2) and CBE(1) and CBE(0);
      end if;
      if pci_state_1 = '1' then
        pci_state_1 <= '0'; -- exit state
        -- if address xx80 then latch data
  if (pci_io_write = '1') and
           (pci_addr(7 downto 0) = "10000000") then
          portdata <= AD(7 downto 0); -- latch PORT 0080!
        end if;
      end if;
    end if;
  end if;
end process;

end arch;


*************

--
-- 7 Segment decoder (4 to 7)
-- Copyright 2003 Nugis Foundation. All rights reserved.
--
--   --0--
--  5     1
--   --6--
--  4     2
--   --3--

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

entity LED7SEG_Decoder is Port (
  data : in std_logic_vector(3 downto 0);
  seg : out std_logic_vector(6 downto 0));
end LED7SEG_Decoder;

architecture Behavioral of LED7SEG_Decoder is
begin
  with data(3 downto 0) select seg <=
    "0000110" when "0001", -- 1
    "1011011" when "0010", -- 2
    "1001111" when "0011", -- 3
    "1100110" when "0100", -- 4
    "1101101" when "0101", -- 5
    "1111101" when "0110", -- 6
    "0000111" when "0111", -- 7
    "1111111" when "1000", -- 8
    "1101111" when "1001", -- 9
    "1110111" when "1010", -- A
    "1111100" when "1011", -- B
    "0111001" when "1100", -- C
    "1011110" when "1101", -- D
    "1111001" when "1110", -- E
    "1110001" when "1111", -- F
    "0111111" when others; -- 0
end Behavioral;

Autor: Marcel Block (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
schön :)
nur eine frage: WAS IST DAS? g

Autor: Antti Lukats (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
na das ist naturlich WAS!

when du das mit Xilinx free tools zu .BIT file machst
und diesen .BIT file in ein XC2S200 z.b. einspeist der
auf einer PCI karte sitzt und 2 7-segment leds hat dann
hast du eine PCI karte der die BIOS post test-codes
als hex ziffer auf LEDs schreibt.

das ganze ist so klein das es auch in
XC9536XL reinpasst, und XC9536 kostet 1 dollar amerikano

ist zwar die billigste PCI baustein dann.

damit kann man noch nicht viel machen, aber es ist minimal
write only port on PCI bus, kann schon was steuern oder
was machen. für richtige volle PCI unterstützung braucht
man ein bishen mehr zu schreiben :) löten braucht man
heutzutage nicht mehr :)

antti

Autor: Marcel Block (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
aha :)

Autor: H.Kolter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
An R.Freitag
Erstmal vielen Dank für die üble Nachrede hier im Forum. Leider habe
ich das Formum erst heute entdeckt, so dass ich hierzu Stellung nehmen
kann. Wenn ich mich noch richtig an Ihr Zufallsgenerator-Projekt
erinnere, hatten Sie neben meinem PCI-Dekoder noch eine TTL-Schaltung
mit an den PCI-Bus angeschlossen, was lt. Spezifikation nicht erlaubt
ist. Bus-Signale dürfen bei PCI-Steckplätzen nur mit einem Gatter mit
max. 10pF belastet werden! Hierzu empfiehlt sich ein kurzer Blick in
die PCI-Spezifikation - und ganz nebenbei hatte ich auch am Telefon
noch darauf hingewiesen.

So auch, dass der Dekoder nur für einfache I/O-Operationen mit geringem
Datenvolumen bei 16bit entwickelt wurde. Dies alles steht auch auf der
FAQ-Seite unter:

http://www.pci-card.com/faq008.html

P.S.
Sie sollten fairerweise auch noch auf den günstigen Preis eingehen.
Birnen mit Äpfel vergleichen, halte ich ebenso für unsportlich.

In diesem Sinne...
mfg

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

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ich glaube, dass du mit dem ISA Bus erstmal ganz gut fahren würdest. Er
ist relativ simpel zu programmieren und ich halte das auch für nen
normalen Mikrocontroller (Avr oder Pic) noch machbar, da der ISA Bus
Waitstates für langsamere Peripherie unterstützt. Der Bus selbst läuft
normalerweise mit 8,33Mhz. Genauere Informationen zum ISA Bus findest
du in dem Referenzbuch "ISA & EISA - Theory and Operation" von Edward
Solari aus dem Jahre 1994. Das Buch gibts in fast jeder Uni Bibliothek -
man kann es aber auch noch online kaufen (hab die Adresse leider nicht
mehr, aber googeln wird wohl helfen).

Darüber hinaus ist ISA noch nicht ganz so tot, wie mancher glauben mag.
Wenn Ihr Euch mal die PC/104 Spezifikation anschauen, so werdet Ihr
feststellen, dass dies ein normaler ISA Bus mit anderem Stecker ist.
Ihr findet diesen Bus auf vielen PC embedded Boards - eben weil er so
einfach ist.
Ich habe Euch mal ein Bild meines Boards angehängt. Ihr seht oben ein
Arbor N511 embedded X86 Board (Geode 300Mhz, CF Karte mit Debian Linux,
64MB Ram usw.) und ein Xilinx Spartan 3 Starterkit, welches über das
Kabelgewusel an den PC/104 Bus angeschlossen ist. Ich erreiche beim
16bit Transfer ungefähr eine Transferrate von 1,5MByte/s. Die
Ansteuerung des ISA Buses unter Linux ist auch sehr simpel. Bei Bedarf
poste ich Euch gern ein Beispiel.
Achtet bitte darauf, dass ISA Signale 5V haben und der Spartan3
eigentlich nur bis 3,3V (ich glaube er ist tolerant bis 4,5V) verträgt.
Meinen Spartan hats hier aber trotzdem noch nicht gegrillt :)

Gruß,
     Thomas

Autor: Manfred Glahe (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Autor: Marcel Block
Datum: 22.05.2003 16:45

also der isa-bus scheint wohl ein wenig einfacher zu sein g

hättet ihr auch noch was zu isa?

MFG Marcel
_______________________________________

Die Industrie fertigt auch aktuell noch Mother-Boards mit ISA- BUS an,
wegen der riesigen Menge exzellent funktionierender ISA-Entwicklungen
bei der Kundschaft.

Hier mal eine meiner letzten Entwicklungen für den ISA-BUS. Die
Schrittmotortreiber habe ich übrigens in einer alten Festplatte
Pinmäßig überprüft und zum funktionieren gebracht,anschließend
extrahiert und auf dem eigenen Board integriert. Das Ganze war für
einen Dipl. Arbeitsplatz mit wenig Kohle für seine Rüstzeug gedacht.
Letztlich wird an dem Schrittmotor ein Hebelchen befestigt, an welchem
eine fixierte Heuschrecke gegen akustische Signale richtungsabhängig
verdreht wird.
Der "uralte" Elektronikschrott ist HighTech und wertvoll für knappe
Kassen.

Autor: Manfred Glahe (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Nachtrag:

Entschuldigung, da hatte ich die falsche Datei angehängt.

Autor: Marcel Pokrandt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Leute, schaut mal bitte aufs Datum.
Der Thread ist etwa 3 Jahre alt...*g

Autor: Feadi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ja der Thread ist 3 Jahre al, ist aber doch sehr interessant.

Hier habe ich eine Signalbeschreibung ergoogelt:
http://hwb.sunsite.dk/co_ISA.html

Hat jemand noch einen Tipp, wo man eine gute Beschreibung für das
notwendige Timing, für den ISA-Bus, bekommt?

Feadi

Autor: Feadi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Soso, "isa bus timing" bei Google, gleich das erste Ergebnis.

Jetzt schäme ich mich aber :(

Gruß, Feadi

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]
  • [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.