Robotrontechnik-Forum

Registrieren || Einloggen || Hilfe/FAQ || Suche || Mitglieder || Home || Statistik || Kalender || Admins Willkommen Gast! RSS

Robotrontechnik-Forum » Technische Diskussionen » Z1013 auf FPGA - weiter gehts » Themenansicht

Autor Thread - Seiten: [ 1 ] [ 2 ] -3-
200
13.01.2014, 15:58 Uhr
funkheld




Zitat:
Deshalb bin ich ja so vorsichtig, weil ich keine Lust habe, mir für 150-200€ ein neues Spielzeug zu kaufen, für das ich möglicherweise zu blöd, zu alt oder beides bin. Mit programmieren habe ich ale Lehrmops angefangen, aber jetzt bin ich Rentner.

Darum ich als 64 Jähriger aufgegeben.

Mit Einlesen usw ist es nicht getan.
Mit diesen Dingern tun sich sogar angehende Ing und fertige Ing schwer.
Da mußt du schon Täglich drin bleiben.
Auch über die größe der Geräte für eine Simulation vom C64 ,Z1013 usw ist man sich nicht einig. Einige haben schon auf das 300 Euro teure Gerät gewechselt, weil einige Sachen nicht so richtig laufen bzw sich programmieren lassen "SD-Karte" und der bestimmte Ramspeicher zu klein war.

Auch die Programmiersoftware ist nicht "ohne", wenn du das Board voll auschöpfen möchtest, packst du für die Progarmmiersoftware noch einmal 700 Euro hin.

Einige haben sich die Programmiersoftware wahrscheinlich von der UNi besorgt , programieren dort oder bekommen Studentenrabatt beim kauf der Software.


Zitat:
4. bestände eventuell sogar die Möglichkeit, daß mal einer an einem janz simplen Beispiel - zB. einen Frequenzzähler oder sowas - die "Verdrahtung", die Software, die Verbindung mit dem Board und den Flashvorgang beschreibt? Dann hätte ich zumindest ein funktionierendes Beispiel, auf dem ich aufbauen könnte.

Frequenzzähler...viel spass....das Ding macht schon viel Arbeit.

Achtung: Wenn du die Dinger falsch programmierst, kannst du auch durch die sogenannte Softverdrahtung das Gerät zerstören, du kannst also auch kurzschlüsse programmieren und dein Chip brutzelt durch.
GRuss

Dieser Beitrag wurde am 13.01.2014 um 16:10 Uhr von funkheld editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
201
13.01.2014, 22:41 Uhr
PeterSieg



In der Grundaussage stimmen evtl. einige Aspekte.. aber ganz so dolle schlimm ist es dann doch nicht..

Software ist ersteinmal für Hobbyanwender kostenlos! Xilinix ISE Webpack oder Quartus - egal.

Programmierbare Logik gibt es in Form von CPLDs oder FPGAs.
(Früher auch PAL/GALs).
Kleinere Boards mit Stiften für Steckbretter gibts ebenfalls für 30€.
Mehr braucht es ersteinmal für den Einstieg nicht.
Eval. Boards kosten etwas mehr (100-150€). Gibts manchmal auch gebraucht für 60-90€ (MK Forum).

Ja, AVRs/PICs sind etwas preiswerter und einfacher! Ist aber etwas ganz anderes!

---

Link (VGA-Test):
http://petersieg.bplaced.net/?Spartan3E_SK:VGA-Test


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


entity VGATest is
    Port ( clk50_in : in  STD_LOGIC;
           red_out : out  STD_LOGIC;
           green_out : out  STD_LOGIC;
           blue_out : out  STD_LOGIC;
           hs_out : out  STD_LOGIC;
           vs_out : out  STD_LOGIC);
end VGATest;

architecture Behavioral of VGATest is

signal clk25              : std_logic;

signal horizontal_counter : std_logic_vector (9 downto 0);

signal vertical_counter   : std_logic_vector (9 downto 0);

begin

-- generate a 25Mhz clock
process (clk50_in)

begin
  
if clk50_in'event and clk50_in='1' then
    
  if (clk25 = '0') then
      
    clk25 <= '1';
    
  else
      
    clk25 <= '0';
    
  end if;
  
end if;

end process;



process (clk25)

begin
  
  if clk25'event and clk25 = '1' then
    
    if (horizontal_counter >= "0010010000" ) -- 144
    and (horizontal_counter < "1100010000" ) -- 784
    and (vertical_counter >= "0000100111" ) -- 39
    and (vertical_counter < "1000000111" ) -- 519
    then
      
      red_out <= horizontal_counter(3)
                and vertical_counter(3);
      
      green_out <= horizontal_counter(4)
        and vertical_counter(4);
    
      blue_out <= horizontal_counter(5)
        and vertical_counter(5);
  
    else
      
      red_out <= '0';
      
      green_out <= '0';
      
      blue_out <= '0';
    
    end if;
    
    if (horizontal_counter > "0000000000" )
      and (horizontal_counter < "0001100001" ) -- 96+1
    then
      
      hs_out <= '0';
    
    else
      
      hs_out <= '1';
    
    end if;
    
    if (vertical_counter > "0000000000" )
      and (vertical_counter < "0000000011" ) -- 2+1
    then
      
      vs_out <= '0';
    
    else
      
      vs_out <= '1';
    
    end if;
    
    horizontal_counter <= horizontal_counter+"0000000001";
    
    if (horizontal_counter="1100100000") then
      
      vertical_counter <= vertical_counter+"0000000001";
      
      horizontal_counter <= "0000000000";
    
    end if;
    
    if (vertical_counter="1000001001") then            
      
      vertical_counter <= "0000000000";
    
    end if;
  
  end if;

end process;

end Behavioral;

Oder:
http://www.bigmessowires.com/2009/06/21/fpga-pong/

Peter
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
202
17.02.2014, 13:51 Uhr
funkheld




Zitat:
Quartus

Hmmm..., es läuft nur bis XP, ab WIN7 nicht mehr, ansonsten muß man es kaufen.


Gruss
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
203
17.02.2014, 14:33 Uhr
abnoname

Avatar von abnoname

Quartus läuft natürlich unter Windows 7.

Es gibt wohl Probleme mit dem Treiber des eingebauten USB Blaster im DE1 unter Win 7 64bit. Dafür aber auch Lösungen: http://www.alteraforum.com/forum/showthread.php?t=19233

Ich denke, das gehört aber hier nicht in den Thread.

VG
Franz
--
mein Blog: http://abnoname.blogspot.de
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
204
17.02.2014, 20:28 Uhr
Giesberth

