allgemein: components fuer die module
authorBernhard Urban <lewurm@gmail.com>
Thu, 27 May 2010 18:43:56 +0000 (20:43 +0200)
committerBernhard Urban <lewurm@gmail.com>
Thu, 27 May 2010 18:43:56 +0000 (20:43 +0200)
15 files changed:
spec/speck.tex
src/beh_alu_tb.vhd
src/beh_display_tb.vhd
src/beh_history_tb.vhd
src/beh_loopback_tb.vhd
src/beh_parser_tb.vhd
src/beh_pc_communication_tb.vhd
src/beh_scanner_tb.vhd
src/beh_uart_rx_tb.vhd
src/beh_uart_tx_tb.vhd
src/calc.vhd
src/calc_s3e.vhd
src/gen_pkg.vhd
src/history.vhd
src/parser.vhd

index ebcd8d293e0738c8ae31a8481081c0944b49582d..238fc36ce9a78d816b336d94f623ae9027e9ff98 100644 (file)
@@ -632,6 +632,7 @@ wirklich $\Rightarrow$ Tonne
 ebenfalls so breit wie \emph{p\_zeile} sein (zumindest vereinfacht das die
 Implementierung)
 \item RS232: \emph{tx\_done} hinzugefuegt.
+\item PC-Kommunikation: auch die aktuelle Eingabe wird gesendet.
 \end{itemize}
 
 \end{document}
index f6c6d5b3918ed1620a30102c0013d286c371f3e1..96cbeebca2ea642cac93e36714a9a6068a4b88fb 100644 (file)
@@ -12,9 +12,8 @@ architecture sim of beh_alu_tb is
        signal op1, op2, op3, opM : csigned;
        signal stop : boolean := false;
 begin
