| /////////////////////////////////////////////////////////////////////////// |
| // |
| // Filename: hexmap.v |
| // |
| // Project: A Real--time Clock Core |
| // |
| // Purpose: Converts a 4'bit hexadecimal value to the seven bits needed |
| // by a seven segment display, specifying which bits are on and |
| // which are off. |
| // |
| // The display I am working with, however, requires a separate |
| // controller. This file only provides part of the input for that |
| // controller. That controller deals with turning on each part |
| // of the display in a rotating fashion, since the hardware I have |
| // cannot display more than one character at a time. So, |
| // buyer beware--this is not a complete seven segment display |
| // solution. |
| // |
| // |
| // The outputs of this routine are numbered as follows: |
| // o_map[7] turns on the bar at the top of the display |
| // o_map[6] turns on the top of the '1' |
| // o_map[5] turns on the bottom of a '1' |
| // o_map[4] turns on the bar at the bottom of the display |
| // o_map[3] turns on the vertical bar at the bottom left |
| // o_map[2] turns on the vertical bar at the top left, and |
| // o_map[1] turns on the bar in the middle of the display. |
| // The dash if you will. |
| // Bit zero, from elsewhere, would be the decimal point. |
| // |
| // Creator: Dan Gisselquist, Ph.D. |
| // Gisselquist Tecnology, LLC |
| // |
| /////////////////////////////////////////////////////////////////////////// |
| // |
| // Copyright (C) 2015, Gisselquist Technology, LLC |
| // |
| // This program is free software (firmware): you can redistribute it and/or |
| // modify it under the terms of the GNU General Public License as published |
| // by the Free Software Foundation, either version 3 of the License, or (at |
| // your option) any later version. |
| // |
| // This program is distributed in the hope that it will be useful, but WITHOUT |
| // ANY WARRANTY; without even the implied warranty of MERCHANTIBILITY or |
| // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
| // for more details. |
| // |
| // You should have received a copy of the GNU General Public License along |
| // with this program. (It's in the $(ROOT)/doc directory. Run make with no |
| // target there if the PDF file isn't present.) If not, see |
| // <http://www.gnu.org/licenses/> for a copy. |
| // |
| // License: GPL, v3, as defined and found on www.gnu.org, |
| // http://www.gnu.org/licenses/gpl.html |
| // |
| //// SPDX-License-Identifier: GPL-3.0-or-later |
| /////////////////////////////////////////////////////////////////////////// |
| module hexmap(i_clk, i_hex, o_map); |
| input i_clk; |
| input [3:0] i_hex; |
| output reg [7:1] o_map; |
| |
| always @(posedge i_clk) |
| case(i_hex) |
| 4'h0: o_map <= { 7'b1111110 }; |
| 4'h1: o_map <= { 7'b0110000 }; |
| 4'h2: o_map <= { 7'b1101101 }; |
| 4'h3: o_map <= { 7'b1111001 }; |
| 4'h4: o_map <= { 7'b0110011 }; |
| 4'h5: o_map <= { 7'b1011011 }; |
| 4'h6: o_map <= { 7'b1011111 }; |
| 4'h7: o_map <= { 7'b1110000 }; |
| 4'h8: o_map <= { 7'b1111111 }; |
| 4'h9: o_map <= { 7'b1111011 }; |
| 4'ha: o_map <= { 7'b1110111 }; |
| 4'hb: o_map <= { 7'b0011111 }; // b |
| 4'hc: o_map <= { 7'b1001110 }; |
| 4'hd: o_map <= { 7'b0111101 }; // d |
| 4'he: o_map <= { 7'b1001111 }; |
| 4'hf: o_map <= { 7'b1000111 }; |
| endcase |
| endmodule |