Avatar von Giesberth

Hallo abnoname,

bin jetzt auch seit 4 Tagen in Besitz eines DE-1 und habe seit Beginn des Beitrages die Entwicklung verfolgt. Nun habe ich alles zum Laufen bekommen und wie soll es auch anderst sein natürlich auch noch ein Problem mit dem Übertragen der Z1013_DE1.pof. ASP ist eingestellt es werden auch Daten übertragen, aber es funktioniert nach RUN nicht. Oder ist es gewollt die Z1013 Datei nicht fest auf das DE1 zu programmieren.

Auf alle Fälle Hut ab für die Umsetzung.

Mit freundlichen Grüßen
Giesberth

P.S. BS WIN7/Ultimate --> manuelle Installation USB Blaster von Geräte Manager aus --> Programme/Quatus/drivers/usb-blaster/x.64
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
205
17.02.2014, 21:18 Uhr
abnoname

Avatar von abnoname

Hi,

ich kann dir leider jetzt nicht aus dem FF erklären, wie man genau das Design in den FPGA lädt. Bin grad nur mit dem Netbook unterwegs und habe da kein Quartus laufen.

Im wesentliche ist das aber so:
1) ein FPGA hat nur SRAM Zellen für seine "Verdrahtung"
2) neben dem FPGA gibt es einen Flashbaustein, dessen Inhalt beim Booten in den FPGA gespiegelt wird
3) der SRAM im FPGA kann direkt mittels JTAG (= der Byteblaster im DE1) geladen werden

Letztere Methode benutzt man bei der Entwicklung (sehr schnell). Punkt 2 (Flash) benutzt man dann, wenn das Design quasi fertig ist und offline auf der Platine laufen soll.

Das Problem ist nun, dass man den Flash nicht direkt beschreiben kann. Der Datenbus hängt typischerweise nur am FPGA. Dazu gibt es aber folgende Wege:
- ein nur für das Flashen gedachte Design wird in den FPGA geladen und brennt dann den Flash mit "durchgereichten" Daten
- man leitet den Datenbus zum Flash um auf eine Datenquelle

Letzteren Punkt macht das DE1, wenn man den Schalter von RUN auf PROG (? hab das Board grad nicht vor mir) stellt. Sprich, du müsstest dir im Netz die Anleitung suchen, wie man das pof - File in den Flash brennt.

Ein Compile-Vorgang im Quartus erzeugt immer jeweils ein .pof und ein .sof File. Imho war .pof für den Flash und das .sof, um es direkt per JTAG in den FPGA zu laden.

Ich würde dir erstmal empfehlen in dem Quartus Programmer Tool eine normale JTAG Chain einzurichten (entweder ein HowTo suchen oder etwas probieren, da es sich fast selbst erklärt). Die Chain besteht dann nur aus dem FTDI Byteblaster und dem FPGA an sich. Dann lädtst du das .sof File rein und lädtst das Design hoch.

Wenn du gezielt Hilfe brauchst, melde dich einfach bei mir. Ich muss dann nur schnell das Setup aufbauen.

VG
Franz
--
mein Blog: http://abnoname.blogspot.de
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
206
18.02.2014, 17:31 Uhr
Giesberth

Avatar von Giesberth

Hallo abnoname,

vielen Dank für die schnelle Antwort. Habe die Ursache weshalb die pof Datei nicht gespeichert wurde gefunden. Programmer wollte die Datei auf den EPCS16 speichern obwohl auf den DE1 der EPCS4 verbaut ist. Also noch mal alle Konfigurationdaten überprüft und die Auto-Einstellung auf den EPCS4 eingestellt. Projekt nochmal durchlaufen lassen und jetzt funktioniert alles.

Mit freundlichen Grüßen
Giesberth
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
207
20.02.2014, 09:54 Uhr
PeterSieg



Mal günstige Alternativen:

http://searle.hostei.com/grant/uk101FPGA/index.html

http://searle.hostei.com/grant/Multicomp/index.html

Habe mir mal ein solches FPGA Mini Board bestellt über ebay für 35€.

Peter
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
208
14.03.2014, 08:41 Uhr
PeterSieg



So. Die Tage angekommen und läuft! Allerdings braucht meine PS/2 Tast. +5V.
In der Skizze sind +3,3V an der roten Leitung - das hat nicht gereicht.

Bild:
http://petersieg.bplaced.net/?UK101_in_FPGA

Übrigens gibt es das Board ohne USB Blaster für ca. 14€ aus Australien.
USB Blaster alleine ca. 7€.
Günstiger kommt man wohl nicht an ein Retro-Computer als Nachbau.

Frage:
Siehe Bild meines Aufbaus.
Auf den Pfostensteckreihen (2x14-pol) habe ich eine Pfostenbuchse mit Flachbandkabel aufgesteckt und dann die Kabel an der Lochrasterplatine angelötet.

Nun zur Frage:
Falls ich eine Platine bauen möchte, die man direkt aufstecken kann, wie heissen
die Buchsen, die man direkt einlöten kann (also anstatt des Flachbandkabels+Buchse)??

Hatte da bei reichelt nichts gefunden - aber wahrscheinlich nicht nach dem richtigen Begriff gesucht..

Peter
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
209
14.03.2014, 09:23 Uhr
Wusel_1



Findest du hier - http://www.reichelt.de/Buchsenleisten/2/index.html?&ACTION=2&LA=2&GROUP=C142&GROUPID=3221&START=0&OFFSET=500&SHOW=1;SID=14UyK7-n8AAAIAAHblPVU4d58b36f9f6584d056eb67c49c91e4bb
Ist nur zur Anschicht, da es bei Reichelt den 2x14 nur im Rastermaß 2 mm gibt.
Ob du da überhaupt 2x14 in 2,5mm Rasters findest bezweifle ich. Da wirst du sicher eine längere Buchse nehmen und die Säge ansetzen.
--
Beste Grüße Andreas
______________________________________
DL9UNF ex Y22MF es Y35ZF
JO42VP - DOK: Y43 - LDK: CE

*** wer glaubt, hört auf zu denken ***

Dieser Beitrag wurde am 14.03.2014 um 17:24 Uhr von Wusel_1 editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
210
15.03.2014, 09:20 Uhr
Wusel_1



Sowas muss es sein (Beispiel): http://www.ebay.de/itm/Buchsenleiste-RM-2-54-mm-Low-Profile-Pole-2-x-36-BL-LP-4-72-S-Fischer-Elektr-/360741433326?_trksid=p2054897.l4275
Gibt es aber nicht als 2x14. Die nächste Größe ist 2x20. Dürfte aber kein Problem sein, da diese leicht zu kürzen ist.
--
Beste Grüße Andreas
______________________________________
DL9UNF ex Y22MF es Y35ZF
JO42VP - DOK: Y43 - LDK: CE

