An earlier version of this was submitted to CI2409, and an upgraded version (newer raybox-zero code with some other general integration fixes) is intended to be submitted to CI2411.
The VGA IP is a simple 3D-like "ray caster" demo: Anton's raybox-zero.
The counter in this is mostly the same as https://github.com/jeffdi/ci2409_test. General features are:
GPIO[35:0]
are all outputs, but actual set of outputs is selected by GPIO[36]
(mode
input).mode
select between:
0. Counter's hex value is output as 4x 7seg digits, with count[7:0]
available too.
GPIO[37]
(digit_pol
)LA[111:96]
0x30000000..0x30FFFFFF
.clk
, rst
, and digit_pol
input signals.LA[15:0]
Refer to README for the standard Caravel User Project documentation which also applies to this example.
IN[37]
specifies what mode
we are in, to determine how outputs behave. The following are common to both modes:
GPIO | Dir | Function |
---|---|---|
37 | In | mode |
36 | In | digit_pol |
35:29 | Out | digit0 |
4:0 | Out | count[4:0] |
NOTE: This mode
input on GPIO 37 can be overridden by LA[67]
.
GPIO | Dir | Function |
---|---|---|
37 | In | mode ==0 |
36 | In | digit_pol |
35:29 | Out | digit0 |
28:25 | Out | la_oenb[67:64] |
24:21 | Out | la_data_in[67:64] |
20 | Out | (Unused) |
19 | Out | rst |
18 | Out | valid |
17 | Out | Any la_write high? |
16 | Out | Any wstrb high? |
15:0 | Out | count[15:0] |
GPIO | Dir | Function |
---|---|---|
37 | In | mode ==1 |
36 | In | digit_pol |
35:29 | Out | digit0 |
28 | Out | hsync_n |
27 | Out | vsync_n |
26:21 | Out | BbGgRr |
20 | Out | visible |
19 | Out | gpout1 |
18 | Out | gpout0 |
17 | In | spi_sclk |
16 | In | spi_mosi |
15 | In | spi_csb |
14 | Out | tex_csb |
13 | In | gen_tex |
12 | I/O | tex_io0 |
11 | In | tex_io1 |
10 | In | tex_io2 |
9 | In | inc_px |
8 | In | inc_py |
7 | Out | tex_sclk |
6 | In | reg |
5 | In | debug |
4:0 | Out | count[4:0] |