module mojo_top( // 50MHz clock input input clk, // Input from reset button (active low) input rst_n, // cclk input from AVR, high when AVR is ready input cclk, // Outputs to the 8 onboard LEDs output[7:0]led, // AVR SPI connections output spi_miso, input spi_ss, input spi_mosi, input spi_sck, // AVR ADC channel select output [3:0] spi_channel, // Serial connections input avr_tx, // AVR Tx => FPGA Rx output avr_rx, // AVR Rx => FPGA Tx input avr_rx_busy, // AVR Rx buffer full output[3:0] hdmi1_tmds, output[3:0] hdmi1_tmdsb ); wire rst = ~rst_n; // make reset active high wire hdmi_clk; reg[7:0] hdmired, hdmigreen, hdmiblue; wire[10:0] hdmix; wire[9:0] hdmiy; reg[7:0] frame_q, frame_d; clk_wiz_v3_6 clk_wiz( .CLK_IN1(clk), .CLK_OUT1(hdmi_clk) ); hdmi_encoder hdmi( .clk(hdmi_clk), .rst(rst), .tmds(hdmi1_tmds), .tmdsb(hdmi1_tmdsb), .x(hdmix), .y(hdmiy), .red(hdmired), .green(hdmigreen), .blue(hdmiblue) ); // these signals should be high-z when not used assign spi_miso = 1'bz; assign avr_rx = 1'bz; assign spi_channel = 4'bzzzz; assign led[6:0] = 7'b1000000; assign led[7] = char_index_q; wire [7:0] char_data [7:0][7:0]; assign char_data[0][0] = 8'b00000000; assign char_data[0][1] = 8'b00000000; assign char_data[0][2] = 8'b00111000; assign char_data[0][3] = 8'b01101100; assign char_data[0][4] = 8'b01101100; assign char_data[0][5] = 8'b01111100; assign char_data[0][6] = 8'b01101100; assign char_data[0][7] = 8'b01101100; assign char_data[1][0] = 8'b00000000; assign char_data[1][1] = 8'b00000000; assign char_data[1][2] = 8'b01111000; assign char_data[1][3] = 8'b01101100; assign char_data[1][4] = 8'b01111000; assign char_data[1][5] = 8'b01101100; assign char_data[1][6] = 8'b01101100; assign char_data[1][7] = 8'b01111000; assign char_data[2][0] = 8'b00000000; assign char_data[2][1] = 8'b00000000; assign char_data[2][2] = 8'b00111000; assign char_data[2][3] = 8'b01101100; assign char_data[2][4] = 8'b01100000; assign char_data[2][5] = 8'b01100000; assign char_data[2][6] = 8'b01101100; assign char_data[2][7] = 8'b00111000; assign char_data[3][0] = 8'b00000000; assign char_data[3][1] = 8'b00000000; assign char_data[3][2] = 8'b01111000; assign char_data[3][3] = 8'b01101100; assign char_data[3][4] = 8'b01101100; assign char_data[3][5] = 8'b01101100; assign char_data[3][6] = 8'b01101100; assign char_data[3][7] = 8'b01111000; assign char_data[4][0] = 8'b00000000; assign char_data[4][1] = 8'b00000000; assign char_data[4][2] = 8'b00111100; assign char_data[4][3] = 8'b01100000; assign char_data[4][4] = 8'b01111000; assign char_data[4][5] = 8'b01100000; assign char_data[4][6] = 8'b01100000; assign char_data[4][7] = 8'b00111100; assign char_data[5][0] = 8'b00000000; assign char_data[5][1] = 8'b00000000; assign char_data[5][2] = 8'b00111100; assign char_data[5][3] = 8'b01100000; assign char_data[5][4] = 8'b01111000; assign char_data[5][5] = 8'b01100000; assign char_data[5][6] = 8'b01100000; assign char_data[5][7] = 8'b01100000; assign char_data[6][0] = 8'b00000000; assign char_data[6][1] = 8'b00000000; assign char_data[6][2] = 8'b00111100; assign char_data[6][3] = 8'b01100000; assign char_data[6][4] = 8'b01100000; assign char_data[6][5] = 8'b01101100; assign char_data[6][6] = 8'b01101100; assign char_data[6][7] = 8'b00111100; assign char_data[7][0] = 8'b00000000; assign char_data[7][1] = 8'b00000000; assign char_data[7][2] = 8'b01101100; assign char_data[7][3] = 8'b01101100; assign char_data[7][4] = 8'b01111100; assign char_data[7][5] = 8'b01101100; assign char_data[7][6] = 8'b01101100; assign char_data[7][7] = 8'b01101100; //assign char_data[2][0] = 8'b00000000; //assign char_data[2][1] = 8'b00000000; //assign char_data[2][2] = 8'b00000000; //assign char_data[2][3] = 8'b00000000; //assign char_data[2][4] = 8'b00000000; //assign char_data[2][5] = 8'b00000000; //assign char_data[2][6] = 8'b00000000; //assign char_data[2][7] = 8'b00000000; reg[2:0] char_index_q, char_index_d; always @(*) begin //hdmired = hdmix[7:0] + frame_q; //hdmigreen = hdmiy[7:0] + frame_q; //hdmiblue = hdmix[7:0] ^ hdmiy[7:0]; hdmired = 1'h28; hdmigreen = 1'h28; hdmiblue = 1'h28; if (char_data[char_index_q][(hdmiy >> 1) % 8][7 - ((hdmix >> 1) % 8)] == 1) begin hdmired = 8'hEB; hdmigreen = 8'hDB; hdmiblue = 8'hB2; end frame_d = frame_q; char_index_d = (hdmix >> 4) % 8; if (hdmix == 1279 && hdmiy == 719) begin frame_d = frame_q + 1'b1; end end always @(posedge hdmi_clk) begin if (rst) begin frame_q <= 1'b0; char_index_q <= 1'b0; end else begin frame_q <= frame_d; char_index_q <= char_index_d; end end endmodule