*** wer glaubt, hört auf zu denken ***
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
211
15.03.2014, 13:55 Uhr
PeterSieg



Jup.

Danke. Damit werde ich was passendes finden.

Peter
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
212
22.03.2014, 21:59 Uhr
Bert



Ich war ja hier eine Weile nicht mehr aktiv (irgendwie wandern die Tabs im Browser immer nach links, wenn es neue Projekte gibt...),
aber es sind ja einige neue Interessenten dazugestoßen.

Ich werde Anfang April wieder in Garitz dabei sein und kann auch gern die eine oder andere Schützenhilfe geben.

Eigentlich wollte ich noch den SD-Reader dranbauen, aber nachdem RS232 ging, habe ich nichts mehr dran gemacht.

Viele Grüße,
Bert
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
213
12.04.2014, 18:02 Uhr
funkheld



Hallo, guten Tag.
Ich möchte es noch einmal versuchen mit dem DE1-Board.
Man hat mir eins geschenkt zum 65.zigsten.

Welche Quartusversion sollte man runterladen?
Wo ist genau der Teiber zu finden damit man mit mit Win7(64Bit) den Treiber ansprechen kann? Ich brauche mal bitte einpaar Tut's für VHDL in deutsch.

Wäre um viele Anfängerhilfe dankbar.
Das Denkvermögen läßt halt ein bisschen nach.

Hallo meikel, vielleich sollte wir beide mal auf den Zug springen.....??

Ohne Hilfe wird es aber nicht klappen.
Ich hatte schon einmal das Handtuch geschmissen.

Danke.
Gruss

Dieser Beitrag wurde am 12.04.2014 um 18:11 Uhr von funkheld editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
214
13.04.2014, 13:20 Uhr
Giesberth

Avatar von Giesberth

Hallo funkheld,

ich habe mir die Quartus Vers. 13.0 geladen. Damit läuft auch das Z1013 Projekt.
Hier der Link für die Suche nach den 64bit Treiber
http://www.altera.com/download/drivers/usb-blaster/dri-usb-blaster-vista.html

Bei mir ist das --> d:/altera/13.0/drivers/usb-blaster/
wird über den Geräte Manager/Unbekanntes Gerät/Treiber eingegeben.

Hier noch einen Link
http://www.vuolsavest.net/t3o/arkanoidFpga/#page-7
ist zwar nicht in deutsch doch wofür gibts die google Übersetzer

Mit freundlichen Grüßen
Giesberth
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
215
13.04.2014, 17:29 Uhr
funkheld



Hallo, danke.
.......wird über den Geräte Manager/Unbekanntes Gerät/Treiber eingegeben......
Welches Gerät gibts du da ein, es kommt ja eine Liste, oder ?

Wo setzt du hier beim runterladen übeall die Häkchen.
Ich steige da nicht so durch:
http://dl.altera.com/13.0/?edition=web

Danke.
Gruss

Dieser Beitrag wurde am 13.04.2014 um 17:35 Uhr von funkheld editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
216
13.04.2014, 18:19 Uhr
Giesberth

Avatar von Giesberth

Hallo funkheld,

1. http://dl.altera.com/13.0/?edition=web >>Direct Download anklicken<<
2. Quartus II Software (includes Nios II EDS) >>anklicken<<
2. Eröffne ein Altera Account
3. Danach kannst du die Software laden und istallieren
4. im Geräte Manager steht danach USB-Blaster hier gibst du den Pfad für den Treiber ein

Mit freundlichen Grüßen
Giesberth
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
217
13.04.2014, 22:27 Uhr
funkheld



Jup danke für die Hilfe.

Gruss
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
218
13.04.2014, 23:11 Uhr
funkheld



Hallo, guten Tag.
QuartusSetupWeb-13.0.0.156.exe habe ich jetzt installiert.
Ist dieses Programm das einzige was man braucht zum programmiereren?

Wer kann bitte einmal hier schreiben, wie man jetzt mit Quartus dieses :
Z1013_de1_uart_30042013.zip compiliert.
Wäre auch ein guter Einstieg für die Zukunft wie man das hinbekommt.


Danke.
Gruss

Dieser Beitrag wurde am 14.04.2014 um 09:12 Uhr von funkheld editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
219
14.04.2014, 10:27 Uhr
Giesberth

Avatar von Giesberth

Hallo funkheld,

Quartus, DE-1 Board und USB Blaster läuft?

hier malnoch einen Link der vieles erklärt.

http://www.elektor.de/Uploads/Files/060025-12DE.pdf

Mit freundlichen Grüßen
Giesberth
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
220
14.04.2014, 12:10 Uhr
funkheld



....Quartus, DE-1 Board und USB Blaster läuft?.....

Hallo, guten Tag.
Deine PDF-Hilfe ist wunderbar.

Das DE1 wird als Hardware nicht erkannt.
Ich habe für WIN7 dieses installiert:
USB Blaster WIN7 x64.zip

Bei Hardware im Gerätemanager steht unter USB-Controller:
Altera USB-Blaster
Der Treiber wurde also eingebunden.
Im Manager ist auch kein Treiber mit "?" zu sehen, eigentlich ein gutes Zeichen. Aber wenn ich jetzt QuartusII starte und in Programmer reingehe wird nichts angezeigt. Wenn ich Hardware-Setup starte steht da "no Hardware".

Das DE1-Board blinkt und zeigt die Zahlen an , es funktioniert auch.

Auch konnte ich dieses "Z1013_de1_uart_30042013.zip" compilieren.

Danke.
Gruss

Dieser Beitrag wurde am 14.04.2014 um 13:34 Uhr von funkheld editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
221
14.04.2014, 13:54 Uhr
Giesberth

Avatar von Giesberth

Hallo funkheld,

einfach den USB Stecker raus und wieder rein, so solllte der USB-Blaster beim Hardware Setup erscheinen übernehmen und schon sollte es gehen.

Mit freundlichen Grüßen
Giesberth
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
222
14.04.2014, 14:34 Uhr
funkheld



Jup danke.

Wird nicht aktiviert.
Rein ...raus...DE1 aus...DE1 ein...

Gruss
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
223
14.04.2014, 14:55 Uhr
Giesberth

Avatar von Giesberth

Hallo funkheld,

schau mal in dein Nachrichtenordner

