Forum: FPGA, VHDL & Co. Suche Projekt mit Lothar Miller RS232 - Modul


von TXRX (Gast)


Lesenswert?

Hallo.

Hat zufällig jemand ein Quartus II - Projekt in dem das RS232 - Modul
von Lothar Miller verwendet wird und lauffähig ist ?!

Wäre es möglich, mir dies zur Verfügung zu stellen?

DANKE!


Gruss
Florian

von but y? (Gast)


Lesenswert?

wieso nicht einfach das von seiner seite nehmen und einfach die UCF 
passend machen?

von TXRX (Gast)


Lesenswert?

but y? schrieb:
> wieso nicht einfach das von seiner seite nehmen und einfach die UCF
> passend machen?



Habe ein neues Projekt aufgesetzt und das Modul von der Seite eingefügt.

Jedoch weis ich nicht, wie ich das TOP-Level-Modul konfiguriere muss, 
damit ich das RS232 - Modul verwenden kann.

von but y? (Gast)


Lesenswert?

Die frage ist ja erstmal was genau du überhaupt machen musst. nur das 
RS232 Modul oder noch mehr?

von TXRX (Gast)


Lesenswert?

ich möchte nur das RS232 - Modul nutzen.

Einfach die per VHDL eingetragenen TX_Daten an ein Terminalprogramm 
übertragen.

von but y? (Gast)


Lesenswert?

dann nimm das modul, pinbelegung mit der ucf festlegen und dann sollte 
es auch laufen.
Also eine Top level entity brauchst du eigentlich nicht.

von TXRX (Gast)


Lesenswert?

Nur falls ich das Projekt erweitern möchte,
würde ich trotzdem gern ein TOP-Level anlegen.

Kann mir jemand sagen, was ich dann dort und im UCF-File
eintragen muss, damit es funktioniert?


Danke schonmal!

Gruss

von Holzbirne (Gast)


Lesenswert?

TXRX schrieb:
> Jedoch weis ich nicht, wie ich das TOP-Level-Modul konfiguriere muss,
> damit ich das RS232 - Modul verwenden kann.

Wenn Du das nicht weißt, dann weißt Du es auch bei einer simplen 
UND-Komponente nicht. Am besten Du schaust dir eines der vielen 
VHDL-Tutorials an.

von TXRX (Gast)


Lesenswert?

Holzbirne schrieb:
> Wenn Du das nicht weißt, dann weißt Du es auch bei einer simplen
> UND-Komponente nicht.

Deswegen würde mir ein Beispielprojekt sehr helfen. ;)

Vll. kann ja jemand etwas bereitstellen.

DANKE!

von Marius W. (mw1987)


Lesenswert?

Fang erstmal mit einer blinkenden LED an...

von Bitflüsterer (Gast)


Lesenswert?

> Deswegen würde mir ein Beispielprojekt sehr helfen. ;)
Nein. Eben nicht. Ein Beispiel ist eben nur ein Beispiel.
Du brauchst erstmal das grundlegende Wissen.

Nachtigall, so blöd sind wir auch schon, dass wir wissen wie man sich 
Arbeit spart.

von TXRX (Gast)


Lesenswert?

Bitflüsterer schrieb:
> Nein. Eben nicht. Ein Beispiel ist eben nur ein Beispiel.
> Du brauchst erstmal das grundlegende Wissen.
>
> Nachtigall, so blöd sind wir auch schon, dass wir wissen wie man sich
> Arbeit spart.

Naja,

vll. hat doch jemand etwas für mich oder kann mir zumindest zeigen,
wie ich das ucf-File konfig. muss.

Danke!

von Bitflüsterer (Gast)


Lesenswert?

30s Googeln und Du findest die Quartus II Documentations-Hauptseite.

http://www.altera.com/literature/lit-qts.jsp

Mein Güte. Man kann sich aber auch anstellen.

von Peter B. (funkheld)


Lesenswert?

Hmm.., ich habe hier eine geänderte für mich.

Mit dem Switch kann ich Daten senden zum PC :
TX_Data  : in   STD_LOGIC_VECTOR (7 downto 0); --8 Switch

Und die empfangenen Daten werden am DE1 an den LED ausgegeben:
RX_Data  : out  STD_LOGIC_VECTOR (7 downto 0); -- 8 LED
1
library IEEE;
2
use IEEE.STD_LOGIC_1164.ALL;
3
use IEEE.NUMERIC_STD.ALL;
4
5
entity RS232_tx_rx is
6
    Generic ( Quarz_Taktfrequenz : integer   := 50000000; 
7
              Baudrate           : integer   := 9600
8
             ); 
