Stefan Schuermans commited on 2012-02-12 00:02:27
Showing 7 changed files, with 123 additions and 16 deletions.
... | ... |
@@ -1,19 +1,22 @@ |
1 |
+#include "cyc_cnt.h" |
|
1 | 2 |
#include "leds.h" |
2 | 3 |
|
3 | 4 |
volatile int data[100]; |
4 | 5 |
|
5 | 6 |
void delay() |
6 | 7 |
{ |
7 |
- unsigned int i, j; |
|
8 |
- for (j = 0; j < 1000; ++j) |
|
9 |
- for (i = 0; i < sizeof(data) / sizeof(data[0]); ++i) |
|
10 |
- data[i] = i; |
|
8 |
+ unsigned int start = cyc_cnt_read(); |
|
9 |
+ while (cyc_cnt_read() - start < 10000000) |
|
10 |
+ /* wait */; |
|
11 | 11 |
} |
12 | 12 |
|
13 | 13 |
int main() |
14 | 14 |
{ |
15 | 15 |
unsigned int i; |
16 | 16 |
|
17 |
+ for (i = 0; i < sizeof(data) / sizeof(data[0]); ++i) |
|
18 |
+ data[i] = i; |
|
19 |
+ |
|
17 | 20 |
while (1) { |
18 | 21 |
for (i = 0x1; i < 0x80; i <<= 1) { |
19 | 22 |
leds_set_state(i); |
... | ... |
@@ -0,0 +1,43 @@ |
1 |
+LIBRARY IEEE; |
|
2 |
+USE IEEE.STD_LOGIC_1164.ALL; |
|
3 |
+USE IEEE.NUMERIC_STD.ALL; |
|
4 |
+ |
|
5 |
+ENTITY e_io_cyc_cnt IS |
|
6 |
+ PORT ( |
|
7 |
+ rst: IN std_logic; |
|
8 |
+ clk: IN std_logic; |
|
9 |
+ o_rd_data: OUT std_logic_vector(31 DOWNTO 0); |
|
10 |
+ i_wr_data: IN std_logic_vector(31 DOWNTO 0); |
|
11 |
+ i_wr_en: IN std_logic |
|
12 |
+ ); |
|
13 |
+END ENTITY e_io_cyc_cnt; |
|
14 |
+ |
|
15 |
+ARCHITECTURE a_io_cyc_cnt OF e_io_cyc_cnt IS |
|
16 |
+ |
|
17 |
+ SIGNAL n_cnt: std_logic_vector(31 DOWNTO 0); |
|
18 |
+ SIGNAL r_cnt: std_logic_vector(31 DOWNTO 0); |
|
19 |
+ |
|
20 |
+BEGIN |
|
21 |
+ |
|
22 |
+ o_rd_data <= r_cnt; |
|
23 |
+ |
|
24 |
+ p_write: PROCESS(r_cnt, i_wr_data, i_wr_en) |
|
25 |
+ BEGIN |
|
26 |
+ IF i_wr_en = '1' THEN |
|
27 |
+ n_cnt <= i_wr_data; |
|
28 |
+ ELSE |
|
29 |
+ n_cnt <= std_logic_vector(unsigned(r_cnt) + to_unsigned(1, 32)); |
|
30 |
+ END IF; |
|
31 |
+ END PROCESS p_write; |
|
32 |
+ |
|
33 |
+ p_sync: PROCESS(rst, clk) |
|
34 |
+ BEGIN |
|
35 |
+ IF rst = '1' THEN |
|
36 |
+ r_cnt <= (OTHERS => '0'); |
|
37 |
+ ELSIF rising_edge(clk) THEN |
|
38 |
+ r_cnt <= n_cnt; |
|
39 |
+ END IF; |
|
40 |
+ END PROCESS p_sync; |
|
41 |
+ |
|
42 |
+END ARCHITECTURE a_io_cyc_cnt; |
|
43 |
+ |
... | ... |
@@ -56,18 +56,18 @@ |
56 | 56 |
<association xil_pn:name="Implementation" xil_pn:seqID="9"/> |
57 | 57 |
</file> |
58 | 58 |
<file xil_pn:name="system/system.vhd" xil_pn:type="FILE_VHDL"> |
59 |
- <association xil_pn:name="BehavioralSimulation" xil_pn:seqID="13"/> |
|
60 |
- <association xil_pn:name="Implementation" xil_pn:seqID="13"/> |
|
59 |
+ <association xil_pn:name="BehavioralSimulation" xil_pn:seqID="14"/> |
|
60 |
+ <association xil_pn:name="Implementation" xil_pn:seqID="14"/> |
|
61 | 61 |
</file> |
62 | 62 |
<file xil_pn:name="test/testbed.vhd" xil_pn:type="FILE_VHDL"> |
63 |
- <association xil_pn:name="BehavioralSimulation" xil_pn:seqID="14"/> |
|
63 |
+ <association xil_pn:name="BehavioralSimulation" xil_pn:seqID="15"/> |
|
64 | 64 |
<association xil_pn:name="PostMapSimulation" xil_pn:seqID="128"/> |
65 | 65 |
<association xil_pn:name="PostRouteSimulation" xil_pn:seqID="128"/> |
66 | 66 |
<association xil_pn:name="PostTranslateSimulation" xil_pn:seqID="128"/> |
67 | 67 |
</file> |
68 | 68 |
<file xil_pn:name="fw/rom.vhd" xil_pn:type="FILE_VHDL"> |
69 |
- <association xil_pn:name="BehavioralSimulation" xil_pn:seqID="12"/> |
|
70 |
- <association xil_pn:name="Implementation" xil_pn:seqID="12"/> |
|
69 |
+ <association xil_pn:name="BehavioralSimulation" xil_pn:seqID="13"/> |
|
70 |
+ <association xil_pn:name="Implementation" xil_pn:seqID="13"/> |
|
71 | 71 |
</file> |
72 | 72 |
<file xil_pn:name="io/leds.vhd" xil_pn:type="FILE_VHDL"> |
73 | 73 |
<association xil_pn:name="BehavioralSimulation" xil_pn:seqID="11"/> |
... | ... |
@@ -82,11 +82,15 @@ |
82 | 82 |
<file xil_pn:name="constraints/rst.ucf" xil_pn:type="FILE_UCF"> |
83 | 83 |
<association xil_pn:name="Implementation" xil_pn:seqID="0"/> |
84 | 84 |
</file> |
85 |
+ <file xil_pn:name="io/cyc_cnt.vhd" xil_pn:type="FILE_VHDL"> |
|
86 |
+ <association xil_pn:name="BehavioralSimulation" xil_pn:seqID="12"/> |
|
87 |
+ <association xil_pn:name="Implementation" xil_pn:seqID="12"/> |
|
88 |
+ </file> |
|
85 | 89 |
</files> |
86 | 90 |
|
87 | 91 |
<properties> |
88 | 92 |
<property xil_pn:name="Add I/O Buffers" xil_pn:value="true" xil_pn:valueState="default"/> |
89 |
- <property xil_pn:name="Allow Logic Optimization Across Hierarchy" xil_pn:value="false" xil_pn:valueState="default"/> |
|
93 |
+ <property xil_pn:name="Allow Logic Optimization Across Hierarchy" xil_pn:value="true" xil_pn:valueState="non-default"/> |
|
90 | 94 |
<property xil_pn:name="Allow SelectMAP Pins to Persist" xil_pn:value="false" xil_pn:valueState="default"/> |
91 | 95 |
<property xil_pn:name="Allow Unexpanded Blocks" xil_pn:value="false" xil_pn:valueState="default"/> |
92 | 96 |
<property xil_pn:name="Allow Unmatched LOC Constraints" xil_pn:value="false" xil_pn:valueState="default"/> |
... | ... |
@@ -200,7 +204,7 @@ |
200 | 204 |
<property xil_pn:name="JTAG Pin TDI" xil_pn:value="Pull Up" xil_pn:valueState="default"/> |
201 | 205 |
<property xil_pn:name="JTAG Pin TDO" xil_pn:value="Pull Up" xil_pn:valueState="default"/> |
202 | 206 |
<property xil_pn:name="JTAG Pin TMS" xil_pn:value="Pull Up" xil_pn:valueState="default"/> |
203 |
- <property xil_pn:name="Keep Hierarchy" xil_pn:value="Yes" xil_pn:valueState="non-default"/> |
|
207 |
+ <property xil_pn:name="Keep Hierarchy" xil_pn:value="No" xil_pn:valueState="default"/> |
|
204 | 208 |
<property xil_pn:name="Language" xil_pn:value="VHDL" xil_pn:valueState="default"/> |
205 | 209 |
<property xil_pn:name="Last Applied Goal" xil_pn:value="Balanced" xil_pn:valueState="default"/> |
206 | 210 |
<property xil_pn:name="Last Applied Strategy" xil_pn:value="Xilinx Default (unlocked)" xil_pn:valueState="default"/> |
... | ... |
@@ -230,7 +234,7 @@ |
230 | 234 |
<property xil_pn:name="Number of Paths in Error/Verbose Report Post Trace" xil_pn:value="3" xil_pn:valueState="default"/> |
231 | 235 |
<property xil_pn:name="Optimization Effort" xil_pn:value="Normal" xil_pn:valueState="default"/> |
232 | 236 |
<property xil_pn:name="Optimization Goal" xil_pn:value="Speed" xil_pn:valueState="default"/> |
233 |
- <property xil_pn:name="Optimization Strategy (Cover Mode)" xil_pn:value="Area" xil_pn:valueState="default"/> |
|
237 |
+ <property xil_pn:name="Optimization Strategy (Cover Mode)" xil_pn:value="Speed" xil_pn:valueState="non-default"/> |
|
234 | 238 |
<property xil_pn:name="Optimize Instantiated Primitives" xil_pn:value="false" xil_pn:valueState="default"/> |
235 | 239 |
<property xil_pn:name="Other Bitgen Command Line Options" xil_pn:value="" xil_pn:valueState="default"/> |
236 | 240 |
<property xil_pn:name="Other Compiler Options" xil_pn:value="" xil_pn:valueState="default"/> |
... | ... |
@@ -257,7 +261,7 @@ |
257 | 261 |
<property xil_pn:name="Package" xil_pn:value="fg484" xil_pn:valueState="non-default"/> |
258 | 262 |
<property xil_pn:name="Perform Advanced Analysis" xil_pn:value="false" xil_pn:valueState="default"/> |
259 | 263 |
<property xil_pn:name="Perform Advanced Analysis Post Trace" xil_pn:value="false" xil_pn:valueState="default"/> |
260 |
- <property xil_pn:name="Perform Timing-Driven Packing and Placement" xil_pn:value="false" xil_pn:valueState="default"/> |
|
264 |
+ <property xil_pn:name="Perform Timing-Driven Packing and Placement" xil_pn:value="true" xil_pn:valueState="non-default"/> |
|
261 | 265 |
<property xil_pn:name="Place & Route Effort Level (Overall)" xil_pn:value="High" xil_pn:valueState="default"/> |
262 | 266 |
<property xil_pn:name="Place And Route Mode" xil_pn:value="Normal Place and Route" xil_pn:valueState="default"/> |
263 | 267 |
<property xil_pn:name="Place MultiBoot Settings into Bitstream" xil_pn:value="false" xil_pn:valueState="default"/> |
... | ... |
@@ -25,6 +25,9 @@ ARCHITECTURE a_system OF e_system IS |
25 | 25 |
SIGNAL s_leds_rd_data: std_logic_vector( 7 DOWNTO 0); |
26 | 26 |
SIGNAL s_leds_wr_data: std_logic_vector( 7 DOWNTO 0); |
27 | 27 |
SIGNAL s_leds_wr_en: std_logic; |
28 |
+ SIGNAL s_cyc_cnt_rd_data: std_logic_vector(31 DOWNTO 0); |
|
29 |
+ SIGNAL s_cyc_cnt_wr_data: std_logic_vector(31 DOWNTO 0); |
|
30 |
+ SIGNAL s_cyc_cnt_wr_en: std_logic; |
|
28 | 31 |
|
29 | 32 |
COMPONENT e_mips_core IS |
30 | 33 |
PORT ( |
... | ... |
@@ -76,6 +79,16 @@ ARCHITECTURE a_system OF e_system IS |
76 | 79 |
); |
77 | 80 |
END COMPONENT e_io_leds; |
78 | 81 |
|
82 |
+ COMPONENT e_io_cyc_cnt IS |
|
83 |
+ PORT ( |
|
84 |
+ rst: IN std_logic; |
|
85 |
+ clk: IN std_logic; |
|
86 |
+ o_rd_data: OUT std_logic_vector(31 DOWNTO 0); |
|
87 |
+ i_wr_data: IN std_logic_vector(31 DOWNTO 0); |
|
88 |
+ i_wr_en: IN std_logic |
|
89 |
+ ); |
|
90 |
+ END COMPONENT e_io_cyc_cnt; |
|
91 |
+ |
|
79 | 92 |
BEGIN |
80 | 93 |
|
81 | 94 |
core: e_mips_core |
... | ... |
@@ -103,8 +116,12 @@ BEGIN |
103 | 116 |
|
104 | 117 |
p_dbus: PROCESS(s_dbus_addr, s_dbus_wr_data, s_dbus_wr_en, |
105 | 118 |
s_data_rd_data, |
106 |
- s_leds_rd_data) |
|
119 |
+ s_leds_rd_data, |
|
120 |
+ s_cyc_cnt_rd_data) |
|
121 |
+ VARIABLE v_wr_en_word: std_logic; |
|
107 | 122 |
BEGIN |
123 |
+ v_wr_en_word := s_dbus_wr_en(0) AND s_dbus_wr_en(1) AND |
|
124 |
+ s_dbus_wr_en(2) AND s_dbus_wr_en(3); |
|
108 | 125 |
s_dbus_rd_data <= (OTHERS => '0'); |
109 | 126 |
s_data_addr <= (OTHERS => '0'); |
110 | 127 |
s_data_wr_data <= (OTHERS => '0'); |
... | ... |
@@ -116,10 +133,18 @@ BEGIN |
116 | 133 |
s_data_addr <= s_dbus_addr; |
117 | 134 |
s_data_wr_data <= s_dbus_wr_data; |
118 | 135 |
s_data_wr_en <= s_dbus_wr_en; |
119 |
- ELSIF s_dbus_addr(31 DOWNTO 0) = X"80000000" THEN |
|
136 |
+ ELSIF s_dbus_addr(31 DOWNTO 16) = X"8000" THEN |
|
137 |
+ CASE s_dbus_addr(15 DOWNTO 8) IS |
|
138 |
+ WHEN X"00" => |
|
120 | 139 |
s_dbus_rd_data <= X"000000" & s_leds_rd_data; |
121 | 140 |
s_leds_wr_data <= s_dbus_wr_data(7 DOWNTO 0); |
122 | 141 |
s_leds_wr_en <= s_dbus_wr_en(0); |
142 |
+ WHEN X"10" => |
|
143 |
+ s_dbus_rd_data <= s_cyc_cnt_rd_data; |
|
144 |
+ s_cyc_cnt_wr_data <= s_dbus_wr_data; |
|
145 |
+ s_cyc_cnt_wr_en <= v_wr_en_word; |
|
146 |
+ WHEN OTHERS => NULL; |
|
147 |
+ END CASE; |
|
123 | 148 |
END IF; |
124 | 149 |
END PROCESS p_dbus; |
125 | 150 |
|
... | ... |
@@ -148,4 +173,13 @@ BEGIN |
148 | 173 |
pin_o_leds => pin_o_leds |
149 | 174 |
); |
150 | 175 |
|
176 |
+ cyc_cnt: e_io_cyc_cnt |
|
177 |
+ PORT MAP ( |
|
178 |
+ rst => rst, |
|
179 |
+ clk => clk, |
|
180 |
+ o_rd_data => s_cyc_cnt_rd_data, |
|
181 |
+ i_wr_data => s_cyc_cnt_wr_data, |
|
182 |
+ i_wr_en => s_cyc_cnt_wr_en |
|
183 |
+ ); |
|
184 |
+ |
|
151 | 185 |
END ARCHITECTURE a_system; |
152 | 186 |