Mit freundlichen Grüßen
Giesberth
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
224
14.04.2014, 20:42 Uhr
Bert




Zitat:
funkheld schrieb
Das DE1-Board blinkt und zeigt die Zahlen an , es funktioniert auch.

Auch konnte ich dieses "Z1013_de1_uart_30042013.zip" compilieren.


Dann brauchst Du ja nur noch einen VGA-Bildschirm und eine PS/2-Tastatur anzuschließen...

Viel Spaß
Bert
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
225
15.04.2014, 09:14 Uhr
funkheld



Jetzt läuft auch der USB-Blaster mit WIN7(64Bit).
Habe im Systemmenü Benutzer/AppData einiges an altem USB-Blasterschrott gefunden und habe da alles gelöscht und den USB-Blaster neu angemeldet.


...Dann brauchst Du ja nur noch einen VGA-Bildschirm und eine PS/2-Tastatur anzuschließen...
Jup, die habe ich, weil mein Chameleon(TC64) damit läuft.


Gruss.

Dieser Beitrag wurde am 15.04.2014 um 15:15 Uhr von funkheld editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
226
16.04.2014, 21:44 Uhr
funkheld



Hallo, guten Tag.
ich brauche bitte einmal Hilfe um ein Signal vom GPIO an ein BAS-Eingang am Flachbildschirm zu nutzen.

' 27,5 4,5 27,5 4,5 ---> die ersten 2,5 Zeilen

' 2,25 29,75 2,25 29,75 ---> wieder 2,5 Zeilen

' 4,5 6 52µs Bildinhalt 1,5 µs ---> 307 Zeilen mit Bildinhalt

Kann man das Signal vom GPIO direkt an den BAS setzen um das Signal als Balken usw zu erkennen ohne den DE1 zu zerstören?

Danke.
Gruss
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
227
17.04.2014, 21:57 Uhr
Bert




Zitat:
funkheld schrieb
Kann man das Signal vom GPIO direkt an den BAS setzen um das Signal als Balken usw zu erkennen ohne den DE1 zu zerstören?


Welche Spannung kommt aus Deinem FPGA?
Welche Spannung verträgt Dein Bildschirm?
Üblicherweise verwendet man einen Spannungsteiler zur Pegelanpassung.

Grüße,
Bert
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
228
18.04.2014, 13:58 Uhr
funkheld



Jup, danke.

Kann man diese Möglichkeit für ein BAS-Signal nutzen? :
Ich möchte das Signal PIN_D9 VGA_RED(0) für ein BAS-Signal
nutzen. Wie hoch ist die Spannung vom Siganl VGA_RED(0) vom DE1?
Kann man diesen PIN auch für ein BAS-Signal nutzen?

Kann man die VGA_RED(0)-VGA_RED(3) auch für die Darstellung von
Graustufen verwenden wenn davon mehrere Signale aktiv sind?

Danke.
GRuss

Dieser Beitrag wurde am 18.04.2014 um 13:58 Uhr von funkheld editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
229
18.04.2014, 14:01 Uhr
funkheld



Hallo guten Tag.

Ich möchte jetzt auch einmal dieses SRAM nutzen vom DE1.
Wer kann das Lesen und Schreiben auf diesem SRAM einmal erkären in VHDL?

Ich möchte einmal 1 Word schreiben und 1 Word wieder lesen .

Danke.
Gruss
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
230
19.04.2014, 08:26 Uhr
Bert




Zitat:
funkheld schrieb
Kann man diese Möglichkeit für ein BAS-Signal nutzen? :


Such doch mal bitte einen Link vom Schaltplan heraus. Ich habe dieses Board nicht, aber dort kann man nachschauen, wie alles angeschlossen ist.

Prinzipiell sollte man über den 4-Bit "DA"-Wandler auch ein BAS-Signal ausgeben können.

Grüße,
Bert
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
231
19.04.2014, 08:29 Uhr
Bert




Zitat:
funkheld schrieb
Ich möchte jetzt auch einmal dieses SRAM nutzen vom DE1.
Wer kann das Lesen und Schreiben auf diesem SRAM einmal erkären in VHDL?

Ich möchte einmal 1 Word schreiben und 1 Word wieder lesen .


Zeitliche Abläufe werden in VHDL/FPGA über eine Statemachine (FSM) abgebildet.
Hier findest Du eine kurze Abhandlung darüber:
http://www.lothar-miller.de/s9y/categories/37-FSM

Grüße,
Bert
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
232
19.04.2014, 18:22 Uhr
funkheld



Hallo, guten Tag.

Jetzt habe ich mir noch einmal dieses VGA 640x480 vorgenommen.
Nach langem ausprobieren und fragen (teilweise mangelhafte Antworten) habe ich ein VGA-Bild hinbekomen speziell für den DE1 teilweise aus anderen Code.

Das mit den Farben geht nur über je 4-Farbvectoren.
Links ist Rot und die andere Häfte ist Grün.


Quellcode:

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use ieee.numeric_std.ALL;

entity vga_timing is
port(
  clk50_in  : in std_logic;
  hs_out    : out std_logic;
  vs_out    : out std_logic;
  
  red_out   : OUT STD_LOGIC_VECTOR(3 downto 0);
  green_out : OUT STD_LOGIC_VECTOR(3 downto 0);
  blue_out  : OUT STD_LOGIC_VECTOR(3 downto 0)
  );
end vga_timing;

architecture behavioral of vga_timing is

signal clk25    : std_logic:='0';
signal hcounter : unsigned (9 downto 0):=to_unsigned(0,10);
signal vcounter : unsigned (9 downto 0):=to_unsigned(0,10);

begin

-- generate a 25Mhz clock
process (clk50_in)
begin
  if clk50_in'event and clk50_in='1' then
    clk25 <= not clk25;
  end if;
end process;

process (clk25)
begin
  if clk25'event and clk25 = '1' then
    if vcounter<480 then
      if hcounter < 320 then
        red_out<="1000";
      else
        red_out<="0000";
      end if;
    end if;
  end if;
end process;

process (clk25)
begin
  if clk25'event and clk25 = '1' then
    if vcounter<480 then
      if (hcounter > 320 and hcounter < 640) then
        green_out<="1000";
      else
        green_out<="0000";
      end if;
    end if;
  end if;
end process;

process (clk25)
begin

  if clk25'event and clk25 = '1' then
    if hcounter >= (639+16) and hcounter <= (639+16+96) then
      hs_out <= '0';
    else
      hs_out <= '1';
    end if;
  
    if vcounter >= (479+10) and vcounter <= (479+10+2) then
      vs_out <= '0';
     else
      vs_out <= '1';
    end if;
  
