Hazard3/example_soc/fpga/fpga_icebreaker.v

90 lines
1.8 KiB
Coq
Raw Normal View History

/*****************************************************************************\
| Copyright (C) 2021 Luke Wren |
| SPDX-License-Identifier: Apache-2.0 |
\*****************************************************************************/
// FPGA toplevel for ../soc/example_soc.v on an iCEBreaker dev board
`default_nettype none
module fpga_icebreaker (
input wire clk_osc,
// No external trst_n as iCEBreaker can't easily drive it from FTDI, so we
// generate a pulse internally from FPGA PoR.
input wire tck,
input wire tms,
input wire tdi,
output wire tdo,
2021-07-25 20:13:41 +08:00
output wire led,
output wire mirror_tck,
output wire mirror_tms,
output wire mirror_tdi,
output wire mirror_tdo,
2021-07-17 03:44:14 +08:00
output wire uart_tx,
input wire uart_rx
);
2021-07-17 03:44:14 +08:00
assign mirror_tck = tck;
assign mirror_tms = tms;
assign mirror_tdi = tdi;
assign mirror_tdo = tdo;
wire clk_sys = clk_osc;
wire rst_n_sys;
wire trst_n;
fpga_reset #(
.SHIFT (3)
) rstgen (
.clk (clk_sys),
.force_rst_n (1'b1),
.rst_n (rst_n_sys)
);
reset_sync trst_sync_u (
.clk (tck),
.rst_n_in (rst_n_sys),
.rst_n_out (trst_n)
);
2021-07-25 20:13:41 +08:00
activity_led #(
.WIDTH (1 << 8),
2021-07-25 20:13:41 +08:00
.ACTIVE_LEVEL (1'b0)
) tck_led_u (
.clk (clk_sys),
.rst_n (rst_n_sys),
.i (tck),
.o (led)
);
2021-07-24 06:08:23 +08:00
example_soc #(
.EXTENSION_A (1),
.EXTENSION_C (0),
.EXTENSION_M (1),
.MUL_FAST (0),
.MULH_FAST (0),
.EXTENSION_ZBA (0),
.EXTENSION_ZBB (0),
.EXTENSION_ZBC (0),
.EXTENSION_ZBS (0),
.CSR_COUNTER (0)
2021-07-24 06:08:23 +08:00
) soc_u (
.clk (clk_sys),
.rst_n (rst_n_sys),
.tck (tck),
.trst_n (trst_n),
.tms (tms),
.tdi (tdi),
.tdo (tdo),
.uart_tx (uart_tx),
.uart_rx (uart_rx)
);
endmodule