source: PlatformSupport/CustomPeripherals/pcores/w3_boot_io_mux_v1_00_a/hdl/verilog/w3_boot_io_mux.v

Last change on this file was 4298, checked in by murphpo, 9 years ago

New boot_io_mux core (muxes IIC/UART between clock config core (pre-boot) and AXi peripherals (post-boot)) and eeprom core with explicit I/O/T signals for external IOBUTFs

File size: 1.6 KB
Line 
1module w3_boot_io_mux (
2    inout iic_scl,
3    inout iic_sda,
4
5    output iic_scl_I_a,
6    input  iic_scl_O_a,
7    input  iic_scl_T_a,
8
9    output iic_sda_I_a,
10    input  iic_sda_O_a,
11    input  iic_sda_T_a,
12
13    output iic_scl_I_b,
14    input  iic_scl_O_b,
15    input  iic_scl_T_b,
16
17    output iic_sda_I_b,
18    input  iic_sda_O_b,
19    input  iic_sda_T_b,
20
21    input  iic_sel_a,
22
23    output uart_tx,
24
25    input  uart_tx_a,
26    input  uart_tx_b,
27
28    input  uart_sel_a
29);
30
31parameter C_FAMILY = "virtex6";
32
33wire iic_scl_I, iic_scl_O, iic_scl_T;
34wire iic_sda_I, iic_sda_O, iic_sda_T;
35
36//Hold unselected IIC IOB->logic signals high, matching idle level of actual IIC signals
37assign iic_scl_I_a = (iic_sel_a == 1'b1) ? iic_scl_I : 1'b1;
38assign iic_scl_I_b = (iic_sel_a == 1'b1) ? 1'b1 : iic_scl_I;
39
40assign iic_sda_I_a = (iic_sel_a == 1'b1) ? iic_sda_I : 1'b1;
41assign iic_sda_I_b = (iic_sel_a == 1'b1) ? 1'b1 : iic_sda_I;
42
43assign iic_scl_T = (iic_sel_a == 1'b1) ? iic_scl_T_a : iic_scl_T_b;
44assign iic_scl_O = (iic_sel_a == 1'b1) ? iic_scl_O_a : iic_scl_O_b;
45
46assign iic_sda_T = (iic_sel_a == 1'b1) ? iic_sda_T_a : iic_sda_T_b;
47assign iic_sda_O = (iic_sel_a == 1'b1) ? iic_sda_O_a : iic_sda_O_b;
48
49IOBUF IOBUF_scl (
50    .IO(iic_scl), //Connected to actual FPGA pin
51    .I(iic_scl_O), //Logic-> Pad, input to OBUFT
52    .O(iic_scl_I), //Pad-> Logic, output of IBUF
53    .T(iic_scl_T)
54);
55
56IOBUF IOBUF_sda (
57    .IO(iic_sda), //Connected to actual FPGA pin
58    .I(iic_sda_O), //Logic-> Pad, input to OBUFT
59    .O(iic_sda_I), //Pad-> Logic, output of IBUF
60    .T(iic_sda_T)
61);
62
63assign uart_tx = (uart_sel_a == 1'b1) ? uart_tx_a : uart_tx_b;
64
65endmodule
Note: See TracBrowser for help on using the repository browser.