-- horizontal counts from 0 to 799
    hcounter <= hcounter+1;
  
    if hcounter = 799 then
      vcounter <= vcounter+1;
      hcounter <= to_unsigned(0,10);
    end if;
  
-- vertical counts from 0 to 524
    if vcounter = 524 then
      vcounter <= to_unsigned(0,10);
    end if;
  end if;
end process;

end behavioral;



Das ist dei Pinbelegung aus der Datei:
set_location_assignment PIN_L1 -to clk50_in
set_location_assignment PIN_A11 -to hs_out
set_location_assignment PIN_B11 -to vs_out
set_location_assignment PIN_A9 -to blue_out[0]
set_location_assignment PIN_D9 -to red_out[0]
set_location_assignment PIN_B8 -to green_out[0]
set_location_assignment PIN_B10 -to blue_out[3]
set_location_assignment PIN_A10 -to blue_out[2]
set_location_assignment PIN_A8 -to green_out[3]
set_location_assignment PIN_B9 -to green_out[2]
set_location_assignment PIN_C10 -to green_out[1]
set_location_assignment PIN_B7 -to red_out[3]
set_location_assignment PIN_A7 -to red_out[2]
set_location_assignment PIN_C9 -to red_out[1]
set_location_assignment PIN_D11 -to blue_out[1]


Gruss

Dieser Beitrag wurde am 19.04.2014 um 18:24 Uhr von funkheld editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
233
24.07.2014, 17:45 Uhr
funkheld



Hmmm.., gibt es nichts Neues hier für uns Anfänger...Sommerpause....?

Gruss

Dieser Beitrag wurde am 24.07.2014 um 17:45 Uhr von funkheld editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
234
28.07.2014, 06:11 Uhr
ad fontes




Zitat:
funkheld schrieb
Hmmm.., gibt es nichts Neues hier für uns Anfänger...Sommerpause....?




Hallo Funkheld,

auf deine Anfrage hin, hab ich mal die alten Sourcen wieder aufgemacht und bin dran den rs232 Empfänger um einen Sender zu ergänzen. Dann wie schon länger angedacht ein DMA-Modul dazu das über den CPU-Speicherbus auf den Arbeitsspeicher zugreift und lesen/schreiben sollte kein Problem sein. Termin f.Fertigstellung ist aber ungewiß.

Ein neue projekt-idee das in diesem Zusammenhang kurz aufblitzte ist die Integration einesRasPi's über dessen GPIO's als SDcard interface. Ein Raspberry Minicomputer ist für ca 35. Euro zu haben. Eventuell läßt sich auch ein Tastaturadaptur für den Z1013 damit machen. Das wäre dann eine fast reine Softwärelösung, bei der ein 700 MHz Linux-Rechner ein paar TTL Gräber ersetzt.
Die Frage ist ob die GPIO's sich ausreichend schnell ansteuern lassen.

MfG
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
235
28.07.2014, 19:55 Uhr
Mobby5



Einen Raspi als Peripherie für den FPGA-Z1013? Ist das nicht mit Kanonen auf Spatzen geschossen? Der Raspi könnte doch wahrscheinlich selbst die Z1013-Emulation noch mit übernehmen. Nehmt da mal lieber noch Atmels oder so dafür. Meine Meinung.
--
und ausserdem muss in Zeile 20 der Doppelpunkt durch ein Semikolon ersetzt werden
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
236
07.08.2014, 15:33 Uhr
funkheld



------------------------
Der Raspi könnte doch wahrscheinlich selbst die Z1013-Emulation noch mit übernehmen.
------------------------

Thema war schon mal..., der Raspi schafft es, aber zu Lahm....

Gruss

Dieser Beitrag wurde am 07.08.2014 um 15:43 Uhr von funkheld editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
237
07.08.2014, 15:43 Uhr
funkheld



Ich teste es gerade mit einem Propeller-Chip.

Habe da eine größere Profiplatine am Wickel(gekauft), Da habe ich eine Micro-SD-Karte laufen, 128KB S-Ram und 4 MB Flash-Ram.
Alles auf einer kleinen Platine für das Steckboard.
Dabei die Software für alle 3 Speichermedien, also nichts neues erfinden, kann gleich losgehen.

Geht so nebenbei zum DE1 Board, beide haben 3,3 Volt.

http://www.parallax.com/product/32111
http://www.parallax.com/product/40004

Eine kleine Propellerplatine kann man sich auch selber basteln. Gehört nicht viel drauf.

Gruss

Dieser Beitrag wurde am 07.08.2014 um 15:48 Uhr von funkheld editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
238
10.08.2014, 18:14 Uhr
ad fontes



Kleine Fortschritte und ein paar Festlegungen.

RS232 Empfangs und sendemodul überarbeitete bzw. neu.:
http://www.mikrocontroller.net/svnbrowser/redz0mb1e/src/vhdl/
rs232_tx.vhd
rs232_pkg.vhd
rs232_rx.vhd

Diese Dateien ersetzten das rs232_if.vhd.

Um bis zu 64 kbyte einigermassen flott übertragen zu können, hab ich die Baudrate auf 57600 hoch gesetzt (siehe rs232_pkg.vhd). Das sollte nicht zu schnell sein. Start und End Adressen werd ich nach dem header save Format, also aus den ersten 8 Byte übernehmen. Siehe
http://www.z1013.de/pdf/headersave_59.pdf

Statt für jedes byte einzeln den Busanzufordern werd ich wohl 8 byte erst mal zwischenspeichern. Da auf dem FPGA noch 3000 FlipFlops und ca. 1400 LUT's frei sind sollte das kein Problem sein.

MfG,
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
239
02.10.2014, 08:56 Uhr
funkheld



Hallo Herzi.
Ich spiele jetzt auch seit ca 3 Wochen mit Verilog.

Habe gesehen, das es einfacher zu Handhaben ist wie das VHDL.
Das VHDL ist immer überfüllt mit speziellen Anweisungen und sehe eigentlich nicht
mehr die Funktionsweise daraus, was ich sehen möchte. Es ist mir zu überfüllt.

Dein Projekt hier ist sehr interessant.
Da kann ich bestimmt noch etwas lernen.


Kannst du mir bitte den Code einmal zukommen lassen?
Oder hier immer deine weiteren Fortschritte in Verilog reinstellen.

Danke.
Gruss

Dieser Beitrag wurde am 02.10.2014 um 08:58 Uhr von funkheld editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
240
08.10.2014, 18:50 Uhr
Herzi



