FPGA: FPGA Font IBM default 8x16
Site Navigation for FPGA
FPGA Font IBM default 8x16
/*
 * crom.v
 *
 * This file implements a Character ROM for translating ASCII
 * character codes into 8x16 pixel image.
 *
 * The input to the module is:
 *  1) 8 bit ASCII code,
 *  2) column select, 0..7, which indicates which of the 8 pixels of the character
 *     image will be returned
 *  3) row select, 0..15, which indicates which of the 16 rows of pixels of the character
 *     image will be returned
 */

module ascii_rom_pix(
		input		clk,
		input  [2:0]	col,
		input  [3:0]	row,
		input  [7:0]	ascii,
		output 		pixel);

wire [7:0] row_of_pixels;
wire [4:0] low_ascii;
wire [2:0] hi_ascii;

assign low_ascii = ascii[4:0];

wire [7:0] pixel_row_00_1f;
wire [7:0] pixel_row_20_3f;
wire [7:0] pixel_row_40_5f;
wire [7:0] pixel_row_60_7f;
wire [7:0] pixel_row_80_9f;
wire [7:0] pixel_row_a0_bf;
wire [7:0] pixel_row_c0_df;
wire [7:0] pixel_row_e0_ff;

	pc_vga_8x16_00_to_1f U1 (clk, row, low_ascii, pixel_row_00_1f);
	pc_vga_8x16_20_to_3f U2 (clk, row, low_ascii, pixel_row_20_3f);
	pc_vga_8x16_40_to_5f U3 (clk, row, low_ascii, pixel_row_40_5f);
	pc_vga_8x16_60_to_7f U4 (clk, row, low_ascii, pixel_row_60_7f);
	pc_vga_8x16_80_to_9f U5 (clk, row, low_ascii, pixel_row_80_9f);
	pc_vga_8x16_a0_to_bf U6 (clk, row, low_ascii, pixel_row_a0_bf);
	pc_vga_8x16_c0_to_df U7 (clk, row, low_ascii, pixel_row_c0_df);
	pc_vga_8x16_e0_to_ff U8 (clk, row, low_ascii, pixel_row_e0_ff);

assign hi_ascii = ascii[7:5];

assign row_of_pixels = (hi_ascii == 0) ? pixel_row_00_1f :
		       (hi_ascii == 1) ? pixel_row_20_3f :
		       (hi_ascii == 2) ? pixel_row_40_5f :
		       (hi_ascii == 3) ? pixel_row_60_7f :
		       (hi_ascii == 4) ? pixel_row_80_9f :
		       (hi_ascii == 5) ? pixel_row_a0_bf :
		       (hi_ascii == 6) ? pixel_row_c0_df :
		       (hi_ascii == 7) ? pixel_row_e0_ff : 1'bx;

assign	pixel = (col == 0) ? row_of_pixels[7] :
		(col == 1) ? row_of_pixels[6] :
		(col == 2) ? row_of_pixels[5] :
		(col == 3) ? row_of_pixels[4] :
		(col == 4) ? row_of_pixels[3] :
		(col == 5) ? row_of_pixels[2] :
		(col == 6) ? row_of_pixels[1] :
		(col == 7) ? row_of_pixels[0] : 1'bx;
endmodule // ascii_rom_pix