Stefan Schuermans commited on 2012-03-21 21:42:47
Showing 1 changed files, with 34 additions and 20 deletions.
| ... | ... |
@@ -48,37 +48,37 @@ ARCHITECTURE a_testbed OF e_testbed IS |
| 48 | 48 |
); |
| 49 | 49 |
|
| 50 | 50 |
SIGNAL s_clk: std_logic; |
| 51 |
+ SIGNAL s_leds: std_logic_vector(7 DOWNTO 0); |
|
| 52 |
+ SIGNAL s_lcd: t_io_lcd_pins; |
|
| 53 |
+ SIGNAL s_uart_loopback: std_logic; |
|
| 51 | 54 |
SIGNAL s_eth_clk: std_logic; |
| 52 |
- SIGNAL s_eth_rxd: std_logic_vector(3 DOWNTO 0); |
|
| 55 |
+ SIGNAL s_eth_rxd_d: std_logic_vector(3 DOWNTO 0); |
|
| 56 |
+ SIGNAL s_eth_rxd: std_logic_vector(4 DOWNTO 0); |
|
| 53 | 57 |
SIGNAL s_eth_rx_dv: std_logic; |
| 54 |
- SIGNAL pin_leds: std_logic_vector(7 DOWNTO 0); |
|
| 55 |
- SIGNAL pin_lcd: t_io_lcd_pins; |
|
| 56 |
- SIGNAL pin_uart_loopback: std_logic; |
|
| 57 |
- SIGNAL pin_eth_rxd: std_logic_vector(4 DOWNTO 0); |
|
| 58 |
- SIGNAL pin_eth_txd: std_logic_vector(3 DOWNTO 0); |
|
| 59 |
- SIGNAL pin_eth_tx_en: std_logic; |
|
| 58 |
+ SIGNAL s_eth_txd: std_logic_vector(3 DOWNTO 0); |
|
| 59 |
+ SIGNAL s_eth_tx_en: std_logic; |
|
| 60 | 60 |
|
| 61 | 61 |
BEGIN |
| 62 | 62 |
|
| 63 | 63 |
system: e_system |
| 64 | 64 |
PORT MAP ( |
| 65 | 65 |
clk => s_clk, |
| 66 |
- pin_o_leds => pin_leds, |
|
| 67 |
- pin_o_lcd => pin_lcd, |
|
| 66 |
+ pin_o_leds => s_leds, |
|
| 67 |
+ pin_o_lcd => s_lcd, |
|
| 68 | 68 |
pin_i_switches => (sw => (OTHERS => '0'), OTHERS => '0'), |
| 69 |
- pin_i_uart_rx => pin_uart_loopback, |
|
| 70 |
- pin_o_uart_tx => pin_uart_loopback, |
|
| 69 |
+ pin_i_uart_rx => s_uart_loopback, |
|
| 70 |
+ pin_o_uart_tx => s_uart_loopback, |
|
| 71 | 71 |
pin_i_eth_rx_clk => s_eth_clk, |
| 72 |
- pin_i_eth_rxd => pin_eth_rxd, |
|
| 72 |
+ pin_i_eth_rxd => s_eth_rxd, |
|
| 73 | 73 |
pin_i_eth_rx_dv => s_eth_rx_dv, |
| 74 | 74 |
pin_i_eth_crs => s_eth_rx_dv, |
| 75 | 75 |
pin_i_eth_col => '0', |
| 76 | 76 |
pin_i_eth_tx_clk => s_eth_clk, |
| 77 |
- pin_o_eth_txd => pin_eth_txd, |
|
| 78 |
- pin_o_eth_tx_en => pin_eth_tx_en |
|
| 77 |
+ pin_o_eth_txd => s_eth_txd, |
|
| 78 |
+ pin_o_eth_tx_en => s_eth_tx_en |
|
| 79 | 79 |
); |
| 80 | 80 |
|
| 81 |
- pin_eth_rxd <= "0" & s_eth_rxd; |
|
| 81 |
+ s_eth_rxd <= "0" & s_eth_rxd_d; |
|
| 82 | 82 |
|
| 83 | 83 |
p_clk: PROCESS |
| 84 | 84 |
BEGIN |
| ... | ... |
@@ -100,22 +100,36 @@ BEGIN |
| 100 | 100 |
END LOOP; |
| 101 | 101 |
END PROCESS p_eth_clk; |
| 102 | 102 |
|
| 103 |
- p_eth_data: PROCESS |
|
| 103 |
+ p_eth_rx_data: PROCESS |
|
| 104 | 104 |
BEGIN |
| 105 |
- s_eth_rxd <= "0000"; |
|
| 105 |
+ s_eth_rxd_d <= "0000"; |
|
| 106 | 106 |
s_eth_rx_dv <= '0'; |
| 107 | 107 |
WAIT FOR 25 ms; |
| 108 | 108 |
WAIT UNTIL s_eth_clk = '1'; |
| 109 | 109 |
WAIT UNTIL s_eth_clk = '0'; |
| 110 | 110 |
FOR i IN 0 TO eth_data'length - 1 LOOP |
| 111 |
- s_eth_rxd <= eth_data(i); |
|
| 111 |
+ s_eth_rxd_d <= eth_data(i); |
|
| 112 | 112 |
s_eth_rx_dv <= '1'; |
| 113 | 113 |
WAIT UNTIL s_eth_clk = '1'; |
| 114 | 114 |
WAIT UNTIL s_eth_clk = '0'; |
| 115 | 115 |
END LOOP; |
| 116 |
- s_eth_rxd <= "0000"; |
|
| 116 |
+ s_eth_rxd_d <= "0000"; |
|
| 117 | 117 |
s_eth_rx_dv <= '0'; |
| 118 | 118 |
WAIT; |
| 119 |
- END PROCESS p_eth_data; |
|
| 119 |
+ END PROCESS p_eth_rx_data; |
|
| 120 |
+ |
|
| 121 |
+ p_eth_tx_data: PROCESS |
|
| 122 |
+ VARIABLE l: line; |
|
| 123 |
+ BEGIN |
|
| 124 |
+ FOR i IN 0 TO eth_data'length - 1 LOOP |
|
| 125 |
+ WAIT UNTIL s_eth_clk = '0'; |
|
| 126 |
+ WAIT UNTIL s_eth_clk = '1'; |
|
| 127 |
+ IF s_eth_tx_en = '1' THEN |
|
| 128 |
+ write(l, "ethernet TX: "); |
|
| 129 |
+ write(l, to_integer(unsigned(s_eth_txd))); |
|
| 130 |
+ writeline(output, l); |
|
| 131 |
+ END IF; |
|
| 132 |
+ END LOOP; |
|
| 133 |
+ END PROCESS p_eth_tx_data; |
|
| 120 | 134 |
|
| 121 | 135 |
END ARCHITECTURE a_testbed; |
| 122 | 136 |