@funkheld, lass mir mal eine Mailaddr. zukommen, im Moment ist der Code noch nicht aufgeräumt und ich war da auch schon lange nicht mehr dran, deshalb würde ich den jetzt auch nur ungern so öffentlich verbreiten. Kann dir jetzt nur anbieten das ich alles zusammen packe und du müsstest dir die Module selber raus suchen die noch aktuell sind, denn da sind noch einige Experimente und angefangene Schnippel Code bei wo ich jetzt nicht mehr genau Bescheid weiß. Hatte die Tage zwar schon mal geschaut und noch mal Probiert, aber... Im Moment kann ich auch nicht lange vorm Rechner verbringen da ich arge Probleme mit meinen Augen habe, das dauert alles noch einige Monate biss ich die nächsten OPs hinter mir habe und dann hoffentlich wieder einigermaßen Glotzen kann... könnte also etwas dauern bis was von mir kommt, Sorry.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
241
10.10.2014, 04:05 Uhr
ambrosius



@Herzi

Gute Besserung!!!
--
Viele Grüße
Holger
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
242
10.10.2014, 23:57 Uhr
funkheld



Jup, danke Herzi, habe dir eine Pn geschickt.
Ich wünsche dir alles Gute für deine Gesundheit.

Ich freue mich über deinen Experiemente , die du da erzeugt hast.

mail : funkheld@arcor.de

Danke.
Gruss

Dieser Beitrag wurde am 10.10.2014 um 23:58 Uhr von funkheld editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
243
05.01.2015, 09:13 Uhr
funkheld



Hallo, guten Tag.

Ich habe es jetzt geschafft den SRAM auf dem DE1 mit RS232 (19200 Baud) vom PC aus zu Lesen und zu beschreiben. Siehe 2 VHDL.

Könnte man den SRAM jetzt auch irgendwie in den Z1013-FPGA packen um ihn mit 64KB laufen zulassen, dann brauchte man nicht mehr so einen großen Blockram ?

Das 1. VHDL:

Quellcode:

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

entity sram_rx_tx is
  port ( clk50      : in      std_logic;
         sw       : in    std_logic_vector ( 2 downto 0);
         ledr         : out   std_logic_vector ( 7 downto 0);
         ledg         : out   std_logic_vector ( 7 downto 0);
        
         raddr        : out     std_logic_vector (17 downto 0);
         rdata         : inout std_logic_vector (15 downto 0);
        
         ce                : out        std_logic;
         we                : out        std_logic;    
         oe                : out        std_logic;
         lb                : out        std_logic;
         ub                : out        std_logic;
         rxd      : in  std_logic;
         txd      : out  std_logic
       );
end sram_rx_tx;

architecture behavioral of sram_rx_tx is

signal addr            : std_logic_vector ( 17 downto 0);    
signal data_sw  : std_logic_vector ( 7 downto 0);
signal data_in  : std_logic_vector ( 7 downto 0);
signal state        : std_logic_vector ( 2 downto 0);

signal rx_en    : std_logic;
signal rx_data  : std_logic_vector (7 downto 0);

signal tx_start : std_logic;
signal tx_data  : std_logic_vector (7 downto 0);

signal test     : std_logic;
signal cnt      : integer range 0 to 50000000;

component rs232_rx port(
  clk50   : in  std_logic;
  rxd     : in  std_logic;
  rx_en   : out std_logic;
  rx_data : out std_logic_vector (7 downto 0)
);
end component;

component rs232_tx port(
  clk50    : in  std_logic;
  txd      : out  std_logic;
  tx_start : in std_logic;
  tx_data  : in std_logic_vector (7 downto 0)
);  
end component;

begin
tx: rs232_tx
port map(
  clk50    => clk50,
  txd      => txd,
  tx_start => tx_start,
  tx_data  => tx_data
);

rx: rs232_rx
port map(
  clk50   => clk50,
  rxd     => rxd,
  rx_en   => rx_en,
  rx_data => rx_data
);

process (clk50)
begin
  if rising_edge(clk50) then
    case state is
      --- idle state
      when "000"     =>  rdata   <= (others => 'Z');
      
      --- write state
      when "001"  =>     raddr   <= addr;
                      rdata     <= "00000000" & data_sw;
                      ce             <= '0';
                      oe             <= '1';
                      we             <= '1';
                      lb            <= '0';
                      ub            <= '0';
                      state     <= "010";
                      
      when "010"    =>     ce             <= '1';
                      we             <= '0';
                      state     <= "011";
                      
      when "011"    =>     ce             <= '0';
                      rdata   <= "00000000" & data_sw;
                      state     <= "000";

      --- read state
      when "100"  =>     raddr   <= addr;
                      rdata     <= (others => 'Z');
                      ce             <= '0';
                      oe             <= '0';
                      we             <= '1';                                                    
                      lb            <= '0';
                      ub            <= '0';
                      state     <= "101";
                      
      when "101"    =>     ce             <= '1';
                      we             <= '1';
                      state     <= "110";
                      
      when "110"    =>     ce             <= '0';
                      oe             <= '1';
                      data_in <= rdata(7 downto 0);
                      state     <= "000";
                      
      when others =>  state     <= "000";
    end case;
    
    if rx_en='1' then
      addr    <= addr+1;
      data_sw <= rx_data;
      state   <= "001";
    end if;  
    
    if sw(0) = '1' then
      rdata   <= (others => 'Z');
      raddr   <= (others => '0');
      we          <= '1';
      ce          <= '1';
      oe          <= '1';
    end if;
    
    if sw(1) = '1' then
      addr    <= (others => '0');
      data_sw <= (others => '0');
    end if;
    
    if sw(2)='1' and test='1' and  addr <= 255 then  
      tx_start <='1';
      state    <= "100";
      addr     <=addr+1;
      tx_data  <= data_in;
      ledg     <= data_in;
      test     <= '0';
    else
      tx_start<='0';
    end if;
    
    if (cnt > 1000000)  then
      cnt  <= 0;
      test <= '1';  
    else
      cnt  <= cnt+1;
    end if;  
  end if;
end process;

ledr <= rx_data;  
end behavioral;



Und das 2. VHDL:

Quellcode:

library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
use ieee.std_logic_unsigned.all;

entity sram_rx_tx is
  port( clk        : in    std_logic;
        ledr       : out   std_logic_vector (7 downto 0);
        ledg       : out   std_logic_vector (7 downto 0);
        sw         : in    std_logic_vector (2 downto 0);
        sram_adr   : out   std_logic_vector (17 downto 0);
        sram_io    : inout std_logic_vector (15 downto 0);
        ub     : out  std_logic;
        lb     : out  std_logic;
        oe     : out  std_logic;
        ce     : out  std_logic;
        we     : out  std_logic;
        rxd    : in  std_logic;
        txd    : out  std_logic
        );      
