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
wieso nicht einfach das von seiner seite nehmen und einfach die UCF passend machen?
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.
Die frage ist ja erstmal was genau du überhaupt machen musst. nur das RS232 Modul oder noch mehr?
ich möchte nur das RS232 - Modul nutzen. Einfach die per VHDL eingetragenen TX_Daten an ein Terminalprogramm übertragen.
dann nimm das modul, pinbelegung mit der ucf festlegen und dann sollte es auch laufen. Also eine Top level entity brauchst du eigentlich nicht.
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
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.
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!
> 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.
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!
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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.