| `include "src/rom.v" |
| `include "src/serializer.v" |
| `include "src/transmitter.v" |
| `include "src/receiver.v" |
| `include "src/comparator.v" |
| `include "src/iserdes_sdr_ddr_test.v" |
| |
| `default_nettype none |
| |
| // ============================================================================ |
| |
| module top |
| ( |
| input wire clk, |
| |
| input wire rx, |
| output wire tx, |
| |
| input wire [15:0] sw, |
| output wire [15:0] led, |
| |
| inout wire [9:0] io |
| ); |
| |
| // ============================================================================ |
| // Clock & reset |
| reg [3:0] rst_sr; |
| |
| initial rst_sr <= 4'hF; |
| |
| always @(posedge clk) |
| if (sw[0]) |
| rst_sr <= 4'hF; |
| else |
| rst_sr <= rst_sr >> 1; |
| |
| wire CLK = clk; |
| wire RST = rst_sr[0]; |
| |
| // ============================================================================ |
| // Test uints |
| wire [9:0] error; |
| |
| genvar i; |
| generate for (i=0; i<10; i=i+1) begin |
| |
| localparam DATA_WIDTH = (i == 0) ? 2 : |
| (i == 1) ? 3 : |
| (i == 2) ? 4 : |
| (i == 3) ? 5 : |
| (i == 4) ? 6 : |
| (i == 5) ? 7 : |
| (i == 6) ? 8 : |
| (i == 7) ? 4 : |
| (i == 8) ? 6 : |
| /*(i == 9) ?*/ 8; |
| |
| localparam DATA_RATE = (i < 7) ? "SDR" : "DDR"; |
| |
| iserdes_sdr_ddr_test # |
| ( |
| .DATA_WIDTH (DATA_WIDTH), |
| .DATA_RATE (DATA_RATE) |
| ) |
| iserdes_test |
| ( |
| .CLK (CLK), |
| .RST (RST), |
| |
| .IO_DAT (io[i]), |
| .O_ERROR (error[i]) |
| ); |
| |
| end endgenerate |
| |
| // ============================================================================ |
| // I/O connections |
| |
| reg [23:0] heartbeat_cnt; |
| |
| always @(posedge CLK) |
| heartbeat_cnt <= heartbeat_cnt + 1; |
| |
| |
| assign led[9: 0] = (RST) ? 9'd0 : ~error; |
| assign led[ 10] = heartbeat_cnt[22]; |
| assign led[15:11] = 0; |
| |
| endmodule |