end sram_rx_tx;

architecture behavioral of sram_rx_tx is

signal zustand    : std_logic_vector (2 downto 0)  := "000";
signal data_read  : std_logic_vector (15 downto 0) := "0000000000000000";
signal data_write : std_logic_vector (15 downto 0) := "0000000000000000";
signal read_write : std_logic := '0';  --(read = '1', write ='0')

signal sr_adr  : std_logic_vector (17 downto 0) := "000000000000000000";
signal data_w  : std_logic_vector (7 downto 0) := "00000000";
signal data_r  : std_logic_vector (7 downto 0) := "00000000";

signal rx_en   : std_logic;
signal rx_data : std_logic_vector (7 downto 0);

signal tx_start : std_logic;
signal tx_data  : std_logic_vector (7 downto 0);

signal cnt  : integer range 0 to 50000000;
signal test : std_logic;

component rs232_rx port(
  clk     : in  std_logic;
  rxd     : in  std_logic;
  rx_en   : out std_logic;
  rx_data : out std_logic_vector (7 downto 0)
);
end component;

component rs232_tx port(
  clk      : in  std_logic;
  txd      : out  std_logic;
  tx_start : in std_logic;
  tx_data  : in std_logic_vector (7 downto 0)
);  
end component;

begin
rx: rs232_rx
port map(
  clk     => clk,
  rxd     => rxd,
  rx_en   => rx_en,
  rx_data => rx_data
);

tx: rs232_tx
port map(
  clk      => clk,
  txd      => txd,
  tx_start => tx_start,
  tx_data  => tx_data
);

sram_io   <= data_write when read_write='0' else (others=>'Z');
data_read <= sram_io;

ub <= '0';
lb <= '0';

process (clk)
begin
  if rising_edge (clk) then  
    if (zustand = "001") then
      sram_adr   <= sr_adr;
      oe         <= '0';
      ce         <= '1';
      we         <= '1';
      
      read_write <= '0';
      data_write <= "00000000" & data_w;  
      zustand    <= "010";
    elsif (zustand = "010") then
      sram_adr   <= sr_adr;
      oe         <= '0';
      ce         <= '0';
      we         <= '0';
      
      read_write <= '0';
      data_write <= "00000000" & data_w;
      zustand    <= "000";
    end if;
  
    if (zustand = "011") then
      sram_adr   <= sr_adr;      
      oe         <= '0';
      ce         <= '0';
      we         <= '1';  
      
      read_write <= '1';  
      zustand    <= "100";  
    elsif (zustand = "100") then
      sram_adr   <= sr_adr;      
      oe         <= '0';
      ce         <= '1';
      we         <= '1';
      
      read_write <= '0';
      data_r     <= data_read(7 downto 0);
      zustand    <= "000";
    end if;  

     if rx_en='1' then
      sr_adr  <= sr_adr + 1;
      data_w  <= rx_data;
      ledr    <= rx_data;
      zustand <= "001";
    end if;  
    
    if sw(0) = '1' then
      sram_io  <= (others => 'Z');
      sram_adr <= (others => '0');
      we           <= '1';
      ce           <= '1';
      oe           <= '1';
    end if;
    
    if sw(1) = '1' then
      sr_adr  <= (others => '0');
      data_w  <= (others => '0');
      data_r  <= (others => '0');
    end if;
    
     if sw(2)='1' and test='1' and  sr_adr <= 255 then  
      tx_start <= '1';
      zustand  <= "011";
      sr_adr   <= sr_adr+1;
      tx_data  <= data_r;
      ledg     <= data_r;
      test     <= '0';
    else
      tx_start<='0';
    end if;
    
     if (cnt > 1000000)  then
      cnt  <= 0;
      test <= '1';  
    else
      cnt  <= cnt + 1;
    end if;  
    
  end if;
end process;
end behavioral;



RX:

Quellcode:

library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;

entity rs232_rx is
generic(
  quarz_taktfrequenz : integer := 50000000;  
  baudrate           : integer := 19200
);    
        
port(
  clk50   : in  std_logic;
  rxd     : in  std_logic;
  rx_en   : out std_logic;
  rx_data : out std_logic_vector (7 downto 0)
);
end rs232_rx;

architecture behavioral of rs232_rx is

type rx_state_t is (idle, busy, ready);
signal rx_state : rx_state_t := idle;

signal rxd_sr   : std_logic_vector (3 downto 0) := "1111";        
signal rxsr     : std_logic_vector (7 downto 0) := "00000000";    
signal rxbitcnt : integer range 0 to 9 := 9;
signal rxcnt    : integer range 0 to (quarz_taktfrequenz/baudrate)-1;  

begin