9
    Port ( RXD      : in   STD_LOGIC;
10
           RX_Data  : out  STD_LOGIC_VECTOR (7 downto 0); -- LEDG        
11
           TXD      : out  STD_LOGIC;
12
           TX_Data  : in   STD_LOGIC_VECTOR (7 downto 0);
13
           CLK      : in   STD_LOGIC
14
           );
15
end RS232_tx_rx;
16
17
architecture Behavioral of RS232_tx_rx is
18
signal txstart : std_logic := '0';
19
signal txsr    : std_logic_vector  (9 downto 0) := "1111111111"; 
20
signal txbitcnt : integer range 0 to 10 := 10;
21
signal txcnt    : integer range 0 to (Quarz_Taktfrequenz/Baudrate)-1;
22
signal TX_Busy  : STD_LOGIC :='0';
23
signal TX_Start : STD_LOGIC :='0';
24
25
type rx_state_t is (IDLE, BUSY, READY);
26
signal rx_state : rx_state_t := IDLE;
27
signal rxd_sr   : std_logic_vector (3 downto 0) := "1111";         
28
signal rxsr     : std_logic_vector (7 downto 0) := "00000000";    
29
signal rxbitcnt : integer range 0 to 9 := 9;
30
signal rxcnt    : integer range 0 to (Quarz_Taktfrequenz/Baudrate)-1; 
31
signal rx_en  : STD_LOGIC :='0';
32
33
signal c : integer range 0 to 9000000 := 0; 
34
35
begin
36
  process
37
  begin
38
    wait until rising_edge(CLK);   
39
      if (c<9000000 ) then        
40
        c <= c+1; 
41
        Tx_Start <= '0';         
42
      else                         
43
        c <= 0;                                       
44
        Tx_Start <= '1';        
45
      end if;   
46
  end process; 
47
  
48
  process
49
  begin
50
    wait until rising_edge(CLK);
51
      txstart <= TX_Start;
52
      if (TX_Start='1' and txstart='0') then 
53
         txcnt    <= 0;                      
54
         txbitcnt <= 0;                      
55
         txsr     <= '1' & TX_Data & '0';    
56
      else
57
         if(txcnt<(Quarz_Taktfrequenz/Baudrate)-1) then
58
            txcnt <= txcnt+1;
59
         else  
60
            if (txbitcnt<10) then
61
              txcnt    <= 0;
62
              txbitcnt <= txbitcnt+1;
63
              txsr     <= '1' & txsr(txsr'left downto 1);
64
            end if;
65
          end if;
66
       end if;    
67
  end process;
68
  TXD     <= txsr(0); 
69
  TX_Busy <= '1' when (TX_Start='1' or txbitcnt<10) else '0';
70
 
71
  process
72
  begin
73
    wait until rising_edge(CLK);   
74
    rxd_sr <= rxd_sr(rxd_sr'left-1 downto 0) & RXD;
75
    RX_en  <= '0';
76
    
77
    case rx_state is
78
      when IDLE => -- warten auf Startbit
79
        if (rxd_sr(3 downto 2) = "10") then                 
80
          rxcnt    <= ((Quarz_Taktfrequenz/Baudrate)-1)/2; 
81
          rxbitcnt <= 0;
82
          rx_state <= BUSY;
83
        end if;
84
      when BUSY =>
85
        if (rxbitcnt<9) then  
86
          if(rxcnt<(Quarz_Taktfrequenz/Baudrate)-1) then 
87
            rxcnt    <= rxcnt+1;
88
          else
89
            rxcnt    <= 0; 
90
            rxbitcnt <= rxbitcnt+1;
91
            rxsr     <= rxd_sr(rxd_sr'left-1) & rxsr(rxsr'left downto 1); 
92
          end if;
93
        else
94
          rx_state <= READY;
95
        end if;
96
      when READY =>
97
        RX_Data  <= rxsr;
98
        rx_state <= IDLE;   
99
    end case;
100
  end process;  
101
102
end Behavioral;

Gruss

: Bearbeitet durch User
von Chris S. (wedgebo)


Lesenswert?

Du kannst meines Wissens nach die pins in quartus mit dem pin Planner 
zuweisen, oder eine csv Datei mit den Zuordnungen importieren.

Ich habe es noch nciht gemacht, nur mal gelesen, weil ich mich für 
Altera interessiere. Du kannst mal nach DE1 csv pins o.ä. suchen bzgl. 
der Konfigurationsdatei. (Hat für mich irgendwie den Vorteil, dass man 
die auch weiterbenutzen kann ohne immer pin Planner zu benutzen, denn 
die Hardware ändert sich beim üben ja i.d.R. nicht)

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
Noch kein Account? Hier anmelden.