-       inst : entity work.alu(beh)
-       port map
-       (
+       inst : alu
+       port map (
                sys_clk => sys_clk,
                sys_res_n => sys_res_n,
                do_calc => do_calc,
index 059d598de47e4055524e2eaaf44deb7ae60ae15e..f1db735c297b08ee4f8d0f859259ba9d7b87b794 100644 (file)
@@ -29,7 +29,7 @@ architecture sim of beh_display_tb is
        signal stop : boolean := false;
 begin
        -- display
-       inst : entity work.display(beh)
+       inst : display
        port map (
                sys_clk => sys_clk,
                sys_res_n => sys_res_n,
index 87115c724c2ed37b7ed3faa0634838bea4ee4250..f249361c03d3f9869e405015187fe99d630ecb42 100644 (file)
@@ -52,7 +52,7 @@ architecture sim of beh_history_tb is
        signal stop : boolean := false;
 begin
        -- history
-       inst : entity work.history(beh)
+       inst : history
        port map (
                sys_clk => sys_clk,
                sys_res_n => sys_res_n,
@@ -87,7 +87,7 @@ begin
        );
 
        -- display
-       inst_disp : entity work.display(beh)
+       inst_disp : display
        port map (
                sys_clk => sys_clk,
                sys_res_n => sys_res_n,
@@ -107,7 +107,7 @@ begin
        );
 
        -- parser
-       inst_parser : entity work.parser(beh)
+       inst_parser : parser
        port map (
                sys_clk => sys_clk,
                sys_res_n => sys_res_n,
@@ -125,7 +125,7 @@ begin
        );
 
        -- scanner
-       inst_scan : entity work.scanner(beh)
+       inst_scan : scanner
        port map (
                sys_clk => sys_clk,
                sys_res_n => sys_res_n,
@@ -142,7 +142,7 @@ begin
                finished => finished
        );
        --uart_tx
-       inst_uart : entity work.uart_tx(beh)
+       inst_uart : uart_tx
        port map (
                sys_clk => sys_clk,
                sys_res_n => sys_res_n,
@@ -153,7 +153,7 @@ begin
        );
 
        --pc_communication
-       inst_pc_com : entity work.pc_communication(beh)
+       inst_pc_com : pc_communication
        port map(
                sys_clk => sys_clk,
                sys_res_n => sys_res_n,
index 5e040f06b33fe4ed897fd34ebdba9cec7a30f509..4bc01c8a38e8b4fa965796ef33ba08aaba594da8 100644 (file)
@@ -17,7 +17,7 @@ architecture sim of beh_loopback_tb is
        signal tx_data : std_logic_vector (7 downto 0);
        signal stop : boolean := false;
 begin
-       inst_rx : entity work.uart_rx(beh)
+       inst_rx : uart_rx
        generic map (
                CLK_FREQ => CLK_FREQ,
                BAUDRATE => BAUDRATE
@@ -29,7 +29,7 @@ begin
                rx_data => rx_data,
                rx_new => rx_new
        );
-       inst_tx : entity work.uart_tx(beh)
+       inst_tx : uart_tx
        generic map (
                CLK_FREQ => CLK_FREQ,
                BAUDRATE => BAUDRATE
index eb452058d5ef5794cf4c630c63c56dd0c1b71d84..6b3f9e6d414d6b82d82cbca224592a138156bf7e 100644 (file)
@@ -18,9 +18,8 @@ architecture sim of beh_parser_tb is
 
        signal stop : boolean := false;
 begin
-       inst : entity work.parser(beh)
-       port map
-       (
+       inst : parser
+       port map (
                sys_clk => sys_clk,
                sys_res_n => sys_res_n,
                -- history
index d9f8789122d6d1d065b7f58d68f7223c12ccc474..aa921e2dfc93bab00051a9a51a84fa4b83cb4f3a 100644 (file)
@@ -30,7 +30,7 @@ architecture sim of beh_pc_communication_tb is
                signal pc_char : hbyte;
 begin
        -- pc_communication
-       inst : entity work.pc_communication(beh)
+       inst : pc_communication
        port map (
                sys_clk => sys_clk,
                sys_res_n => sys_res_n,
index 795e4e86f38bffa0fafed35f36610d1a43ec68ec..d9b7bb4610d4942cf4ee31cca788896c29e9cdf3 100644 (file)
@@ -21,7 +21,7 @@ architecture sim of beh_scanner_tb is
 
        signal stop : boolean := false;
 begin
-       inst : entity work.scanner(beh)
+       inst : scanner
        port map (
                sys_clk => sys_clk,
                sys_res_n => sys_res_n,
index f5e3c6936b654edb597ee135df99669ab119517a..e6d2ad55c4d7986ed43ff54a6ea2bd9f4833c86b 100644 (file)
@@ -15,7 +15,7 @@ architecture sim of beh_uart_rx_tb is
        signal rx_data : std_logic_vector (7 downto 0);
        signal stop : boolean := false;
 begin
-       inst : entity work.uart_rx(beh)
+       inst : uart_rx
        generic map (
                CLK_FREQ => CLK_FREQ,
                BAUDRATE => BAUDRATE
index 3f75682e8b952fb00f49ff797a20b7339ae8f0a5..db4453c1828ff6a8ac1c43670fbab3b00a960843 100644 (file)
@@ -15,7 +15,7 @@ architecture sim of beh_uart_tx_tb is
        signal tx_data : std_logic_vector (7 downto 0);
        signal stop : boolean := false;
 begin
-       inst : entity work.uart_tx(beh)
+       inst : uart_tx
        generic map (
                CLK_FREQ => CLK_FREQ,
                BAUDRATE => BAUDRATE
index b967e1fce429a703ebdcba03e86aaa934fe7b86e..20d2027e62013e409327ac531a1f4792612e3207 100644 (file)
@@ -31,6 +31,8 @@ entity calc is
 end entity calc;
 
 architecture top of calc is
+       constant CLK_FREQ : integer := 33000000;
+       constant BAUDRATE : integer := 115200;
        -- ps/2
        signal new_data : std_logic;
        signal data : std_logic_vector(7 downto 0);
@@ -74,7 +76,7 @@ architecture top of calc is
        signal tx_data : std_logic_vector (7 downto 0);
 begin
        -- vga/ipcore
-       textmode_vga_inst : entity work.textmode_vga(struct)
+       textmode_vga_inst : textmode_vga
        generic map (
                VGA_CLK_FREQ => 25000000,
                BLINK_INTERVAL_MS => 500,
@@ -96,14 +98,14 @@ begin
        );
 
        -- pll fuer vga
-       vpll_inst : entity work.vpll(syn)
+       vpll_inst : vpll
        port map (
                inclk0 => sys_clk,
                c0 => vga_clk
        );
 
        -- display
-       display_inst : entity work.display(beh)
+       display_inst : display
        port map (
                sys_clk => sys_clk,
                sys_res_n => sys_res_n_sync,
@@ -123,7 +125,7 @@ begin
        );
 
        -- history
-       history_inst : entity work.history(beh)
+       history_inst : history
        port map (
                sys_clk => sys_clk,
                sys_res_n => sys_res_n_sync,
@@ -158,7 +160,7 @@ begin
        );
 
        -- parser
-       parser_inst : entity work.parser(beh)
+       parser_inst : parser
        port map (
                sys_clk => sys_clk,
                sys_res_n => sys_res_n_sync,
@@ -176,7 +178,7 @@ begin
        );
 
        -- scanner
-       scanner_inst : entity work.scanner(beh)
+       scanner_inst : scanner
        port map (
                sys_clk => sys_clk,
                sys_res_n => sys_res_n_sync,
@@ -194,9 +196,9 @@ begin
        );
 
        -- ps/2
-       ps2_inst : entity work.ps2_keyboard_controller(beh)
+       ps2_inst : ps2_keyboard_controller
        generic map (
-               CLK_FREQ => 33330000,
+               CLK_FREQ => CLK_FREQ,
                SYNC_STAGES => 2
        )
        port map (
@@ -212,7 +214,7 @@ begin
        -- debouncer fuer sys_res_n
        sys_res_n_debounce_inst : debounce
        generic map (
-               CLK_FREQ => 33330000,
+               CLK_FREQ => CLK_FREQ,
                TIMEOUT => 1 ms,
                RESET_VALUE => '1',
                SYNC_STAGES => 2
@@ -225,7 +227,7 @@ begin
        );
 
        -- synchronizer fuer rxd
-       sync_rxd_inst : entity work.sync(beh)
+       sync_rxd_inst : sync
        generic map (
                SYNC_STAGES => 2,
                RESET_VALUE => '1'
@@ -240,7 +242,7 @@ begin
        -- debouncer fuer btn_a
        btn_a_debounce_inst : debounce
        generic map (
-               CLK_FREQ => 33330000,
+               CLK_FREQ => CLK_FREQ,
                TIMEOUT => 1 ms,
                RESET_VALUE => '1',
                SYNC_STAGES => 2
@@ -253,10 +255,10 @@ begin
        );
 
        -- rs232-rx
-       rs232rx_inst : entity work.uart_rx(beh)
+       rs232rx_inst : uart_rx
        generic map (
-               CLK_FREQ => 33330000,
-               BAUDRATE => 115200
+               CLK_FREQ => CLK_FREQ,
+               BAUDRATE => BAUDRATE
        )
        port map (
                sys_clk => sys_clk,
@@ -267,10 +269,10 @@ begin
        );
 
        -- rs232-tx
-       rs232tx_inst : entity work.uart_tx(beh)
+       rs232tx_inst : uart_tx
        generic map (
-               CLK_FREQ => 33330000,
-               BAUDRATE => 115200
+               CLK_FREQ => CLK_FREQ,
+               BAUDRATE => BAUDRATE
        )
        port map (
                sys_clk => sys_clk,
@@ -281,7 +283,7 @@ begin
                tx_done => tx_done
        );
 
-       pc_com_inst : entity work.pc_communication(beh)
+       pc_com_inst : pc_communication
        port map (
                sys_clk => sys_clk,
                sys_res_n => sys_res_n,
@@ -303,4 +305,3 @@ begin
        );
 
 end architecture top;
-
index fb699efb9be7a07fe06ca470963de8c312dbae5a..3c67b22a9ddad56fc4ce1c6899c9da2e2156c2f0 100644 (file)
@@ -30,6 +30,8 @@ entity calc is
 end entity calc;
 
 architecture top of calc is
+       constant CLK_FREQ : integer := 50000000;
+       constant BAUDRATE : integer := 115200;
        -- reset
        signal sys_res_n : std_logic;
        -- ps/2
@@ -196,7 +198,7 @@ begin
        -- ps/2
        ps2_inst : entity work.ps2_keyboard_controller(beh)
        generic map (
-               CLK_FREQ => 50000000,
+               CLK_FREQ => CLK_FREQ,
                SYNC_STAGES => 2
        )
        port map (
@@ -225,8 +227,8 @@ begin
        -- rs232-rx
        rs232rx_inst : entity work.uart_rx(beh)
        generic map (
-               CLK_FREQ => 50000000,
-               BAUDRATE => 115200
+               CLK_FREQ => CLK_FREQ,
+               BAUDRATE => BAUDRATE
        )
        port map (
                sys_clk => CLK_50MHZ,
@@ -239,8 +241,8 @@ begin
        -- rs232-tx
        rs232tx_inst : entity work.uart_tx(beh)
        generic map (
-               CLK_FREQ => 50000000,
-               BAUDRATE => 115200
+               CLK_FREQ => CLK_FREQ,
+               BAUDRATE => BAUDRATE
        )
        port map (
                sys_clk => CLK_50MHZ,
index f8a2963d90405aea55fe3bd4271915482288685a..922911cb73134904fd0fd207c6c7b47715fcd5d9 100644 (file)
@@ -73,6 +73,196 @@ package gen_pkg is
        constant SC_ENTER : hbyte := x"5a";
        constant SC_BKSP : hbyte := x"66";
        constant SC_SPACE : hbyte := x"29";
+
+       -- components...
+       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;
+                       opM : out csigned;
+                       do_calc : in std_logic;
+                       calc_done : out std_logic;
+                       calc_error : out std_logic
+               );
+       end component alu;
+
+       component parser is
+               port (
+                       sys_clk : in std_logic;
+                       sys_res_n : in std_logic;
+                       -- History
+                       p_rget : out std_logic;
+                       p_rdone : in std_logic;
+                       p_read : in hbyte;
+                       p_wtake : out std_logic;
+                       p_wdone : in std_logic;
+                       p_write : out hbyte;
+                       p_finished : out std_logic;
+                       -- Scanner
+                       do_it : in std_logic;
+                       finished : out std_logic
+               );
+       end component parser;
+
+       component scanner is
+               port
+               (
+                       sys_clk : in std_logic;
+                       sys_res_n : in std_logic;
+                       -- PS/2
+                       new_data : in std_logic;
+                       data : in std_logic_vector(7 downto 0);
+                       -- History
+                       s_char : out hbyte;
+                       s_take : out std_logic;
+                       s_done : in std_logic;
+                       s_backspace : out std_logic;
+                       -- Parser
+                       do_it : out std_logic;
+                       finished : in std_logic
+               );
+       end component scanner;
+
+       component history is
+               port (
+                       sys_clk : in std_logic;
+                       sys_res_n : in std_logic;
+                       -- PC-komm
+                       pc_get :  in std_logic;
+                       pc_spalte : in hspalte;
+                       pc_zeile : in hzeile;
+                       pc_char : out hbyte;
+                       pc_done : out std_logic;
+                       -- Scanner
+                       s_char : in hbyte;
+                       s_take : in std_logic;
+                       s_done : out std_logic;
+                       s_backspace : in std_logic;
+                       -- Display
+                       d_new_eingabe : out std_logic;
+                       d_new_result : out std_logic;
+                       d_new_bs : out std_logic;
+                       d_zeile : in hzeile;
+                       d_spalte : in hspalte;
+                       d_get : in std_logic;
+                       d_done : out std_logic;
+                       d_char : out hbyte;
+                       -- Parser
+                       p_rget : in std_logic;
+                       p_rdone : out std_logic;
+                       p_read : out hbyte;
+                       p_wtake : in std_logic;
+                       p_wdone : out std_logic;
+                       p_write : in hbyte;
+                       p_finished : in std_logic
+               );
+       end component history;
+
+       component display is
+               port (
+                       sys_clk : in std_logic;
+                       sys_res_n : in std_logic;
+                       -- History
+                       d_new_eingabe : in std_logic;
+                       d_new_result : in std_logic;
+                       d_new_bs : in std_logic;
+                       d_zeile : out hzeile;
+                       d_spalte : out hspalte;
+                       d_get : out std_logic;
+                       d_done : in std_logic;
+                       d_char : in hbyte;
+                       -- VGA
+                       command : out std_logic_vector(7 downto 0);
+                       command_data : out std_logic_vector(31 downto 0);
+                       free : in std_logic
+               );
+       end component display;
+
+       component pc_communication is
+               port (
+                       sys_clk : in std_logic;
+                       sys_res_n : in std_logic;
+
+                       --button
+                       btn_a : in std_logic;
+
+                       --uart_tx
+                       tx_data : out std_logic_vector(7 downto 0);
+                       tx_new : out std_logic;
+                       tx_done : in std_logic;
+
+                       --uart_rx
+                       rx_data : in std_logic_vector(7 downto 0);
+                       rx_new : in std_logic;
+
+                       -- History
+                       pc_zeile : out hzeile;
+                       pc_spalte : out hspalte;
+                       pc_get :  out std_logic;
+                       pc_done : in std_logic;
+                       pc_char : in hbyte
+               );
+       end component pc_communication;
+
+       component uart_rx is
+               generic (
+                       CLK_FREQ : integer := 33000000;
+                       BAUDRATE : integer := 115200
+               );
+               port(
+                       sys_clk : in std_logic;
+                       sys_res_n : in std_logic;
+                       rxd : in std_logic;
+                       rx_data : out std_logic_vector(7 downto 0);
+                       rx_new : out std_logic
+               );
+       end component uart_rx;
+
+       component uart_tx is
+               generic (
+                       CLK_FREQ : integer := 33000000;
+                       BAUDRATE : integer := 115200
+               );
+               port(
+                       sys_clk : in std_logic;
+                       sys_res_n : in std_logic;
+                       txd : out std_logic;
+                       tx_data : in std_logic_vector(7 downto 0);
+                       tx_new : in std_logic;
+                       tx_done : out std_logic
+               );
+       end component uart_tx;
+
+       component vpll IS
+               port (
+                       inclk0 : in std_logic := '0';
+                       c0 : out std_logic 
+               );
+       end component vpll;
+       
+       component clk_vga_s3e is
+               port (
+                       clk50 : in std_logic;
+                       clk25 : out std_logic
+               );
+       end component clk_vga_s3e;
+
+       component sp_ram is
+               generic (
+                       ADDR_WIDTH : integer range 1 to integer'high
+               );
+               port (
+                       sys_clk : in std_logic;
+                       address : in std_logic_vector(ADDR_WIDTH - 1 downto 0);
+                       data_out : out hbyte;
+                       wr : in std_logic;
+                       data_in : in hbyte
+               );
+       end component sp_ram;
 end package gen_pkg;
 
 package body gen_pkg is
index 3858b43bb2eada0dfd3b76a14de9a7df42ccbc11..0c918687d73c07d569e9ef03b9cf7793042d9cf0 100644 (file)
@@ -376,7 +376,7 @@ begin
                end case;
        end process;
 
-       sp_ram_inst : entity work.sp_ram(beh)
+       sp_ram_inst : sp_ram
        generic map (
                ADDR_WIDTH => H_RAM_WIDTH
        )
index 95952d1dd45ad553c43f4bc68a5202368b2efe25..0867dea7b947005c9d683be0a739acf37ece840d 100644 (file)
@@ -57,9 +57,8 @@ architecture beh of parser is
        signal calc_done : std_logic;
        signal calc_error : std_logic;
 begin
-       instalu : entity work.alu(beh)
-       port map
-       (
+       instalu : alu
+       port map (
                sys_clk => sys_clk,
                sys_res_n => sys_res_n,
                do_calc => do_calc,