calc: fake top entity fuer synthese und ACHTUNG:
authorBernhard Urban <lewurm@gmail.com>
Sat, 10 Apr 2010 18:45:28 +0000 (20:45 +0200)
committerBernhard Urban <lewurm@gmail.com>
Sat, 10 Apr 2010 18:45:29 +0000 (20:45 +0200)
die quartus version fuer linux scheint unbrauchbar zu sein.
der build prozess bricht mit der meldung:
"Error: Current module quartus_map ended unexpectedly"
ab. das passiert leider auch mit dem demo projekt der lva leitung,
duerfte also nicht am code liegen... in der windows version geht
beides problemlos :/
d.h. ich passe mal das skript fuer die windows version... wird wohl
nix anderes uebrig bleiben als es nativ oder virtuell laufen zu lassen :(

ABER: da ich nicht viel ueber den fehler per google gefunden habe, koennte
es auch ein problem mit meinem lokalen system sein.

uebrigens: die linux version im tilab ist eine kostenpflichtige version
(mit der es dann wahrscheinlich auch funktionieren wird).

src/Makefile
src/calc.vhd [new file with mode: 0644]

index 656c6f731757a29a66ef19f422a0103abafeae6d..da86f578918c1a0dbce5aea282994c149fcf0d44 100644 (file)
@@ -28,10 +28,17 @@ $(D_BEHSIM)/$(WORK)/%/_primary.dat: %.vhd
        @cd $(D_BEHSIM); \
        vcom -work $(WORK) $(MPWD)/$<
 
-startms: behsim
+modelsim: behsim
        @cd $(D_BEHSIM); \
        vsim "work.alu_tb(sim)" -f /dev/null -do $(MPWD)/alu.do
 
+quartus:
+       @echo "Die angebotene (free) Quartus II Version funktioniert leider nicht. (Build endet mit einem Error, auch mit dem debouncing-bsp der LVA)."
+       @echo "Befehl um es trotzdem zu probieren:"
+       @echo "$$ unset LS_COLORS #falls gesetzt..."
+       @echo -n "$$ quartus # bin verzeichnis von quartus muss sich in "; echo -n "$$"; echo "PATH befinden"
+       @echo "in windows: TODO"
+
 .PHONY: clean
 clean:
        rm -Rf $(D_BEHSIM)
diff --git a/src/calc.vhd b/src/calc.vhd
new file mode 100644 (file)
index 0000000..c17199c
--- /dev/null
@@ -0,0 +1,57 @@
+-- TODO: dient im moment nur als "fake top entity"
+library ieee;
+use ieee.std_logic_1164.all;
+use ieee.numeric_std.all;
+use work.gen_pkg.all;
+
+entity calc is
+       port
+       (
+               sys_clk : in std_logic;
+               sys_res_n : in std_logic
+       );
+end entity calc;
+
+architecture top of calc is
+       component 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 component alu;
+
+       signal do_calc, calc_done : std_logic;
+       signal opcode : alu_ops;
+       signal op1, op2, op3 : csigned;
+begin
+       aluc : alu
+       port map
+       (
+               sys_clk => sys_clk,
+               sys_res_n => sys_res_n,
+               do_calc => do_calc,
+               calc_done => calc_done,
+               op1 => op1,
+               op2 => op2,
+               op3 => op3,
+               opcode => opcode
+       );
+
+       process
+       begin
+               op1 <= op3;
+               opcode <= DIV;
+               op2 <= to_signed(2,CBITS);
+
+               do_calc <= calc_done;
+               wait until sys_clk = '1';
+       end process;
+end architecture top;
+