process begin
wait until rising_edge(clk50);    
  rxd_sr <= rxd_sr(rxd_sr'left-1 downto 0) & rxd;
  rx_en  <= '0';

  case rx_state is
  when idle => -- warten auf startbit
    if (rxd_sr(3 downto 2) = "10") then                
      rxcnt    <= ((quarz_taktfrequenz/baudrate)-1)/2;
      rxbitcnt <= 0;
      rx_state <= busy;
    end if;
    
  when busy =>
    if (rxbitcnt<9) then  
      if(rxcnt<(quarz_taktfrequenz/baudrate)-1) then
        rxcnt    <= rxcnt+1;
      else
        rxcnt    <= 0;
        rxbitcnt <= rxbitcnt+1;
        rxsr     <= rxd_sr(rxd_sr'left-1) & rxsr(rxsr'left downto 1);
      end if;
    else
      rx_state <= ready;
    end if;
    
  when ready =>
    rx_data  <= rxsr;
    rx_state <= idle;
    rx_en    <= '1';          
  end case;
end process;    

end behavioral;



TX:

Quellcode:

library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;

entity rs232_tx is
generic (
  quarz_taktfrequenz : integer := 50000000;  
  baudrate           : integer := 19200
);    
        
port(
  clk50    : in  std_logic;
  txd      : out  std_logic;
  tx_start : in std_logic;
  tx_data  : in std_logic_vector (7 downto 0)
);
end rs232_tx;

architecture behavioral of rs232_tx is

signal txstart  : std_logic := '0';
signal txsr     : std_logic_vector  (9 downto 0) := "1111111111";  
signal txbitcnt : integer range 0 to 10 := 10;
signal txcnt    : integer range 0 to (quarz_taktfrequenz/baudrate)-1;

begin
process begin
  wait until rising_edge(clk50);
    txstart <= tx_start;
    if (tx_start='1' and txstart='0') then
      txcnt    <= 0;                      
      txbitcnt <= 0;                      
      txsr     <= '1' & tx_data & '0';    
    else
      if(txcnt<(quarz_taktfrequenz/baudrate)-1) then
        txcnt <= txcnt+1;
      else  
        if (txbitcnt<10) then
          txcnt    <= 0;
          txbitcnt <= txbitcnt+1;
          txsr     <= '1' & txsr(txsr'left downto 1);
        end if;
      end if;
    end if;    
  end process;
  txd  <= txsr(0);

end behavioral;



Gruss

Dieser Beitrag wurde am 05.01.2015 um 09:15 Uhr von funkheld editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
244
06.01.2015, 04:17 Uhr
Veyrne



hallo,

Das ist groß! Ihre Frag ist ...

Gruß
Veyrne

--
Erfolg hat, wer andere erfolgreich macht.

Dieser Beitrag wurde am 06.01.2015 um 09:15 Uhr von Ronny_aus_Halle editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
245
11.01.2015, 21:53 Uhr
ad fontes



Gesundes neues!

Hab die Anfrage erst jetzt nach fast einer woche gesehen.

Meines Erachtens gibt es bereits eine VHDL-Variante für Altera die externes SRAM statt Blockram nutzt. Siehe Posting nummer 019 von abnoname.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
246
12.01.2015, 15:24 Uhr
funkheld



Ja, danke.

Warum kann dann der Z1013-FPGA nicht mit 64KB laufen?

Gruss
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
247
30.01.2018, 01:06 Uhr
abnoname

Avatar von abnoname

Hallo,

nach all den Jahren mal wieder was neues von mir:
https://github.com/abnoname/iceZ0mb1e

Inzwischen kann man FPGAs komplett mit einer open source toolchain programmieren. Mein Projekt ist ein Z80 System, synthetisiert mit yosys und bau die Firmware (mit SDCC compiliert) ein.

Kann ggf. eine Basis für Portierungen sein :-)

VG
Franz
--
mein Blog: http://abnoname.blogspot.de
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
248
30.01.2018, 21:35 Uhr
ad fontes



Schön mal wieder was neues zu lesen und dann passt es ja auch das ich mir vor ein paar Wochen auch ein IceZero zulegte. Codemäßig hab ich nur etwas an der PIO geschraubt um einen RasPi als Tapeersatz zu nutzen. Da ja der IceZero auch mit dem RasPi zusammenläuft https://blackmesalabs.wordpress.com/2017/02/07/icezero-fpga-board-for-rasppi/

könnte man so mit zwei kleinen Boards eine komplette Z1013 Infrastruktur emulieren. Also alle Z1013 Programme aus dem RasPi die dann bei bedarf "eingespielt werden könnten.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
249
31.01.2018, 22:39 Uhr
Bert



Dank der Vorarbeit von ad fontes und abnomane ist die Portierung der 16k-Version vom Z1013 jetzt auf dem MIST verfügbar:
https://github.com/boert/Z1013-mist

Ich hab noch ein paar Komfortfunktionen hinzugefügt (Laden von SD-Karte, Joystick, Tastaturumschaltung).
Momentan arbeite ich an der Peters-Erweiterung, will aber nichts versprechen...

Viele Grüße,
Bert
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
250
01.02.2018, 20:05 Uhr
ad fontes




Zitat:
Bert schrieb
Dank der Vorarbeit von ad fontes und abnomane ist die Portierung der 16k-Version vom Z1013 jetzt auf dem MIST verfügbar:
https://github.com/boert/Z1013-mist



Hm, ich überlege auf einem neuen Server eine gemeinsame Codebasis neu aufzusetzen. Aus der heraus könnten die Images für die verschiedenen Boards generiert werden. Dahin würde die bisherigen Sourcen https://www.mikrocontroller.net/svnbrowser/redz0mb1e/ umziehen

Schön wäre es, wenn man auf andere depots "verlinken" könnte, statt immer zwischen depots hin und her zu Kopieren.

Hat da einer einen Tip? -github? Ich hab auch noch nen Depot auf sourceforge das man aktivieren könnte.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
251
02.02.2018, 07:06 Uhr
Bert



Mit git und Github man relativ flexibel arbeiten (Forks,Pull Requests, dezentrale Entwicklung).
Hat ja auch jeder andere Vorstellungen vom Entwickeln und wie Code auszusehen hat...

Grüße,
Bert
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
252
02.02.2018, 08:54 Uhr
Creep



Github wäre auch mein Kandidat für so etwas. Auch die meisten anderen Portierungen für den MiST liegen dort und man kann eben mit git super verteilt daran arbeiten und hat eine schöne Versionskontrolle. Man kann im master kontinuierlich weiter entwickeln und ab und zu die release branches erstellen oder auch für die verschiedenen Plattformen.

Gruß, Rene
--
- Privatnachrichten bitte per Email. Mein Postfach ist immer knapp vor Überlauf -
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
253
07.02.2018, 07:33 Uhr
ad fontes




Zitat:
abnoname schrieb

Inzwischen kann man FPGAs komplett mit einer open source toolchain programmieren. Mein Projekt ist ein Z80 System, synthetisiert mit yosys und bau die Firmware (mit SDCC compiliert) ein.

Kann ggf. eine Basis für Portierungen sein :-)




Habs mir mal gedownloaded und angeschaut - jetzt versteh ich wie das mit "Kann .. Basis sein .." :-o

Das mit dem SDCC klingt interessant -> das ist doch der "Small Devices C-Compiler" -> gibt es da Anpassungen für den Z1013, also Headerdateien für die wichtigsten Addressen? Oder angepasste Bildschirmausgabe wie z1013-Printf?
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
254
07.02.2018, 12:10 Uhr
Hobi



ja, sogar mit Support.

https://github.com/anchorz/sdcc-z1013-kc85

oder wer nur kompilieren will hier gibt es die Makefiles:
https://github.com/anchorz/sdcc-z1013-kc85/blob/master/mk/rules.make
--
-------------------------------------------
Winterschlaf
-------------------------------------------

Dieser Beitrag wurde am 07.02.2018 um 12:11 Uhr von Hobi editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
Seiten: [ 1 ] [ 2 ] -3-     [ Technische Diskussionen ]  



Robotrontechnik-Forum

powered by ThWboard 3 Beta 2.84-php5
© by Paul Baecher & Felix Gonschorek