parser.vhd \
scanner.vhd \
sp_ram.vhd \
+ uart_rx.vhd \
+ uart_tx.vhd \
textmode_vga/console_sm.vhd \
textmode_vga/console_sm_beh.vhd \
textmode_vga/console_sm_sync.vhd \
ps2/ps2_keyboard_controller_pkg.vhd \
ps2/ps2_transceiver.vhd \
ps2/ps2_transceiver_beh.vhd \
- ps2/ps2_transceiver_pkg.vhd
+ ps2/ps2_transceiver_pkg.vhd \
+ debouncing/counter.vhd \
+ debouncing/counter_beh.vhd \
+ debouncing/debounce.vhd \
+ debouncing/debounce_fsm.vhd \
+ debouncing/debounce_fsm_beh.vhd \
+ debouncing/debounce_pkg.vhd \
+ debouncing/debounce_struct.vhd \
+ debouncing/event_counter.vhd \
+ debouncing/event_counter_beh.vhd \
+ debouncing/event_counter_pkg.vhd \
+ debouncing/sync.vhd \
+ debouncing/sync_beh.vhd \
+ debouncing/sync_pkg.vhd
PROJ_VHDL := $(foreach n,$(PROJ_VHDL),$(VHDL_DIR)/$(n))
#NET "SF_D<11>" LOC = "M15" | IOSTANDARD = LVCMOS33 | DRIVE = 4 | SLEW = SLOW ;
# ==== Discrete LEDs (LED) ====
# These are shared connections with the FX2 connector
-NET "LED0" LOC = "F12" | IOSTANDARD = LVTTL | SLEW = SLOW | DRIVE = 8 ;
-NET "LED1" LOC = "E12" | IOSTANDARD = LVTTL | SLEW = SLOW | DRIVE = 8 ;
+#NET "LED0" LOC = "F12" | IOSTANDARD = LVTTL | SLEW = SLOW | DRIVE = 8 ;
+#NET "LED1" LOC = "E12" | IOSTANDARD = LVTTL | SLEW = SLOW | DRIVE = 8 ;
#NET "LED<2>" LOC = "E11" | IOSTANDARD = LVTTL | SLEW = SLOW | DRIVE = 8 ;
#NET "LED<3>" LOC = "F11" | IOSTANDARD = LVTTL | SLEW = SLOW | DRIVE = 8 ;
#NET "LED<4>" LOC = "C11" | IOSTANDARD = LVTTL | SLEW = SLOW | DRIVE = 8 ;
#NET "ROT_B" LOC = "G18" | IOSTANDARD = LVTTL | PULLUP ;
#NET "ROT_CENTER" LOC = "V16" | IOSTANDARD = LVTTL | PULLDOWN ;
# ==== RS-232 Serial Ports (RS232) ====
-#NET "RS232_DCE_RXD" LOC = "F8" | IOSTANDARD = LVTTL ;
-#NET "RS232_DCE_TXD" LOC = "E8" | IOSTANDARD = LVTTL | DRIVE = 8 | SLEW = SLOW ;
+NET "rxd" LOC = "E8" | IOSTANDARD = LVTTL ;
+NET "txd" LOC = "F8" | IOSTANDARD = LVTTL | DRIVE = 8 | SLEW = SLOW ;
#NET "RS232_DTE_RXD" LOC = "U8" | IOSTANDARD = LVTTL ;
#NET "RS232_DTE_TXD" LOC = "M13" | IOSTANDARD = LVTTL | DRIVE = 8 | SLEW = SLOW ;
# ==== DDR SDRAM (SD) ==== (I/O Bank 3, VCCO=2.5V)
-- debounce fuer sys_res_n und btnA -- einfach die debounce entity vom example
- hernehmen
+- debounce fuer btnA -- einfach die debounce entity vom example hernehmen
- rs232/pc-kommunikation: RAM dumpen
-- uart rx oversampling, uart rx synchronizen (vlg. debouncing/sync*.vhd)
-
-
-- postlayout: nochmal testen obs im tilab wirklich ned geht.
-
-
- gen_pkg: unsigned fuer hspalte, hzeile
== BUGS ==
- wie detailiert muessen die screenshots der simulationen sein?
- warum ist auf seite 14 im foliensatz "VHDL_Architecture" "directly at
instantation" durchgestrichen? :/ (wird so ziemlich ueberall verwendet hier)
+- postlayout: geht im tilab nicht... reicht screenshot?
+
== FAQ =
signal rx_data : std_logic_vector (7 downto 0);
signal tx_new, tx_done : std_logic;
signal tx_data : std_logic_vector (7 downto 0);
- signal txd_out : std_logic;
begin
-- vga/ipcore
textmode_vga_inst : entity work.textmode_vga(struct)
port map (
sys_clk => sys_clk,
sys_res_n => sys_res_n,
- txd => txd_out,
+ txd => txd,
tx_data => tx_data,
tx_new => tx_new,
tx_done => tx_done
use work.textmode_vga_pkg.all;
use work.textmode_vga_platform_dependent_pkg.all;
use work.ps2_keyboard_controller_pkg.all;
+use work.sync_pkg.all;
entity calc is
port (
-- btnA
-- TODO: pins
-- rs232
- -- TODO: pins
+ rxd : in std_logic;
+ txd : out std_logic;
-- vga
vsync_n : out std_logic;
hsync_n : out std_logic;
b : out std_logic_vector(BLUE_BITS - 1 downto 0);
-- ps/2
ps2_clk : inout std_logic;
- ps2_data : inout std_logic;
- -- debug
- led0 : out std_logic;
- led1 : out std_logic
+ ps2_data : inout std_logic
);
end entity calc;
signal p_finished : std_logic;
-- parser/scanner
signal do_it, finished : std_logic;
+ -- rs232
+ signal rx_new, rxd_sync : std_logic;
+ signal rx_data : std_logic_vector (7 downto 0);
+ signal tx_new, tx_done : std_logic;
+ signal tx_data : std_logic_vector (7 downto 0);
begin
- led0 <= '0';
- led1 <= '1';
sys_res_n <= not sys_res;
-- vga/ipcore
ps2_clk => ps2_clk,
ps2_data => ps2_data
);
+
+ -- synchronizer fuer rxd
+ sync_rxd_inst : entity work.sync(beh)
+ generic map (
+ SYNC_STAGES => 2,
+ RESET_VALUE => '1'
+ )
+ port map (
+ sys_clk => CLK_50MHZ,
+ sys_res_n => sys_res_n,
+ data_in => rxd,
+ data_out => rxd_sync
+ );
+
+ -- rs232-rx
+ rs232rx_inst : entity work.uart_rx(beh)
+ generic map (
+ CLK_FREQ => 50000000,
+ BAUDRATE => 115200
+ )
+ port map (
+ sys_clk => CLK_50MHZ,
+ sys_res_n => sys_res_n,
+ rxd => rxd_sync,
+ rx_data => rx_data,
+ rx_new => rx_new
+ );
+
+ -- rs232-tx
+ rs232tx_inst : entity work.uart_tx(beh)
+ generic map (
+ CLK_FREQ => 50000000,
+ BAUDRATE => 115200
+ )
+ port map (
+ sys_clk => CLK_50MHZ,
+ sys_res_n => sys_res_n,
+ txd => txd,
+ tx_data => tx_data,
+ tx_new => tx_new,
+ tx_done => tx_done
+ );
end architecture top;