Bernhard Urban [Fri, 21 May 2010 22:21:29 +0000 (00:21 +0200)]
pll: warning fix
Bernhard Urban [Fri, 21 May 2010 20:32:26 +0000 (22:32 +0200)]
spec: update
Bernhard Urban [Fri, 21 May 2010 20:32:19 +0000 (22:32 +0200)]
history: clear ram on reset
history: quartuswarning fix fuer RAM (aber nicht alle warnings eliminiert)
history/display: handling bei > 50 eingaben, dazu muss auch vor jeder neuen
eingabe der speicherbereich der verwendet werden soll, gecleart werden
Bernhard Urban [Fri, 21 May 2010 18:26:25 +0000 (20:26 +0200)]
history: bugfix fuer leere eingabe
hintergrund: die internen counter fuer parser wurden an der falschen stelle resettet.
Bernhard Urban [Fri, 21 May 2010 18:08:21 +0000 (20:08 +0200)]
display: bei nullbyte space bitte!
Bernhard Urban [Fri, 21 May 2010 17:29:50 +0000 (19:29 +0200)]
display: farben ftw
Bernhard Urban [Fri, 21 May 2010 17:23:30 +0000 (19:23 +0200)]
display: $PS1 done. logic usage freundlich ;)
Bernhard Urban [Fri, 21 May 2010 06:19:25 +0000 (08:19 +0200)]
display: ergebnis mit '> ' prefix
Bernhard Urban [Fri, 21 May 2010 05:54:35 +0000 (07:54 +0200)]
display: vorbereitungen fuer eine art $PS1 :p
Bernhard Urban [Fri, 21 May 2010 04:33:21 +0000 (06:33 +0200)]
alu: logic cells von 1054 auf 1021 minimiert
Bernhard Urban [Fri, 21 May 2010 02:50:32 +0000 (04:50 +0200)]
alu: bessere find_msb, von 1295 auf 1054 logic cells (fuer alu)
Bernhard Urban [Fri, 21 May 2010 01:11:15 +0000 (03:11 +0200)]
parser/alu: extrem mega super sonderfall bugfix
Bernhard Urban [Fri, 21 May 2010 01:25:02 +0000 (03:25 +0200)]
parser: overflow fix
Bernhard Urban [Thu, 20 May 2010 23:40:58 +0000 (01:40 +0200)]
parser: testfaelle an neue fehlermeldungen angepasst
Bernhard Urban [Thu, 20 May 2010 19:45:56 +0000 (21:45 +0200)]
spec: ups @ makefile
Bernhard Urban [Thu, 20 May 2010 19:08:04 +0000 (21:08 +0200)]
gesamt: parser ins historymodul eingebaut und es geht, YEAH! :)
quartus spuckt folgende werte fuer das design aus:
logic elements: 2988
dsp block 9-bit elements: 8/48
ueber max_freq aeussert sich quartus nicht (ich frag mich grad warum...
vielleicht liegts an der web-edition)
zitat aus einer mail vom jakob (bezueglich logic elements):
Bei den Logic Elements halten wir folgende Grenzen für sinnvoll:
< 3000 sehr gut
3000-5000 ok
5000-9000 geht so
> 9000 nicht ok
Bernhard Urban [Thu, 20 May 2010 17:25:02 +0000 (19:25 +0200)]
history/display: nach d_new_result = '1' werden die naechsten 70 bytes vom display
angefordert um das ergebnis auszulesen. momentan wird jedes byte im speicher mit
dem zeichen 'A' initialisiert und daher werden nach dem druecken von ENTER
70x'A' ausgegeben. Naechster Schritt: parser einbauen :)
Bernhard Urban [Thu, 20 May 2010 17:17:50 +0000 (19:17 +0200)]
spartan3e: reset-button
Bernhard Urban [Thu, 20 May 2010 14:39:28 +0000 (16:39 +0200)]
history: maximal 70 zeichen eingabe
Bernhard Urban [Thu, 20 May 2010 14:03:13 +0000 (16:03 +0200)]
history/display: backspace logic
Bernhard Urban [Thu, 20 May 2010 01:54:29 +0000 (03:54 +0200)]
spec: statemachines als pdf... auch wenns weh tut, sry :/
... ich brachte es zwar zum kompilieren im tilab, aber es war ned das was es
sein sollte :(
Bernhard Urban [Thu, 20 May 2010 01:14:42 +0000 (03:14 +0200)]
display/history: unnoetiges weg, kthx
Bernhard Urban [Thu, 20 May 2010 01:12:52 +0000 (03:12 +0200)]
spartan3e: skript fuer non-prom-programming
Bernhard Urban [Wed, 19 May 2010 23:48:31 +0000 (01:48 +0200)]
history: testbench mit scanner und display instanz erweitert
Bernhard Urban [Wed, 19 May 2010 23:39:45 +0000 (01:39 +0200)]
display: arbeitet endlich wie gewuenscht
Alexander Oh [Wed, 19 May 2010 23:18:21 +0000 (01:18 +0200)]
added initial uart_rx files, not exaustively tested though.
Alexander Oh [Wed, 19 May 2010 18:52:10 +0000 (20:52 +0200)]
initial uart_rx
Alexander Oh [Wed, 19 May 2010 11:45:15 +0000 (13:45 +0200)]
think it works - compiles, but cannot simulate
Alexander Oh [Tue, 18 May 2010 23:34:42 +0000 (01:34 +0200)]
initial counter working
Bernhard Urban [Wed, 19 May 2010 17:31:35 +0000 (19:31 +0200)]
display/history: komisches init verhalten
ausserdem sollen vorerst nur 71byte ram verwendet werden.
Bernhard Urban [Wed, 19 May 2010 15:42:15 +0000 (17:42 +0200)]
scanner: es gibt key_pressed und key_released -- bei beiden wird das zeichen gesendet
... das erklaert warum die zeichen doppelt angezeigt wurden :) nun wird es nur
noch nach key-released akzeptiert, das macht die ganze logik sogar noch etwas
einfacher
Bernhard Urban [Wed, 19 May 2010 14:33:25 +0000 (16:33 +0200)]
display/history: robuster, trotzdem funktioniert es noch nicht so wie ich moechte
Bernhard Urban [Wed, 19 May 2010 14:17:00 +0000 (16:17 +0200)]
display: nicht jede zeile neu... ausserdem vorerst fixe werte im ram
Bernhard Urban [Tue, 18 May 2010 18:47:26 +0000 (20:47 +0200)]
spartan3e: reset sollte man mindestens mit high verbinden - geht jetzt :)
ausserdem: das dcm (ist gleich pll in xilinx-sprache) modul hat anscheind auch
nicht ganz gepasst. da die clk-source aber eh 50MHz sind und 25MHz fuer das
vga-modul benoetigt werden, ist das einfach in einem taktteiler zu realisieren
Bernhard Urban [Mon, 17 May 2010 01:37:30 +0000 (03:37 +0200)]
spartan3e: init
... tut sich leider noch nix am board
Bernhard Urban [Sun, 16 May 2010 21:46:38 +0000 (23:46 +0200)]
display: ein paar fixes... aber es passt trotzdem noch nicht
... nach jedem tastendruck wird der *komplette* eingabe string nochmal
ausgegeben und ich checks einfach nicht warum :/
ausserdem werden die zeichen doppelt uebernommen (ausgenommen das erste
zeichen).
schluss fuer heute.
Bernhard Urban [Sun, 16 May 2010 21:12:40 +0000 (23:12 +0200)]
display: nul-byte schreiben ist boese. gehoert noch schoener gefixt
Bernhard Urban [Sun, 16 May 2010 19:21:49 +0000 (21:21 +0200)]
display: rechtzeitig wieder COMMAND_NOP anlegen
Bernhard Urban [Sun, 16 May 2010 19:02:29 +0000 (21:02 +0200)]
hstring: length fix
Bernhard Urban [Sun, 16 May 2010 18:51:58 +0000 (20:51 +0200)]
display: x"000000" ist schwarz... aber mit x"ffffff" gehts!
also es wird immerhin was angezeigt :)
Bernhard Urban [Sun, 16 May 2010 18:15:39 +0000 (20:15 +0200)]
scanner: argh... es kommen ja scancodes rein und keine asciicodes!
Bernhard Urban [Sun, 16 May 2010 16:52:30 +0000 (18:52 +0200)]
top-level/pll: pinmapping fixed und pll angepasst
Bernhard Urban [Sun, 16 May 2010 15:53:16 +0000 (17:53 +0200)]
history: simple implementierung + testbench
auf ins tilab \o/
Bernhard Urban [Sun, 16 May 2010 13:02:55 +0000 (15:02 +0200)]
display: quartus warning fix
Bernhard Urban [Sun, 16 May 2010 11:44:53 +0000 (13:44 +0200)]
display: simple implementierung + testbench
Bernhard Urban [Sun, 16 May 2010 10:29:28 +0000 (12:29 +0200)]
history: ram modul hinzugefuegt
Bernhard Urban [Sun, 16 May 2010 09:45:47 +0000 (11:45 +0200)]
top-level: weiteres portmapping fuer minimalsetup
Bernhard Urban [Sun, 16 May 2010 00:25:43 +0000 (02:25 +0200)]
top-level: ansatz fuer minimales setup inkl. geruest fuer history- und displaymodul und einer pll (kopiert von der didelu)
Bernhard Urban [Sun, 16 May 2010 00:25:41 +0000 (02:25 +0200)]
make: kompiliere auch files in unterordner
Bernhard Urban [Sun, 16 May 2010 00:25:40 +0000 (02:25 +0200)]
vga/ps/2: ip-core hinzugefuegt
Bernhard Urban [Sun, 16 May 2010 00:25:38 +0000 (02:25 +0200)]
todo/implemtierung: update
Bernhard Urban [Sun, 16 May 2010 00:25:37 +0000 (02:25 +0200)]
quartus: nur noch ein tcl skript...
Bernhard Urban [Sat, 15 May 2010 16:22:26 +0000 (18:22 +0200)]
scanner: hoffentlich passen meinen annahmen ueber das ps/2 modul
Bernhard Urban [Sat, 15 May 2010 13:58:31 +0000 (15:58 +0200)]
parser: you didn't see this
Bernhard Urban [Tue, 11 May 2010 23:04:31 +0000 (01:04 +0200)]
parser: alu als eigene instanz im parser
Bernhard Urban [Tue, 11 May 2010 23:04:29 +0000 (01:04 +0200)]
parser: / und mod in hardware
Bernhard Urban [Tue, 11 May 2010 23:04:27 +0000 (01:04 +0200)]
alu: rest wird auch uebernommen, geht aber nur fuer positive paare. TB fuer postlayout wurde nicht angepasst
Bernhard Urban [Tue, 11 May 2010 17:10:25 +0000 (19:10 +0200)]
parser: fehlermeldungen
TODO: *, / und mod noch durch ALU ersetzen (ALU muss dazu noch erweitert
werden). durch error flag der ALU kann noch overflow fehlermeldung eingebaut
werden (fuer die berechnung von z_int).
Bernhard Urban [Tue, 11 May 2010 14:21:57 +0000 (16:21 +0200)]
parser: vorzeichen werden nun auch beachtet
Bernhard Urban [Tue, 11 May 2010 11:41:48 +0000 (13:41 +0200)]
parser: whitespaces ignorieren
Bernhard Urban [Mon, 10 May 2010 23:32:18 +0000 (01:32 +0200)]
parser: vereinfachungen und kleinere verbesserungen
Bernhard Urban [Mon, 10 May 2010 23:29:46 +0000 (01:29 +0200)]
parser: ausdruecke werden erfolgreich geparst, einschraenkungen:
o keine negative zahlen
o keine leerzeichen
o kein errorhandling
o division und modulo gehoeren noch ersetzt
ausserdem: bugfix in der alu (division hat nicht ganz gepasst bei negativen
zahlen)
Bernhard Urban [Mon, 10 May 2010 21:00:42 +0000 (23:00 +0200)]
alu: error flag setzen bei overflow/underflow bzw. bei division durch 0
Bernhard Urban [Sun, 9 May 2010 21:38:01 +0000 (23:38 +0200)]
parser: ausdruecke wie "x+y+z" koennen schon ausgewertet werden
Bernhard Urban [Sun, 9 May 2010 19:14:50 +0000 (21:14 +0200)]
parser: erste gehversuche. im moment wird die eingabe einfach zurueckgegeben zur testbench
Bernhard Urban [Fri, 30 Apr 2010 17:51:12 +0000 (19:51 +0200)]
spec: signale ein wenig umbenannt; layout angepasst
Bernhard Urban [Fri, 30 Apr 2010 17:23:32 +0000 (19:23 +0200)]
spec: weitere anpassungen bei der schnittstellenbeschreibung
Bernhard Urban [Fri, 30 Apr 2010 15:09:53 +0000 (17:09 +0200)]
spec: low aktiv fuer reset und btnA
Bernhard Urban [Fri, 30 Apr 2010 14:57:59 +0000 (16:57 +0200)]
spec: errorflag fuer ALU
Bernhard Urban [Fri, 30 Apr 2010 14:36:14 +0000 (16:36 +0200)]
spec: ein paar rechtschreibfehler
das ist zum diff schauen ganz praktisch ;)
$ cat >> ~/.gitconfig
[alias]
wdiff = diff --color-words
Bernhard Urban [Fri, 30 Apr 2010 14:18:43 +0000 (16:18 +0200)]
spec: name und so angepasst. @alex: BITTE KENNZAHL PRUEFEN!
Bernhard Urban [Thu, 29 Apr 2010 17:56:47 +0000 (19:56 +0200)]
spec: weitere mini-fixes
Bernhard Urban [Tue, 27 Apr 2010 21:55:46 +0000 (23:55 +0200)]
docs: yet another ip-cores update und ein dokument das binary to BCD konvertierung beschreibt
... ist angeblich ganz nuetzlich bei signed -> ASCII und vice versa.
Bernhard Urban [Tue, 27 Apr 2010 21:39:44 +0000 (23:39 +0200)]
spec: schauen die tabellen so besser aus?
Bernhard Urban [Tue, 27 Apr 2010 21:39:31 +0000 (23:39 +0200)]
spec: kleinere anpassungen
Bernhard Urban [Mon, 26 Apr 2010 14:51:13 +0000 (16:51 +0200)]
gepatchte ipcores der LVA
Bernhard Urban [Sun, 25 Apr 2010 14:30:09 +0000 (16:30 +0200)]
tb/alu: ueberpruefe ob wirklich alle testfaelle erfolgreich waren
Bernhard Urban [Mon, 19 Apr 2010 09:30:28 +0000 (11:30 +0200)]
alu: postsim geht jetzt zwar, trotzdem haufweise warnings...
"** Warning: There is an 'U'|'X'|'W'|'Z'|'-' in an arithmetic operand, the result will be 'X'(es)."
5451mal...
Bernhard Urban [Sun, 18 Apr 2010 22:40:29 +0000 (00:40 +0200)]
alu: syntactic sugar
Bernhard Urban [Sun, 18 Apr 2010 22:17:24 +0000 (00:17 +0200)]
get(reviews): irgendwie lustig wie unterschiedlich die reviews ausgefallen sind! *g*
Bernhard Urban [Sun, 18 Apr 2010 22:10:47 +0000 (00:10 +0200)]
makefile: bessere abhaengigkeiten fuer quartus-target
Bernhard Urban [Fri, 16 Apr 2010 20:19:44 +0000 (22:19 +0200)]
review: finale version
Bernhard Urban [Fri, 16 Apr 2010 20:03:27 +0000 (22:03 +0200)]
makefile: more fun with quartus
Bernhard Urban [Fri, 16 Apr 2010 18:31:34 +0000 (20:31 +0200)]
makefile: quartus haut doch hin unter mein linux *freu* ;)
Bernhard Urban [Fri, 16 Apr 2010 15:45:02 +0000 (17:45 +0200)]
folien: verifikation und kleine anpassung am Makefile fuer "hwmodskel" release
http://www.informatik-forum.at/showthread.php?79870-hwmodskel
Bernhard Urban [Fri, 16 Apr 2010 11:43:53 +0000 (13:43 +0200)]
review: bbcode und kleinere anpassnungen
bitte textwidth=80 verwende, sonst schauts in myTI scheisse aus...
Alex [Thu, 15 Apr 2010 16:54:44 +0000 (18:54 +0200)]
weitere kommentare im review
Bernhard Urban [Wed, 14 Apr 2010 21:28:38 +0000 (23:28 +0200)]
TODOs und kleine anpassungen bei TBs fuer die ALU
Bernhard Urban [Wed, 14 Apr 2010 21:19:54 +0000 (23:19 +0200)]
review: designspec.txt
Bernhard Urban [Wed, 14 Apr 2010 19:32:04 +0000 (21:32 +0200)]
review: hwmodspec.txt
Alex [Wed, 14 Apr 2010 09:48:59 +0000 (11:48 +0200)]
Veraenderungen an den reviews.
Ich habe mal meinen senf zu den reviews dazu gegeben. Ich denke die gehoeren noch ueberarbeitet aber sie sollen zumindest mal erlauben einen groben ueberblick meiner gedanken zu bringen. die zeilen werden noch in die passenden kategorien gebracht.
Bernhard Urban [Mon, 12 Apr 2010 16:23:00 +0000 (18:23 +0200)]
quartusskripte: angepasst fuer webedition und tilab (weil die webedition das fpga vom labor nicht unterstuetzt)
Bernhard Urban [Mon, 12 Apr 2010 12:45:15 +0000 (14:45 +0200)]
alu/entity: interface angepasst.
laut lva-leitung soll man keine enums im interface verwenden.
Bernhard Urban [Mon, 12 Apr 2010 00:10:24 +0000 (02:10 +0200)]
makefile: verbessert
kleines Howto:
o beh-sim wird so aufgerufen: beh_$(FILE)
- Fuehrt beh-sim fuer $(FILE) aus. Dafuer muss beh_$(FILE)_tb.vhd und beh_$(FILE)_tb.do
existieren.
- Instanzname der tb_entity muss immer "sim" sein.
- Instanzname der instanzierten Komponente muss immer "inst" sein.
- Files die kompiliert werden sollen, muessen in $(BEH_IFILES) angegeben werden (Achtung: keine
Testbenches angeben!)
o post-sim wird aehnlich aufgerufen: post_$(FILE)
- hier ist zu beachten, dass das entsprechende VHO bzw. SDO File von Quartus schon generiert
wurde (per ~hwmod/quartus/windows.cmd projekt erstellen, mit Quartus dann die Projektdatei
oeffnen und alles builden)
- Instanzname der tb_entity muss immer "sim" sein.
- Instanzname der instanzierten Komponente muss immer "inst" sein.
- koennte noch sein dass hier noch etwas angepasst werden muss
- Files die kompiliert werden sollen, muessen in $(POST_IFILES) angegeben werden. Im
Allgemeinen werden das globale Definitionen sein (z.b. fuer Typen, Konstanten, etc. die fuer
die Testbenches benoetigt werden), da die sich zu simulierenden Instanzen im VHO-File
befinden. (Achtung: keine Testbenches angeben!)
Beispiele:
$ make beh_alu
$ make post_alu
$ make clean #loescht alle simulationsdateien
Bernhard Urban [Sun, 11 Apr 2010 15:07:21 +0000 (17:07 +0200)]
post sim: simulation verhaelt sich leider nicht wie gewuenscht
nachdem ich schon den ganzen nachmittag verschissen hab, die postlayout simulation zum laufen zu
kriegen, hier mal eine zusammenfassung meiner erkenntnisse:
* quartus erstellt simulationsdaten (wenn das tcl-skript verwendet wird) fuer modelsim im
verzeichnis ~hwmod/quartus/calc/simulation/modelsim
* modelsim starten
* change directory (z.b. ~hwmod/sim/post)
* File -> New -> Lib
* Compile -> Compile und folgende files kompilieren
o ~hwmod/quartus/calc/simulation/modelsim/calc.vho
o ~hwmod/src/gen_pkg.vhd
o ~hwmod/src/alu_tb_post.vhd
* Simulate -> Start Simulation
o in den tab "SDF" wechseln und die datei ~hwmod/quartus/calc/simulation/modelsim/calc_vhd.sdo
waehlen und in das feld "apply to region" "/bla" eingeben ("bla" ist dabei die instanz in der
testbench)
o nun unter dem tab "Design" work -> alu_tb -> sim und die testbench waehlen und die simulation
starten
das groesste problem war dabei, dass die entity in der calc.vho zu folgende wird:
> ENTITY alu IS
> PORT (
> sys_clk : IN std_logic;
> sys_res_n : IN std_logic;
> \opcode.NOP\ : IN std_logic;
> \opcode.SUB\ : IN std_logic;
> \opcode.ADD\ : IN std_logic;
> \opcode.MUL\ : IN std_logic;
> \opcode.DIV\ : IN std_logic;
> \opcode.DONE\ : IN std_logic;
> op1 : IN std_logic_vector(31 DOWNTO 0);
> op2 : IN std_logic_vector(31 DOWNTO 0);
> op3 : OUT std_logic_vector(31 DOWNTO 0);
> do_calc : IN std_logic;
> calc_done : OUT std_logic
> );
> END alu;
statt wie original:
> package gen_pkg is
> type alu_ops is (NOP, SUB, ADD, MUL, DIV, DONE);
> constant CBITS : integer := 32;
> subtype csigned is signed((CBITS-1) downto 0);
> end package gen_pkg;
>
> entity alu is
> port
> (
> sys_clk : in std_logic;
> sys_res_n : in std_logic;
> opcode : in alu_ops;
> op1 : in csigned;
> op2 : in csigned;
> op3 : out csigned;
> do_calc : in std_logic;
> calc_done : out std_logic
> );
> end entity alu;
das hat die folge dass man die testbench der beh-sim nicht verwenden kann UND dass ein ewig lange
fehlerliste kommt, wodurch es schwer war, festzustellen worin die fehlerursache ueberhaupt nun liegt.
es ist auch nicht besonders praktisch wie sich die entity defintion entartet... trotzdem hab ich mal
die testbench der beh-sim dafuer angepasst. die simulation dazu verhaelt sich leider nicht
gewuenscht, und ich hab im moment auch keine ahnung woran das liegen koennte :/
Bernhard Urban [Sun, 11 Apr 2010 12:32:53 +0000 (14:32 +0200)]
review: zwei pdfs geaddet und textdateien angelegt zum gemeinsamen ausfuellen ;)
Bernhard Urban [Sun, 11 Apr 2010 12:22:44 +0000 (14:22 +0200)]
alu/div: weniger code und weniger logic elements
4% (423/10570) logic elements @ 81.59MHz, klingt schon mal besser :)
Bernhard Urban [Sun, 11 Apr 2010 03:47:08 +0000 (05:47 +0200)]
alu/sync: warum hat sich da keiner der beiden tools aufgeregt? wird das nicht sonst ein latch?
Bernhard Urban [Sun, 11 Apr 2010 03:03:44 +0000 (05:03 +0200)]
alu/div: dision in hardwaregerechte art und weise
... trotzdem sind knappe 25% der logic elemente im quartus belegt :(
(zwar fuer ein kleineres fpga, aber das im tilab hat afaik 'nur' doppelt so viele)
immerhin laeuft das design mit 65.70MHz (33MHz muessen wir schaffen), klingt aber auch nicht so toll :/
Bernhard Urban [Sat, 10 Apr 2010 19:51:03 +0000 (21:51 +0200)]
quartus skript fuer linux:
... auch wenns inzwischen nix bringt (eventuell im tilab)