blob: 3ed6399cf878af5438c5b4ba9ab406dc6baa8975 [file] [log] [blame] [edit]
/*
A simplistic test for OBUFTDS. Two of them are instanciated and their outpus
are connected to LEDs. Data and tri-state inputs are controlled by switches.
Truth tables:
SW9 SW8 | LED3 LED2
0 0 | 1 0
0 1 | 0 1
1 0 | 0 0
1 1 | 0 0
SW11 SW10 | LED8 LED7
0 0 | 0 1
0 1 | 1 0
1 0 | 0 0
1 1 | 0 0
Couldn't use all switches and buttons at the same time as the differential
IOs use different IOSTANDARD than the single ended ones and have to be in
a separate bank.
*/
`default_nettype none
// ============================================================================
module top
(
input wire [11:8] sw,
output wire [1:0] diff_p,
output wire [1:0] diff_n
);
// ============================================================================
// OBUFTDS
wire [1:0] buf_i;
wire [1:0] buf_t;
OBUFTDS # (
.IOSTANDARD("DIFF_SSTL135"),
.SLEW("FAST")
) obuftds_0 (
.I(buf_i[0]),
.T(buf_t[0]),
.O(diff_p[0]), // LED2
.OB(diff_n[0]) // LED3
);
OBUFTDS # (
.IOSTANDARD("DIFF_SSTL135"),
.SLEW("FAST")
) obuftds_1 (
.I(buf_i[1]),
.T(buf_t[1]),
.O(diff_p[1]), // LED8
.OB(diff_n[1]) // LED7
);
// ============================================================================
assign buf_i[0] = sw[ 8];
assign buf_t[0] = sw[ 9];
assign buf_i[1] = sw[10];
assign buf_t[1] = sw[11];
endmodule